]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HBTAN/AliHBTPairCut.h
The native random generator of Pythia commented out
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPairCut.h
CommitLineData
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 13class AliHBTParticleCut;
1b446896 14class AliHbtBasePairCut;
15
16enum 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 27class 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
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)
1b446896 69
1b446896 70};
71/******************************************************************/
72/******************************************************************/
73/******************************************************************/
74
75class AliHBTEmptyPairCut: public AliHBTPairCut
76{
ea197c3e 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)
1b446896 88
1b446896 89};
90
91
92
93/******************************************************************/
94/******************************************************************/
95/******************************************************************/
96
97class AliHbtBasePairCut: public TObject
ea197c3e 98{
99 //This class defines the range of some property - pure virtual
100 //Property is coded by AliHBTCutTypes type
1b446896 101
ea197c3e 102 public:
1b446896 103
ea197c3e 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(){}
1b446896 108
ea197c3e 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
1b446896 131 };
132
ea197c3e 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}
1b446896 139/******************************************************************/
140/******************************************************************/
141/******************************************************************/
142class AliHBTQInvCut: public AliHbtBasePairCut
ea197c3e 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)
1b446896 151 };
152
bce80f3b 153
ea197c3e 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)
bce80f3b 162 };
163
e3131968 164class AliHBTKStarCut: public AliHbtBasePairCut
ea197c3e 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};
2d5d4d7d 174
175class AliHBTQSideCMSLCCut: public AliHbtBasePairCut
ea197c3e 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};
2d5d4d7d 187
188
189class AliHBTQOutCMSLCCut: public AliHbtBasePairCut
ea197c3e 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};
2d5d4d7d 201
202class AliHBTQLongCMSLCCut: public AliHbtBasePairCut
ea197c3e 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};
2d5d4d7d 214
1b446896 215#endif