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