1 #ifndef ALIAODPAIRBASECUT_H
2 #define ALIAODPAIRBASECUT_H
5 #include "AliAODPair.h"
8 class AliAODPairBaseCut: public TObject
10 //This class defines the range of some property - pure virtual
11 //Property is coded by AliAODCutTypes type
15 enum EAODPairCutProperty
17 kHbtPairCutPropQInv, //Q invariant
20 kHbtPairCutPropKStarOut,
21 kHbtPairCutPropKStarSide,
22 kHbtPairCutPropKStarLong,
23 kHbtPairCutPropQSideLCMS,
24 kHbtPairCutPropQOutLCMS,
25 kHbtPairCutPropQLongLCMS,
26 kHbtPairCutPropDeltaPhi,
27 kHbtPairCutPropDeltaTheta,
28 kHbtPairCutPropDeltaE,
29 kHbtPairCutPropDeltaP,//scalar difference
30 kHbtPairCutPropDeltaPvector,//legth of the momenta difference vector
31 kHbtPairCutPropDeltaPt,
32 kHbtPairCutPropAvSepar,
34 kHbtPairCutPropClOverlap,
35 kHbtPairCutPropPixelSepar,
39 AliAODPairBaseCut(Double_t min = 0.0, Double_t max = 0.0, EAODPairCutProperty prop= kHbtPairCutPropNone):
40 fMin(min),fMax(max),fProperty(prop){}
42 virtual ~AliAODPairBaseCut(){}
44 virtual Bool_t Rejected(AliAODPair* pair) const;
46 void SetRange(Double_t min, Double_t max){fMin = min; fMax = max;}
48 void SetMinimum(Double_t min){fMin = min;}
49 void SetMaximum(Double_t max){fMax = max;}
51 Double_t GetMinimum() const {return fMin;}
52 Double_t GetMaximum() const {return fMax;}
54 EAODPairCutProperty GetProperty() const {return fProperty;}
57 virtual Double_t GetValue(AliAODPair* pair) const = 0;
59 Double_t fMin; // Lower boundary of the range
60 Double_t fMax; // Upper boundary of the range
62 EAODPairCutProperty fProperty; // The property itself
64 ClassDef(AliAODPairBaseCut,1)
67 /******************************************************************/
69 inline Bool_t AliAODPairBaseCut::Rejected(AliAODPair* pair) const
71 //checks if pair proprty is in range
72 //null pointer check is made by AliAODPairCut, so here is unnecesary
74 Double_t value = GetValue(pair);
75 if ( (value > fMin) && (value <fMax ) ) return kFALSE; //accepted
76 else return kTRUE; //rejected
78 /******************************************************************/
79 /******************************************************************/
80 /******************************************************************/
82 class AliAODQInvCut: public AliAODPairBaseCut
85 AliAODQInvCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropQInv){}
86 virtual ~AliAODQInvCut(){}
88 virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetQInv();}
90 ClassDef(AliAODQInvCut,1)
92 /******************************************************************/
94 class AliAODKtCut: public AliAODPairBaseCut {
96 AliAODKtCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKt){}
97 virtual ~AliAODKtCut(){}
99 virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKt();}
101 ClassDef(AliAODKtCut,1)
103 /******************************************************************/
105 class AliAODKStarCut: public AliAODPairBaseCut
108 AliAODKStarCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKStar){}
109 virtual ~AliAODKStarCut(){}
111 virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStar();}
113 ClassDef(AliAODKStarCut,1)
115 /******************************************************************/
117 class AliAODKStarOutCut: public AliAODPairBaseCut
120 AliAODKStarOutCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKStarOut){}
121 virtual ~AliAODKStarOutCut(){}
123 virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStarOut();}
125 ClassDef(AliAODKStarOutCut,1)
127 /******************************************************************/
128 class AliAODKStarSideCut: public AliAODPairBaseCut
131 AliAODKStarSideCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKStarSide){}
132 virtual ~AliAODKStarSideCut(){}
134 virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStarSide();}
136 ClassDef(AliAODKStarSideCut,1)
139 /******************************************************************/
141 class AliAODKStarLongCut: public AliAODPairBaseCut
144 AliAODKStarLongCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKStarLong){}
145 virtual ~AliAODKStarLongCut(){}
147 virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStarLong();}
149 ClassDef(AliAODKStarLongCut,1)
151 /******************************************************************/
153 class AliAODQSideLCMSCut: public AliAODPairBaseCut
156 AliAODQSideLCMSCut(Double_t min = 0.0, Double_t max = 0.0):
157 AliAODPairBaseCut(min,max,kHbtPairCutPropQSideLCMS){}
158 virtual ~AliAODQSideLCMSCut(){}
160 virtual Double_t GetValue(AliAODPair* pair) const
161 {return pair->GetQSideLCMS();}
163 ClassDef(AliAODQSideLCMSCut,1)
165 /******************************************************************/
168 class AliAODQOutLCMSCut: public AliAODPairBaseCut
171 AliAODQOutLCMSCut(Double_t min = 0.0, Double_t max = 0.0):
172 AliAODPairBaseCut(min,max,kHbtPairCutPropQOutLCMS){}
173 virtual ~AliAODQOutLCMSCut(){}
175 virtual Double_t GetValue(AliAODPair* pair) const
176 {return pair->GetQOutLCMS();}
178 ClassDef(AliAODQOutLCMSCut,1)
180 /******************************************************************/
182 class AliAODQLongLCMSCut: public AliAODPairBaseCut
185 AliAODQLongLCMSCut(Double_t min = 0.0, Double_t max = 0.0):
186 AliAODPairBaseCut(min,max,kHbtPairCutPropQLongLCMS){}
187 virtual ~AliAODQLongLCMSCut(){}
189 virtual Double_t GetValue(AliAODPair* pair) const
190 {return pair->GetQLongLCMS();}
192 ClassDef(AliAODQLongLCMSCut,1)
194 /******************************************************************/
196 class AliAODDeltaECut: public AliAODPairBaseCut
199 AliAODDeltaECut(Double_t min = 0.0, Double_t max = 0.0):
200 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaE){}
201 virtual ~AliAODDeltaECut(){}
203 virtual Double_t GetValue(AliAODPair* pair) const
204 {return pair->GetDeltaE();}
206 ClassDef(AliAODDeltaECut,1)
208 /******************************************************************/
210 class AliAODDeltaPCut: public AliAODPairBaseCut
213 AliAODDeltaPCut(Double_t min = 0.0, Double_t max = 0.0):
214 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaP){}
215 virtual ~AliAODDeltaPCut(){}
217 virtual Double_t GetValue(AliAODPair* pair) const
218 {return pair->GetDeltaP();}
220 ClassDef(AliAODDeltaPCut,1)
222 /******************************************************************/
224 class AliAODDeltaPvectorCut: public AliAODPairBaseCut
227 AliAODDeltaPvectorCut(Double_t min = 0.0, Double_t max = 0.0):
228 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaPvector){}
229 virtual ~AliAODDeltaPvectorCut(){}
231 virtual Double_t GetValue(AliAODPair* pair) const
232 {return pair->GetDeltaPvector();}
234 ClassDef(AliAODDeltaPvectorCut,1)
236 /******************************************************************/
238 class AliAODDeltaPhiCut: public AliAODPairBaseCut
241 AliAODDeltaPhiCut(Double_t min = 0.0, Double_t max = 0.0):
242 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaPhi){}
243 virtual ~AliAODDeltaPhiCut(){}
245 virtual Double_t GetValue(AliAODPair* pair) const
246 {return TMath::Abs(pair->GetDeltaPhi());}
248 ClassDef(AliAODDeltaPhiCut,1)
250 /******************************************************************/
252 class AliAODDeltaThetaCut: public AliAODPairBaseCut
255 AliAODDeltaThetaCut(Double_t min = 0.0, Double_t max = 0.0):
256 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaTheta){}
257 virtual ~AliAODDeltaThetaCut(){}
259 virtual Double_t GetValue(AliAODPair* pair) const
260 {return TMath::Abs(pair->GetDeltaTheta());}
262 ClassDef(AliAODDeltaThetaCut,1)
264 /******************************************************************/
266 class AliAODCluterOverlapCut: public AliAODPairBaseCut
269 AliAODCluterOverlapCut(Double_t min = 0.0, Double_t max = 1e5):
270 AliAODPairBaseCut(min,max,kHbtPairCutPropClOverlap){}
271 virtual ~AliAODCluterOverlapCut(){}
274 virtual Double_t GetValue(AliAODPair* pair) const;
275 ClassDef(AliAODCluterOverlapCut,1)
277 /******************************************************************/
279 class AliAODAvSeparationCut: public AliAODPairBaseCut
282 AliAODAvSeparationCut(Double_t min = 0.0, Double_t max = 1e5):
283 AliAODPairBaseCut(min,max,kHbtPairCutPropAvSepar){}
284 virtual ~AliAODAvSeparationCut(){}
287 virtual Double_t GetValue(AliAODPair* pair) const;
288 ClassDef(AliAODAvSeparationCut,1)
290 /******************************************************************/
292 class AliAODSeparationCut: public AliAODPairBaseCut
295 AliAODSeparationCut(Double_t min = 0.0, Double_t max = 1e5, Int_t point = 0):
296 AliAODPairBaseCut(min,max,kHbtPairCutPropSepar),fPoint(point){}
297 virtual ~AliAODSeparationCut(){}
300 Int_t fPoint;//index of the point that distance should be measured
301 virtual Double_t GetValue(AliAODPair* pair) const;
302 ClassDef(AliAODSeparationCut,1)
304 /******************************************************************/
306 class AliAODITSSeparationCut: public AliAODPairBaseCut
308 //Anti merging cut for the first layer of pixels
310 AliAODITSSeparationCut(Int_t layer = 0, Double_t deltarphi = 0.01, Double_t deltaz = 0.08):
311 AliAODPairBaseCut(deltarphi,deltaz,kHbtPairCutPropPixelSepar),fLayer(layer){}
312 virtual ~AliAODITSSeparationCut(){}
313 Bool_t Rejected(AliAODPair* pair) const;
314 Int_t GetLayer() const {return fLayer;}
316 Int_t fLayer;//index of the layer that distance should be measured 0: 1st pixels
317 virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;}//not used
318 ClassDef(AliAODITSSeparationCut,1)
320 /******************************************************************/
322 class AliAODOutSideSameSignCut: public AliAODPairBaseCut
325 AliAODOutSideSameSignCut(){}
326 virtual ~AliAODOutSideSameSignCut(){}
327 virtual Bool_t Rejected(AliAODPair *p) const;
329 virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;}
330 ClassDef(AliAODOutSideSameSignCut,1)
332 /******************************************************************/
334 class AliAODOutSideDiffSignCut: public AliAODPairBaseCut
337 AliAODOutSideDiffSignCut(){}
338 virtual ~AliAODOutSideDiffSignCut(){}
339 virtual Bool_t Rejected(AliAODPair *p) const;
341 virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;}
342 ClassDef(AliAODOutSideDiffSignCut,1)
344 /******************************************************************/
346 class AliAODLogicalOperPairCut: public AliAODPairBaseCut
349 AliAODLogicalOperPairCut();
350 AliAODLogicalOperPairCut(AliAODPairBaseCut* first, AliAODPairBaseCut* second);
351 virtual ~AliAODLogicalOperPairCut();
353 Double_t GetValue(AliAODPair * /*pair*/) const {MayNotUse("GetValue");return 0.0;}
355 AliAODPairBaseCut* fFirst; //second cut
356 AliAODPairBaseCut* fSecond; //first cut
358 class AliAODDummyBasePairCut: public AliAODPairBaseCut
360 Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;}
361 Bool_t Rejected(AliAODPair* /*pair*/) const;
364 ClassDef(AliAODLogicalOperPairCut,1)
366 /******************************************************************/
368 class AliAODOrPairCut: public AliAODLogicalOperPairCut
372 AliAODOrPairCut(AliAODPairBaseCut* first, AliAODPairBaseCut* second):AliAODLogicalOperPairCut(first,second){}
373 virtual ~AliAODOrPairCut(){}
374 Bool_t Rejected(AliAODPair *p) const;
375 ClassDef(AliAODOrPairCut,1)
377 /******************************************************************/
379 class AliAODAndPairCut: public AliAODLogicalOperPairCut
383 AliAODAndPairCut(AliAODPairBaseCut* first, AliAODPairBaseCut* second):AliAODLogicalOperPairCut(first,second){}
384 virtual ~AliAODAndPairCut(){}
385 Bool_t Rejected(AliAODPair *p) const;
386 ClassDef(AliAODAndPairCut,1)