Updated flags
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPIDPurityFctns.h
1 #ifndef ALIHBTPIDPURITYFCTNS_H
2 #define ALIHBTPIDPURITYFCTNS_H
3 //_______________________________________________________________________________
4 /////////////////////////////////////////////////////////////////////////////////
5 //
6 // class AliHBTMonPIDPurityVsPtFctn;
7 // class AliHBTMonThetaResolutionVsPtFctn;
8 //
9 // file: AliHBTPIDPurityFctns.cxx AliHBTPIDPurityFctns.h
10 //
11 // Classes for calculating PID purity, efficiency and other things connected with PID
12 // xxxxxxxxxx
13 // xxxxxxxxxx
14 // xxxxxxxxxx
15 // xxxxxxxxxx
16 // xxxxxxxxxx
17 //
18 // added by Piotr.Skowronski@cern.ch
19 //
20 //////////////////////////////////////////////////////////////////////////////////
21
22 #include "AliHBTFunction.h"
23 #include "AliHBTMonitorFunction.h"
24
25 class AliHBTMonPIDPurityVsPtFctn: public AliHBTMonTwoParticleFctn1D, public AliHBTCorrelFunction
26 {
27   public: 
28     AliHBTMonPIDPurityVsPtFctn(Int_t nbins = 20, Double_t maxXval = 2.0, Double_t minXval = 0.0);
29     AliHBTMonPIDPurityVsPtFctn(const AliHBTMonPIDPurityVsPtFctn& /*in*/);
30     virtual ~AliHBTMonPIDPurityVsPtFctn();
31     
32     AliHBTMonPIDPurityVsPtFctn& operator=(const AliHBTMonPIDPurityVsPtFctn& /*in*/);
33     
34     void Init();
35     void Write();
36     void Rename(const Char_t * name);
37     void Rename(const Char_t * name, const Char_t * title);
38     TH1* GetResult();
39     Double_t GetValue(AliVAODParticle * /*track*/,AliVAODParticle * /*part*/) const { return 0.0; }
40     void Process(AliVAODParticle * track,AliVAODParticle * part);
41   protected:
42     TH1D* fGood;//histogram filled with correctly identified particles
43     TH1D* fAll;//histogram filled with all particles
44     ClassDef(AliHBTMonPIDPurityVsPtFctn,1)
45 };
46 /***********************************************************************/
47
48 class AliHBTMonPIDContaminationVsPtFctn: public AliHBTMonTwoParticleFctn1D, public AliHBTCorrelFunction
49 {
50   public: 
51     AliHBTMonPIDContaminationVsPtFctn(Int_t nbins = 20, Double_t maxXval = 2.0, Double_t minXval = 0.0);
52     AliHBTMonPIDContaminationVsPtFctn(const AliHBTMonPIDContaminationVsPtFctn& /*in*/);
53     virtual ~AliHBTMonPIDContaminationVsPtFctn();    
54
55     AliHBTMonPIDContaminationVsPtFctn& operator=(const AliHBTMonPIDContaminationVsPtFctn& /*in*/);
56
57     void Init();
58     void Write();
59     void Rename(const Char_t * name);
60     void Rename(const Char_t * name, const Char_t * title);
61     TH1* GetResult();
62     Double_t GetValue(AliVAODParticle * /*track*/,AliVAODParticle * /*part*/) const { return 0.0; }
63     void Process(AliVAODParticle * track,AliVAODParticle * part);
64   protected:
65     TH1D* fWrong;//histogram filled with wrongly identified particles
66     TH1D* fAll;//histogram filled with all particles
67     ClassDef(AliHBTMonPIDContaminationVsPtFctn,1)
68 };
69 /*************************************************************************************/
70
71 class AliHBTQInvCorrelFctnPerfectPID: public AliHBTTwoPairFctn1D, public AliHBTCorrelFunction
72 {
73 //Q Invaraint Correlation Function
74 //1D two particle function
75 //Fills the function only for correctly reconstructed PID
76 //Together with 
77  public:
78    AliHBTQInvCorrelFctnPerfectPID(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
79    virtual ~AliHBTQInvCorrelFctnPerfectPID(){};
80    void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
81    void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
82    TH1* GetResult();
83  protected:
84    Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* /*partpair*/) const {return trackpair->GetQInv();}
85  private:
86    ClassDef(AliHBTQInvCorrelFctnPerfectPID,1)
87 };
88
89 /*************************************************************************************/
90
91 class AliHBTWeightQInvCorrelFctnPerfectPID: public AliHBTTwoPairFctn1D, public AliHBTCorrelFunction
92 {
93 //Weight Q Invaraint Correlation Function
94 //1D two particle function
95 //Fills the function only for correctly reconstructed PID
96 //Together with regular 
97  public:
98    AliHBTWeightQInvCorrelFctnPerfectPID(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
99    virtual ~AliHBTWeightQInvCorrelFctnPerfectPID(){};
100    void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
101    void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
102    TH1* GetResult();
103  protected:
104    Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* /*partpair*/) const {return trackpair->GetQInv();}
105  private:
106    ClassDef(AliHBTWeightQInvCorrelFctnPerfectPID,1)
107 };
108 /*************************************************************************************/
109 class AliHBTWeightQOutSQideQLongFctnPerfectPID: public AliHBTTwoPairFctn3D, public AliHBTCorrelFunction
110 {
111
112   public:
113     AliHBTWeightQOutSQideQLongFctnPerfectPID(Int_t nXbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0,
114                                             Int_t nYbins = 100, Double_t maxYval = 0.15, Double_t minYval = 0.0,
115                                             Int_t nZbins = 100, Double_t maxZval = 0.15, Double_t minZval = 0.0);
116     virtual  ~AliHBTWeightQOutSQideQLongFctnPerfectPID(){}
117
118     TH1* GetResult();
119     void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
120     void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
121
122   protected:
123     void GetValues(AliHBTPair* /*trackpair*/, AliHBTPair* /*partpair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
124
125     ClassDef(AliHBTWeightQOutSQideQLongFctnPerfectPID,1)
126 };
127
128 /*************************************************************************************/
129 class AliHBTQOutSQideQLongFctnPerfectPID: public AliHBTTwoPairFctn3D, public AliHBTCorrelFunction
130 {
131
132   public:
133     AliHBTQOutSQideQLongFctnPerfectPID(Int_t nXbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0,
134                                             Int_t nYbins = 100, Double_t maxYval = 0.15, Double_t minYval = 0.0,
135                                             Int_t nZbins = 100, Double_t maxZval = 0.15, Double_t minZval = 0.0);
136     virtual  ~AliHBTQOutSQideQLongFctnPerfectPID(){}
137
138     TH1* GetResult();
139     void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
140     void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
141
142   protected:
143     void GetValues(AliHBTPair* /*trackpair*/, AliHBTPair* /*partpair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
144
145     ClassDef(AliHBTQOutSQideQLongFctnPerfectPID,1)
146 };
147
148
149 /*************************************************************************************/
150
151 class AliHBTPairPIDProbVsQInvFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
152 {
153 //Q Invaraint Correlation Function
154 //1D two particle function
155  public:
156    AliHBTPairPIDProbVsQInvFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
157    virtual ~AliHBTPairPIDProbVsQInvFctn(){};
158    void ProcessSameEventParticles(AliHBTPair* pair);
159    void ProcessDiffEventParticles(AliHBTPair* pair);
160    TH1* GetResult();
161  protected:
162    Double_t GetValue(AliHBTPair * pair) const {return pair->GetQInv();}
163  private:
164    ClassDef(AliHBTPairPIDProbVsQInvFctn,1)
165 };
166 /*************************************************************************************/
167
168 class AliHBTPairPIDProbVsQOutSQideQLongFctn: public AliHBTOnePairFctn3D, public AliHBTCorrelFunction
169 {
170
171   public:
172     AliHBTPairPIDProbVsQOutSQideQLongFctn(Int_t nXbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0,
173                                           Int_t nYbins = 100, Double_t maxYval = 0.15, Double_t minYval = 0.0,
174                                           Int_t nZbins = 100, Double_t maxZval = 0.15, Double_t minZval = 0.0);
175     virtual  ~AliHBTPairPIDProbVsQOutSQideQLongFctn(){}
176
177     TH1* GetResult();
178     void ProcessSameEventParticles(AliHBTPair* part);
179     void ProcessDiffEventParticles(AliHBTPair* pair);
180
181   protected:
182     void GetValues(AliHBTPair* /*pair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
183
184     ClassDef(AliHBTPairPIDProbVsQOutSQideQLongFctn,1)
185 };
186 /******************************************************************/
187
188 class AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID: public AliHBTTwoPairFctn3D, public AliHBTCorrelFunction
189  {
190   public:
191     AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID(Int_t nXbins = 50, Double_t maxXval = 0.3, Double_t minXval = 0.0,
192                                     Int_t nYbins = 50, Double_t maxYval = 0.3, Double_t minYval = 0.0,
193                         Int_t nZbins = 50, Double_t maxZval = 0.3, Double_t minZval = 0.0);
194     virtual ~AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID(){}
195     void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
196     void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
197     
198     TH1* GetResult();
199   protected:
200     void GetValues(AliHBTPair* /*trackpair*/, AliHBTPair* /*partpair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
201   private:
202     ClassDef(AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID,1)
203  };
204 /*************************************************************************************/
205
206 class AliHBTPairPIDProbVsPtThetaPhiFctn: public AliHBTOnePairFctn3D, public AliHBTCorrelFunction
207 {
208
209   public:
210     AliHBTPairPIDProbVsPtThetaPhiFctn(Int_t nXbins = 50, Double_t maxXval = 0.3, Double_t minXval = 0.0,
211                                       Int_t nYbins = 50, Double_t maxYval = 0.3, Double_t minYval = 0.0,
212                                       Int_t nZbins = 50, Double_t maxZval = 0.3, Double_t minZval = 0.0);
213     virtual  ~AliHBTPairPIDProbVsPtThetaPhiFctn(){}
214
215     TH1* GetResult();
216     void ProcessSameEventParticles(AliHBTPair* part);
217     void ProcessDiffEventParticles(AliHBTPair* pair);
218
219   protected:
220     void GetValues(AliHBTPair* /*pair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
221
222     ClassDef(AliHBTPairPIDProbVsPtThetaPhiFctn,1)
223 };
224
225
226
227 #endif