FairRoot/PandaRoot
PndSorterTask.cxx
Go to the documentation of this file.
1 // -------------------------------------------------------------------------
2 // ----- PndSorterTaskT source file -----
3 // -------------------------------------------------------------------------
4 
5 #include "PndSorterTask.h"
6 #include "FairRootManager.h"
7 
8 
9 
10 
11  InitStatus PndSorterTask::ReInit()
12 {
13  return kSUCCESS;
14 }
15 
16 // ----- Public method Init --------------------------------------------
17  InitStatus PndSorterTask::Init()
18 {
19 
20  FairRootManager* ioman = FairRootManager::Instance();
21  if ( ! ioman )
22  {
23  std::cout << "-E- PndSorterTaskT::Init: "
24  << "RootManager not instantiated!" << std::endl;
25  return kFATAL;
26  }
27 
29 
30  // Create and register output array
31  fInputArray = FairRootManager::Instance()->GetTClonesArray(fInputBranch);
32 
33  if(fVerbose>1) Info("Init","Registering this branch: %s/%s","PndMvd",fOutputBranch.Data());
34  fOutputArray = ioman->Register(fOutputBranch, fInputArray->GetClass()->GetName(), fFolder, fPersistance);
35 
36 
37  return kSUCCESS;
38 }
39 // -------------------------------------------------------------------------
40 
41 // ----- Public method Exec --------------------------------------------
42  void PndSorterTask::Exec(Option_t*)
43 {
44 
45 
46 
47  fInputArray = FairRootManager::Instance()->GetTClonesArray(fInputBranch);
48  std::cout << "-I- PndSorterTask: Size PixelArray: " << fInputArray->GetEntriesFast() << std::endl;
49  for (int i = 0; i < fInputArray->GetEntriesFast(); i++){
50  FairTimeStamp* myData = (FairTimeStamp*)fInputArray->At(i);
51  myData->SetEntryNr(FairLink(0, fEntryNr, fInputBranch, i));
52 // if (fVerbose > 2){
53  std::cout << "Sorter filled with: ";
54  myData->Print();
55  std::cout<< std::endl;
56 // }
57  fSorter->AddElement(myData, myData->GetTimeStamp());
58  }
59  if (fVerbose > 2)fSorter->Print();
60 
61  std::vector<FairTimeStamp*> sortedData = fSorter->GetOutputData();
62 
63 
64  fOutputArray = FairRootManager::Instance()->GetEmptyTClonesArray(fOutputBranch);
65  for (int i = 0; i < sortedData.size(); i++) {
66  AddNewDataToTClonesArray(sortedData[i]);
67  }
69  fEntryNr++;
70 }
71 
72 // -------------------------------------------------------------------------
73 
75  fOutputArray->Delete();
76 }
77 
79 {
80  fInputArray = FairRootManager::Instance()->GetTClonesArray(fInputBranch);
81  if (fVerbose > 2) std::cout << "-I- PndSorterTaskT::FinishTask Size InputArray: " << fInputArray->GetEntriesFast() << std::endl;
82  for (int i = 0; i < fInputArray->GetEntriesFast(); i++) {
83  FairTimeStamp* myDigi = (FairTimeStamp*) fInputArray->At(i);
84  fSorter->AddElement(myDigi, ((FairTimeStamp*)myDigi)->GetTimeStamp());
85  }
86  fSorter->Print();
88  std::vector<FairTimeStamp*> sortedData = fSorter->GetOutputData();
89 
90  FairRootManager* ioman = FairRootManager::Instance();
91  fOutputArray = ioman->GetEmptyTClonesArray(fOutputBranch);
92  for (int i = 0; i < sortedData.size(); i++) {
93  std::cout << i << " FinishTask : ";
94  sortedData[i]->Print();
95  std::cout << std::endl;
96  AddNewDataToTClonesArray(sortedData[i]);
97  }
99  fSorter->Print();
100  ioman->SetLastFill();
101 }
102 
virtual void AddElement(FairTimeStamp *digi, double timestamp)
int fVerbose
Definition: poormantracks.C:24
virtual InitStatus Init()
virtual PndRingSorter * InitSorter(Int_t numberOfCells, Double_t widthOfCells)=0
virtual std::vector< FairTimeStamp * > GetOutputData()
Definition: PndRingSorter.h:38
Int_t i
Definition: run_full.C:25
TString fFolder
Definition: PndSorterTask.h:84
virtual void FinishEvent()
virtual void Print(std::ostream &out=std::cout)
Definition: PndRingSorter.h:45
TClonesArray * fInputArray
Definition: PndSorterTask.h:80
virtual void Exec(Option_t *opt)
Bool_t fPersistance
Definition: PndSorterTask.h:71
virtual void WriteOutAll()
Definition: PndRingSorter.h:34
TString fOutputBranch
Definition: PndSorterTask.h:83
virtual InitStatus ReInit()
Double_t fWidthOfCells
Definition: PndSorterTask.h:75
PndRingSorter * fSorter
Definition: PndSorterTask.h:69
TString fInputBranch
Definition: PndSorterTask.h:79
virtual void FinishTask()
virtual void DeleteOutputData()
Definition: PndRingSorter.h:42
Int_t fNumberOfCells
Definition: PndSorterTask.h:74
ClassImp(PndAnaContFact)
TClonesArray * fOutputArray
Definition: PndSorterTask.h:85
virtual void AddNewDataToTClonesArray(FairTimeStamp *data)=0