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