PandaRoot
PndFtsTrackerIdeal.h
Go to the documentation of this file.
1 // *************************************************************************
2 // Original author: Ralf Kliemt ralf.kliemt(at)hiskp(dot)uni-bonn(dot)de
3 // Maintainer: martin (dot) j [dot] galuska <at> physik {dot} uni (minus) giessen <dot> de
4 //
5 // ideal tracker using MC id & track info
6 // Gaussian momentum smearing & fake efficiency included
7 //
8 // removed tracks that turn around in the dipole field (because of fitter problems)
9 // removed tracks that have less than 5 hits in the FTS (TODO a more realistic criterion is needed)
10 // user can specify that number via SetMinFtsHitsPerTrack()
11 // for FTS studies SetMinFtsHitsPerTrack(5) should be good,
12 // for studies of overall detector performance SetMinFtsHitsPerTrack(1) gets rid off an efficiency drop 5⁰ < theta < 9⁰ that is due to the current lack of tracking starting from
13 // GEM hits
14 //
15 // Created: 28.01.2011
16 // Last modification: 24.02.2014
17 //
18 // *************************************************************************
19 
20 #ifndef FTSTRACKERIDEALH
21 #define FTSTRACKERIDEALH
22 
23 //#include "TObject.h"
24 //#include "TObjArray.h"
25 //#include "TArrayI.h"
26 //#include "TBenchmark.h"
27 #include "TVector3.h"
28 #include "TDatabasePDG.h"
29 //#include "Riostream.h"
30 #include "FairTask.h"
31 #include "PndGeoFtsPar.h"
32 #include <cmath>
33 #include "Rtypes.h" // for Double_t, Int_t, etc
34 
35 class PndFtsTrackerIdeal : public FairTask {
36 
37  public:
39  virtual ~PndFtsTrackerIdeal();
40 
41  virtual void Exec(Option_t *option);
42  virtual InitStatus Init();
43  virtual void Finish();
44 
45  void Reset();
46  void Register();
47 
48  void SetParContainers();
49 
50  void SetTrackOutput(TString name = "FTSTrkIdeal") { fTracksArrayName = name; };
51 
52  void SetMomentumSmearing(Double_t sigmax = -1., Double_t sigmay = -1., Double_t sigmaz = -1.)
53  {
54  fMomSigma.SetXYZ(fabs(sigmax), fabs(sigmay), fabs(sigmaz));
55  fRelative = kFALSE;
56  }; // in GeV
57  void SetRelativeMomentumSmearing(Double_t dpop = -1.)
58  {
59  fDPoP = fabs(dpop);
60  fRelative = kTRUE;
61  }; // in GeV
62  void SetVertexSmearing(Double_t sigmax = -1., Double_t sigmay = -1., Double_t sigmaz = -1.) { fVtxSigma.SetXYZ(fabs(sigmax), fabs(sigmay), fabs(sigmaz)); }; // in cm
63  void SetTrackingEfficiency(Double_t eff = 1.) { fEfficiency = eff; };
64  Int_t SetMinFtsHitsPerTrack(Int_t minFtsHitsPerTrack = 5); // checks argument, sets fMinFtsHitsPerTrack (in any case) and gives new value back
65 
66  void DeactivateFtsStation(Int_t i) { fStationsDisabled[i] = true; };
67 
68  void SetFtsActivity(Bool_t act = kTRUE) { fBranchActive[0] = act; }
69  void SetGemActivity(Bool_t act = kTRUE) { fBranchActive[1] = act; }
70  void SetMvdActivity(Bool_t act = kTRUE)
71  {
72  fBranchActive[2] = act;
73  fBranchActive[3] = act;
74  }
75 
76  void SetPersistence(Bool_t persistence) { fPersistence = persistence; }
77 
78  protected:
79  void SmearFWD(TVector3 &vec, const TVector3 &sigma); // smearing with doubled sigma in z direction
80 
81  TClonesArray *fMCTracks;
82  TClonesArray *fMCPoints[4];
83  TClonesArray *fHits[4];
84  Int_t fBranchIDs[4];
85  Bool_t fBranchActive[4];
86  std::map<int, bool> fStationsDisabled;
87 
88  TClonesArray *fTrackCands;
89  TClonesArray *fTracks;
90  TClonesArray *fTrackIds;
91 
92  // Parameters for fake tracking
93  Int_t fMinFtsHitsPerTrack; // Only tracks that have at least this number of hits in the FTS can be found by the ideal tracker
94  // default is 1 for overall detector performance studies (see explanation in forum)
95  // 5 should be used for FTS standalone performance studies
96  TVector3 fMomSigma; // Momentum smearing sigma [GeV]
97  Double_t fDPoP; // Relative momentum Smearing
98  Bool_t fRelative; // falg
99  TVector3 fVtxSigma; // Vertex smearing sigma [cm]
100  Double_t fEfficiency; // Tracking efficiency - if (0 <= e < 1), some tracks will be discarded
101  Bool_t fPersistence; // Persistence of tracking TCAs
102 
103  TString fTracksArrayName; // Branch name where to store the Track candidates
104  TDatabasePDG *pdg;
105 
107  TClonesArray *fTubeArrayFts;
108 
110  PndFtsTrackerIdeal &operator=(const PndFtsTrackerIdeal &) { return *this; }
111 
113 };
114 #endif
void SetGemActivity(Bool_t act=kTRUE)
Int_t fMinFtsHitsPerTrack
Array of track IDs (Links)
void SetMvdActivity(Bool_t act=kTRUE)
void SetTrackOutput(TString name="FTSTrkIdeal")
void SetTrackingEfficiency(Double_t eff=1.)
PndFtsTrackerIdeal & operator=(const PndFtsTrackerIdeal &)
TClonesArray * fTrackIds
Array of found tracks.
std::map< int, bool > fStationsDisabled
Array of Branch Activeness.
Bool_t fBranchActive[4]
Array of Branch IDs.
void SetMomentumSmearing(Double_t sigmax=-1., Double_t sigmay=-1., Double_t sigmaz=-1.)
unsigned int i
Definition: P4_F32vec4.h:21
ClassDef(PndFtsTrackerIdeal, 1)
TClonesArray * fHits[4]
Array of event&#39;s points.
void SmearFWD(TVector3 &vec, const TVector3 &sigma)
TClonesArray * fMCTracks
void SetFtsActivity(Bool_t act=kTRUE)
TClonesArray * fTubeArrayFts
virtual void Exec(Option_t *option)
void SetVertexSmearing(Double_t sigmax=-1., Double_t sigmay=-1., Double_t sigmaz=-1.)
virtual ~PndFtsTrackerIdeal()
void SetPersistence(Bool_t persistence)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:46
TClonesArray * fTrackCands
Array of disabled stations.
Int_t fBranchIDs[4]
Array of event&#39;s hits.
PndGeoFtsPar * fFtsParameters
Particle DB.
virtual void Finish()
Int_t SetMinFtsHitsPerTrack(Int_t minFtsHitsPerTrack=5)
TClonesArray * fTracks
Array of found track candidates.
TClonesArray * fMCPoints[4]
Array of PndMCTrack.
virtual InitStatus Init()
void DeactivateFtsStation(Int_t i)
void SetRelativeMomentumSmearing(Double_t dpop=-1.)