]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ANALYSIS/AliAODPairBaseCut.h
redirection and C++ streams added
[u/mrichter/AliRoot.git] / ANALYSIS / AliAODPairBaseCut.h
CommitLineData
073745bc 1#ifndef ALIAODPAIRBASECUT_H
2#define ALIAODPAIRBASECUT_H
3
4#include <TNamed.h>
5#include "AliAODPair.h"
6
7
8class 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,
20 kHbtPairCutPropQSideLCMS,
21 kHbtPairCutPropQOutLCMS,
22 kHbtPairCutPropQLongLCMS,
23 kHbtPairCutPropDeltaPhi,
24 kHbtPairCutPropDeltaTheta,
b327f095 25 kHbtPairCutPropDeltaE,
26 kHbtPairCutPropDeltaP,//scalar difference
27 kHbtPairCutPropDeltaPvector,//legth of the momenta difference vector
073745bc 28 kHbtPairCutPropDeltaPt,
29 kHbtPairCutPropAvSepar,
30 kHbtPairCutPropSepar,
31 kHbtPairCutPropClOverlap,
32 kHbtPairCutPropPixelSepar,
33 kHbtPairCutPropNone
34 };
35
36 AliAODPairBaseCut(Double_t min = 0.0, Double_t max = 0.0, EAODPairCutProperty prop= kHbtPairCutPropNone):
37 fMin(min),fMax(max),fProperty(prop){}
38
39 virtual ~AliAODPairBaseCut(){}
40
41 virtual Bool_t Rejected(AliAODPair* pair) const;
42
43 void SetRange(Double_t min, Double_t max){fMin = min; fMax = max;}
44
45 void SetMinimum(Double_t min){fMin = min;}
46 void SetMaximum(Double_t max){fMax = max;}
47
48 Double_t GetMinimum() const {return fMin;}
49 Double_t GetMaximum() const {return fMax;}
50
51 EAODPairCutProperty GetProperty() const {return fProperty;}
52
53 protected:
54 virtual Double_t GetValue(AliAODPair* pair) const = 0;
55
56 Double_t fMin; // Lower boundary of the range
57 Double_t fMax; // Upper boundary of the range
58
59 EAODPairCutProperty fProperty; // The property itself
60
61 ClassDef(AliAODPairBaseCut,1)
62
63 };
64/******************************************************************/
65
66inline Bool_t AliAODPairBaseCut::Rejected(AliAODPair* pair) const
67{
68 //checks if pair proprty is in range
69 //null pointer check is made by AliAODPairCut, so here is unnecesary
70
71 Double_t value = GetValue(pair);
72 if ( (value > fMin) && (value <fMax ) ) return kFALSE; //accepted
73 else return kTRUE; //rejected
74}
75/******************************************************************/
76/******************************************************************/
77/******************************************************************/
78
79class AliAODQInvCut: public AliAODPairBaseCut
80{
81 public:
82 AliAODQInvCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropQInv){}
83 virtual ~AliAODQInvCut(){}
84 protected:
85 virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetQInv();}
86
87 ClassDef(AliAODQInvCut,1)
88 };
89/******************************************************************/
90
91class AliAODKtCut: public AliAODPairBaseCut {
92 public:
93 AliAODKtCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKt){}
94 virtual ~AliAODKtCut(){}
95 protected:
96 virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKt();}
97
98 ClassDef(AliAODKtCut,1)
99 };
100/******************************************************************/
101
102class AliAODKStarCut: public AliAODPairBaseCut
103{
104 public:
105 AliAODKStarCut(Double_t min = 0.0, Double_t max = 0.0):AliAODPairBaseCut(min,max,kHbtPairCutPropKStar){}
106 virtual ~AliAODKStarCut(){}
107 protected:
108 virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStar();}
109
110 ClassDef(AliAODKStarCut,1)
111};
112/******************************************************************/
113
114class AliAODQSideLCMSCut: public AliAODPairBaseCut
115{
116 public:
117 AliAODQSideLCMSCut(Double_t min = 0.0, Double_t max = 0.0):
118 AliAODPairBaseCut(min,max,kHbtPairCutPropQSideLCMS){}
119 virtual ~AliAODQSideLCMSCut(){}
120 protected:
121 virtual Double_t GetValue(AliAODPair* pair) const
122 {return pair->GetQSideLCMS();}
123
124 ClassDef(AliAODQSideLCMSCut,1)
125};
126/******************************************************************/
127
128
129class AliAODQOutLCMSCut: public AliAODPairBaseCut
130{
131 public:
132 AliAODQOutLCMSCut(Double_t min = 0.0, Double_t max = 0.0):
133 AliAODPairBaseCut(min,max,kHbtPairCutPropQOutLCMS){}
134 virtual ~AliAODQOutLCMSCut(){}
135 protected:
136 virtual Double_t GetValue(AliAODPair* pair) const
137 {return pair->GetQOutLCMS();}
138
139 ClassDef(AliAODQOutLCMSCut,1)
140};
141/******************************************************************/
142
143class AliAODQLongLCMSCut: public AliAODPairBaseCut
144{
145 public:
146 AliAODQLongLCMSCut(Double_t min = 0.0, Double_t max = 0.0):
147 AliAODPairBaseCut(min,max,kHbtPairCutPropQLongLCMS){}
148 virtual ~AliAODQLongLCMSCut(){}
149 protected:
150 virtual Double_t GetValue(AliAODPair* pair) const
151 {return pair->GetQLongLCMS();}
152
153 ClassDef(AliAODQLongLCMSCut,1)
154};
155/******************************************************************/
156
b327f095 157class AliAODDeltaECut: public AliAODPairBaseCut
158{
159 public:
160 AliAODDeltaECut(Double_t min = 0.0, Double_t max = 0.0):
161 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaE){}
162 virtual ~AliAODDeltaECut(){}
163 protected:
164 virtual Double_t GetValue(AliAODPair* pair) const
165 {return pair->GetDeltaE();}
166
167 ClassDef(AliAODDeltaECut,1)
168};
169/******************************************************************/
170
171class AliAODDeltaPCut: public AliAODPairBaseCut
172{
173 public:
174 AliAODDeltaPCut(Double_t min = 0.0, Double_t max = 0.0):
175 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaP){}
176 virtual ~AliAODDeltaPCut(){}
177 protected:
178 virtual Double_t GetValue(AliAODPair* pair) const
179 {return pair->GetDeltaP();}
180
181 ClassDef(AliAODDeltaPCut,1)
182};
183/******************************************************************/
184
185class AliAODDeltaPvectorCut: public AliAODPairBaseCut
186{
187 public:
188 AliAODDeltaPvectorCut(Double_t min = 0.0, Double_t max = 0.0):
189 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaPvector){}
190 virtual ~AliAODDeltaPvectorCut(){}
191 protected:
192 virtual Double_t GetValue(AliAODPair* pair) const
193 {return pair->GetDeltaPvector();}
194
195 ClassDef(AliAODDeltaPvectorCut,1)
196};
197/******************************************************************/
198
073745bc 199class AliAODDeltaPhiCut: public AliAODPairBaseCut
200{
201 public:
202 AliAODDeltaPhiCut(Double_t min = 0.0, Double_t max = 0.0):
203 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaPhi){}
204 virtual ~AliAODDeltaPhiCut(){}
205 protected:
206 virtual Double_t GetValue(AliAODPair* pair) const
207 {return TMath::Abs(pair->GetDeltaPhi());}
208
209 ClassDef(AliAODDeltaPhiCut,1)
210};
211/******************************************************************/
212
213class AliAODDeltaThetaCut: public AliAODPairBaseCut
214{
215 public:
216 AliAODDeltaThetaCut(Double_t min = 0.0, Double_t max = 0.0):
217 AliAODPairBaseCut(min,max,kHbtPairCutPropDeltaTheta){}
218 virtual ~AliAODDeltaThetaCut(){}
219 protected:
220 virtual Double_t GetValue(AliAODPair* pair) const
221 {return TMath::Abs(pair->GetDeltaTheta());}
222
223 ClassDef(AliAODDeltaThetaCut,1)
224};
225/******************************************************************/
226
227class AliAODCluterOverlapCut: public AliAODPairBaseCut
228{
229 public:
230 AliAODCluterOverlapCut(Double_t min = 0.0, Double_t max = 1e5):
231 AliAODPairBaseCut(min,max,kHbtPairCutPropClOverlap){}
232 virtual ~AliAODCluterOverlapCut(){}
233
234 protected:
235 virtual Double_t GetValue(AliAODPair* pair) const;
236 ClassDef(AliAODCluterOverlapCut,1)
237};
238/******************************************************************/
239
240class AliAODAvSeparationCut: public AliAODPairBaseCut
241{
242 public:
243 AliAODAvSeparationCut(Double_t min = 0.0, Double_t max = 1e5):
244 AliAODPairBaseCut(min,max,kHbtPairCutPropAvSepar){}
245 virtual ~AliAODAvSeparationCut(){}
246
247 protected:
248 virtual Double_t GetValue(AliAODPair* pair) const;
249 ClassDef(AliAODAvSeparationCut,1)
250};
251/******************************************************************/
252
253class AliAODSeparationCut: public AliAODPairBaseCut
254{
255 public:
256 AliAODSeparationCut(Double_t min = 0.0, Double_t max = 1e5, Int_t point = 0):
257 AliAODPairBaseCut(min,max,kHbtPairCutPropSepar),fPoint(point){}
258 virtual ~AliAODSeparationCut(){}
259
260 protected:
261 Int_t fPoint;//index of the point that distance should be measured
262 virtual Double_t GetValue(AliAODPair* pair) const;
263 ClassDef(AliAODSeparationCut,1)
264};
265/******************************************************************/
266
267class AliAODITSSeparationCut: public AliAODPairBaseCut
268{
269//Anti merging cut for the first layer of pixels
270 public:
271 AliAODITSSeparationCut(Int_t layer = 0, Double_t deltarphi = 0.01, Double_t deltaz = 0.08):
272 AliAODPairBaseCut(deltarphi,deltaz,kHbtPairCutPropPixelSepar),fLayer(layer){}
273 virtual ~AliAODITSSeparationCut(){}
274 Bool_t Rejected(AliAODPair* pair) const;
275 Int_t GetLayer() const {return fLayer;}
276 protected:
277 Int_t fLayer;//index of the layer that distance should be measured 0: 1st pixels
278 virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;}//not used
279 ClassDef(AliAODITSSeparationCut,1)
280};
281/******************************************************************/
282
283class AliAODOutSideSameSignCut: public AliAODPairBaseCut
284{
285 public:
286 AliAODOutSideSameSignCut(){}
287 virtual ~AliAODOutSideSameSignCut(){}
288 virtual Bool_t Rejected(AliAODPair *p) const;
289 protected:
290 virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;}
291 ClassDef(AliAODOutSideSameSignCut,1)
292};
293/******************************************************************/
294
295class AliAODOutSideDiffSignCut: public AliAODPairBaseCut
296{
297 public:
298 AliAODOutSideDiffSignCut(){}
299 virtual ~AliAODOutSideDiffSignCut(){}
300 virtual Bool_t Rejected(AliAODPair *p) const;
301 protected:
302 virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;}
303 ClassDef(AliAODOutSideDiffSignCut,1)
304};
305/******************************************************************/
306
307class AliAODLogicalOperPairCut: public AliAODPairBaseCut
308 {
309 public:
310 AliAODLogicalOperPairCut();
311 AliAODLogicalOperPairCut(AliAODPairBaseCut* first, AliAODPairBaseCut* second);
312 virtual ~AliAODLogicalOperPairCut();
313 protected:
314 Double_t GetValue(AliAODPair * /*pair*/) const {MayNotUse("GetValue");return 0.0;}
315
316 AliAODPairBaseCut* fFirst; //second cut
317 AliAODPairBaseCut* fSecond; //first cut
318 private:
319 class AliAODDummyBasePairCut: public AliAODPairBaseCut
320 {
321 Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;}
322 Bool_t Rejected(AliAODPair* /*pair*/) const;
323 };
324
325 ClassDef(AliAODLogicalOperPairCut,1)
326 };
327/******************************************************************/
328
329class AliAODOrPairCut: public AliAODLogicalOperPairCut
330{
331 public:
332 AliAODOrPairCut(){}
333 AliAODOrPairCut(AliAODPairBaseCut* first, AliAODPairBaseCut* second):AliAODLogicalOperPairCut(first,second){}
334 virtual ~AliAODOrPairCut(){}
335 Bool_t Rejected(AliAODPair *p) const;
336 ClassDef(AliAODOrPairCut,1)
337};
338/******************************************************************/
339
340class AliAODAndPairCut: public AliAODLogicalOperPairCut
341{
342 public:
343 AliAODAndPairCut(){}
344 AliAODAndPairCut(AliAODPairBaseCut* first, AliAODPairBaseCut* second):AliAODLogicalOperPairCut(first,second){}
345 virtual ~AliAODAndPairCut(){}
346 Bool_t Rejected(AliAODPair *p) const;
347 ClassDef(AliAODAndPairCut,1)
348};
349
350#endif