Updated PaintContour() method
[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     Int_t Write(const char* /*x1*/ = "",Int_t /*x2*/ = 0, Int_t /*x3*/ = 0);
36     Int_t Write(const char* x1 = "",Int_t x2 = 0, Int_t x3 = 0) const {return AliHBTMonTwoParticleFctn1D::Write(x1,x2,x3);}
37     void Rename(const Char_t * name);
38     void Rename(const Char_t * name, const Char_t * title);
39     TH1* GetResult();
40     Double_t GetValue(AliVAODParticle * /*track*/,AliVAODParticle * /*part*/) const { return 0.0; }
41     void Process(AliVAODParticle * track,AliVAODParticle * part);
42   protected:
43     TH1D* fGood;//histogram filled with correctly identified particles
44     TH1D* fAll;//histogram filled with all particles
45     ClassDef(AliHBTMonPIDPurityVsPtFctn,1)
46 };
47 /***********************************************************************/
48
49 class AliHBTMonPIDContaminationVsPtFctn: public AliHBTMonTwoParticleFctn1D, public AliHBTCorrelFunction
50 {
51   public: 
52     AliHBTMonPIDContaminationVsPtFctn(Int_t nbins = 20, Double_t maxXval = 2.0, Double_t minXval = 0.0);
53     AliHBTMonPIDContaminationVsPtFctn(const AliHBTMonPIDContaminationVsPtFctn& /*in*/);
54     virtual ~AliHBTMonPIDContaminationVsPtFctn();    
55
56     AliHBTMonPIDContaminationVsPtFctn& operator=(const AliHBTMonPIDContaminationVsPtFctn& /*in*/);
57
58     void Init();
59     Int_t Write(const char* /*x1*/ = "",Int_t /*x2*/ = 0, Int_t /*x3*/ = 0);
60     Int_t Write(const char* x1 = "",Int_t x2 = 0, Int_t x3 = 0) const {return AliHBTMonTwoParticleFctn1D::Write(x1,x2,x3);}
61     void Rename(const Char_t * name);
62     void Rename(const Char_t * name, const Char_t * title);
63     TH1* GetResult();
64     Double_t GetValue(AliVAODParticle * /*track*/,AliVAODParticle * /*part*/) const { return 0.0; }
65     void Process(AliVAODParticle * track,AliVAODParticle * part);
66   protected:
67     TH1D* fWrong;//histogram filled with wrongly identified particles
68     TH1D* fAll;//histogram filled with all particles
69     ClassDef(AliHBTMonPIDContaminationVsPtFctn,1)
70 };
71 /*************************************************************************************/
72
73 class AliHBTQInvCorrelFctnPerfectPID: public AliHBTTwoPairFctn1D, public AliHBTCorrelFunction
74 {
75 //Q Invaraint Correlation Function
76 //1D two particle function
77 //Fills the function only for correctly reconstructed PID
78 //Together with 
79  public:
80    AliHBTQInvCorrelFctnPerfectPID(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
81    virtual ~AliHBTQInvCorrelFctnPerfectPID(){};
82    void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
83    void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
84    TH1* GetResult();
85  protected:
86    Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* /*partpair*/) const {return trackpair->GetQInv();}
87  private:
88    ClassDef(AliHBTQInvCorrelFctnPerfectPID,1)
89 };
90
91 /*************************************************************************************/
92
93 class AliHBTWeightQInvCorrelFctnPerfectPID: public AliHBTTwoPairFctn1D, public AliHBTCorrelFunction
94 {
95 //Weight Q Invaraint Correlation Function
96 //1D two particle function
97 //Fills the function only for correctly reconstructed PID
98 //Together with regular 
99  public:
100    AliHBTWeightQInvCorrelFctnPerfectPID(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
101    virtual ~AliHBTWeightQInvCorrelFctnPerfectPID(){};
102    void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
103    void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
104    TH1* GetResult();
105  protected:
106    Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* /*partpair*/) const {return trackpair->GetQInv();}
107  private:
108    ClassDef(AliHBTWeightQInvCorrelFctnPerfectPID,1)
109 };
110 /*************************************************************************************/
111 class AliHBTWeightQOutSQideQLongFctnPerfectPID: public AliHBTTwoPairFctn3D, public AliHBTCorrelFunction
112 {
113
114   public:
115     AliHBTWeightQOutSQideQLongFctnPerfectPID(Int_t nXbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0,
116                                             Int_t nYbins = 100, Double_t maxYval = 0.15, Double_t minYval = 0.0,
117                                             Int_t nZbins = 100, Double_t maxZval = 0.15, Double_t minZval = 0.0);
118     virtual  ~AliHBTWeightQOutSQideQLongFctnPerfectPID(){}
119
120     TH1* GetResult();
121     void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
122     void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
123
124   protected:
125     void GetValues(AliHBTPair* /*trackpair*/, AliHBTPair* /*partpair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
126
127     ClassDef(AliHBTWeightQOutSQideQLongFctnPerfectPID,1)
128 };
129
130 /*************************************************************************************/
131 class AliHBTQOutSQideQLongFctnPerfectPID: public AliHBTTwoPairFctn3D, public AliHBTCorrelFunction
132 {
133
134   public:
135     AliHBTQOutSQideQLongFctnPerfectPID(Int_t nXbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0,
136                                             Int_t nYbins = 100, Double_t maxYval = 0.15, Double_t minYval = 0.0,
137                                             Int_t nZbins = 100, Double_t maxZval = 0.15, Double_t minZval = 0.0);
138     virtual  ~AliHBTQOutSQideQLongFctnPerfectPID(){}
139
140     TH1* GetResult();
141     void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
142     void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
143
144   protected:
145     void GetValues(AliHBTPair* /*trackpair*/, AliHBTPair* /*partpair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
146
147     ClassDef(AliHBTQOutSQideQLongFctnPerfectPID,1)
148 };
149
150
151 /*************************************************************************************/
152
153 class AliHBTPairPIDProbVsQInvFctn: public AliHBTOnePairFctn1D, public AliHBTCorrelFunction
154 {
155 //Q Invaraint Correlation Function
156 //1D two particle function
157  public:
158    AliHBTPairPIDProbVsQInvFctn(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
159    virtual ~AliHBTPairPIDProbVsQInvFctn(){};
160    void ProcessSameEventParticles(AliHBTPair* pair);
161    void ProcessDiffEventParticles(AliHBTPair* pair);
162    TH1* GetResult();
163  protected:
164    Double_t GetValue(AliHBTPair * pair) const {return pair->GetQInv();}
165  private:
166    ClassDef(AliHBTPairPIDProbVsQInvFctn,1)
167 };
168 /*************************************************************************************/
169
170 class AliHBTPairPIDProbVsQOutSQideQLongFctn: public AliHBTOnePairFctn3D, public AliHBTCorrelFunction
171 {
172
173   public:
174     AliHBTPairPIDProbVsQOutSQideQLongFctn(Int_t nXbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0,
175                                           Int_t nYbins = 100, Double_t maxYval = 0.15, Double_t minYval = 0.0,
176                                           Int_t nZbins = 100, Double_t maxZval = 0.15, Double_t minZval = 0.0);
177     virtual  ~AliHBTPairPIDProbVsQOutSQideQLongFctn(){}
178
179     TH1* GetResult();
180     void ProcessSameEventParticles(AliHBTPair* part);
181     void ProcessDiffEventParticles(AliHBTPair* pair);
182
183   protected:
184     void GetValues(AliHBTPair* /*pair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
185
186     ClassDef(AliHBTPairPIDProbVsQOutSQideQLongFctn,1)
187 };
188 /******************************************************************/
189
190 class AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID: public AliHBTTwoPairFctn3D, public AliHBTCorrelFunction
191  {
192   public:
193     AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID(Int_t nXbins = 50, Double_t maxXval = 0.3, Double_t minXval = 0.0,
194                                     Int_t nYbins = 50, Double_t maxYval = 0.3, Double_t minYval = 0.0,
195                         Int_t nZbins = 50, Double_t maxZval = 0.3, Double_t minZval = 0.0);
196     virtual ~AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID(){}
197     void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
198     void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
199     
200     TH1* GetResult();
201   protected:
202     void GetValues(AliHBTPair* /*trackpair*/, AliHBTPair* /*partpair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
203   private:
204     ClassDef(AliHBTTwoTrackEffFctnPtThetaPhiPerfectPID,1)
205  };
206 /*************************************************************************************/
207
208 class AliHBTPairPIDProbVsPtThetaPhiFctn: public AliHBTOnePairFctn3D, public AliHBTCorrelFunction
209 {
210
211   public:
212     AliHBTPairPIDProbVsPtThetaPhiFctn(Int_t nXbins = 50, Double_t maxXval = 0.3, Double_t minXval = 0.0,
213                                       Int_t nYbins = 50, Double_t maxYval = 0.3, Double_t minYval = 0.0,
214                                       Int_t nZbins = 50, Double_t maxZval = 0.3, Double_t minZval = 0.0);
215     virtual  ~AliHBTPairPIDProbVsPtThetaPhiFctn(){}
216
217     TH1* GetResult();
218     void ProcessSameEventParticles(AliHBTPair* part);
219     void ProcessDiffEventParticles(AliHBTPair* pair);
220
221   protected:
222     void GetValues(AliHBTPair* /*pair*/, Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
223
224     ClassDef(AliHBTPairPIDProbVsPtThetaPhiFctn,1)
225 };
226
227
228
229 #endif