]>
Commit | Line | Data |
---|---|---|
1b446896 | 1 | //Piotr Skowronski@cern.ch |
2 | //Class implemnts cut on the pair of particles | |
3 | // | |
4 | //more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html | |
48704f50 | 5 | |
1b446896 | 6 | #ifndef ALIHBTPAIRCUT_H |
7 | #define ALIHBTPAIRCUT_H | |
8 | ||
9 | ||
10 | #include "AliHBTParticleCut.h" | |
11 | #include "AliHBTPair.h" | |
12 | ||
13 | class AliHbtBasePairCut; | |
14 | ||
15 | enum AliHBTPairCutProperty | |
16 | { | |
17 | kHbtPairCutPropQInv, //Q invariant | |
bce80f3b | 18 | kHbtPairCutPropKt, |
e3131968 | 19 | kHbtPairCutPropKStar, |
2d5d4d7d | 20 | kHbtPairCutPropQSideCMSLC, |
21 | kHbtPairCutPropQOutCMSLC, | |
22 | kHbtPairCutPropQLongCMSLC, | |
1b446896 | 23 | kHbtPairCutPropNone |
24 | }; | |
25 | ||
26 | class AliHBTPairCut: public TObject | |
27 | { | |
28 | public: | |
29 | AliHBTPairCut(); | |
30 | AliHBTPairCut(const AliHBTPairCut&); | |
31 | ||
32 | virtual ~AliHBTPairCut(); | |
48704f50 | 33 | virtual Bool_t Pass(AliHBTPair* pair); |
34 | virtual Bool_t PassPairProp(AliHBTPair* pair); | |
35 | ||
36 | virtual Bool_t IsEmpty() {return kFALSE;} | |
1b446896 | 37 | void SetFirstPartCut(AliHBTParticleCut*); //sets the cut on the first particle |
38 | void SetSecondPartCut(AliHBTParticleCut*); //sets the cut on the first particle | |
39 | ||
40 | void SetPartCut(AliHBTParticleCut*);//sets the the same cut on both particles | |
41 | ||
42 | void AddBasePairCut(AliHbtBasePairCut*); | |
43 | ||
44 | void SetQInvRange(Double_t min, Double_t max); | |
bce80f3b | 45 | void SetKtRange(Double_t min, Double_t max); |
e3131968 | 46 | void SetKStarRange(Double_t min, Double_t max); |
a37908e0 | 47 | void SetQOutCMSLRange(Double_t min, Double_t max); |
48 | void SetQSideCMSLRange(Double_t min, Double_t max); | |
49 | void SetQLongCMSLRange(Double_t min, Double_t max); | |
50 | ||
48704f50 | 51 | AliHBTParticleCut* GetFirstPartCut() const {return fFirstPartCut;} |
52 | AliHBTParticleCut* GetSecondPartCut() const {return fSecondPartCut;} | |
71dbe253 | 53 | |
1b446896 | 54 | protected: |
e3131968 | 55 | AliHBTParticleCut* fFirstPartCut;//cut on first particle in pair |
56 | AliHBTParticleCut* fSecondPartCut;//cut on second particle in pair | |
1b446896 | 57 | |
58 | AliHbtBasePairCut** fCuts; //! | |
59 | Int_t fNCuts; | |
60 | ||
61 | ||
62 | AliHbtBasePairCut* FindCut(AliHBTPairCutProperty); | |
63 | private: | |
64 | static const Int_t fkgMaxCuts; | |
65 | public: | |
66 | ClassDef(AliHBTPairCut,1) | |
67 | ||
68 | }; | |
69 | /******************************************************************/ | |
70 | /******************************************************************/ | |
71 | /******************************************************************/ | |
72 | ||
73 | class AliHBTEmptyPairCut: public AliHBTPairCut | |
74 | { | |
75 | //Empty - it passes possitively all particles - it means returns always False | |
76 | //Class describing cut on pairs of particles | |
77 | public: | |
78 | AliHBTEmptyPairCut(){}; | |
79 | AliHBTEmptyPairCut(const AliHBTEmptyPairCut&){}; | |
80 | virtual ~AliHBTEmptyPairCut(){}; | |
81 | ||
82 | Bool_t Pass(AliHBTPair*) {return kFALSE;} //accpept everything | |
48704f50 | 83 | Bool_t IsEmpty() {return kTRUE;} |
1b446896 | 84 | |
85 | ClassDef(AliHBTEmptyPairCut,1) | |
86 | ||
87 | }; | |
88 | ||
89 | ||
90 | ||
91 | /******************************************************************/ | |
92 | /******************************************************************/ | |
93 | /******************************************************************/ | |
94 | ||
95 | class AliHbtBasePairCut: public TObject | |
96 | { | |
97 | //This class defines the range of some property - pure virtual | |
98 | //Property is coded by AliHBTCutTypes type | |
99 | ||
100 | public: | |
101 | ||
102 | AliHbtBasePairCut(Double_t min = 0.0, Double_t max = 0.0, AliHBTPairCutProperty prop= kHbtPairCutPropNone): | |
103 | fMin(min),fMax(max),fProperty(prop){} | |
104 | ||
105 | virtual ~AliHbtBasePairCut(){} | |
106 | ||
107 | Bool_t Pass(AliHBTPair*); | |
108 | ||
109 | void SetRange(Double_t min, Double_t max){fMin = min; fMax = max;} | |
110 | ||
111 | void SetMinimum(Double_t min){fMin = min;} | |
112 | void SetMaximum(Double_t max){fMax = max;} | |
113 | ||
114 | Double_t GetMinimum() const {return fMin;} | |
115 | Double_t GetMaximum() const {return fMax;} | |
116 | ||
117 | AliHBTPairCutProperty GetProperty() const {return fProperty;} | |
118 | ||
119 | protected: | |
120 | virtual Double_t GetValue(AliHBTPair*) = 0; | |
121 | ||
122 | Double_t fMin; | |
123 | Double_t fMax; | |
124 | ||
125 | AliHBTPairCutProperty fProperty; | |
126 | ||
127 | private: | |
128 | public: | |
129 | ClassDef(AliHbtBasePairCut,1) | |
130 | ||
131 | }; | |
132 | ||
133 | inline Bool_t | |
134 | AliHbtBasePairCut::Pass(AliHBTPair* pair) | |
135 | { | |
136 | Double_t value = GetValue(pair); | |
137 | if ( (value > fMin) && (value <fMax ) ) return kFALSE; //accepted | |
138 | else return kTRUE; //rejected | |
139 | } | |
140 | /******************************************************************/ | |
141 | /******************************************************************/ | |
142 | /******************************************************************/ | |
143 | class AliHBTQInvCut: public AliHbtBasePairCut | |
144 | { | |
145 | public: | |
146 | AliHBTQInvCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBasePairCut(min,max,kHbtPairCutPropQInv){} | |
147 | virtual ~AliHBTQInvCut(){} | |
148 | protected: | |
149 | virtual Double_t GetValue(AliHBTPair* pair){return pair->GetQInv();} | |
150 | private: | |
151 | public: | |
152 | ClassDef(AliHBTQInvCut,1) | |
153 | }; | |
154 | ||
bce80f3b | 155 | |
156 | class AliHBTKtCut: public AliHbtBasePairCut | |
157 | { | |
158 | public: | |
159 | AliHBTKtCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBasePairCut(min,max,kHbtPairCutPropKt){} | |
160 | virtual ~AliHBTKtCut(){} | |
161 | protected: | |
162 | virtual Double_t GetValue(AliHBTPair* pair){return pair->GetKt();} | |
163 | private: | |
164 | public: | |
165 | ClassDef(AliHBTKtCut,1) | |
166 | }; | |
167 | ||
e3131968 | 168 | class AliHBTKStarCut: public AliHbtBasePairCut |
169 | { | |
170 | public: | |
171 | AliHBTKStarCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBasePairCut(min,max,kHbtPairCutPropKStar){} | |
172 | virtual ~AliHBTKStarCut(){} | |
173 | protected: | |
174 | virtual Double_t GetValue(AliHBTPair* pair){return pair->GetKStar();} | |
175 | private: | |
176 | public: | |
177 | ClassDef(AliHBTKStarCut,1) | |
178 | }; | |
2d5d4d7d | 179 | |
180 | class AliHBTQSideCMSLCCut: public AliHbtBasePairCut | |
181 | { | |
182 | public: | |
183 | AliHBTQSideCMSLCCut(Double_t min = 0.0, Double_t max = 0.0): | |
184 | AliHbtBasePairCut(min,max,kHbtPairCutPropQSideCMSLC){} | |
185 | virtual ~AliHBTQSideCMSLCCut(){} | |
186 | protected: | |
187 | virtual Double_t GetValue(AliHBTPair* pair){return pair->GetQSideCMSLC();} | |
188 | private: | |
189 | public: | |
190 | ClassDef(AliHBTQSideCMSLCCut,1) | |
191 | }; | |
192 | ||
193 | ||
194 | class AliHBTQOutCMSLCCut: public AliHbtBasePairCut | |
195 | { | |
196 | public: | |
197 | AliHBTQOutCMSLCCut(Double_t min = 0.0, Double_t max = 0.0): | |
198 | AliHbtBasePairCut(min,max,kHbtPairCutPropQOutCMSLC){} | |
199 | virtual ~AliHBTQOutCMSLCCut(){} | |
200 | protected: | |
201 | virtual Double_t GetValue(AliHBTPair* pair){return pair->GetQOutCMSLC();} | |
202 | private: | |
203 | public: | |
204 | ClassDef(AliHBTQOutCMSLCCut,1) | |
205 | }; | |
206 | ||
207 | class AliHBTQLongCMSLCCut: public AliHbtBasePairCut | |
208 | { | |
209 | public: | |
210 | AliHBTQLongCMSLCCut(Double_t min = 0.0, Double_t max = 0.0): | |
211 | AliHbtBasePairCut(min,max,kHbtPairCutPropQLongCMSLC){} | |
212 | virtual ~AliHBTQLongCMSLCCut(){} | |
213 | protected: | |
214 | virtual Double_t GetValue(AliHBTPair* pair){return pair->GetQLongCMSLC();} | |
215 | private: | |
216 | public: | |
217 | ClassDef(AliHBTQLongCMSLCCut,1) | |
218 | }; | |
219 | ||
1b446896 | 220 | #endif |