EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FairTrajFilter.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file FairTrajFilter.h
1 // ********************************************* //
2 // *** D. Kresan 2004-Sep-14 *** //
3 // *** D.Kresan@gsi.de *** //
4 // ********************************************* //
5 
6 #ifndef FAIR_TRAJ_FILTER_H
7 #define FAIR_TRAJ_FILTER_H 1
8 
9 
10 #include "Rtypes.h"
11 #include "TClonesArray.h"
12 #include "TGeoTrack.h"
13 #include "TMath.h"
14 
15 class TParticle;
16 
17 
38 {
39 
40  public:
47 
51  virtual ~FairTrajFilter();
52 
57 
58 
59  private:
60 
63 
65 
66  Double_t fVxMin;
67  Double_t fVxMax;
68  Double_t fVyMin;
69  Double_t fVyMax;
70  Double_t fVzMin;
71  Double_t fVzMax;
72 
73  Double_t fPMin;
74  Double_t fPMax;
75  Double_t fThetaMin;
76  Double_t fThetaMax;
77  Double_t fPhiMin;
78  Double_t fPhiMax;
79 
80  Double_t fPxMin;
81  Double_t fPxMax;
82  Double_t fPyMin;
83  Double_t fPyMax;
84  Double_t fPzMin;
85  Double_t fPzMax;
86 
87  Double_t fPtMin;
88  Double_t fPtMax;
89  Double_t fRapidityMin;
90  Double_t fRapidityMax;
91 
92  Int_t fKinCutType;
93 
94  Double_t fEtotMin;
95  Double_t fEtotMax;
96 
97  Bool_t fStorePrim;
98  Bool_t fStoreSec;
99 
100  Double_t fStepSizeMin;
101 
105  TClonesArray* fTrackCollection;
106 
107  TGeoTrack* fCurrentTrk;
108 
109  public:
110  TGeoTrack* AddTrack(Int_t trackId, Int_t pdgCode);
111  TGeoTrack* AddTrack(TParticle* p);
112  TGeoTrack* GetCurrentTrk() {return fCurrentTrk;}
113 
114  void Init(TString brName="GeoTracks", TString folderName="MCGeoTrack");
115  void Reset();
121  static FairTrajFilter* Instance();
122 
128  Bool_t IsAccepted(const TParticle* p) const;
129 
137  void SetVertexCut(Double_t vxMin=-2000., Double_t vyMin=-2000., Double_t vzMin=-2000.,
138  Double_t vxMax= 2000., Double_t vyMax= 2000., Double_t vzMax= 2000.);
139 
148  void SetMomentumCutP(Double_t pMin= 0., Double_t thetaMin=0., Double_t phiMin=0.,
149  Double_t pMax=1e10, Double_t thetaMax=TMath::Pi(),
150  Double_t phiMax=TMath::TwoPi());
151 
160  void SetMomentumCutD(Double_t pxMin=-1e10, Double_t pyMin=-1e10, Double_t pzMin=-1e10,
161  Double_t pxMax= 1e10, Double_t pyMax= 1e10, Double_t pzMax= 1e10);
162 
169  void SetPtRapidityCut(Double_t ptMin=0., Double_t ptMax=1e10,
170  Double_t rapidityMin=-1e10, Double_t rapidityMax=1e10);
171 
177  void SetEnergyCut(Double_t etotMin=0., Double_t etotMax=1e10);
178 
183  inline void SetStorePrimaries(Bool_t storePrim=kTRUE) {fStorePrim = storePrim;};
184 
189  inline void SetStoreSecondaries(Bool_t storeSec=kTRUE) {fStoreSec = storeSec;};
190 
196  void SetStepSizeCut(Double_t stepSizeMin=0.);
197 
202  void GetVertexCut(Double_t& vxMin, Double_t& vyMin, Double_t& vzMin,
203  Double_t& vxMax, Double_t& vyMax, Double_t& vzMax) const;
204 
209  void GetMomentumCutP(Double_t& pMin, Double_t& thetaMin, Double_t& phiMin,
210  Double_t& pMax, Double_t& thetaMax, Double_t& phiMax) const;
211 
216  void GetMomentumCutD(Double_t& pxMin, Double_t& pyMin, Double_t& pzMin,
217  Double_t& pxMax, Double_t& pyMax, Double_t& pzMax) const;
218 
223  void GetPtRapidityCut(Double_t& ptMin, Double_t& ptMax,
224  Double_t& rapidityMin, Double_t& rapidityMax) const;
225 
230  void GetEnergyCut(Double_t& etotMin, Double_t& etotMax) const;
231 
236  inline Bool_t IsPrimariesStored() const {return fStorePrim;};
237 
242  inline Bool_t IsSecondariesStored() const {return fStoreSec;};
243 
249  inline Double_t GetStepSizeCut() const { return fStepSizeMin; };
250 
251  TGeoTrack* GetTrack(Int_t trackId);
252 
253 };
254 
255 
256 
257 #endif