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 void AliHBTMonitorFunction::Init()
93 //Writes an function to disk
94 if (AliHBTParticle::GetDebug()>0) Info("Init","%s",GetName());
96 if (GetResult() == 0x0)
98 Warning("Init","Function has NULL result histogram!");
101 GetResult()->Reset();
102 GetResult()->SetDirectory(0x0);
103 if (AliHBTParticle::GetDebug()>0) Info("Init","%s Done.",GetName());
105 /******************************************************************/
107 void AliHBTMonitorFunction::SetParticleCut(AliHBTParticleCut* cut)
109 //Sets new Particle Cut. Old one is deleted
110 //Note that it is created new object instead of simple pointer set
111 //I do not want to have pointer
112 //to object created somewhere else
113 //because in that case I could not believe that
114 //it would always exist (sb could delete it)
115 //so we have always own copy
119 Error("AliHBTMonitorFunction::SetParticleCut","argument is NULL");
123 fParticleCut = (AliHBTParticleCut*)cut->Clone();
126 /******************************************************************/
128 void AliHBTMonitorFunction::Rename(const Char_t * name)
130 //renames the function and histograms
134 TString numstr = fName + " Result"; //title and name of the
136 GetResult()->SetName(numstr.Data());
137 GetResult()->SetTitle(numstr.Data());
139 /******************************************************************/
141 void AliHBTMonitorFunction::Rename(const Char_t * name, const Char_t * title)
143 //renames and retitle the function and histograms
148 TString numstrn = fName + " Result"; //name of the
151 TString numstrt = fTitle + " Result"; //title of the
155 GetResult()->SetName(numstrn.Data());
156 GetResult()->SetTitle(numstrt.Data());
160 /******************************************************************/
161 /******************************************************************/
162 /******************************************************************/
163 ClassImp( AliHBTMonOneParticleFctn ) //z.ch.
164 /******************************************************************/
165 /******************************************************************/
166 ClassImp( AliHBTMonTwoParticleFctn ) //z.ch.
167 /******************************************************************/
168 /******************************************************************/
169 /******************************************************************/
170 ClassImp( AliHBTMonOneParticleFctn1D )
171 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D():
176 /******************************************************************/
178 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval)
181 TString numstr = fName + " Result"; //title and name of the
183 fResult = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
186 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
187 Int_t nbins, Double_t maxXval, Double_t minXval)
188 :AliHBTMonOneParticleFctn(name,title)
191 TString numstr = fName + " Result"; //title and name of the
194 fResult = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
196 /******************************************************************/
197 AliHBTMonOneParticleFctn1D::~AliHBTMonOneParticleFctn1D()
202 /******************************************************************/
204 void AliHBTMonOneParticleFctn1D::Process(AliHBTParticle* particle)
207 particle = CheckParticle(particle);
208 if(particle) fResult->Fill(GetValue(particle));
210 /******************************************************************/
211 /******************************************************************/
213 ClassImp( AliHBTMonOneParticleFctn2D )
215 AliHBTMonOneParticleFctn2D::AliHBTMonOneParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
216 Int_t nYbins, Double_t maxYval, Double_t minYval)
220 TString numstr = fName + " Result"; //title and name of the
223 fResult = new TH2D(numstr.Data(),numstr.Data(),
224 nXbins,minXval,maxXval,
225 nYbins,minYval,maxYval);
227 /******************************************************************/
229 AliHBTMonOneParticleFctn2D::~AliHBTMonOneParticleFctn2D()
234 void AliHBTMonOneParticleFctn2D::Process(AliHBTParticle* particle)
236 //fills the function for one particle
237 particle = CheckParticle(particle);
241 GetValues(particle,x,y);
246 /******************************************************************/
247 /******************************************************************/
248 /******************************************************************/
250 ClassImp( AliHBTMonOneParticleFctn3D)
252 AliHBTMonOneParticleFctn3D::
253 AliHBTMonOneParticleFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
254 Int_t nYbins, Double_t maxYval, Double_t minYval,
255 Int_t nZbins, Double_t maxZval, Double_t minZval)
259 TString numstr = fName + " Result"; //title and name of the
262 fResult = new TH3D(numstr.Data(),numstr.Data(),
263 nXbins,minXval,maxXval,
264 nYbins,minYval,maxYval,
265 nZbins,minZval,maxZval);
268 /******************************************************************/
270 AliHBTMonOneParticleFctn3D::~AliHBTMonOneParticleFctn3D()
275 /******************************************************************/
278 /******************************************************************/
279 /******************************************************************/
280 /******************************************************************/
281 ClassImp( AliHBTMonTwoParticleFctn1D)
283 AliHBTMonTwoParticleFctn1D::
284 AliHBTMonTwoParticleFctn1D(Int_t nbins, Double_t maxval, Double_t minval)
287 TString numstr = fName + " Result"; //title and name of the
290 fResult = new TH1D(numstr.Data(),numstr.Data(),
291 nbins,minval,maxval);
295 AliHBTMonTwoParticleFctn1D::
296 AliHBTMonTwoParticleFctn1D(const Char_t* name, const Char_t* title,
297 Int_t nbins, Double_t maxval, Double_t minval)
298 :AliHBTMonTwoParticleFctn(name,title)
301 TString numstr = fName + " Result"; //title and name of the
304 fResult = new TH1D(numstr.Data(),numstr.Data(),
305 nbins,minval,maxval);
310 /******************************************************************/
311 AliHBTMonTwoParticleFctn1D::~AliHBTMonTwoParticleFctn1D()
316 /******************************************************************/
317 void AliHBTMonTwoParticleFctn1D::
318 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
320 //fills the function for one particle
321 partparticle = CheckParticle(partparticle);
322 trackparticle = CheckParticle(trackparticle);
323 if( partparticle && trackparticle)
325 Double_t x = GetValue(trackparticle,partparticle);
329 /******************************************************************/
330 /******************************************************************/
331 /******************************************************************/
332 ClassImp( AliHBTMonTwoParticleFctn2D)
335 AliHBTMonTwoParticleFctn2D::
336 AliHBTMonTwoParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
337 Int_t nYbins, Double_t maxYval, Double_t minYval)
341 TString numstr = fName + " Result"; //title and name of the
344 fResult = new TH2D(numstr.Data(),numstr.Data(),
345 nXbins,minXval,maxXval,
346 nYbins,minYval,maxYval);
349 /******************************************************************/
350 AliHBTMonTwoParticleFctn2D::~AliHBTMonTwoParticleFctn2D()
355 /******************************************************************/
356 void AliHBTMonTwoParticleFctn2D::
357 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
359 //fills the function for one particle
360 partparticle = CheckParticle(partparticle);
361 trackparticle = CheckParticle(trackparticle);
362 if( partparticle && trackparticle)
365 GetValues(trackparticle,partparticle,x,y);
369 /******************************************************************/
370 /******************************************************************/
371 /******************************************************************/
372 ClassImp(AliHBTMonTwoParticleFctn3D)
374 void AliHBTMonTwoParticleFctn3D::
375 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
377 //fills the function for one particle
378 partparticle = CheckParticle(partparticle);
379 trackparticle = CheckParticle(trackparticle);
380 if( partparticle && trackparticle)
383 GetValues(trackparticle,partparticle,x,y,z);
384 fResult->Fill(x,y,z);
387 /******************************************************************/
388 /******************************************************************/
389 /******************************************************************/
390 /******************************************************************/