SetDisplayInfo added
[u/mrichter/AliRoot.git] / HBTAN / AliHBTMonitorFunction.cxx
1 #include "AliHBTMonitorFunction.h"
2 /******************************************************************/
3 /*
4 Base classes for monitor functions
5
6           monitor function
7                /    \
8               /      \
9              /        \
10             /          \
11            /            \
12           /              \
13          /                \
14    one particle     two particle  
15      /  |  \            /  |  \
16     /   |   \          /   |   \
17    1D  2D   3D        1D  2D   3D
18
19 Zbigniew.Chajecki@cern.ch
20
21 */
22 /******************************************************************/
23 /******************************************************************/
24
25 #include <Riostream.h>
26 ClassImp( AliHBTMonitorFunction )
27
28 AliHBTMonitorFunction::AliHBTMonitorFunction()
29 {
30   fParticleCut = new AliHBTEmptyParticleCut(); //dummy cut
31 }
32 /******************************************************************/
33 AliHBTMonitorFunction::AliHBTMonitorFunction(const char* name,const char* title):TNamed(name,title)
34 {
35   fParticleCut = new AliHBTEmptyParticleCut(); //dummy cut
36 }
37 /******************************************************************/
38
39 AliHBTMonitorFunction::~AliHBTMonitorFunction()
40  {
41   if (fParticleCut) delete fParticleCut;
42  }
43 /******************************************************************/
44
45 void AliHBTMonitorFunction::
46 Write()
47  {
48    if (GetResult()) GetResult()->Write();
49  }
50 /******************************************************************/
51
52 /******************************************************************/
53 void AliHBTMonitorFunction::SetParticleCut(AliHBTParticleCut* cut)
54 {
55 //Sets new Particle Cut. Old one is deleted
56 //Note that it is created new object instead of simple pointer set
57 //I do not want to have pointer 
58 //to object created somewhere else
59 //because in that case I could not believe that 
60 //it would always exist (sb could delete it)
61 //so we have always own copy
62
63  if(!cut) 
64    {
65      Error("AliHBTMonitorFunction::SetParticleCut","argument is NULL");
66      return;
67    }
68  delete fParticleCut;
69  fParticleCut = (AliHBTParticleCut*)cut->Clone();
70  
71 }
72
73 /******************************************************************/
74
75 void AliHBTMonitorFunction::
76 Rename(const Char_t * name)
77  {
78  //renames the function and histograms
79   SetName(name);
80   SetTitle(name);
81   
82   TString numstr = fName + " Result";  //title and name of the 
83                                            //result histogram
84   GetResult()->SetName(numstr.Data());
85   GetResult()->SetTitle(numstr.Data());
86   
87   
88  }
89
90 void AliHBTMonitorFunction::
91 Rename(const Char_t * name, const Char_t * title)
92  {
93  //renames and retitle the function and histograms
94  
95   SetName(name);
96   SetTitle(title);
97   
98   TString numstrn = fName + " Result";  //name of the 
99                                            //result histogram
100
101   TString numstrt = fTitle + " Result";  //title of the 
102                                            //result histogram
103                    
104
105   GetResult()->SetName(numstrn.Data());
106   GetResult()->SetTitle(numstrt.Data());
107
108  }
109
110 /******************************************************************/
111 /******************************************************************/
112 /******************************************************************/
113 ClassImp( AliHBTMonOneParticleFctn )  //z.ch.
114 /******************************************************************/
115 /******************************************************************/
116 ClassImp( AliHBTMonTwoParticleFctn )  //z.ch.
117 /******************************************************************/
118 /******************************************************************/
119 /******************************************************************/
120 ClassImp( AliHBTMonOneParticleFctn1D )
121 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D()
122  {
123    fResult = 0x0;
124  }
125
126 AliHBTMonOneParticleFctn1D::
127 AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval)
128  {
129    TString numstr = fName + " Result";  //title and name of the 
130                                            //result histogram
131          
132    fResult   = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
133  }
134
135 AliHBTMonOneParticleFctn1D::
136 AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
137                     Int_t nbins, Double_t maxXval, Double_t minXval)
138         :AliHBTMonOneParticleFctn(name,title)
139 {
140    TString numstr = fName + " Result";  //title and name of the 
141                                            //result histogram
142          
143    fResult   = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
144 }
145 /******************************************************************/
146 AliHBTMonOneParticleFctn1D::~AliHBTMonOneParticleFctn1D()
147 {
148   delete fResult;
149 }
150 /******************************************************************/
151
152 void AliHBTMonOneParticleFctn1D::Process(AliHBTParticle* particle)
153 {
154  //Fills the result
155    particle = CheckParticle(particle);
156    if(particle) fResult->Fill(GetValue(particle));
157 }
158 /******************************************************************/
159 /******************************************************************/
160  
161 ClassImp( AliHBTMonOneParticleFctn2D )
162
163 AliHBTMonOneParticleFctn2D::
164 AliHBTMonOneParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval , 
165                     Int_t nYbins, Double_t maxYval, Double_t minYval)
166
167 {
168    TString numstr = fName + " Result";  //title and name of the 
169                                            //result histogram
170         
171    fResult   = new TH2D(numstr.Data(),numstr.Data(),
172                            nXbins,minXval,maxXval,
173                nYbins,minYval,maxYval);
174                
175 }         
176
177 AliHBTMonOneParticleFctn2D::~AliHBTMonOneParticleFctn2D()
178 {
179   delete fResult;
180 }
181 void AliHBTMonOneParticleFctn2D::Process(AliHBTParticle* particle)
182 {
183   particle = CheckParticle(particle);
184   if(particle) 
185    { 
186      Double_t x,y;
187      GetValues(particle,x,y);
188      fResult->Fill(x,y);
189    }
190 }
191
192 /******************************************************************/
193 /******************************************************************/
194 /******************************************************************/
195
196 ClassImp( AliHBTMonOneParticleFctn3D)
197
198 AliHBTMonOneParticleFctn3D::
199 AliHBTMonOneParticleFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval, 
200                     Int_t nYbins, Double_t maxYval, Double_t minYval, 
201                     Int_t nZbins, Double_t maxZval, Double_t minZval)
202
203 {
204    TString numstr = fName + " Result";  //title and name of the 
205                                            //result histogram
206  
207    fResult   = new TH3D(numstr.Data(),numstr.Data(),
208                            nXbins,minXval,maxXval,
209                nYbins,minYval,maxYval,
210                nZbins,minZval,maxZval);
211
212 }         
213 /******************************************************************/
214
215 AliHBTMonOneParticleFctn3D::~AliHBTMonOneParticleFctn3D()
216 {
217   delete fResult;
218 }
219 /******************************************************************/
220
221
222 /******************************************************************/
223 /******************************************************************/
224 /******************************************************************/
225 ClassImp( AliHBTMonTwoParticleFctn1D)
226
227 AliHBTMonTwoParticleFctn1D::
228 AliHBTMonTwoParticleFctn1D(Int_t nbins, Double_t maxval, Double_t minval)
229  {
230    TString numstr = fName + " Result";  //title and name of the 
231                                            //result histogram
232          
233    fResult   = new TH1D(numstr.Data(),numstr.Data(),
234                            nbins,minval,maxval);
235                
236  }
237
238 AliHBTMonTwoParticleFctn1D::
239 AliHBTMonTwoParticleFctn1D(const Char_t* name, const Char_t* title,
240                     Int_t nbins, Double_t maxval, Double_t minval)
241         :AliHBTMonTwoParticleFctn(name,title)
242  {
243    TString numstr = fName + " Result";  //title and name of the 
244                                            //result histogram
245
246    fResult   = new TH1D(numstr.Data(),numstr.Data(),
247                            nbins,minval,maxval);
248                
249  }
250
251
252 /******************************************************************/
253 AliHBTMonTwoParticleFctn1D::~AliHBTMonTwoParticleFctn1D()
254 {
255   delete fResult;
256 }
257 /******************************************************************/
258 void AliHBTMonTwoParticleFctn1D::
259 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
260 {
261   partparticle  = CheckParticle(partparticle);
262   trackparticle = CheckParticle(trackparticle);
263   if( partparticle && trackparticle) 
264    { 
265      Double_t x = GetValue(trackparticle,partparticle);
266      fResult->Fill(x);
267    }
268 }
269 /******************************************************************/
270 /******************************************************************/
271 /******************************************************************/
272 ClassImp( AliHBTMonTwoParticleFctn2D)
273
274
275 AliHBTMonTwoParticleFctn2D::
276 AliHBTMonTwoParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval , 
277                     Int_t nYbins, Double_t maxYval, Double_t minYval)
278
279 {
280    TString numstr = fName + " Result";  //title and name of the 
281                                            //result histogram
282          
283    fResult   = new TH2D(numstr.Data(),numstr.Data(),
284                            nXbins,minXval,maxXval,
285                nYbins,minYval,maxYval);
286                
287 }         
288 /******************************************************************/
289 AliHBTMonTwoParticleFctn2D::~AliHBTMonTwoParticleFctn2D()
290 {
291   delete fResult;
292 }
293 /******************************************************************/
294 void AliHBTMonTwoParticleFctn2D::
295 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
296 {
297   partparticle  = CheckParticle(partparticle);
298   trackparticle = CheckParticle(trackparticle);
299   if( partparticle && trackparticle) 
300    { 
301      Double_t x,y;
302      GetValues(trackparticle,partparticle,x,y);
303      fResult->Fill(x,y);
304    }
305 }
306 /******************************************************************/
307 /******************************************************************/
308 /******************************************************************/
309 ClassImp(AliHBTMonTwoParticleFctn3D)
310
311 void AliHBTMonTwoParticleFctn3D::
312 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
313 {
314   partparticle  = CheckParticle(partparticle);
315   trackparticle = CheckParticle(trackparticle);
316   if( partparticle && trackparticle) 
317    { 
318      Double_t x,y,z;
319      GetValues(trackparticle,partparticle,x,y,z);
320      fResult->Fill(x,y,z);
321    }
322 }
323 /******************************************************************/
324 /******************************************************************/
325 /******************************************************************/
326 /******************************************************************/
327