]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HBTAN/AliHBTPairCut.h
KStart cut added. Memory leaks corrected
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPairCut.h
CommitLineData
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
13class AliHbtBasePairCut;
14
15enum AliHBTPairCutProperty
16 {
17 kHbtPairCutPropQInv, //Q invariant
bce80f3b 18 kHbtPairCutPropKt,
e3131968 19 kHbtPairCutPropKStar,
2d5d4d7d 20 kHbtPairCutPropQSideCMSLC,
21 kHbtPairCutPropQOutCMSLC,
22 kHbtPairCutPropQLongCMSLC,
1b446896 23 kHbtPairCutPropNone
24 };
25
26class 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
73class 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
95class 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
133inline Bool_t
134AliHbtBasePairCut::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/******************************************************************/
143class 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
156class 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 168class 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
180class 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
194class 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
207class 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