FairRoot/PandaRoot
PndMasterRecoIdealTask.cxx
Go to the documentation of this file.
1 // -------------------------------------------------------------------------
2 // ----- PndMasterRecoIdealTask source file -----
3 // ----- Created 31/01/16 by S. Spataro -----
4 // ----- Wrapper for recotizing tasks -----
5 // -------------------------------------------------------------------------
6 
7 
8 #include <PndIdealTrackFinder.h>
10 #include "PndMasterTask.h"
11 
12 //#include "PndMCTrackAssociator.h"
13 #include "PndRecoKalmanTask.h"
14 #include "PndRecoMultiKalmanTask.h"
15 //#include "PndFtsTrackerIdeal.h"
16 
22 // ----- Default constructor -------------------------------------------
24 PndMasterTask("Master Reconstruction Task"), fOptions(options)
25 {
26  reco = {-1, -1, -1, -1};
27 
28  // ----- MVD + STT Pattern Recognition -----------------------------------
29  // use the constructor with input :
30  // printout flag (int) , plotting flag (bool), MC comparison flag (bool), SciTil.
31 
33  this->Add(tracking = new PndIdealTrackFinder()); // 1
34  reco.kPndBarrelIdealTracking = GetListOfTasks()->GetSize()-1;
35  tracking->SetTrackSelector("NoFtsTrackFunctor");
36  tracking->SetRelativeMomentumSmearing(0.05);
37  tracking->SetVertexSmearing(0.05, 0.05, 0.05);
38  tracking->SetTrackingEfficiency(1.);
39  tracking->SetOutputBranchName("SttMvdGemTrack");
40  tracking->SetPersistence(kTRUE);
41 
42  // ----- Barrel Kalman Task ----------------------------
43  if (!fOptions.Contains("multikalman")) {
45  this->Add(recoKalman = new PndRecoKalmanTask()); // 2
46  reco.kPndRecoKalmanTask1 = GetListOfTasks()->GetSize()-1;
47  if ((!fOptions.Contains("day1")) || (fOptions.Contains("gem"))) {
48  recoKalman->SetTrackInBranchName("SttMvdGemTrack");
49  // recoKalman->SetTrackInIDBranchName("SttMvdGemTrackID");
50  recoKalman->SetTrackOutBranchName("SttMvdGemGenTrack");
51  } else {
52  recoKalman->SetTrackInBranchName("SttMvdTrack");
53  // recoKalman->SetTrackInIDBranchName("SttMvdTrackID");
54  recoKalman->SetTrackOutBranchName("SttMvdGenTrack");
55  }
56  //recoKalman->SetBusyCut(50); // CHECK to be tuned //comment out to be consistent with multikalman
57  //recoKalman->SetIdealHyp(kTRUE);
58  //recoKalman->SetNumIterations(3);
59  //recoKalman->SetTrackRep(0); // 0 Geane (default), 1 RK //comment out to be consistent with multikalman
60  //recoKalman->SetPropagateToIP(kFALSE);
61  } else {
63  this->Add(recoKalman = new PndRecoMultiKalmanTask()); // 2
64  recoKalman->SetFitHypotheses(fOptions); //Walter added
65  reco.kPndRecoKalmanTask1 = GetListOfTasks()->GetSize()-1;
66  if ((!fOptions.Contains("day1")) || (fOptions.Contains("gem"))) {
67  recoKalman->SetTrackInBranchName("SttMvdGemTrack");
68  // recoKalman->SetTrackInIDBranchName("SttMvdGemTrackID");
69  recoKalman->SetTrackOutBranchName("SttMvdGemGenTrack");
70  } else {
71  recoKalman->SetTrackInBranchName("SttMvdTrack");
72  // recoKalman->SetTrackInIDBranchName("SttMvdTrackID");
73  recoKalman->SetTrackOutBranchName("SttMvdGenTrack");
74  }
75  //recoKalman->SetBusyCut(50); // CHECK to be tuned
76  //recoKalman->SetIdealHyp(kTRUE);
77  //recoKalman->SetNumIterations(3);
78  //recoKalman->SetTrackRep(0); // 0 Geane (default), 1 RK
79  //recoKalman->SetPropagateToIP(kFALSE);
80  }
81 
82  /*
83  // ----- Barrel Kalman Task ----------------------------
84  PndRecoKalmanTask* recoKalman = NULL;
85  this->Add(recoKalman = new PndRecoKalmanTask()); // 2
86  reco.kPndRecoKalmanTask1 = GetListOfTasks()->GetSize()-1;
87 
88  recoKalman->SetTrackInBranchName("SttMvdGemTrack");
89  recoKalman->SetTrackOutBranchName("SttMvdGemGenTrack");
90 
91  recoKalman->SetBusyCut(50); // CHECK to be tuned
92  //recoKalman->SetIdealHyp(kTRUE);
93  //recoKalman->SetNumIterations(3);
94  recoKalman->SetTrackRep(0); // 0 Geane (default), 1 RK
95  //recoKalman->SetPropagateToIP(kFALSE);
96  */
97 
98  // ----- FTS Ideal Tracking ----------------------------
100  this->Add(trackFts = new PndIdealTrackFinder()); // 3
101  reco.kPndFtsTrackerIdeal = GetListOfTasks()->GetSize()-1;
102  trackFts->SetTrackSelector("FtsTrackFunctor");
103  trackFts->SetRelativeMomentumSmearing(0.05);
104  trackFts->SetVertexSmearing(0.05, 0.05, 0.05);
105  trackFts->SetTrackingEfficiency(1.);
106  trackFts->SetOutputBranchName("FtsIdealTrack");
107  trackFts->SetPersistence(kTRUE);
108 
109 
110  // ----- Forward Kalman Task ----------------------------
111 // if (!fOptions.Contains("multikalman")) {
113  this->Add(recoKalmanFwd = new PndRecoKalmanTask()); // 2
114  reco.kPndRecoKalmanTask2 = GetListOfTasks()->GetSize()-1;
115 
116  recoKalmanFwd->SetTrackInBranchName("FtsIdealTrack");
117  //recoKalmanFwd->SetTrackInIDBranchName("FtsIdealTrackID");
118  recoKalmanFwd->SetTrackOutBranchName("FtsIdealGenTrack");
119 
120  //recoKalman->SetBusyCut(50); // CHECK to be tuned //comment out to be consistent with multikalman
121  //recoKalman->SetIdealHyp(kTRUE);
122  //recoKalman->SetNumIterations(3);
123  //recoKalman->SetTrackRep(0); // 0 Geane (default), 1 RK //comment out to be consistent with multikalman
124  //recoKalman->SetPropagateToIP(kFALSE);
125 // } else {
126 // PndRecoMultiKalmanTask* recoKalmanFwd = NULL;
127 // this->Add(recoKalmanFwd = new PndRecoMultiKalmanTask()); // 2
128 // reco.kPndRecoKalmanTask2 = GetListOfTasks()->GetSize()-1;
129 
130 // recoKalmanFwd->SetTrackInBranchName("FtsIdealTrack");
131  //recoKalmanFwd->SetTrackInIDBranchName("FtsIdealTrackID");
132 // recoKalmanFwd->SetTrackOutBranchName("FtsIdealGenTrack");
133 
134  //recoKalman->SetBusyCut(50); // CHECK to be tuned
135  //recoKalman->SetIdealHyp(kTRUE);
136  //recoKalman->SetNumIterations(3);
137  //recoKalman->SetTrackRep(0); // 0 Geane (default), 1 RK
138  //recoKalman->SetPropagateToIP(kFALSE);
139 // }
140 
141 
142  SetVerbose(0);
143 }
144 // -------------------------------------------------------------------------
145 
148 {
149  // ----- MVD + STT Pattern Recognition -----------------------------------
150  ((PndIdealTrackFinder*)GetListOfTasks()->At(reco.kPndBarrelIdealTracking))->SetPersistence(pers);
151 
152 
153  // ----- Barrel Kalman Task ----------------------------
154  if (!fOptions.Contains("multikalman")) {
155  ((PndRecoKalmanTask*)GetListOfTasks()->At(reco.kPndRecoKalmanTask1))->SetPersistence(pers);
156  } else {
157  //((PndRecoMultiKalmanTask*)GetListOfTasks()->At(reco.kPndRecoKalmanTask1))->SetPersistence(pers); //todo:Implement me!
158  }
159 
160 
161 
162  // ----- FTS Ideal Tracking ----------------------------
163  ((PndIdealTrackFinder*)GetListOfTasks()->At(reco.kPndFtsTrackerIdeal))->SetPersistence(pers);
164 
165 
166  // ----- Forward Kalman Task ---------------------------
167  if (!fOptions.Contains("multikalman")) {
168  ((PndRecoKalmanTask*)GetListOfTasks()->At(reco.kPndRecoKalmanTask2))->SetPersistence(pers);
169  } else {
170  //((PndRecoMultiKalmanTask*)GetListOfTasks()->At(reco.kPndRecoKalmanTask2))->SetPersistence(pers); //todo:implement me!
171  }
172 
173 
174 
175  return;
176 }
177 
178 
179 // ----- Destructor ----------------------------------------------------
181 {
182 }
183 // -------------------------------------------------------------------------
184 
mychain Add("run.root")
struct PndMasterRecoIdealTask::recoIdealTaskList reco
PndMasterRecoIdealTask(TString fOptions="")
Default constructor with options This string can be: "" -> default settings full setup "day1" -> Set...
void SetVerbose(Int_t iVerbose=1)
Set the Verbosity to all the tasks.
void SetTrackingEfficiency(Double_t eff=1.)
Ideal track finder for all types of tracking detectors The PndIdealTrackFinder combines all hits in ...
void SetPersistence(Bool_t persistence)
virtual void SetOutputBranchName(TString name)
TString fOptions
Options parsed to the reconstruction.
void SetTrackOutBranchName(const TString &name)
Abstract class for all the master task list classes.
Definition: PndMasterTask.h:21
void SetTrackOutBranchName(const TString &name)
virtual ~PndMasterRecoIdealTask()
Destructor.
void SetTrackSelector(TString selector)
PndRecoKalmanTask * recoKalmanFwd
PndTrkTracking * tracking
The default reconstruction tasks.
PndFtsTrackerIdeal * trackFts
void SetTrackInBranchName(const TString &name)
void SetVertexSmearing(Double_t sigmax=-1., Double_t sigmay=-1., Double_t sigmaz=-1.)
void SetTrackInBranchName(const TString &name)
void SetFitHypotheses(const TString &name)
ClassImp(PndAnaContFact)
PndRecoKalmanTask * recoKalman
DemoPR SetPersistence()
void SetRelativeMomentumSmearing(Double_t dpop=-1.)
virtual void SetPersistency(Bool_t pers=kTRUE)
Set the persistency of all the tasks.