]>
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, | |
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 | ||
64 | inline 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 | ||
77 | class 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 | ||
89 | class 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 | ||
100 | class 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 | ||
112 | class 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 | ||
127 | class 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 | ||
141 | class 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 | ||
155 | class 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 | ||
169 | class 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 | ||
183 | class 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 | ||
196 | class 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 | ||
209 | class 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 | ||
223 | class 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 | ||
239 | class 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 | ||
251 | class 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 | ||
263 | class 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 | ||
285 | class 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 | ||
296 | class 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 |