]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HBTAN/AliHBTPairCut.h
Bug correction
[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
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
73class 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
94class 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 130inline 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/******************************************************************/
139class 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 151class 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 161class 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
172class 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
186class 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
199class 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