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);
205 AliHBTMonOneParticleFctn1D::AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
206 Int_t nbins, Double_t maxXval, Double_t minXval)
207 :AliHBTMonOneParticleFctn(name,title)
210 TString numstr = fName + " Result"; //title and name of the
213 fResult = new TH1D(numstr.Data(),numstr.Data(),nbins,minXval,maxXval);
214 fResult->SetDirectory(0x0);
217 /******************************************************************/
218 AliHBTMonOneParticleFctn1D::~AliHBTMonOneParticleFctn1D()
223 /******************************************************************/
225 void AliHBTMonOneParticleFctn1D::Process(AliVAODParticle* particle)
228 particle = CheckParticle(particle);
229 if(particle) fResult->Fill(GetValue(particle));
231 /******************************************************************/
232 /******************************************************************/
234 ClassImp( AliHBTMonOneParticleFctn2D )
236 AliHBTMonOneParticleFctn2D::AliHBTMonOneParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
237 Int_t nYbins, Double_t maxYval, Double_t minYval)
241 TString numstr = fName + " Result"; //title and name of the
244 fResult = new TH2D(numstr.Data(),numstr.Data(),
245 nXbins,minXval,maxXval,
246 nYbins,minYval,maxYval);
247 fResult->SetDirectory(0x0);
249 /******************************************************************/
251 AliHBTMonOneParticleFctn2D::~AliHBTMonOneParticleFctn2D()
256 void AliHBTMonOneParticleFctn2D::Process(AliVAODParticle* particle)
258 //fills the function for one particle
259 particle = CheckParticle(particle);
263 GetValues(particle,x,y);
268 /******************************************************************/
269 /******************************************************************/
270 /******************************************************************/
272 ClassImp( AliHBTMonOneParticleFctn3D)
274 AliHBTMonOneParticleFctn3D::
275 AliHBTMonOneParticleFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
276 Int_t nYbins, Double_t maxYval, Double_t minYval,
277 Int_t nZbins, Double_t maxZval, Double_t minZval)
281 TString numstr = fName + " Result"; //title and name of the
284 fResult = new TH3D(numstr.Data(),numstr.Data(),
285 nXbins,minXval,maxXval,
286 nYbins,minYval,maxYval,
287 nZbins,minZval,maxZval);
288 fResult->SetDirectory(0x0);
291 /******************************************************************/
293 AliHBTMonOneParticleFctn3D::~AliHBTMonOneParticleFctn3D()
298 /******************************************************************/
301 /******************************************************************/
302 /******************************************************************/
303 /******************************************************************/
304 ClassImp( AliHBTMonTwoParticleFctn1D)
306 AliHBTMonTwoParticleFctn1D::
307 AliHBTMonTwoParticleFctn1D(Int_t nbins, Double_t maxval, Double_t minval)
310 TString numstr = fName + " Result"; //title and name of the
313 fResult = new TH1D(numstr.Data(),numstr.Data(),
314 nbins,minval,maxval);
315 fResult->SetDirectory(0x0);
318 AliHBTMonTwoParticleFctn1D::
319 AliHBTMonTwoParticleFctn1D(const Char_t* name, const Char_t* title,
320 Int_t nbins, Double_t maxval, Double_t minval)
321 :AliHBTMonTwoParticleFctn(name,title)
324 TString numstr = fName + " Result"; //title and name of the
327 fResult = new TH1D(numstr.Data(),numstr.Data(),
328 nbins,minval,maxval);
329 fResult->SetDirectory(0x0);
333 /******************************************************************/
334 AliHBTMonTwoParticleFctn1D::~AliHBTMonTwoParticleFctn1D()
339 /******************************************************************/
340 void AliHBTMonTwoParticleFctn1D::
341 Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle)
343 //fills the function for one particle
344 partparticle = CheckParticle(partparticle);
345 trackparticle = CheckParticle(trackparticle);
346 if( partparticle && trackparticle)
348 Double_t x = GetValue(trackparticle,partparticle);
352 /******************************************************************/
353 /******************************************************************/
354 /******************************************************************/
355 ClassImp( AliHBTMonTwoParticleFctn2D)
358 AliHBTMonTwoParticleFctn2D::
359 AliHBTMonTwoParticleFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval ,
360 Int_t nYbins, Double_t maxYval, Double_t minYval)
364 TString numstr = fName + " Result"; //title and name of the
367 fResult = new TH2D(numstr.Data(),numstr.Data(),
368 nXbins,minXval,maxXval,
369 nYbins,minYval,maxYval);
370 fResult->SetDirectory(0x0);
372 /******************************************************************/
373 AliHBTMonTwoParticleFctn2D::~AliHBTMonTwoParticleFctn2D()
378 /******************************************************************/
379 void AliHBTMonTwoParticleFctn2D::
380 Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle)
382 //fills the function for one particle
383 partparticle = CheckParticle(partparticle);
384 trackparticle = CheckParticle(trackparticle);
385 if( partparticle && trackparticle)
388 GetValues(trackparticle,partparticle,x,y);
392 /******************************************************************/
393 /******************************************************************/
394 /******************************************************************/
395 ClassImp(AliHBTMonTwoParticleFctn3D)
397 void AliHBTMonTwoParticleFctn3D::
398 Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle)
400 //fills the function for one particle
401 partparticle = CheckParticle(partparticle);
402 trackparticle = CheckParticle(trackparticle);
403 if( partparticle && trackparticle)
406 GetValues(trackparticle,partparticle,x,y,z);
407 fResult->Fill(x,y,z);
410 /******************************************************************/
411 /******************************************************************/
412 /******************************************************************/
413 /******************************************************************/