FairRoot/PandaRoot
PndMvdEventMergerTask.cxx
Go to the documentation of this file.
1 // -------------------------------------------------------------------------
2 // ----- PndMvdEventMergerTask source file -----
3 // -------------------------------------------------------------------------
4 
5 #include "TClonesArray.h"
6 #include "TArrayD.h"
7 
8 #include "FairRootManager.h"
10 #include "FairRun.h"
11 #include "FairRuntimeDb.h"
12 
13 // ----- Default constructor -------------------------------------------
15  FairTask("MVD Event Merger")
16 {
17  std::cout << "-E- PndMvdEventMergerTask: The default constructor should not be used!" << std::endl;
18  fEventNr = 0;
19 }
20 
21 PndMvdEventMergerTask::PndMvdEventMergerTask(TString signalBranch, TString bgFile, TString bgBranch, Int_t events, Int_t mergedEvents, Bool_t signalIsBg) :
22  FairTask("MVD Event Merger")
23 {
24  fSignalBranch = signalBranch;
25  fBgFile = bgFile;
26  fBgBranch = bgBranch;
27  fNMergedEvents = mergedEvents;
28  fSignalIsBg = signalIsBg;
29  fEventNr = 0;
30  fNEvents = events;
31 }
32 // -------------------------------------------------------------------------
33 
34 
35 // ----- Destructor ----------------------------------------------------
37 {
38  delete (fMerger);
39 }
40 // -------------------------------------------------------------------------
41 
42 // ----- Initialization of Parameter Containers -------------------------
44 {
45  // called before Init()
46  // Get Base Container
47  //FairRun* ana = FairRun::Instance();
48  //FairRuntimeDb* rtdb=ana->GetRuntimeDb();
49 }
50 
52 {
54  return kSUCCESS;
55 }
56 
57 // ----- Public method Init --------------------------------------------
59 {
60  //FairRun* ana = FairRun::Instance();
61  FairRootManager* ioman = FairRootManager::Instance();
62 
63  if ( ! ioman )
64  {
65  std::cout << "-E- PndMvdEventMergerTask::Init: "
66  << "RootManager not instantiated!" << std::endl;
67  return kFATAL;
68  }
69 
70  if (fSignalIsBg == false){
71  fSignalArray = (TClonesArray*) ioman->GetObject(fSignalBranch);
72 
73  if ( ! fSignalArray )
74  {
75  std::cout << "-W- PndMvdEventMergerTask::Init: "
76  << "No MVDPoint array!" << std::endl;
77  return kERROR;
78  }
79  }
80 
81 
82  // Create and register output array
83  fMergedArray = new TClonesArray("PndTpcCluster");
84  ioman->Register("PndTpcClusterMerged", "TPC", fMergedArray, kTRUE);
85 
87 
88 
89  std::cout << "-I- PndMvdEventMergerTask: Intialisation successfull" << std::endl;
90 
91  return kSUCCESS;
92 }
93 // -------------------------------------------------------------------------
94 
95 // ----- Public method Exec --------------------------------------------
97 {
98 
99  TClonesArray* bg;
100  if (fEventNr < fNMergedEvents)
101  bg = fMerger->GetEvent(fEventNr);
102  else bg = fMerger->GetEvent(0);
103 
104  fMergedArray->Delete();
105 
106  if (fSignalIsBg == false){
108  }
109  for (int i = 0; i < bg->GetEntriesFast(); i++){
110  new ((*fMergedArray)[i])PndTpcCluster(*(PndTpcCluster*)bg->At(i));
111  }
112 
113  // Event summary
114 
115  if (fVerbose > 0){
116  std::cout << "-I- PndMvdEventMergerTask: Merged " << fMergedArray->GetEntriesFast() << " events in Event Nr: " << fEventNr << std::endl;
117  }
118  fEventNr++;
119 }
120 
int fVerbose
Definition: poormantracks.C:24
Int_t i
Definition: run_full.C:25
virtual void Exec(Option_t *opt)
TClonesArray * GetEvent(Int_t iEvent)
PndMvdEventMerger * fMerger
virtual InitStatus Init()
virtual InitStatus ReInit()
Int_t AddTClonesArray(TClonesArray *target, TClonesArray *source)
ClassImp(PndMvdEventMergerTask)