14 #include "FairMultiLinkedData.h"                    
   15 #include "FairRootManager.h"             
   16 #include "FairTimeStamp.h"               
   17 #include "FairRunAna.h" 
   23 #include "TClonesArray.h"                
   39   FairRootManager* ioman = FairRootManager::Instance();
 
   41     std::cout << 
"-E- PndTimeStructureAnaTaskT::Init: " 
   42               << 
"RootManager not instantiated!" << std::endl;
 
   46   if(
fData.size() == 0){
 
   60   for (
size_t i = 0; 
i < 
fData.size(); 
i++){
 
   61           fData[
i].fBranch = (TClonesArray*)ioman->GetObject(
fData[
i].fBranchName);
 
   74         std::cout << 
" ------------- Event " << FairRootManager::Instance()->GetEntryNr() << 
" ----------------" << std::endl;
 
   75         bool primaryParticle = 
false;
 
   77         for (
size_t i = 0; 
i < 
fData.size(); 
i++){
 
   78                 for (
int j = 0; j < 
fData[
i].fBranch->GetEntries(); j++){
 
   79                         FairTimeStamp* data = (FairTimeStamp*)
fData[
i].fBranch->At(j);
 
   80                         FairMultiLinkedData links = data->GetLinksWithType(FairRootManager::Instance()->GetBranchId(
"MCTrack"));
 
   82                         Int_t currentEventNr = -1;
 
   83                         if (links.GetNLinks() > 0){
 
   84                                 currentEventNr = links.GetLink(0).GetEntry();
 
   85                                 mcTrack = (
PndMCTrack*)FairRootManager::Instance()->GetCloneOfLinkData(links.GetLink(0));
 
   88                                                 primaryParticle = 
true;
 
   92                         if (currentEventNr < 0) 
continue;
 
   96                         if (
fData[
i].fEventStartStopMap.count(currentEventNr) == 0){
 
   97                                 fData[
i].fEventStartStopMap[currentEventNr] = std::pair<Double_t, Double_t>(data->GetTimeStamp(), data->GetTimeStamp());
 
  100                                 fData[
i].fEventStartStopMap[currentEventNr].second = data->GetTimeStamp();
 
  102                         if (currentEventNr < 
fData[
i].fOldEventNr){
 
  103                                 if (
fData[
i].fEventMixture == kFALSE){
 
  105                                         fData[
i].fEventMixture = kTRUE;
 
  106                                         std::cout << 
"Event Mixture!" << std::endl;
 
  109                         else if (currentEventNr == 
fData[
i].fOldEventNr){
 
  110                                 fData[
i].fEventHisto->Fill(data->GetTimeStamp() - 
fData[
i].fOldTimeStamp);
 
  111                                 fData[
i].fOldTimeStamp = data->GetTimeStamp();
 
  115                                 fData[
i].fTimeHisto->Fill(data->GetTimeStamp() - 
fData[
i].fOldTimeStamp);
 
  116                                 fData[
i].fOldTimeStamp = data->GetTimeStamp();
 
  117                                 fData[
i].fOldEventNr = currentEventNr;
 
  118                                 fData[
i].fEventMixture = kFALSE;
 
  122                         if (primaryParticle){
 
  123                                 if (
fDataPrim[
i].fEventStartStopMap.count(currentEventNr) == 0){
 
  124                                         fDataPrim[
i].fEventStartStopMap[currentEventNr] = std::pair<Double_t, Double_t>(data->GetTimeStamp(), data->GetTimeStamp());
 
  127                                         fDataPrim[
i].fEventStartStopMap[currentEventNr].second = data->GetTimeStamp();
 
  129                                 if (currentEventNr < 
fDataPrim[
i].fOldEventNr){
 
  133                                                 std::cout << 
"Event Mixture!" << std::endl;
 
  136                                 else if (currentEventNr == 
fDataPrim[
i].fOldEventNr){
 
  138                                         fDataPrim[
i].fOldTimeStamp = data->GetTimeStamp();
 
  143                                         fDataPrim[
i].fOldTimeStamp = data->GetTimeStamp();
 
  162         for (
size_t i = 0; 
i < 
fData.size(); 
i++){
 
  163                 fData[
i].fTimeHisto->Write();
 
  164                 fData[
i].fEventHisto->Write();
 
  165                 for (
std::map<Int_t, std::pair<Double_t, Double_t> >::iterator iter = 
fData[
i].fEventStartStopMap.begin(); iter != 
fData[
i].fEventStartStopMap.end(); iter++) {
 
  166                         fData[
i].fEventDiffHisto->Fill(iter->second.second - iter->second.first);
 
  168                 fData[
i].fEventDiffHisto->Write();
 
  170                 fData[
i].fEventGap->Write();
 
  171                 fData[
i].fOverlap->Write();
 
  173                 fData[
i].fEventGapPerc->Write();
 
  174                 fData[
i].fOverlapPerc->Write();
 
  178                 for (
std::map<Int_t, std::pair<Double_t, Double_t> >::iterator iter = 
fDataPrim[
i].fEventStartStopMap.begin(); iter != 
fDataPrim[
i].fEventStartStopMap.end(); iter++) {
 
  179                         fDataPrim[
i].fEventDiffHisto->Fill(iter->second.second - iter->second.first);
 
std::vector< DataObject > fData
std::vector< DataObject > fDataPrim
virtual void FinishEvent()
TH1D * fHistoMixedEventsPrim
virtual void Exec(Option_t *opt)
virtual void FinishTask()
Int_t GetMotherID() const 
virtual InitStatus ReInit()
virtual InitStatus Init()