1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
19 #include "AliHBTMonitorFunction.h"
21 //__________________________________________________________________
22 ////////////////////////////////////////////////////////////////////
24 // class AliHBTMonitorFunction
26 // class AliHBTMonOneParticleFctn
27 // class AliHBTMonTwoParticleFctn
29 // class AliHBTMonOneParticleFctn1D
30 // class AliHBTMonOneParticleFctn2D
31 // class AliHBTMonOneParticleFctn3D
33 // class AliHBTMonTwoParticleFctn1D
34 // class AliHBTMonTwoParticleFctn2D
35 // class AliHBTMonTwoParticleFctn3D
37 // Base Classes for monitoring functions
38 // author: chajecki@if.pw.edu.pl
40 /******************************************************************/
42 Base classes for monitor functions
52 one particle two particle
57 Zbigniew.Chajecki@cern.ch
60 ///////////////////////////////////////////////////////////////////////
63 ClassImp( AliHBTMonitorFunction )
65 AliHBTMonitorFunction::AliHBTMonitorFunction():
66 fParticleCut(new AliAODParticleEmptyCut())
70 /******************************************************************/
71 AliHBTMonitorFunction::AliHBTMonitorFunction(const char* name,const char* title):
73 fParticleCut(new AliAODParticleEmptyCut())
77 /******************************************************************/
78 AliHBTMonitorFunction::AliHBTMonitorFunction(const AliHBTMonitorFunction& /*in*/):
80 fParticleCut(new AliAODParticleEmptyCut())
83 // We cannot copy because it is a mess with names (histogram and functions)
84 MayNotUse("AliHBTMonitorFunction(const AliHBTMonitorFunction&");
86 /******************************************************************/
87 AliHBTMonitorFunction& AliHBTMonitorFunction::operator=(const AliHBTMonitorFunction& /*in*/)
90 // We cannot copy because it is a mess with names (histogram and functions)
91 MayNotUse("operator=");
94 /******************************************************************/
96 AliHBTMonitorFunction::~AliHBTMonitorFunction()
101 /******************************************************************/
103 void AliHBTMonitorFunction::Write()
105 //Writes an function to disk
106 if (GetResult()) GetResult()->Write();
108 /******************************************************************/
110 void AliHBTMonitorFunction::Init()
112 //Writes an function to disk
113 AliDebug(1,"Entering");
115 if (GetResult() == 0x0)
117 Warning("Init","Function has NULL result histogram!");
120 GetResult()->Reset();
121 GetResult()->SetDirectory(0x0);
124 /******************************************************************/
126 void AliHBTMonitorFunction::SetParticleCut(AliAODParticleCut* cut)
128 //Sets new Particle Cut. Old one is deleted
129 //Note that it is created new object instead of simple pointer set
130 //I do not want to have pointer
131 //to object created somewhere else
132 //because in that case I could not believe that
133 //it would always exist (sb could delete it)
134 //so we have always own copy
138 Error("AliHBTMonitorFunction::SetParticleCut","argument is NULL");
142 fParticleCut = (AliAODParticleCut*)cut->Clone();
145 /******************************************************************/
147 void AliHBTMonitorFunction::Rename(const Char_t * name)
149 //renames the function and histograms
153 TString numstr = fName + " Result"; //title and name of the
155 GetResult()->SetName(numstr.Data());
156 GetResult()->SetTitle(numstr.Data());
158 /******************************************************************/
160 void AliHBTMonitorFunction::Rename(const Char_t * name, const Char_t * title)
162 //renames and retitle the function and histograms
167 TString numstrn = fName + " Result"; //name of the
170 TString numstrt = fTitle + " Result"; //title of the
174 GetResult()->SetName(numstrn.Data());
175 GetResult()->SetTitle(numstrt.Data());
179 /******************************************************************/
180 /******************************************************************/
181 /******************************************************************/
182 ClassImp( AliHBTMonOneParticleFctn ) //z.ch.
183 /******************************************************************/
184 /******************************************************************/
185 ClassImp( AliHBTMonTwoParticleFctn ) //z.ch.
186 /******************************************************************/
187 /******************************************************************/
188 /******************************************************************/
189 ClassImp( AliHBTMonOneParticleFctn1D )
190 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D():
195 /******************************************************************/
197 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval)
200 TString numstr = fName + " Result"; //title and name of the
202 fResult = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
206 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
207 Int_t nbins, Double_t maxXval, Double_t minXval)
208 :AliHBTMonOneParticleFctn(name,title)
211 TString numstr = fName + " Result"; //title and name of the
214 fResult = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
216 fResult->SetDirectory(0x0);
219 /******************************************************************/
220 AliHBTMonOneParticleFctn1D::~AliHBTMonOneParticleFctn1D()
225 /******************************************************************/
227 void AliHBTMonOneParticleFctn1D::Process(AliVAODParticle* particle)
230 particle = CheckParticle(particle);
231 if(particle) fResult->Fill(GetValue(particle));
233 /******************************************************************/
234 /******************************************************************/
236 ClassImp( AliHBTMonOneParticleFctn2D )
238 AliHBTMonOneParticleFctn2D::AliHBTMonOneParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
239 Int_t nYbins, Double_t maxYval, Double_t minYval)
243 TString numstr = fName + " Result"; //title and name of the
246 fResult = new TH2D(numstr.Data(),numstr.Data(),
247 nXbins,minXval,maxXval,
248 nYbins,minYval,maxYval);
250 fResult->SetDirectory(0x0);
252 /******************************************************************/
254 AliHBTMonOneParticleFctn2D::~AliHBTMonOneParticleFctn2D()
259 void AliHBTMonOneParticleFctn2D::Process(AliVAODParticle* particle)
261 //fills the function for one particle
262 particle = CheckParticle(particle);
266 GetValues(particle,x,y);
271 /******************************************************************/
272 /******************************************************************/
273 /******************************************************************/
275 ClassImp( AliHBTMonOneParticleFctn3D)
277 AliHBTMonOneParticleFctn3D::
278 AliHBTMonOneParticleFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
279 Int_t nYbins, Double_t maxYval, Double_t minYval,
280 Int_t nZbins, Double_t maxZval, Double_t minZval)
284 TString numstr = fName + " Result"; //title and name of the
287 fResult = new TH3D(numstr.Data(),numstr.Data(),
288 nXbins,minXval,maxXval,
289 nYbins,minYval,maxYval,
290 nZbins,minZval,maxZval);
292 fResult->SetDirectory(0x0);
295 /******************************************************************/
297 AliHBTMonOneParticleFctn3D::~AliHBTMonOneParticleFctn3D()
302 /******************************************************************/
305 /******************************************************************/
306 /******************************************************************/
307 /******************************************************************/
308 ClassImp( AliHBTMonTwoParticleFctn1D)
310 AliHBTMonTwoParticleFctn1D::
311 AliHBTMonTwoParticleFctn1D(Int_t nbins, Double_t maxval, Double_t minval)
314 TString numstr = fName + " Result"; //title and name of the
317 fResult = new TH1D(numstr.Data(),numstr.Data(),
318 nbins,minval,maxval);
320 fResult->SetDirectory(0x0);
323 AliHBTMonTwoParticleFctn1D::
324 AliHBTMonTwoParticleFctn1D(const Char_t* name, const Char_t* title,
325 Int_t nbins, Double_t maxval, Double_t minval)
326 :AliHBTMonTwoParticleFctn(name,title)
329 TString numstr = fName + " Result"; //title and name of the
332 fResult = new TH1D(numstr.Data(),numstr.Data(),
333 nbins,minval,maxval);
335 fResult->SetDirectory(0x0);
339 /******************************************************************/
340 AliHBTMonTwoParticleFctn1D::~AliHBTMonTwoParticleFctn1D()
345 /******************************************************************/
346 void AliHBTMonTwoParticleFctn1D::
347 Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle)
349 //fills the function for one particle
350 partparticle = CheckParticle(partparticle);
351 trackparticle = CheckParticle(trackparticle);
352 if( partparticle && trackparticle)
354 Double_t x = GetValue(trackparticle,partparticle);
358 /******************************************************************/
359 /******************************************************************/
360 /******************************************************************/
361 ClassImp( AliHBTMonTwoParticleFctn2D)
364 AliHBTMonTwoParticleFctn2D::
365 AliHBTMonTwoParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
366 Int_t nYbins, Double_t maxYval, Double_t minYval)
370 TString numstr = fName + " Result"; //title and name of the
373 fResult = new TH2D(numstr.Data(),numstr.Data(),
374 nXbins,minXval,maxXval,
375 nYbins,minYval,maxYval);
377 fResult->SetDirectory(0x0);
379 /******************************************************************/
380 AliHBTMonTwoParticleFctn2D::~AliHBTMonTwoParticleFctn2D()
385 /******************************************************************/
386 void AliHBTMonTwoParticleFctn2D::
387 Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle)
389 //fills the function for one particle
390 partparticle = CheckParticle(partparticle);
391 trackparticle = CheckParticle(trackparticle);
392 if( partparticle && trackparticle)
395 GetValues(trackparticle,partparticle,x,y);
399 /******************************************************************/
400 /******************************************************************/
401 /******************************************************************/
402 ClassImp(AliHBTMonTwoParticleFctn3D)
404 void AliHBTMonTwoParticleFctn3D::
405 Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle)
407 //fills the function for one particle
408 partparticle = CheckParticle(partparticle);
409 trackparticle = CheckParticle(trackparticle);
410 if( partparticle && trackparticle)
413 GetValues(trackparticle,partparticle,x,y,z);
414 fResult->Fill(x,y,z);
417 /******************************************************************/
418 /******************************************************************/
419 /******************************************************************/
420 /******************************************************************/