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);
195 fResult->SetDirectory(0x0);
198 /******************************************************************/
199 AliHBTMonOneParticleFctn1D::~AliHBTMonOneParticleFctn1D()
204 /******************************************************************/
206 void AliHBTMonOneParticleFctn1D::Process(AliHBTParticle* particle)
209 particle = CheckParticle(particle);
210 if(particle) fResult->Fill(GetValue(particle));
212 /******************************************************************/
213 /******************************************************************/
215 ClassImp( AliHBTMonOneParticleFctn2D )
217 AliHBTMonOneParticleFctn2D::AliHBTMonOneParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
218 Int_t nYbins, Double_t maxYval, Double_t minYval)
222 TString numstr = fName + " Result"; //title and name of the
225 fResult = new TH2D(numstr.Data(),numstr.Data(),
226 nXbins,minXval,maxXval,
227 nYbins,minYval,maxYval);
228 fResult->SetDirectory(0x0);
230 /******************************************************************/
232 AliHBTMonOneParticleFctn2D::~AliHBTMonOneParticleFctn2D()
237 void AliHBTMonOneParticleFctn2D::Process(AliHBTParticle* particle)
239 //fills the function for one particle
240 particle = CheckParticle(particle);
244 GetValues(particle,x,y);
249 /******************************************************************/
250 /******************************************************************/
251 /******************************************************************/
253 ClassImp( AliHBTMonOneParticleFctn3D)
255 AliHBTMonOneParticleFctn3D::
256 AliHBTMonOneParticleFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
257 Int_t nYbins, Double_t maxYval, Double_t minYval,
258 Int_t nZbins, Double_t maxZval, Double_t minZval)
262 TString numstr = fName + " Result"; //title and name of the
265 fResult = new TH3D(numstr.Data(),numstr.Data(),
266 nXbins,minXval,maxXval,
267 nYbins,minYval,maxYval,
268 nZbins,minZval,maxZval);
269 fResult->SetDirectory(0x0);
272 /******************************************************************/
274 AliHBTMonOneParticleFctn3D::~AliHBTMonOneParticleFctn3D()
279 /******************************************************************/
282 /******************************************************************/
283 /******************************************************************/
284 /******************************************************************/
285 ClassImp( AliHBTMonTwoParticleFctn1D)
287 AliHBTMonTwoParticleFctn1D::
288 AliHBTMonTwoParticleFctn1D(Int_t nbins, Double_t maxval, Double_t minval)
291 TString numstr = fName + " Result"; //title and name of the
294 fResult = new TH1D(numstr.Data(),numstr.Data(),
295 nbins,minval,maxval);
296 fResult->SetDirectory(0x0);
299 AliHBTMonTwoParticleFctn1D::
300 AliHBTMonTwoParticleFctn1D(const Char_t* name, const Char_t* title,
301 Int_t nbins, Double_t maxval, Double_t minval)
302 :AliHBTMonTwoParticleFctn(name,title)
305 TString numstr = fName + " Result"; //title and name of the
308 fResult = new TH1D(numstr.Data(),numstr.Data(),
309 nbins,minval,maxval);
310 fResult->SetDirectory(0x0);
314 /******************************************************************/
315 AliHBTMonTwoParticleFctn1D::~AliHBTMonTwoParticleFctn1D()
320 /******************************************************************/
321 void AliHBTMonTwoParticleFctn1D::
322 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
324 //fills the function for one particle
325 partparticle = CheckParticle(partparticle);
326 trackparticle = CheckParticle(trackparticle);
327 if( partparticle && trackparticle)
329 Double_t x = GetValue(trackparticle,partparticle);
333 /******************************************************************/
334 /******************************************************************/
335 /******************************************************************/
336 ClassImp( AliHBTMonTwoParticleFctn2D)
339 AliHBTMonTwoParticleFctn2D::
340 AliHBTMonTwoParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
341 Int_t nYbins, Double_t maxYval, Double_t minYval)
345 TString numstr = fName + " Result"; //title and name of the
348 fResult = new TH2D(numstr.Data(),numstr.Data(),
349 nXbins,minXval,maxXval,
350 nYbins,minYval,maxYval);
351 fResult->SetDirectory(0x0);
353 /******************************************************************/
354 AliHBTMonTwoParticleFctn2D::~AliHBTMonTwoParticleFctn2D()
359 /******************************************************************/
360 void AliHBTMonTwoParticleFctn2D::
361 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
363 //fills the function for one particle
364 partparticle = CheckParticle(partparticle);
365 trackparticle = CheckParticle(trackparticle);
366 if( partparticle && trackparticle)
369 GetValues(trackparticle,partparticle,x,y);
373 /******************************************************************/
374 /******************************************************************/
375 /******************************************************************/
376 ClassImp(AliHBTMonTwoParticleFctn3D)
378 void AliHBTMonTwoParticleFctn3D::
379 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
381 //fills the function for one particle
382 partparticle = CheckParticle(partparticle);
383 trackparticle = CheckParticle(trackparticle);
384 if( partparticle && trackparticle)
387 GetValues(trackparticle,partparticle,x,y,z);
388 fResult->Fill(x,y,z);
391 /******************************************************************/
392 /******************************************************************/
393 /******************************************************************/
394 /******************************************************************/