]>
Commit | Line | Data |
---|---|---|
073745bc | 1 | #ifndef ALIAODPAIRBASECUT_H |
2 | #define ALIAODPAIRBASECUT_H | |
3 | ||
4 | #include <TNamed.h> | |
5 | #include "AliAODPair.h" | |
6 | ||
7 | ||
8 | class AliAODPairBaseCut: public TObject | |
9 | { | |
10 | //This class defines the range of some property - pure virtual | |
11 | //Property is coded by AliAODCutTypes type | |
12 | ||
13 | public: | |
14 | ||
15 | enum EAODPairCutProperty | |
16 | { | |
17 | kHbtPairCutPropQInv, //Q invariant | |
18 | kHbtPairCutPropKt, | |
19 | kHbtPairCutPropKStar, | |
fe3f2f54 | 20 | kHbtPairCutPropKStarOut, |
21 | kHbtPairCutPropKStarSide, | |
22 | kHbtPairCutPropKStarLong, | |
073745bc | 23 | kHbtPairCutPropQSideLCMS, |
24 | kHbtPairCutPropQOutLCMS, | |
25 | kHbtPairCutPropQLongLCMS, | |
26 | kHbtPairCutPropDeltaPhi, | |
27 | kHbtPairCutPropDeltaTheta, | |
b327f095 | 28 | kHbtPairCutPropDeltaE, |
29 | kHbtPairCutPropDeltaP,//scalar difference | |
30 | kHbtPairCutPropDeltaPvector,//legth of the momenta difference vector | |
073745bc | 31 | kHbtPairCutPropDeltaPt, |
32 | kHbtPairCutPropAvSepar, | |
33 | kHbtPairCutPropSepar, | |
34 | kHbtPairCutPropClOverlap, | |
35 | kHbtPairCutPropPixelSepar, | |
36 | kHbtPairCutPropNone | |
37 | }; | |
38 | ||
39 | AliAODPairBaseCut(Double_t min = 0.0, Double_t max = 0.0, EAODPairCutProperty prop= kHbtPairCutPropNone): | |
40 | fMin(min),fMax(max),fProperty(prop){} | |
41 | ||
42 | virtual ~AliAODPairBaseCut(){} | |
43 | ||
44 | virtual Bool_t Rejected(AliAODPair* pair) const; | |
45 | ||
46 | void SetRange(Double_t min, Double_t max){fMin = min; fMax = max;} | |
47 | ||
48 | void SetMinimum(Double_t min){fMin = min;} | |
49 | void SetMaximum(Double_t max){fMax = max;} | |
50 | ||
51 | Double_t GetMinimum() const {return fMin;} | |
52 | Double_t GetMaximum() const {return fMax;} | |
53 | ||
54 | EAODPairCutProperty GetProperty() const {return fProperty;} | |
55 | ||
56 | protected: | |
57 | virtual Double_t GetValue(AliAODPair* pair) const = 0; | |
58 | ||
59 | Double_t fMin; // Lower boundary of the range | |
60 | Double_t fMax; // Upper boundary of the range | |
61 | ||
62 | EAODPairCutProperty fProperty; // The property itself | |
63 | ||
64 | ClassDef(AliAODPairBaseCut,1) | |
65 | ||
66 | }; | |
67 | /******************************************************************/ | |
68 | ||
69 | inline Bool_t AliAODPairBaseCut::Rejected(AliAODPair* pair) const | |
70 | { | |
71 | //checks if pair proprty is in range | |
72 | //null pointer check is made by AliAODPairCut, so here is unnecesary | |
73 | ||
74 | Double_t value = GetValue(pair); | |
75 | if ( (value > fMin) && (value <fMax ) ) return kFALSE; //accepted | |
76 | else return kTRUE; //rejected | |
77 | } | |
78 | /******************************************************************/ | |
79 | /******************************************************************/ | |
80 | /******************************************************************/ | |
81 | ||
82 | class AliAODQInvCut: public AliAODPairBaseCut | |
83 | { | |
84 | public: | |
85 | AliAODQInvCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropQInv){} | |
86 | virtual ~AliAODQInvCut(){} | |
87 | protected: | |
88 | virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetQInv();} | |
89 | ||
90 | ClassDef(AliAODQInvCut,1) | |
91 | }; | |
92 | /******************************************************************/ | |
93 | ||
94 | class AliAODKtCut: public AliAODPairBaseCut { | |
95 | public: | |
96 | AliAODKtCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKt){} | |
97 | virtual ~AliAODKtCut(){} | |
98 | protected: | |
99 | virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKt();} | |
100 | ||
101 | ClassDef(AliAODKtCut,1) | |
102 | }; | |
103 | /******************************************************************/ | |
104 | ||
105 | class AliAODKStarCut: public AliAODPairBaseCut | |
106 | { | |
107 | public: | |
108 | AliAODKStarCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKStar){} | |
109 | virtual ~AliAODKStarCut(){} | |
110 | protected: | |
111 | virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStar();} | |
112 | ||
113 | ClassDef(AliAODKStarCut,1) | |
114 | }; | |
115 | /******************************************************************/ | |
116 | ||
fe3f2f54 | 117 | class AliAODKStarOutCut: public AliAODPairBaseCut |
118 | { | |
119 | public: | |
120 | AliAODKStarOutCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKStarOut){} | |
121 | virtual ~AliAODKStarOutCut(){} | |
122 | protected: | |
123 | virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStarOut();} | |
124 | ||
125 | ClassDef(AliAODKStarOutCut,1) | |
126 | }; | |
127 | /******************************************************************/ | |
128 | class AliAODKStarSideCut: public AliAODPairBaseCut | |
129 | { | |
130 | public: | |
131 | AliAODKStarSideCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKStarSide){} | |
132 | virtual ~AliAODKStarSideCut(){} | |
133 | protected: | |
134 | virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStarSide();} | |
135 | ||
136 | ClassDef(AliAODKStarSideCut,1) | |
137 | }; | |
138 | ||
139 | /******************************************************************/ | |
140 | ||
141 | class AliAODKStarLongCut: public AliAODPairBaseCut | |
142 | { | |
143 | public: | |
144 | AliAODKStarLongCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKStarLong){} | |
145 | virtual ~AliAODKStarLongCut(){} | |
146 | protected: | |
147 | virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStarLong();} | |
148 | ||
149 | ClassDef(AliAODKStarLongCut,1) | |
150 | }; | |
151 | /******************************************************************/ | |
152 | ||
073745bc | 153 | class AliAODQSideLCMSCut: public AliAODPairBaseCut |
154 | { | |
155 | public: | |
156 | AliAODQSideLCMSCut(Double_t min = 0.0, Double_t max = 0.0): | |
157 | AliAODPairBaseCut(min,max,kHbtPairCutPropQSideLCMS){} | |
158 | virtual ~AliAODQSideLCMSCut(){} | |
159 | protected: | |
160 | virtual Double_t GetValue(AliAODPair* pair) const | |
161 | {return pair->GetQSideLCMS();} | |
162 | ||
163 | ClassDef(AliAODQSideLCMSCut,1) | |
164 | }; | |
165 | /******************************************************************/ | |
166 | ||
167 | ||
168 | class AliAODQOutLCMSCut: public AliAODPairBaseCut | |
169 | { | |
170 | public: | |
171 | AliAODQOutLCMSCut(Double_t min = 0.0, Double_t max = 0.0): | |
172 | AliAODPairBaseCut(min,max,kHbtPairCutPropQOutLCMS){} | |
173 | virtual ~AliAODQOutLCMSCut(){} | |
174 | protected: | |
175 | virtual Double_t GetValue(AliAODPair* pair) const | |
176 | {return pair->GetQOutLCMS();} | |
177 | ||
178 | ClassDef(AliAODQOutLCMSCut,1) | |
179 | }; | |
180 | /******************************************************************/ | |
181 | ||
182 | class AliAODQLongLCMSCut: public AliAODPairBaseCut | |
183 | { | |
184 | public: | |
185 | AliAODQLongLCMSCut(Double_t min = 0.0, Double_t max = 0.0): | |
186 | AliAODPairBaseCut(min,max,kHbtPairCutPropQLongLCMS){} | |
187 | virtual ~AliAODQLongLCMSCut(){} | |
188 | protected: | |
189 | virtual Double_t GetValue(AliAODPair* pair) const | |
190 | {return pair->GetQLongLCMS();} | |
191 | ||
192 | ClassDef(AliAODQLongLCMSCut,1) | |
193 | }; | |
194 | /******************************************************************/ | |
195 | ||
b327f095 | 196 | class AliAODDeltaECut: public AliAODPairBaseCut |
197 | { | |
198 | public: | |
199 | AliAODDeltaECut(Double_t min = 0.0, Double_t max = 0.0): | |
200 | AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaE){} | |
201 | virtual ~AliAODDeltaECut(){} | |
202 | protected: | |
203 | virtual Double_t GetValue(AliAODPair* pair) const | |
204 | {return pair->GetDeltaE();} | |
205 | ||
206 | ClassDef(AliAODDeltaECut,1) | |
207 | }; | |
208 | /******************************************************************/ | |
209 | ||
210 | class AliAODDeltaPCut: public AliAODPairBaseCut | |
211 | { | |
212 | public: | |
213 | AliAODDeltaPCut(Double_t min = 0.0, Double_t max = 0.0): | |
214 | AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaP){} | |
215 | virtual ~AliAODDeltaPCut(){} | |
216 | protected: | |
217 | virtual Double_t GetValue(AliAODPair* pair) const | |
218 | {return pair->GetDeltaP();} | |
219 | ||
220 | ClassDef(AliAODDeltaPCut,1) | |
221 | }; | |
222 | /******************************************************************/ | |
223 | ||
224 | class AliAODDeltaPvectorCut: public AliAODPairBaseCut | |
225 | { | |
226 | public: | |
227 | AliAODDeltaPvectorCut(Double_t min = 0.0, Double_t max = 0.0): | |
228 | AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaPvector){} | |
229 | virtual ~AliAODDeltaPvectorCut(){} | |
230 | protected: | |
231 | virtual Double_t GetValue(AliAODPair* pair) const | |
232 | {return pair->GetDeltaPvector();} | |
233 | ||
234 | ClassDef(AliAODDeltaPvectorCut,1) | |
235 | }; | |
236 | /******************************************************************/ | |
237 | ||
073745bc | 238 | class AliAODDeltaPhiCut: public AliAODPairBaseCut |
239 | { | |
240 | public: | |
241 | AliAODDeltaPhiCut(Double_t min = 0.0, Double_t max = 0.0): | |
242 | AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaPhi){} | |
243 | virtual ~AliAODDeltaPhiCut(){} | |
244 | protected: | |
245 | virtual Double_t GetValue(AliAODPair* pair) const | |
246 | {return TMath::Abs(pair->GetDeltaPhi());} | |
247 | ||
248 | ClassDef(AliAODDeltaPhiCut,1) | |
249 | }; | |
250 | /******************************************************************/ | |
251 | ||
252 | class AliAODDeltaThetaCut: public AliAODPairBaseCut | |
253 | { | |
254 | public: | |
255 | AliAODDeltaThetaCut(Double_t min = 0.0, Double_t max = 0.0): | |
256 | AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaTheta){} | |
257 | virtual ~AliAODDeltaThetaCut(){} | |
258 | protected: | |
259 | virtual Double_t GetValue(AliAODPair* pair) const | |
260 | {return TMath::Abs(pair->GetDeltaTheta());} | |
261 | ||
262 | ClassDef(AliAODDeltaThetaCut,1) | |
263 | }; | |
264 | /******************************************************************/ | |
265 | ||
266 | class AliAODCluterOverlapCut: public AliAODPairBaseCut | |
267 | { | |
268 | public: | |
269 | AliAODCluterOverlapCut(Double_t min = 0.0, Double_t max = 1e5): | |
270 | AliAODPairBaseCut(min,max,kHbtPairCutPropClOverlap){} | |
271 | virtual ~AliAODCluterOverlapCut(){} | |
272 | ||
273 | protected: | |
274 | virtual Double_t GetValue(AliAODPair* pair) const; | |
275 | ClassDef(AliAODCluterOverlapCut,1) | |
276 | }; | |
277 | /******************************************************************/ | |
278 | ||
279 | class AliAODAvSeparationCut: public AliAODPairBaseCut | |
280 | { | |
281 | public: | |
282 | AliAODAvSeparationCut(Double_t min = 0.0, Double_t max = 1e5): | |
283 | AliAODPairBaseCut(min,max,kHbtPairCutPropAvSepar){} | |
284 | virtual ~AliAODAvSeparationCut(){} | |
285 | ||
286 | protected: | |
287 | virtual Double_t GetValue(AliAODPair* pair) const; | |
288 | ClassDef(AliAODAvSeparationCut,1) | |
289 | }; | |
290 | /******************************************************************/ | |
291 | ||
292 | class AliAODSeparationCut: public AliAODPairBaseCut | |
293 | { | |
294 | public: | |
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(){} | |
298 | ||
299 | protected: | |
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) | |
303 | }; | |
304 | /******************************************************************/ | |
305 | ||
306 | class AliAODITSSeparationCut: public AliAODPairBaseCut | |
307 | { | |
308 | //Anti merging cut for the first layer of pixels | |
309 | public: | |
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;} | |
315 | protected: | |
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) | |
319 | }; | |
320 | /******************************************************************/ | |
321 | ||
322 | class AliAODOutSideSameSignCut: public AliAODPairBaseCut | |
323 | { | |
324 | public: | |
325 | AliAODOutSideSameSignCut(){} | |
326 | virtual ~AliAODOutSideSameSignCut(){} | |
327 | virtual Bool_t Rejected(AliAODPair *p) const; | |
328 | protected: | |
329 | virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;} | |
330 | ClassDef(AliAODOutSideSameSignCut,1) | |
331 | }; | |
332 | /******************************************************************/ | |
333 | ||
334 | class AliAODOutSideDiffSignCut: public AliAODPairBaseCut | |
335 | { | |
336 | public: | |
337 | AliAODOutSideDiffSignCut(){} | |
338 | virtual ~AliAODOutSideDiffSignCut(){} | |
339 | virtual Bool_t Rejected(AliAODPair *p) const; | |
340 | protected: | |
341 | virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;} | |
342 | ClassDef(AliAODOutSideDiffSignCut,1) | |
343 | }; | |
344 | /******************************************************************/ | |
345 | ||
346 | class AliAODLogicalOperPairCut: public AliAODPairBaseCut | |
347 | { | |
348 | public: | |
349 | AliAODLogicalOperPairCut(); | |
350 | AliAODLogicalOperPairCut(AliAODPairBaseCut* first, AliAODPairBaseCut* second); | |
351 | virtual ~AliAODLogicalOperPairCut(); | |
352 | protected: | |
353 | Double_t GetValue(AliAODPair * /*pair*/) const {MayNotUse("GetValue");return 0.0;} | |
354 | ||
355 | AliAODPairBaseCut* fFirst; //second cut | |
356 | AliAODPairBaseCut* fSecond; //first cut | |
357 | private: | |
358 | class AliAODDummyBasePairCut: public AliAODPairBaseCut | |
359 | { | |
360 | Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;} | |
361 | Bool_t Rejected(AliAODPair* /*pair*/) const; | |
362 | }; | |
363 | ||
364 | ClassDef(AliAODLogicalOperPairCut,1) | |
365 | }; | |
366 | /******************************************************************/ | |
367 | ||
368 | class AliAODOrPairCut: public AliAODLogicalOperPairCut | |
369 | { | |
370 | public: | |
371 | AliAODOrPairCut(){} | |
372 | AliAODOrPairCut(AliAODPairBaseCut* first, AliAODPairBaseCut* second):AliAODLogicalOperPairCut(first,second){} | |
373 | virtual ~AliAODOrPairCut(){} | |
374 | Bool_t Rejected(AliAODPair *p) const; | |
375 | ClassDef(AliAODOrPairCut,1) | |
376 | }; | |
377 | /******************************************************************/ | |
378 | ||
379 | class AliAODAndPairCut: public AliAODLogicalOperPairCut | |
380 | { | |
381 | public: | |
382 | AliAODAndPairCut(){} | |
383 | AliAODAndPairCut(AliAODPairBaseCut* first, AliAODPairBaseCut* second):AliAODLogicalOperPairCut(first,second){} | |
384 | virtual ~AliAODAndPairCut(){} | |
385 | Bool_t Rejected(AliAODPair *p) const; | |
386 | ClassDef(AliAODAndPairCut,1) | |
387 | }; | |
388 | ||
389 | #endif |