1 #include "AliHBTMonitorFunction.h"
2 /******************************************************************/
4 Base classes for monitor functions
14 one particle two particle
19 Zbigniew.Chajecki@cern.ch
22 /******************************************************************/
23 /******************************************************************/
25 #include <Riostream.h>
26 ClassImp( AliHBTMonitorFunction )
28 AliHBTMonitorFunction::AliHBTMonitorFunction():
29 fParticleCut(new AliHBTEmptyParticleCut())
33 /******************************************************************/
34 AliHBTMonitorFunction::AliHBTMonitorFunction(const char* name,const char* title):
36 fParticleCut(new AliHBTEmptyParticleCut())
40 /******************************************************************/
41 AliHBTMonitorFunction::AliHBTMonitorFunction(const AliHBTMonitorFunction& /*in*/):
43 fParticleCut(new AliHBTEmptyParticleCut())
46 MayNotUse("AliHBTMonitorFunction(const AliHBTMonitorFunction&");
48 /******************************************************************/
49 const AliHBTMonitorFunction& AliHBTMonitorFunction::operator=(const AliHBTMonitorFunction& /*in*/)
52 MayNotUse("operator=");
56 AliHBTMonitorFunction::~AliHBTMonitorFunction()
59 if (fParticleCut) delete fParticleCut;
61 /******************************************************************/
63 void AliHBTMonitorFunction::Write()
65 //Writes an function to disk
66 if (GetResult()) GetResult()->Write();
68 /******************************************************************/
70 /******************************************************************/
71 void AliHBTMonitorFunction::SetParticleCut(AliHBTParticleCut* cut)
73 //Sets new Particle Cut. Old one is deleted
74 //Note that it is created new object instead of simple pointer set
75 //I do not want to have pointer
76 //to object created somewhere else
77 //because in that case I could not believe that
78 //it would always exist (sb could delete it)
79 //so we have always own copy
83 Error("AliHBTMonitorFunction::SetParticleCut","argument is NULL");
87 fParticleCut = (AliHBTParticleCut*)cut->Clone();
90 /******************************************************************/
92 void AliHBTMonitorFunction::Rename(const Char_t * name)
94 //renames the function and histograms
98 TString numstr = fName + " Result"; //title and name of the
100 GetResult()->SetName(numstr.Data());
101 GetResult()->SetTitle(numstr.Data());
103 /******************************************************************/
105 void AliHBTMonitorFunction::Rename(const Char_t * name, const Char_t * title)
107 //renames and retitle the function and histograms
112 TString numstrn = fName + " Result"; //name of the
115 TString numstrt = fTitle + " Result"; //title of the
119 GetResult()->SetName(numstrn.Data());
120 GetResult()->SetTitle(numstrt.Data());
124 /******************************************************************/
125 /******************************************************************/
126 /******************************************************************/
127 ClassImp( AliHBTMonOneParticleFctn ) //z.ch.
128 /******************************************************************/
129 /******************************************************************/
130 ClassImp( AliHBTMonTwoParticleFctn ) //z.ch.
131 /******************************************************************/
132 /******************************************************************/
133 /******************************************************************/
134 ClassImp( AliHBTMonOneParticleFctn1D )
135 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D():
140 /******************************************************************/
142 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval)
145 TString numstr = fName + " Result"; //title and name of the
147 fResult = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
150 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
151 Int_t nbins, Double_t maxXval, Double_t minXval)
152 :AliHBTMonOneParticleFctn(name,title)
155 TString numstr = fName + " Result"; //title and name of the
158 fResult = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
160 /******************************************************************/
161 AliHBTMonOneParticleFctn1D::~AliHBTMonOneParticleFctn1D()
166 /******************************************************************/
168 void AliHBTMonOneParticleFctn1D::Process(AliHBTParticle* particle)
171 particle = CheckParticle(particle);
172 if(particle) fResult->Fill(GetValue(particle));
174 /******************************************************************/
175 /******************************************************************/
177 ClassImp( AliHBTMonOneParticleFctn2D )
179 AliHBTMonOneParticleFctn2D::AliHBTMonOneParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
180 Int_t nYbins, Double_t maxYval, Double_t minYval)
184 TString numstr = fName + " Result"; //title and name of the
187 fResult = new TH2D(numstr.Data(),numstr.Data(),
188 nXbins,minXval,maxXval,
189 nYbins,minYval,maxYval);
191 /******************************************************************/
193 AliHBTMonOneParticleFctn2D::~AliHBTMonOneParticleFctn2D()
198 void AliHBTMonOneParticleFctn2D::Process(AliHBTParticle* particle)
200 //fills the function for one particle
201 particle = CheckParticle(particle);
205 GetValues(particle,x,y);
210 /******************************************************************/
211 /******************************************************************/
212 /******************************************************************/
214 ClassImp( AliHBTMonOneParticleFctn3D)
216 AliHBTMonOneParticleFctn3D::
217 AliHBTMonOneParticleFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
218 Int_t nYbins, Double_t maxYval, Double_t minYval,
219 Int_t nZbins, Double_t maxZval, Double_t minZval)
223 TString numstr = fName + " Result"; //title and name of the
226 fResult = new TH3D(numstr.Data(),numstr.Data(),
227 nXbins,minXval,maxXval,
228 nYbins,minYval,maxYval,
229 nZbins,minZval,maxZval);
232 /******************************************************************/
234 AliHBTMonOneParticleFctn3D::~AliHBTMonOneParticleFctn3D()
239 /******************************************************************/
242 /******************************************************************/
243 /******************************************************************/
244 /******************************************************************/
245 ClassImp( AliHBTMonTwoParticleFctn1D)
247 AliHBTMonTwoParticleFctn1D::
248 AliHBTMonTwoParticleFctn1D(Int_t nbins, Double_t maxval, Double_t minval)
251 TString numstr = fName + " Result"; //title and name of the
254 fResult = new TH1D(numstr.Data(),numstr.Data(),
255 nbins,minval,maxval);
259 AliHBTMonTwoParticleFctn1D::
260 AliHBTMonTwoParticleFctn1D(const Char_t* name, const Char_t* title,
261 Int_t nbins, Double_t maxval, Double_t minval)
262 :AliHBTMonTwoParticleFctn(name,title)
265 TString numstr = fName + " Result"; //title and name of the
268 fResult = new TH1D(numstr.Data(),numstr.Data(),
269 nbins,minval,maxval);
274 /******************************************************************/
275 AliHBTMonTwoParticleFctn1D::~AliHBTMonTwoParticleFctn1D()
280 /******************************************************************/
281 void AliHBTMonTwoParticleFctn1D::
282 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
284 //fills the function for one particle
285 partparticle = CheckParticle(partparticle);
286 trackparticle = CheckParticle(trackparticle);
287 if( partparticle && trackparticle)
289 Double_t x = GetValue(trackparticle,partparticle);
293 /******************************************************************/
294 /******************************************************************/
295 /******************************************************************/
296 ClassImp( AliHBTMonTwoParticleFctn2D)
299 AliHBTMonTwoParticleFctn2D::
300 AliHBTMonTwoParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
301 Int_t nYbins, Double_t maxYval, Double_t minYval)
305 TString numstr = fName + " Result"; //title and name of the
308 fResult = new TH2D(numstr.Data(),numstr.Data(),
309 nXbins,minXval,maxXval,
310 nYbins,minYval,maxYval);
313 /******************************************************************/
314 AliHBTMonTwoParticleFctn2D::~AliHBTMonTwoParticleFctn2D()
319 /******************************************************************/
320 void AliHBTMonTwoParticleFctn2D::
321 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
323 //fills the function for one particle
324 partparticle = CheckParticle(partparticle);
325 trackparticle = CheckParticle(trackparticle);
326 if( partparticle && trackparticle)
329 GetValues(trackparticle,partparticle,x,y);
333 /******************************************************************/
334 /******************************************************************/
335 /******************************************************************/
336 ClassImp(AliHBTMonTwoParticleFctn3D)
338 void AliHBTMonTwoParticleFctn3D::
339 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
341 //fills the function for one particle
342 partparticle = CheckParticle(partparticle);
343 trackparticle = CheckParticle(trackparticle);
344 if( partparticle && trackparticle)
347 GetValues(trackparticle,partparticle,x,y,z);
348 fResult->Fill(x,y,z);
351 /******************************************************************/
352 /******************************************************************/
353 /******************************************************************/
354 /******************************************************************/