FairRoot/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 GEM hits
13 //
14 // Created: 28.01.2011
15 // Last modification: 24.02.2014
16 //
17 // *************************************************************************
18 
19 #ifndef FTSTRACKERIDEALH
20 #define FTSTRACKERIDEALH
21 
22 //#include "TObject.h"
23 //#include "TObjArray.h"
24 //#include "TArrayI.h"
25 //#include "TBenchmark.h"
26 #include "TVector3.h"
27 #include "TDatabasePDG.h"
28 //#include "Riostream.h"
29 #include "FairTask.h"
30 #include "PndGeoFtsPar.h"
31 #include <cmath>
32 #include "Rtypes.h" // for Double_t, Int_t, etc
33 
34 class PndFtsTrackerIdeal : public FairTask {
35 
36 public:
37 
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.) { fMomSigma.SetXYZ(fabs(sigmax),fabs(sigmay),fabs(sigmaz)); fRelative=kFALSE; }; // in GeV
53  void SetRelativeMomentumSmearing(Double_t dpop = -1.) { fDPoP=fabs(dpop); fRelative=kTRUE;}; // in GeV
54  void SetVertexSmearing(Double_t sigmax = -1.,Double_t sigmay = -1.,Double_t sigmaz = -1.) { fVtxSigma.SetXYZ(fabs(sigmax),fabs(sigmay),fabs(sigmaz)); }; // in cm
55  void SetTrackingEfficiency(Double_t eff = 1.) { fEfficiency=eff; };
56  Int_t SetMinFtsHitsPerTrack(Int_t minFtsHitsPerTrack = 5); // checks argument, sets fMinFtsHitsPerTrack (in any case) and gives new value back
57 
58  void DeactivateFtsStation(Int_t i) {fStationsDisabled[i]=true;};
59 
60  void SetFtsActivity(Bool_t act=kTRUE){fBranchActive[0]=act;}
61  void SetGemActivity(Bool_t act=kTRUE){fBranchActive[1]=act;}
62  void SetMvdActivity(Bool_t act=kTRUE){fBranchActive[2]=act;fBranchActive[3]=act;}
63 
64  void SetPersistence(Bool_t persistence) { fPersistence = persistence; }
65 
66 protected:
67 
68  void SmearFWD(TVector3 &vec, const TVector3 &sigma); // smearing with doubled sigma in z direction
69 
70  TClonesArray* fMCTracks;
71  TClonesArray* fMCPoints[4];
72  TClonesArray* fHits[4];
73  Int_t fBranchIDs[4];
75  std::map<int,bool> fStationsDisabled;
76 
77  TClonesArray *fTrackCands;
78  TClonesArray *fTracks;
79  TClonesArray *fTrackIds;
80 
81  // Parameters for fake tracking
82  Int_t fMinFtsHitsPerTrack; // Only tracks that have at least this number of hits in the FTS can be found by the ideal tracker
83  // default is 1 for overall detector performance studies (see explanation in forum)
84  // 5 should be used for FTS standalone performance studies
85  TVector3 fMomSigma; // Momentum smearing sigma [GeV]
86  Double_t fDPoP; // Relative momentum Smearing
87  Bool_t fRelative; // falg
88  TVector3 fVtxSigma; // Vertex smearing sigma [cm]
89  Double_t fEfficiency; // Tracking efficiency - if (0 <= e < 1), some tracks will be discarded
90  Bool_t fPersistence; // Persistence of tracking TCAs
91 
92  TString fTracksArrayName; // Branch name where to store the Track candidates
93  TDatabasePDG *pdg;
94 
96  TClonesArray* fTubeArrayFts;
97 
100 
102 
103 };
104 #endif
virtual void Exec(Option_t *option)
void SetGemActivity(Bool_t act=kTRUE)
Int_t fMinFtsHitsPerTrack
Array of track IDs (Links)
void SetMvdActivity(Bool_t act=kTRUE)
Int_t i
Definition: run_full.C:25
void SetTrackOutput(TString name="FTSTrkIdeal")
void SetTrackingEfficiency(Double_t eff=1.)
PndFtsTrackerIdeal & operator=(const PndFtsTrackerIdeal &)
TClonesArray * fTrackIds
Array of found tracks.
Double_t sigma[nsteps]
Definition: dedx_bands.C:65
Bool_t fBranchActive[4]
Array of Branch IDs.
void SetMomentumSmearing(Double_t sigmax=-1., Double_t sigmay=-1., Double_t sigmaz=-1.)
ClassDef(PndFtsTrackerIdeal, 1)
TClonesArray * fHits[4]
Array of event's points.
void SmearFWD(TVector3 &vec, const TVector3 &sigma)
TClonesArray * fMCTracks
Double_t
void SetFtsActivity(Bool_t act=kTRUE)
TClonesArray * fTubeArrayFts
void SetVertexSmearing(Double_t sigmax=-1., Double_t sigmay=-1., Double_t sigmaz=-1.)
void SetPersistence(Bool_t persistence)
virtual InitStatus Init()
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
TString name
TClonesArray * fTrackCands
Array of disabled stations.
Int_t fBranchIDs[4]
Array of event's hits.
PndGeoFtsPar * fFtsParameters
Particle DB.
Int_t SetMinFtsHitsPerTrack(Int_t minFtsHitsPerTrack=5)
TClonesArray * fTracks
Array of found track candidates.
TClonesArray * fMCPoints[4]
Array of PndMCTrack.
std::map< int, bool > fStationsDisabled
Array of Branch Activeness.
dble_vec_t vec[12]
Definition: ranlxd.cxx:380
void DeactivateFtsStation(Int_t i)
void SetRelativeMomentumSmearing(Double_t dpop=-1.)