1 #ifndef ALIAODPARTICLEBASECUT_H
2 #define ALIAODPARTICLEBASECUT_H
5 #include "AliVAODParticle.h"
8 class AliAODParticleBaseCut: public TObject
10 //This class defines the range of some property - pure virtual
11 //Property is coded by AliAODCutTypes type
17 //codes of particle properties
19 kAODPt, //Transverse momentum
23 kAODPx, //X coAnddinate of the momentum
24 kAODPy, //Y coAnddinate of the momentum
25 kAODPz, //Z coAnddinate of the momentum
28 kAODVx, // vertex X coAnddinate
29 kAODVy, // vertex Y coAnddinate
30 kAODVz, // vertex Z coAnddinate
31 kAODPid, // vertex Z coAnddinate
32 //_____________________________
37 AliAODParticleBaseCut(Double_t min = 0.0, Double_t max = 0.0,EAODCutProperty prop = kAODNone):
38 fProperty(prop),fMin(min),fMax(max){}
40 virtual ~AliAODParticleBaseCut(){}
42 virtual Bool_t Rejected(AliVAODParticle *p) const;
44 void SetRange(Double_t min, Double_t max){fMin = min; fMax = max;}
46 void SetMinimum(Double_t min){fMin = min;}
47 void SetMaximum(Double_t max){fMax = max;}
49 Double_t GetMinimum() const {return fMin;}
50 Double_t GetMaximum() const {return fMax;}
52 EAODCutProperty GetProperty() const {return fProperty;}
53 virtual void Print(void) const;
56 virtual Double_t GetValue(AliVAODParticle *) const = 0;
58 EAODCutProperty fProperty; //property that this cut describes
59 Double_t fMin;//minimum value
60 Double_t fMax;//maximum value
63 void PrintProperty(void) const;
64 ClassDef(AliAODParticleBaseCut,1)
69 AliAODParticleBaseCut::Rejected(AliVAODParticle *p) const
71 //cjecks if particle property fits in range
72 if ( (GetValue(p) < fMin) || (GetValue(p) > fMax ) ) return kTRUE; //rejected
73 else return kFALSE; //accepted
75 /******************************************************************/
76 /******************************************************************/
77 /******************************************************************/
80 class AliAODMomentumCut: public AliAODParticleBaseCut
83 AliAODMomentumCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODP){}
84 virtual ~AliAODMomentumCut(){}
86 Double_t GetValue(AliVAODParticle * p)const{return p->P();}
87 ClassDef(AliAODMomentumCut,1)
90 class AliAODPtCut: public AliAODParticleBaseCut
93 AliAODPtCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODPt){}
94 virtual ~AliAODPtCut(){}
96 Double_t GetValue(AliVAODParticle * p)const{return p->Pt();}
97 ClassDef(AliAODPtCut,1)
101 class AliAODEnergyCut: public AliAODParticleBaseCut
104 AliAODEnergyCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODE){}
105 virtual ~AliAODEnergyCut(){}
107 Double_t GetValue(AliVAODParticle * p)const {return p->E();}
108 ClassDef(AliAODEnergyCut,1)
111 class AliAODRapidityCut: public AliAODParticleBaseCut
114 AliAODRapidityCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODRapidity){}
115 virtual ~AliAODRapidityCut(){}
117 Double_t GetValue(AliVAODParticle * p)const{return p->Y();}
118 ClassDef(AliAODRapidityCut,1)
121 class AliAODPseudoRapidityCut: public AliAODParticleBaseCut
124 AliAODPseudoRapidityCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODPseudoRapidity){}
125 virtual ~AliAODPseudoRapidityCut(){}
127 Double_t GetValue(AliVAODParticle * p)const{return p->Eta();}
128 ClassDef(AliAODPseudoRapidityCut,1)
131 class AliAODPxCut: public AliAODParticleBaseCut
134 AliAODPxCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODPx){}
135 virtual ~AliAODPxCut(){}
137 Double_t GetValue(AliVAODParticle * p)const{return p->Px();}
138 ClassDef(AliAODPxCut,1)
141 class AliAODPyCut: public AliAODParticleBaseCut
144 AliAODPyCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODPy){}
145 virtual ~AliAODPyCut(){}
147 Double_t GetValue(AliVAODParticle * p)const{return p->Py();}
148 ClassDef(AliAODPyCut,1)
152 class AliAODPzCut: public AliAODParticleBaseCut
155 AliAODPzCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODPz){}
156 virtual ~AliAODPzCut(){}
158 Double_t GetValue(AliVAODParticle * p)const{return p->Pz();}
159 ClassDef(AliAODPzCut,1)
162 class AliAODPhiCut: public AliAODParticleBaseCut
165 AliAODPhiCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODPhi){}
166 virtual ~AliAODPhiCut(){}
168 Double_t GetValue(AliVAODParticle * p)const{return p->Phi();}
169 ClassDef(AliAODPhiCut,1)
173 class AliAODThetaCut: public AliAODParticleBaseCut
176 AliAODThetaCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODTheta){}
177 virtual ~AliAODThetaCut(){}
179 Double_t GetValue(AliVAODParticle * p)const{return p->Theta();}
180 ClassDef(AliAODThetaCut,1)
184 class AliAODVxCut: public AliAODParticleBaseCut
186 //Cut of the X coAnddinate of the vertex position
188 AliAODVxCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODVx){}
189 virtual ~AliAODVxCut(){}
191 Double_t GetValue(AliVAODParticle * p)const{return p->Vx();} //retruns value of the vertex
192 ClassDef(AliAODVxCut,1)
197 class AliAODVyCut: public AliAODParticleBaseCut
199 //Cut of the X coAnddinate of the vertex position
201 AliAODVyCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODVy){}
202 virtual ~AliAODVyCut(){}
204 Double_t GetValue(AliVAODParticle * p)const{return p->Vy();} //retruns value of the vertex
205 ClassDef(AliAODVyCut,1)
209 class AliAODVzCut: public AliAODParticleBaseCut
211 //Cut of the X coAnddinate of the vertex position
213 AliAODVzCut(Double_t min = 0.0, Double_t max = 0.0):AliAODParticleBaseCut(min,max,kAODVz){}
214 virtual ~AliAODVzCut(){}
216 Double_t GetValue(AliVAODParticle * p)const{return p->Vz();} //retruns value of the vertex
218 ClassDef(AliAODVzCut,1)
222 class AliAODPIDCut: public AliAODParticleBaseCut
225 AliAODPIDCut():AliAODParticleBaseCut(0.0,0.0,kAODPid),fPID(0){}
226 AliAODPIDCut(Int_t pid, Double_t min = 0.0, Double_t max = 1.0):AliAODParticleBaseCut(min,max,kAODPid),fPID(pid){}
227 virtual ~AliAODPIDCut(){}
229 void SetPID(Int_t pid){fPID = pid;}
230 void Print(void) const;
232 Double_t GetValue(AliVAODParticle * p)const{return p->GetProbability(fPID);}
233 Int_t fPID; //pid of particle that the pid is set
234 ClassDef(AliAODPIDCut,1)
236 //___________________________________________________
237 /////////////////////////////////////////////////////
239 // class AliAODLogicalOperCut //
241 // This cut is base class fAnd class that perfAndms //
242 // logical operations on cuts //
244 /////////////////////////////////////////////////////
245 class AliAODLogicalOperCut: public AliAODParticleBaseCut
248 AliAODLogicalOperCut();
249 AliAODLogicalOperCut(AliAODParticleBaseCut* first, AliAODParticleBaseCut* second);
250 virtual ~AliAODLogicalOperCut();
252 Double_t GetValue(AliVAODParticle * /*part*/) const {MayNotUse("GetValue");return 0.0;}
254 AliAODParticleBaseCut* fFirst; //second cut
255 AliAODParticleBaseCut* fSecond; //first cut
257 class AliAODDummyBaseCut: public AliAODParticleBaseCut
259 Double_t GetValue(AliVAODParticle * /*part*/) const {return 0.0;}
260 Bool_t Rejected(AliVAODParticle* /*part*/) const;
263 ClassDef(AliAODLogicalOperCut,1)
266 class AliAODOrCut: public AliAODLogicalOperCut
270 AliAODOrCut(AliAODParticleBaseCut* first, AliAODParticleBaseCut* second):AliAODLogicalOperCut(first,second){}
271 virtual ~AliAODOrCut(){}
272 Bool_t Rejected(AliVAODParticle *p) const;
273 ClassDef(AliAODOrCut,1)
276 class AliAODAndCut: public AliAODLogicalOperCut
280 AliAODAndCut(AliAODParticleBaseCut* first, AliAODParticleBaseCut* second):AliAODLogicalOperCut(first,second){}
281 virtual ~AliAODAndCut(){}
282 Bool_t Rejected(AliVAODParticle *p) const;
283 ClassDef(AliAODAndCut,1)