]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HBTAN/AliHBTMonitorFunction.h
Corrections to obey the coding conventions
[u/mrichter/AliRoot.git] / HBTAN / AliHBTMonitorFunction.h
1 #ifndef ALIMONITORFUNCTION_H
2 #define ALIMONITORFUNCTION_H
3
4 /* $Id: */
5
6 //Zbigniew.Chajecki@cern.ch
7
8 #include "AliHBTParticleCut.h"
9 #include "AliHBTParticle.h"  
10
11 class TH1;
12 class TH1D;
13 class TH2D;
14 class TH3D;
15
16 //class AliHBTAnalysis;
17
18 class AliHBTMonitorFunction: public TNamed
19 //Abstract base class for HBT functions
20 {
21  public:
22   AliHBTMonitorFunction();
23   AliHBTMonitorFunction(const char* name,const char* title);
24   virtual ~AliHBTMonitorFunction();
25   
26   virtual TH1* GetResult() = 0;
27   
28   virtual void Write();
29   virtual void Init(){}
30   void Rename(const Char_t * name); 
31   void Rename(const Char_t * name, const Char_t * title); 
32   
33   void SetParticleCut(AliHBTParticleCut*);
34   
35   virtual AliHBTParticle* CheckParticle(AliHBTParticle* particle);
36   
37  protected:
38   AliHBTParticleCut*      fParticleCut;
39     
40   ClassDef(AliHBTMonitorFunction,1)
41 };
42
43 /******************************************************************/
44 inline AliHBTParticle* AliHBTMonitorFunction::CheckParticle(AliHBTParticle* particle)
45 {
46   //check if particle meets the cut criteria
47   if(fParticleCut->Pass(particle)) //if the particle is BAD
48     { 
49       return 0x0;//it is BAD as well - so return
50     }
51   return particle; 
52 }
53
54 /******************************************************************/
55 class AliHBTMonOneParticleFctn: public AliHBTMonitorFunction
56 {
57  public:
58   AliHBTMonOneParticleFctn(){}
59   AliHBTMonOneParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
60   virtual ~AliHBTMonOneParticleFctn(){}
61     
62   virtual void Process(AliHBTParticle* particle) = 0;
63     
64   ClassDef(AliHBTMonOneParticleFctn,1)
65   
66 };
67
68 /******************************************************************/
69 class AliHBTMonOneParticleFctn1D: public AliHBTMonOneParticleFctn
70 {
71  public:
72   AliHBTMonOneParticleFctn1D();
73   AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
74   AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
75                              Int_t nbins = 100, Double_t maxXval = 1.4, Double_t minXval = 0.0);
76   virtual ~AliHBTMonOneParticleFctn1D();
77   
78   TH1* GetResult(){return fResult;}
79
80   void Process(AliHBTParticle* particle);
81
82  protected:
83   virtual Double_t GetValue(AliHBTParticle* particle) = 0; 
84
85   TH1D* fResult;
86   
87   ClassDef(AliHBTMonOneParticleFctn1D,2)
88 };
89
90 /******************************************************************/ 
91 class AliHBTMonOneParticleFctn2D: public AliHBTMonOneParticleFctn
92 {
93  public:
94   AliHBTMonOneParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
95                              Int_t nYbins = 200, Double_t maxYval = 1.5, Double_t minYval =-0.1);
96   virtual ~AliHBTMonOneParticleFctn2D();
97   
98   TH1* GetResult(){return fResult;}
99   
100   void Process(AliHBTParticle* particle);
101   
102  protected:
103   virtual void GetValues(AliHBTParticle* particle, Double_t&, Double_t&) = 0;
104
105   TH2D* fResult;
106   
107   ClassDef(AliHBTMonOneParticleFctn2D,1)
108 };
109
110 /******************************************************************/
111 class AliHBTMonOneParticleFctn3D: public AliHBTMonOneParticleFctn
112 {
113  public:
114   AliHBTMonOneParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
115                              Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15, 
116                              Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
117             
118   virtual ~AliHBTMonOneParticleFctn3D();
119
120   TH1* GetResult(){return fResult;}
121
122  protected:
123   TH3D* fResult;
124
125   ClassDef(AliHBTMonOneParticleFctn3D,1)
126 };
127
128 /******************************************************************/
129 class AliHBTMonTwoParticleFctn: public AliHBTMonitorFunction
130 {
131  public:
132   AliHBTMonTwoParticleFctn(){};
133   AliHBTMonTwoParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
134   virtual ~AliHBTMonTwoParticleFctn(){};
135   
136   virtual void 
137     Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
138   
139   ClassDef(AliHBTMonTwoParticleFctn,1)
140   
141 };
142
143 /******************************************************************/
144 class AliHBTMonTwoParticleFctn1D: public AliHBTMonTwoParticleFctn
145 {
146  public:
147   AliHBTMonTwoParticleFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
148   AliHBTMonTwoParticleFctn1D(const char*,const char*,
149                              Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
150   virtual ~AliHBTMonTwoParticleFctn1D();
151   
152   TH1* GetResult(){return fResult;}
153   
154   void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
155   
156  protected:
157   virtual Double_t GetValue(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
158
159   TH1D* fResult;
160
161   ClassDef(AliHBTMonTwoParticleFctn1D,1)
162 };
163
164 /******************************************************************/
165 class AliHBTMonTwoParticleFctn2D: public AliHBTMonTwoParticleFctn
166 {
167  public:
168   AliHBTMonTwoParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
169                              Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
170   virtual ~AliHBTMonTwoParticleFctn2D();
171   
172   TH1* GetResult(){return fResult;}
173   
174   void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
175   
176  protected:
177   virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&) = 0;
178
179   TH2D* fResult;
180   
181   ClassDef(AliHBTMonTwoParticleFctn2D,1)
182 };
183
184 /******************************************************************/
185 class AliHBTMonTwoParticleFctn3D: public AliHBTMonTwoParticleFctn
186 {
187  public:
188   AliHBTMonTwoParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
189                              Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15, 
190                              Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15){}
191   virtual ~AliHBTMonTwoParticleFctn3D(){}
192   
193   TH1* GetResult(){return fResult;}
194   
195   void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
196
197  protected:
198   virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&,Double_t&) = 0;
199
200   TH3D* fResult;
201   
202   ClassDef(AliHBTMonTwoParticleFctn3D,1)
203 };
204
205 #endif