PandaRoot
PndIdealTrackFinder.h
Go to the documentation of this file.
1 
11 #ifndef PndIdealTrackFinder_H_
12 #define PndIdealTrackFinder_H_
13 
14 // framework includes
15 #include "PndPersistencyTask.h"
16 #include "FairMCPoint.h"
17 #include "PndTrackCand.h"
18 #include "PndTrackFunctor.h"
19 #include "FairTSBufferFunctional.h"
20 
21 #include "TClonesArray.h"
22 #include "TDatabasePDG.h"
23 #include <math.h>
24 
26  public:
27  PndIdealTrackFinder(TString name = "PndIdealTrackFinder");
28  virtual ~PndIdealTrackFinder();
29 
30  virtual InitStatus Init();
31 
37  virtual void AddBranchName(TString name)
38  {
39  fBranchNames.push_back(name);
40  }
41 
48  virtual void AddBranchName(TString name, TString mcName)
49  {
50  fBranchNames.push_back(name);
51  fPointBranchMap[name] = mcName;
52  }
53 
59  virtual void SetOutputBranchName(TString name) { fOutBranchName = name; };
60 
64  virtual void Exec(Option_t *opt);
65 
66  // virtual void Finish();
67 
68  // taken from sttmvdtracking/PndSttMvdGemTrackingIdeal.h
69 
76  void SetMomentumSmearing(Double_t sigmax, Double_t sigmay, Double_t sigmaz)
77  {
78  fMomSigma.SetXYZ(fabs(sigmax), fabs(sigmay), fabs(sigmaz));
79  fRelative = kFALSE;
80  };
81 
87  void SetRelativeMomentumSmearing(Double_t dpop)
88  {
89  fDPoP = fabs(dpop);
90  fRelative = kTRUE;
91  };
92 
96  void SetRunTimeBased(bool valRunTimeBased = true) { fRunTimeBased = valRunTimeBased; };
97 
104  void SetVertexSmearing(Double_t sigmax = -1., Double_t sigmay = -1., Double_t sigmaz = -1.) { fVtxSigma.SetXYZ(fabs(sigmax), fabs(sigmay), fabs(sigmaz)); }; // in cm
105 
110  void SetTrackingEfficiency(Double_t eff = 1.) { fEfficiency = eff; };
111 
117  void SetTrackSelector(TString selector)
118  {
120  }
121 
125  void SetPersistence(Bool_t persistence) { SetPersistency(persistence); }
126 
127  protected:
128  virtual void CreateTrackCands();
129  virtual void CreateTracks();
130  virtual void FilterTrackCands();
131  virtual FairMCPoint *GetFairMCPoint(TString hitBranch, FairMultiLinkedData_Interface *links, FairMultiLinkedData &array);
132  // taken from sttmvdtracking/PndSttMvdGemTrackingIdeal.h
133  virtual void SmearVector(TVector3 &vec, const TVector3 &sigma);
134 
135  protected:
136  // For time-based data
137  // Functor for start time
138 
140 
141  BinaryFunctor *fFunctor;
143 
144  TString fOutBranchName;
145  TClonesArray *fTrackCand;
146  TClonesArray *fTrack;
147  TClonesArray *fMCTrack;
149  std::map<TString, TClonesArray *> fBranchMap;
150  std::vector<TString> fBranchNames;
151  std::map<FairLink, PndTrackCand> fTrackCandMap;
152  std::map<FairLink, FairMCPoint> fFirstPointMap;
153  std::map<FairLink, FairMCPoint> fLastPointMap;
154  std::map<TString, TString> fPointBranchMap;
155 
156  TDatabasePDG *fPdg;
157 
158  Int_t fHitCount;
159 
160  // Parameters for fake tracking taken from sttmvdtracking/PndSttMvdGemTrackingIdeal.h
161  TVector3 fMomSigma;
162  Double_t fDPoP;
163  Bool_t fRelative;
164  TVector3 fVtxSigma;
165  Double_t fEfficiency;
166 
168 };
169 
170 #endif /* PndIdealTrackFinder_H_ */
virtual FairMCPoint * GetFairMCPoint(TString hitBranch, FairMultiLinkedData_Interface *links, FairMultiLinkedData &array)
void SetMomentumSmearing(Double_t sigmax, Double_t sigmay, Double_t sigmaz)
TDatabasePDG * fPdg
! Particle DB
std::map< TString, TClonesArray * > fBranchMap
void SetTrackingEfficiency(Double_t eff=1.)
Ideal track finder for all types of tracking detectors The PndIdealTrackFinder combines all hits in ...
PndIdealTrackFinder(TString name="PndIdealTrackFinder")
BinaryFunctor * fFunctor
void SetPersistency(Bool_t val=kTRUE)
void SetPersistence(Bool_t persistence)
virtual void SetOutputBranchName(TString name)
std::map< TString, TString > fPointBranchMap
std::map< FairLink, FairMCPoint > fFirstPointMap
std::vector< TString > fBranchNames
virtual void AddBranchName(TString name, TString mcName)
virtual void FilterTrackCands()
void SetTrackSelector(TString selector)
void SetRelativeMomentumSmearing(Double_t dpop)
virtual void SmearVector(TVector3 &vec, const TVector3 &sigma)
PndTrackFunctor * fTrackSelector
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:46
Double_t fDPoP
Relative momentum Smearing.
ClassDef(PndIdealTrackFinder, 2)
void SetVertexSmearing(Double_t sigmax=-1., Double_t sigmay=-1., Double_t sigmaz=-1.)
void SetRunTimeBased(bool valRunTimeBased=true)
TVector3 fMomSigma
Momentum smearing sigma [GeV].
std::map< FairLink, FairMCPoint > fLastPointMap
virtual void CreateTracks()
Double_t fEfficiency
Tracking efficiency - if (0 <= e < 1), some tracks will be discarded.
virtual void CreateTrackCands()
virtual InitStatus Init()
static PndTrackFunctor * make_PndTrackFunctor(std::string functorName)
virtual void AddBranchName(TString name)
virtual void Exec(Option_t *opt)
virtual ~PndIdealTrackFinder()
TVector3 fVtxSigma
Vertex smearing sigma [cm].
std::map< FairLink, PndTrackCand > fTrackCandMap