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