1 #include "AliHBTMonitorFunction.h"
2 //__________________________________________________________________
3 ////////////////////////////////////////////////////////////////////
5 // class AliHBTMonitorFunction
7 // class AliHBTMonOneParticleFctn
8 // class AliHBTMonTwoParticleFctn
10 // class AliHBTMonOneParticleFctn1D
11 // class AliHBTMonOneParticleFctn2D
12 // class AliHBTMonOneParticleFctn3D
14 // class AliHBTMonTwoParticleFctn1D
15 // class AliHBTMonTwoParticleFctn2D
16 // class AliHBTMonTwoParticleFctn3D
18 // Base Classes for monitoring functions
19 // author: chajecki@if.pw.edu.pl
21 /******************************************************************/
23 Base classes for monitor functions
33 one particle two particle
38 Zbigniew.Chajecki@cern.ch
41 ///////////////////////////////////////////////////////////////////////
44 ClassImp( AliHBTMonitorFunction )
46 AliHBTMonitorFunction::AliHBTMonitorFunction():
47 fParticleCut(new AliHBTEmptyParticleCut())
51 /******************************************************************/
52 AliHBTMonitorFunction::AliHBTMonitorFunction(const char* name,const char* title):
54 fParticleCut(new AliHBTEmptyParticleCut())
58 /******************************************************************/
59 AliHBTMonitorFunction::AliHBTMonitorFunction(const AliHBTMonitorFunction& /*in*/):
61 fParticleCut(new AliHBTEmptyParticleCut())
64 // We cannot copy because it is a mess with names (histogram and functions)
65 MayNotUse("AliHBTMonitorFunction(const AliHBTMonitorFunction&");
67 /******************************************************************/
68 AliHBTMonitorFunction& AliHBTMonitorFunction::operator=(const AliHBTMonitorFunction& /*in*/)
71 // We cannot copy because it is a mess with names (histogram and functions)
72 MayNotUse("operator=");
75 /******************************************************************/
77 AliHBTMonitorFunction::~AliHBTMonitorFunction()
82 /******************************************************************/
84 void AliHBTMonitorFunction::Write()
86 //Writes an function to disk
87 if (GetResult()) GetResult()->Write();
89 /******************************************************************/
91 /******************************************************************/
92 void AliHBTMonitorFunction::SetParticleCut(AliHBTParticleCut* cut)
94 //Sets new Particle Cut. Old one is deleted
95 //Note that it is created new object instead of simple pointer set
96 //I do not want to have pointer
97 //to object created somewhere else
98 //because in that case I could not believe that
99 //it would always exist (sb could delete it)
100 //so we have always own copy
104 Error("AliHBTMonitorFunction::SetParticleCut","argument is NULL");
108 fParticleCut = (AliHBTParticleCut*)cut->Clone();
111 /******************************************************************/
113 void AliHBTMonitorFunction::Rename(const Char_t * name)
115 //renames the function and histograms
119 TString numstr = fName + " Result"; //title and name of the
121 GetResult()->SetName(numstr.Data());
122 GetResult()->SetTitle(numstr.Data());
124 /******************************************************************/
126 void AliHBTMonitorFunction::Rename(const Char_t * name, const Char_t * title)
128 //renames and retitle the function and histograms
133 TString numstrn = fName + " Result"; //name of the
136 TString numstrt = fTitle + " Result"; //title of the
140 GetResult()->SetName(numstrn.Data());
141 GetResult()->SetTitle(numstrt.Data());
145 /******************************************************************/
146 /******************************************************************/
147 /******************************************************************/
148 ClassImp( AliHBTMonOneParticleFctn ) //z.ch.
149 /******************************************************************/
150 /******************************************************************/
151 ClassImp( AliHBTMonTwoParticleFctn ) //z.ch.
152 /******************************************************************/
153 /******************************************************************/
154 /******************************************************************/
155 ClassImp( AliHBTMonOneParticleFctn1D )
156 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D():
161 /******************************************************************/
163 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval)
166 TString numstr = fName + " Result"; //title and name of the
168 fResult = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
171 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
172 Int_t nbins, Double_t maxXval, Double_t minXval)
173 :AliHBTMonOneParticleFctn(name,title)
176 TString numstr = fName + " Result"; //title and name of the
179 fResult = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
181 /******************************************************************/
182 AliHBTMonOneParticleFctn1D::~AliHBTMonOneParticleFctn1D()
187 /******************************************************************/
189 void AliHBTMonOneParticleFctn1D::Process(AliHBTParticle* particle)
192 particle = CheckParticle(particle);
193 if(particle) fResult->Fill(GetValue(particle));
195 /******************************************************************/
196 /******************************************************************/
198 ClassImp( AliHBTMonOneParticleFctn2D )
200 AliHBTMonOneParticleFctn2D::AliHBTMonOneParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
201 Int_t nYbins, Double_t maxYval, Double_t minYval)
205 TString numstr = fName + " Result"; //title and name of the
208 fResult = new TH2D(numstr.Data(),numstr.Data(),
209 nXbins,minXval,maxXval,
210 nYbins,minYval,maxYval);
212 /******************************************************************/
214 AliHBTMonOneParticleFctn2D::~AliHBTMonOneParticleFctn2D()
219 void AliHBTMonOneParticleFctn2D::Process(AliHBTParticle* particle)
221 //fills the function for one particle
222 particle = CheckParticle(particle);
226 GetValues(particle,x,y);
231 /******************************************************************/
232 /******************************************************************/
233 /******************************************************************/
235 ClassImp( AliHBTMonOneParticleFctn3D)
237 AliHBTMonOneParticleFctn3D::
238 AliHBTMonOneParticleFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
239 Int_t nYbins, Double_t maxYval, Double_t minYval,
240 Int_t nZbins, Double_t maxZval, Double_t minZval)
244 TString numstr = fName + " Result"; //title and name of the
247 fResult = new TH3D(numstr.Data(),numstr.Data(),
248 nXbins,minXval,maxXval,
249 nYbins,minYval,maxYval,
250 nZbins,minZval,maxZval);
253 /******************************************************************/
255 AliHBTMonOneParticleFctn3D::~AliHBTMonOneParticleFctn3D()
260 /******************************************************************/
263 /******************************************************************/
264 /******************************************************************/
265 /******************************************************************/
266 ClassImp( AliHBTMonTwoParticleFctn1D)
268 AliHBTMonTwoParticleFctn1D::
269 AliHBTMonTwoParticleFctn1D(Int_t nbins, Double_t maxval, Double_t minval)
272 TString numstr = fName + " Result"; //title and name of the
275 fResult = new TH1D(numstr.Data(),numstr.Data(),
276 nbins,minval,maxval);
280 AliHBTMonTwoParticleFctn1D::
281 AliHBTMonTwoParticleFctn1D(const Char_t* name, const Char_t* title,
282 Int_t nbins, Double_t maxval, Double_t minval)
283 :AliHBTMonTwoParticleFctn(name,title)
286 TString numstr = fName + " Result"; //title and name of the
289 fResult = new TH1D(numstr.Data(),numstr.Data(),
290 nbins,minval,maxval);
295 /******************************************************************/
296 AliHBTMonTwoParticleFctn1D::~AliHBTMonTwoParticleFctn1D()
301 /******************************************************************/
302 void AliHBTMonTwoParticleFctn1D::
303 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
305 //fills the function for one particle
306 partparticle = CheckParticle(partparticle);
307 trackparticle = CheckParticle(trackparticle);
308 if( partparticle && trackparticle)
310 Double_t x = GetValue(trackparticle,partparticle);
314 /******************************************************************/
315 /******************************************************************/
316 /******************************************************************/
317 ClassImp( AliHBTMonTwoParticleFctn2D)
320 AliHBTMonTwoParticleFctn2D::
321 AliHBTMonTwoParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
322 Int_t nYbins, Double_t maxYval, Double_t minYval)
326 TString numstr = fName + " Result"; //title and name of the
329 fResult = new TH2D(numstr.Data(),numstr.Data(),
330 nXbins,minXval,maxXval,
331 nYbins,minYval,maxYval);
334 /******************************************************************/
335 AliHBTMonTwoParticleFctn2D::~AliHBTMonTwoParticleFctn2D()
340 /******************************************************************/
341 void AliHBTMonTwoParticleFctn2D::
342 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
344 //fills the function for one particle
345 partparticle = CheckParticle(partparticle);
346 trackparticle = CheckParticle(trackparticle);
347 if( partparticle && trackparticle)
350 GetValues(trackparticle,partparticle,x,y);
354 /******************************************************************/
355 /******************************************************************/
356 /******************************************************************/
357 ClassImp(AliHBTMonTwoParticleFctn3D)
359 void AliHBTMonTwoParticleFctn3D::
360 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
362 //fills the function for one particle
363 partparticle = CheckParticle(partparticle);
364 trackparticle = CheckParticle(trackparticle);
365 if( partparticle && trackparticle)
368 GetValues(trackparticle,partparticle,x,y,z);
369 fResult->Fill(x,y,z);
372 /******************************************************************/
373 /******************************************************************/
374 /******************************************************************/
375 /******************************************************************/