]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - HBTAN/AliHBTPairCut.h
The native random generator of Pythia commented out
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPairCut.h
... / ...
CommitLineData
1#ifndef ALIHBTPAIRCUT_H
2#define ALIHBTPAIRCUT_H
3
4/* $Id$ */
5
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
11#include "AliHBTPair.h"
12
13class AliHBTParticleCut;
14class AliHbtBasePairCut;
15
16enum AliHBTPairCutProperty
17{
18 kHbtPairCutPropQInv, //Q invariant
19 kHbtPairCutPropKt,
20 kHbtPairCutPropKStar,
21 kHbtPairCutPropQSideCMSLC,
22 kHbtPairCutPropQOutCMSLC,
23 kHbtPairCutPropQLongCMSLC,
24 kHbtPairCutPropNone
25};
26
27class AliHBTPairCut: public TNamed
28{
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;
37
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
44 void AddBasePairCut(AliHbtBasePairCut* cut);
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
67
68 ClassDef(AliHBTPairCut,2)
69
70};
71/******************************************************************/
72/******************************************************************/
73/******************************************************************/
74
75class AliHBTEmptyPairCut: public AliHBTPairCut
76{
77 //Empty - it passes possitively all particles - it means returns always False
78 //Class describing cut on pairs of particles
79 public:
80 AliHBTEmptyPairCut(){};
81 AliHBTEmptyPairCut(const AliHBTEmptyPairCut& in){};
82 virtual ~AliHBTEmptyPairCut(){};
83
84 Bool_t Pass(AliHBTPair*) const {return kFALSE;} //accpept everything
85 Bool_t IsEmpty() const {return kTRUE;}
86
87 ClassDef(AliHBTEmptyPairCut,1)
88
89};
90
91
92
93/******************************************************************/
94/******************************************************************/
95/******************************************************************/
96
97class AliHbtBasePairCut: public TObject
98{
99 //This class defines the range of some property - pure virtual
100 //Property is coded by AliHBTCutTypes type
101
102 public:
103
104 AliHbtBasePairCut(Double_t min = 0.0, Double_t max = 0.0, AliHBTPairCutProperty prop= kHbtPairCutPropNone):
105 fMin(min),fMax(max),fProperty(prop){}
106
107 virtual ~AliHbtBasePairCut(){}
108
109 Bool_t Pass(AliHBTPair* pair) const;
110
111 void SetRange(Double_t min, Double_t max){fMin = min; fMax = max;}
112
113 void SetMinimum(Double_t min){fMin = min;}
114 void SetMaximum(Double_t max){fMax = max;}
115
116 Double_t GetMinimum() const {return fMin;}
117 Double_t GetMaximum() const {return fMax;}
118
119 AliHBTPairCutProperty GetProperty() const {return fProperty;}
120
121 protected:
122 virtual Double_t GetValue(AliHBTPair* pair) const = 0;
123
124 Double_t fMin; // Lower boundary of the range
125 Double_t fMax; // Upper boundary of the range
126
127 AliHBTPairCutProperty fProperty; // The property itself
128
129 ClassDef(AliHbtBasePairCut,1)
130
131 };
132
133inline Bool_t AliHbtBasePairCut::Pass(AliHBTPair* pair) const
134{
135 Double_t value = GetValue(pair);
136 if ( (value > fMin) && (value <fMax ) ) return kFALSE; //accepted
137 else return kTRUE; //rejected
138}
139/******************************************************************/
140/******************************************************************/
141/******************************************************************/
142class AliHBTQInvCut: public AliHbtBasePairCut
143{
144 public:
145 AliHBTQInvCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBasePairCut(min,max,kHbtPairCutPropQInv){}
146 virtual ~AliHBTQInvCut(){}
147 protected:
148 virtual Double_t GetValue(AliHBTPair* pair) const {return pair->GetQInv();}
149
150 ClassDef(AliHBTQInvCut,1)
151 };
152
153
154class AliHBTKtCut: public AliHbtBasePairCut {
155 public:
156 AliHBTKtCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBasePairCut(min,max,kHbtPairCutPropKt){}
157 virtual ~AliHBTKtCut(){}
158 protected:
159 virtual Double_t GetValue(AliHBTPair* pair) const {return pair->GetKt();}
160
161 ClassDef(AliHBTKtCut,1)
162 };
163
164class AliHBTKStarCut: public AliHbtBasePairCut
165{
166 public:
167 AliHBTKStarCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBasePairCut(min,max,kHbtPairCutPropKStar){}
168 virtual ~AliHBTKStarCut(){}
169 protected:
170 virtual Double_t GetValue(AliHBTPair* pair) const {return pair->GetKStar();}
171
172 ClassDef(AliHBTKStarCut,1)
173};
174
175class AliHBTQSideCMSLCCut: public AliHbtBasePairCut
176{
177 public:
178 AliHBTQSideCMSLCCut(Double_t min = 0.0, Double_t max = 0.0):
179 AliHbtBasePairCut(min,max,kHbtPairCutPropQSideCMSLC){}
180 virtual ~AliHBTQSideCMSLCCut(){}
181 protected:
182 virtual Double_t GetValue(AliHBTPair* pair) const
183 {return pair->GetQSideCMSLC();}
184
185 ClassDef(AliHBTQSideCMSLCCut,1)
186};
187
188
189class AliHBTQOutCMSLCCut: public AliHbtBasePairCut
190{
191 public:
192 AliHBTQOutCMSLCCut(Double_t min = 0.0, Double_t max = 0.0):
193 AliHbtBasePairCut(min,max,kHbtPairCutPropQOutCMSLC){}
194 virtual ~AliHBTQOutCMSLCCut(){}
195 protected:
196 virtual Double_t GetValue(AliHBTPair* pair) const
197 {return pair->GetQOutCMSLC();}
198
199 ClassDef(AliHBTQOutCMSLCCut,1)
200};
201
202class AliHBTQLongCMSLCCut: public AliHbtBasePairCut
203{
204 public:
205 AliHBTQLongCMSLCCut(Double_t min = 0.0, Double_t max = 0.0):
206 AliHbtBasePairCut(min,max,kHbtPairCutPropQLongCMSLC){}
207 virtual ~AliHBTQLongCMSLCCut(){}
208 protected:
209 virtual Double_t GetValue(AliHBTPair* pair) const
210 {return pair->GetQLongCMSLC();}
211
212 ClassDef(AliHBTQLongCMSLCCut,1)
213};
214
215#endif