1 #include "AliHBTFunction.h"
3 //////////////////////////////////////////////////////////////////////
6 //Author: Piotr Krzysztof Skowronski
7 //Piotr.Skowronski@cern.ch
8 /*Base classes for HBT functions
10 OnePairFctn Function TwoPairFctn
14 | \ \ / \ |\ | \________________/__ | \
15 | \ \/ \ | \__|_____________ / \| \
16 | \ \ \_|____|__ \ / | \
17 | \ / \___ | | \ \/ |\ \
19 | / \ \| | \ / \ | \ \
20 | / \ /\ | \ / \ | \ |
21 | / \ / \ | \ / \ | \ |
22 | / \ / \ | \ / \ | \ |
24 OnePair1D OnePair2D OnePair3D TwoPair1D TwoPair2D TwoPair3D
28 four particle functions are intendent to be resolution functions:
29 it is mecessary to have simulated particle pair corresponding to given
30 recontructed track pair in order to calculate function simualted value
31 and recontructed value, to be further histogrammed
34 ///////////////////////////////////////////////////////////////////////
36 /******************************************************************/
37 /******************************************************************/
39 ClassImp( AliHBTFunction )
41 AliHBTFunction::AliHBTFunction()
44 fPairCut = new AliHBTEmptyPairCut(); //dummy cut
46 /******************************************************************/
47 AliHBTFunction::AliHBTFunction(const char* name,const char* title):TNamed(name,title)
49 fPairCut = new AliHBTEmptyPairCut(); //dummy cut
51 /******************************************************************/
53 AliHBTFunction::~AliHBTFunction()
58 /******************************************************************/
60 void AliHBTFunction::Write()
62 //writes result of the function to file
63 if (GetNumerator()) GetNumerator()->Write();
64 if (GetDenominator()) GetDenominator()->Write();
65 TH1* res = GetResult();
66 if (res) res->Write();
68 /******************************************************************/
70 TH1* AliHBTFunction::GetRatio(Double_t normfactor)
72 //returns ratio of numerator and denominator
74 if (gDebug>0) Info("GetRatio","Norm. Factor is %f for %s",normfactor,GetName());
76 if (normfactor == 0.0)
78 Error("GetRatio","Scaling Factor is 0. Null poiner returned");
81 TString str = fName + " ratio";
82 TH1 *result = (TH1*)GetNumerator()->Clone(str.Data());
84 result->SetTitle(str.Data());
86 result->Divide(GetNumerator(),GetDenominator(),normfactor);
91 /******************************************************************/
92 void AliHBTFunction::SetPairCut(AliHBTPairCut* cut)
94 //Sets new Pair Cut. Old one is deleted
95 //Note that it is created new object instead of simple pointer set
96 //I do not want to have pointer
97 //to object created somewhere else
98 //because in that case I could not believe that
99 //it would always exist (sb could delete it)
100 //so we have always own copy
104 Error("AliHBTFunction::SetPairCut","argument is NULL");
108 fPairCut = (AliHBTPairCut*)cut->Clone();
112 /******************************************************************/
114 void AliHBTFunction::Rename(const Char_t * name)
116 //renames the function and histograms
120 TString numstr = fName + " Numerator"; //title and name of the
121 //numerator histogram
122 TString denstr = fName + " Denominator";//title and name of the
123 //denominator histogram
125 GetNumerator()->SetName(numstr.Data());
126 GetNumerator()->SetTitle(numstr.Data());
128 GetDenominator()->SetName(denstr.Data());
129 GetDenominator()->SetTitle(denstr.Data());
133 void AliHBTFunction::Rename(const Char_t * name, const Char_t * title)
135 //renames and retitle the function and histograms
140 TString numstrn = fName + " Numerator"; //name of the
141 //numerator histogram
143 TString numstrt = fTitle + " Numerator"; //title of the
144 //numerator histogram
146 TString denstrn = fName + " Denominator";//name of the
147 //denominator histogram
149 TString denstrt = fTitle + " Denominator";//title of the
150 //denominator histogram
153 GetNumerator()->SetName(numstrn.Data());
154 GetNumerator()->SetTitle(numstrt.Data());
156 GetDenominator()->SetName(denstrn.Data());
157 GetDenominator()->SetTitle(denstrt.Data());
161 /******************************************************************/
163 void AliHBTFunction::Init()
165 //Iniotializes fctn.: Resets histograms
166 //In case histograms are not created in ctor, builds with default parameters
167 if ( !(GetNumerator()&&GetDenominator()) ) BuildHistos();
168 GetNumerator()->Reset();
169 GetDenominator()->Reset();
172 /******************************************************************/
173 /******************************************************************/
174 /******************************************************************/
176 ClassImp( AliHBTOnePairFctn )
178 /******************************************************************/
179 /******************************************************************/
180 /******************************************************************/
182 ClassImp( AliHBTTwoPairFctn)
184 /******************************************************************/
185 /******************************************************************/
186 /******************************************************************/
188 ClassImp( AliHBTFunction1D )
190 const Int_t AliHBTFunction1D::fgkDefaultNBins = 100;
191 const Float_t AliHBTFunction1D::fgkDefaultMin = 0.0;
192 const Float_t AliHBTFunction1D::fgkDefaultMax = 0.15;
193 const UInt_t AliHBTFunction1D::fgkDefaultNBinsToScale = 30;
196 AliHBTFunction1D::AliHBTFunction1D():
199 fNBinsToScale(fgkDefaultNBinsToScale)
200 {//default constructor
202 /******************************************************************/
204 AliHBTFunction1D::AliHBTFunction1D(Int_t nbins, Float_t maxXval, Float_t minXval):
207 fNBinsToScale(fgkDefaultNBinsToScale)
209 //Constructor of Two Part One Dimentional Function
210 // nbins: number of bins in histograms - default 100
211 // maxXval and minXval: range of histgram(s) default 0 - 0.15 (GeV)
212 BuildHistos(nbins,maxXval,minXval);
214 /******************************************************************/
215 AliHBTFunction1D::AliHBTFunction1D(const Char_t *name, const Char_t *title):
216 AliHBTFunction(name,title),
219 fNBinsToScale(fgkDefaultNBinsToScale)
222 /******************************************************************/
223 AliHBTFunction1D::AliHBTFunction1D(const Char_t *name, const Char_t *title,
224 Int_t nbins, Float_t maxXval, Float_t minXval):
225 AliHBTFunction(name,title),
228 fNBinsToScale(fgkDefaultNBinsToScale)
231 BuildHistos(nbins,maxXval,minXval);
233 /******************************************************************/
235 AliHBTFunction1D::~AliHBTFunction1D()
241 /******************************************************************/
242 void AliHBTFunction1D::BuildHistos()
244 //builds histograms with default settings
245 BuildHistos(fgkDefaultNBins,fgkDefaultMax,fgkDefaultMin);
248 /******************************************************************/
250 void AliHBTFunction1D::BuildHistos(Int_t nbins, Float_t max, Float_t min)
252 //builds numarator and denominator hitograms
253 TString numstr = fName + " Numerator"; //title and name of the
254 //numerator histogram
255 TString denstr = fName + " Denominator";//title and name of the
256 //denominator histogram
257 fNumerator = new TH1D(numstr.Data(),numstr.Data(),nbins,min,max);
258 fDenominator = new TH1D(denstr.Data(),denstr.Data(),nbins,min,max);
261 fDenominator->Sumw2();
263 /******************************************************************/
265 Double_t AliHBTFunction1D::Scale()
267 //Calculates the factor that should be used to scale
268 //quatience of fNumerator and fDenominator to 1 at tail
269 return Scale(fNumerator,fDenominator);
271 /******************************************************************/
273 Double_t AliHBTFunction1D::Scale(TH1D* num,TH1D* den)
275 //Calculates the factor that should be used to scale
276 //quatience of num and den to 1 at tail
278 if (gDebug>0) Info("Scale","Enetered Scale()");
281 Error("Scale","No numerator");
286 Error("Scale","No denominator");
290 if(fNBinsToScale < 1)
293 Error("Scale","Number of bins for scaling is smaller thnan 1");
295 UInt_t nbins = num->GetNbinsX();
296 if (fNBinsToScale > nbins)
298 Error("Scale","Number of bins for scaling is bigger thnan number of bins in histograms");
301 if (gDebug>0) Info("Scale","No errors detected");
307 Int_t offset = nbins - fNBinsToScale - 1;
309 for (UInt_t i = offset; i< nbins; i++)
311 if ( num->GetBinContent(i) > 0.0 )
313 ratio = den->GetBinContent(i)/num->GetBinContent(i);
319 if(gDebug > 0) Info("Scale","sum=%f fNBinsToScale=%d N=%d",sum,fNBinsToScale,N);
321 if (N == 0) return 0.0;
322 Double_t ret = sum/((Double_t)N);
324 if(gDebug > 0) Info("Scale","returning %f",ret);
328 /******************************************************************/
329 /******************************************************************/
330 /******************************************************************/
332 //____________________
333 ///////////////////////////////////////////////////////
335 // AliHBTFunction2D //
337 // Base Calss for 2-dimensinal Functions //
339 // Piotr.Skowronski@cern.ch //
340 // http://alisoft.cern.ch/people/skowron/analyzer //
342 ///////////////////////////////////////////////////////
344 ClassImp( AliHBTFunction1D )
346 const Int_t AliHBTFunction2D::fgkDefaultNBinsX = 200;//default number of Bins in X axis in histograms
347 const Float_t AliHBTFunction2D::fgkDefaultMinX = 0.0;//Default min value of X axis in histograms
348 const Float_t AliHBTFunction2D::fgkDefaultMaxX = 1.5;//Default max value of X axis inhistograms
350 const Int_t AliHBTFunction2D::fgkDefaultNBinsY = 200;//default number of Bins in histograms
351 const Float_t AliHBTFunction2D::fgkDefaultMinY = -0.15;//Default min value of histograms
352 const Float_t AliHBTFunction2D::fgkDefaultMaxY = 0.15;//Default max value of histograms
354 const UInt_t AliHBTFunction2D::fgkDefaultNBinsToScaleX = 30;//Default number of X bins used for scaling to tale
355 const UInt_t AliHBTFunction2D::fgkDefaultNBinsToScaleY = 30;//Default number of bins used for scaling to tale
357 /******************************************************************/
358 AliHBTFunction2D::AliHBTFunction2D():
361 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
362 fNBinsToScaleY(fgkDefaultNBinsToScaleY)
363 {//default constructor
365 /******************************************************************/
366 AliHBTFunction2D::AliHBTFunction2D(const Char_t *name, const Char_t *title):
367 AliHBTFunction(name,title),
370 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
371 fNBinsToScaleY(fgkDefaultNBinsToScaleY)
374 /******************************************************************/
376 AliHBTFunction2D::AliHBTFunction2D(Int_t nXbins, Double_t maxXval, Double_t minXval,
377 Int_t nYbins, Double_t maxYval, Double_t minYval):
380 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
381 fNBinsToScaleY(fgkDefaultNBinsToScaleY)
383 BuildHistos(nXbins,maxXval,minXval,nYbins,maxYval,minYval);
385 /******************************************************************/
387 AliHBTFunction2D::AliHBTFunction2D(const Char_t *name, const Char_t *title,
388 Int_t nXbins, Double_t maxXval, Double_t minXval,
389 Int_t nYbins, Double_t maxYval, Double_t minYval):
390 AliHBTFunction(name,title),
393 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
394 fNBinsToScaleY(fgkDefaultNBinsToScaleY)
396 BuildHistos(nXbins,maxXval,minXval,nYbins,maxYval,minYval);
398 /******************************************************************/
400 AliHBTFunction2D::~AliHBTFunction2D()
405 /******************************************************************/
407 void AliHBTFunction2D::BuildHistos()
409 //Creates default histograms
410 BuildHistos(fgkDefaultNBinsX,fgkDefaultMaxX,fgkDefaultMinX,
411 fgkDefaultNBinsY,fgkDefaultMaxY,fgkDefaultMinY);
413 /******************************************************************/
415 void AliHBTFunction2D::BuildHistos(Int_t nxbins, Float_t xmax, Float_t xmin,
416 Int_t nybins, Float_t ymax, Float_t ymin)
418 TString numstr = fName + " Numerator"; //title and name of the
419 //numerator histogram
420 TString denstr = fName + " Denominator";//title and name of the
421 //denominator histogram
423 fNumerator = new TH2D(numstr.Data(),numstr.Data(),
424 nxbins,xmin,xmax,nybins,ymin,ymax);
426 fDenominator = new TH2D(denstr.Data(),denstr.Data(),
427 nxbins,xmin,xmax,nybins,ymin,ymax);
430 fDenominator->Sumw2();
432 /******************************************************************/
434 void AliHBTFunction2D::SetNumberOfBinsToScale(UInt_t xn, UInt_t yn)
436 //defines area used for scaling factor calculation
440 /******************************************************************/
442 Double_t AliHBTFunction2D::Scale()
444 if (gDebug>0) Info("Scale","Enetered Scale()");
447 Error("Scale","No numerator");
452 Error("Scale","No denominator");
456 if( (fNBinsToScaleX < 1) || (fNBinsToScaleY < 1) )
459 Error("Scale","Number of bins for scaling is smaller thnan 1");
461 UInt_t nbinsX = fNumerator->GetNbinsX();
462 if (fNBinsToScaleX > nbinsX)
464 Error("Scale","Number of X bins for scaling is bigger thnan number of bins in histograms");
468 UInt_t nbinsY = fNumerator->GetNbinsX();
469 if (fNBinsToScaleY > nbinsY)
471 Error("Scale","Number of Y bins for scaling is bigger thnan number of bins in histograms");
475 if (gDebug>0) Info("Scale","No errors detected");
477 Int_t offsetX = nbinsX - fNBinsToScaleX - 1; //bin that we start loop over bins in axis X
478 Int_t offsetY = nbinsY - fNBinsToScaleY - 1; //bin that we start loop over bins in axis X
484 for (UInt_t j = offsetY; j< nbinsY; j++)
485 for (UInt_t i = offsetX; i< nbinsX; i++)
487 if ( fNumerator->GetBinContent(i,j) > 0.0 )
489 ratio = fDenominator->GetBinContent(i,j)/fNumerator->GetBinContent(i,j);
495 if(gDebug > 0) Info("Scale","sum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d N=%d",sum,fNBinsToScaleX,fNBinsToScaleY,N);
497 if (N == 0) return 0.0;
498 Double_t ret = sum/((Double_t)N);
500 if(gDebug > 0) Info("Scale","returning %f",ret);
504 /******************************************************************/
505 /******************************************************************/
506 /******************************************************************/
508 //____________________
509 ///////////////////////////////////////////////////////
511 // AliHBTFunction3D //
513 // Base Calss for 3-dimensinal Functions //
515 // Piotr.Skowronski@cern.ch //
516 // http://alisoft.cern.ch/people/skowron/analyzer //
518 ///////////////////////////////////////////////////////
520 ClassImp( AliHBTFunction3D)
522 const Int_t AliHBTFunction3D::fgkDefaultNBinsX = 200;//default number of Bins in X axis in histograms
523 const Float_t AliHBTFunction3D::fgkDefaultMinX = 0.0;//Default min value of X axis in histograms
524 const Float_t AliHBTFunction3D::fgkDefaultMaxX = 1.5;//Default max value of X axis inhistograms
526 const Int_t AliHBTFunction3D::fgkDefaultNBinsY = 200;//default number of Bins in histograms
527 const Float_t AliHBTFunction3D::fgkDefaultMinY = -0.15;//Default min value of histograms
528 const Float_t AliHBTFunction3D::fgkDefaultMaxY = 0.15;//Default max value of histograms
530 const Int_t AliHBTFunction3D::fgkDefaultNBinsZ = 200;//default number of Bins in histograms
531 const Float_t AliHBTFunction3D::fgkDefaultMinZ = -0.15;//Default min value of histograms
532 const Float_t AliHBTFunction3D::fgkDefaultMaxZ = 0.15;//Default max value of histograms
534 const UInt_t AliHBTFunction3D::fgkDefaultNBinsToScaleX = 30;//Default number of X bins used for scaling to tale
535 const UInt_t AliHBTFunction3D::fgkDefaultNBinsToScaleY = 30;//Default number of bins used for scaling to tale
536 const UInt_t AliHBTFunction3D::fgkDefaultNBinsToScaleZ = 30;//Default number of bins used for scaling to tale
538 AliHBTFunction3D::AliHBTFunction3D():
541 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
542 fNBinsToScaleY(fgkDefaultNBinsToScaleY),
543 fNBinsToScaleZ(fgkDefaultNBinsToScaleZ)
547 /******************************************************************/
549 AliHBTFunction3D::AliHBTFunction3D(const Char_t *name, const Char_t *title):
550 AliHBTFunction(name,title),
553 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
554 fNBinsToScaleY(fgkDefaultNBinsToScaleY),
555 fNBinsToScaleZ(fgkDefaultNBinsToScaleZ)
559 /******************************************************************/
561 AliHBTFunction3D::AliHBTFunction3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
562 Int_t nYbins, Double_t maxYval, Double_t minYval,
563 Int_t nZbins, Double_t maxZval, Double_t minZval):
566 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
567 fNBinsToScaleY(fgkDefaultNBinsToScaleY),
568 fNBinsToScaleZ(fgkDefaultNBinsToScaleZ)
571 BuildHistos( nXbins,maxXval,minXval,nYbins,maxYval,minYval,nZbins,maxZval,minZval);
573 /******************************************************************/
575 AliHBTFunction3D::AliHBTFunction3D(const Char_t *name, const Char_t *title,
576 Int_t nXbins, Double_t maxXval, Double_t minXval,
577 Int_t nYbins, Double_t maxYval, Double_t minYval,
578 Int_t nZbins, Double_t maxZval, Double_t minZval):
579 AliHBTFunction(name,title),
582 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
583 fNBinsToScaleY(fgkDefaultNBinsToScaleY),
584 fNBinsToScaleZ(fgkDefaultNBinsToScaleZ)
587 BuildHistos( nXbins,maxXval,minXval,nYbins,maxYval,minYval,nZbins,maxZval,minZval);
589 /******************************************************************/
592 AliHBTFunction3D::~AliHBTFunction3D()
597 /******************************************************************/
599 void AliHBTFunction3D::BuildHistos()
601 //Creates default histograms
602 BuildHistos(fgkDefaultNBinsX,fgkDefaultMaxX,fgkDefaultMinX,
603 fgkDefaultNBinsY,fgkDefaultMaxY,fgkDefaultMinY,
604 fgkDefaultNBinsZ,fgkDefaultMaxZ,fgkDefaultMinZ);
606 /******************************************************************/
608 void AliHBTFunction3D::BuildHistos(Int_t nxbins, Float_t xmax, Float_t xmin,
609 Int_t nybins, Float_t ymax, Float_t ymin,
610 Int_t nzbins, Float_t zmax, Float_t zmin)
612 TString numstr = fName + " Numerator"; //title and name of the
613 //numerator histogram
614 TString denstr = fName + " Denominator";//title and name of the
615 //denominator histogram
617 fNumerator = new TH3D(numstr.Data(),numstr.Data(),
618 nxbins,xmin,xmin,nybins,ymin,ymin,nzbins,zmin,zmin);
620 fDenominator = new TH3D(denstr.Data(),denstr.Data(),
621 nxbins,xmin,xmin,nybins,ymin,ymin,nzbins,zmin,zmin);
624 fDenominator->Sumw2();
627 /******************************************************************/
629 Double_t AliHBTFunction3D::Scale()
631 if (gDebug>0) Info("Scale","Enetered Scale()");
634 Error("Scale","No numerator");
639 Error("Scale","No denominator");
643 if( (fNBinsToScaleX < 1) || (fNBinsToScaleY < 1) || (fNBinsToScaleZ < 1))
646 Error("Scale","Number of bins for scaling is smaller thnan 1");
648 UInt_t nbinsX = fNumerator->GetNbinsX();
649 if (fNBinsToScaleX > nbinsX)
651 Error("Scale","Number of X bins for scaling is bigger thnan number of bins in histograms");
655 UInt_t nbinsY = fNumerator->GetNbinsX();
656 if (fNBinsToScaleY > nbinsY)
658 Error("Scale","Number of Y bins for scaling is bigger thnan number of bins in histograms");
662 UInt_t nbinsZ = fNumerator->GetNbinsZ();
663 if (fNBinsToScaleZ > nbinsZ)
665 Error("Scale","Number of Z bins for scaling is bigger thnan number of bins in histograms");
669 if (gDebug>0) Info("Scale","No errors detected");
671 Int_t offsetX = nbinsX - fNBinsToScaleX - 1; //bin that we start loop over bins in axis X
672 Int_t offsetY = nbinsY - fNBinsToScaleY - 1; //bin that we start loop over bins in axis Y
673 Int_t offsetZ = nbinsZ - fNBinsToScaleZ - 1; //bin that we start loop over bins in axis Z
679 for (UInt_t k = offsetZ; k<nbinsZ; k++)
680 for (UInt_t j = offsetY; j<nbinsY; j++)
681 for (UInt_t i = offsetX; i<nbinsX; i++)
683 if ( fNumerator->GetBinContent(i,j,k) > 0.0 )
685 ratio = fDenominator->GetBinContent(i,j,k)/fNumerator->GetBinContent(i,j,k);
692 Info("Scale","sum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d fNBinsToScaleZ=%d N=%d",
693 sum,fNBinsToScaleX,fNBinsToScaleY,fNBinsToScaleZ,N);
695 if (N == 0) return 0.0;
696 Double_t ret = sum/((Double_t)N);
698 if(gDebug > 0) Info("Scale","returning %f",ret);
701 /******************************************************************/
703 void AliHBTFunction3D::SetNumberOfBinsToScale(UInt_t xn, UInt_t yn,UInt_t zn)
705 //sets up the volume to be used for scaling to tail
711 /******************************************************************/
712 /******************************************************************/
713 /******************************************************************/
714 /******************************************************************/
715 /******************************************************************/
716 /******************************************************************/
717 /******************************************************************/
718 /******************************************************************/
719 /******************************************************************/
721 //____________________
722 ///////////////////////////////////////////////////////
724 // AliHBTOnePairFctn1D //
726 // Base Calss for 1-dimensinal Functions that need //
727 // one pair to fill function //
729 // Piotr.Skowronski@cern.ch //
730 // http://alisoft.cern.ch/people/skowron/analyzer //
732 ///////////////////////////////////////////////////////
734 ClassImp( AliHBTOnePairFctn1D )
735 /******************************************************************/
737 AliHBTOnePairFctn1D::AliHBTOnePairFctn1D(Int_t nbins, Float_t maxXval, Float_t minXval):
738 AliHBTFunction1D(nbins,maxXval,minXval)
741 /******************************************************************/
743 AliHBTOnePairFctn1D::AliHBTOnePairFctn1D(const Char_t *name, const Char_t *title):
744 AliHBTFunction1D(name,title)
747 /******************************************************************/
749 AliHBTOnePairFctn1D::AliHBTOnePairFctn1D(const Char_t *name, const Char_t *title,
750 Int_t nbins, Float_t maxXval, Float_t minXval):
751 AliHBTFunction1D(name,title,nbins,maxXval,minXval)
754 /******************************************************************/
756 void AliHBTOnePairFctn1D::ProcessSameEventParticles(AliHBTPair* pair)
758 //Fills the numerator
759 pair = CheckPair(pair);
760 if(pair) fNumerator->Fill(GetValue(pair));
762 /******************************************************************/
763 void AliHBTOnePairFctn1D::ProcessDiffEventParticles(AliHBTPair* pair)
766 pair = CheckPair(pair);
767 if(pair) fDenominator->Fill(GetValue(pair));
770 /******************************************************************/
771 /******************************************************************/
772 /******************************************************************/
774 //____________________
775 ///////////////////////////////////////////////////////
777 // AliHBTOnePairFctn2D //
779 // Base Calss for 2-dimensinal Functions that need //
780 // one pair to fill function //
782 // Piotr.Skowronski@cern.ch //
783 // http://alisoft.cern.ch/people/skowron/analyzer //
785 ///////////////////////////////////////////////////////
787 ClassImp( AliHBTOnePairFctn2D )
788 /******************************************************************/
790 AliHBTOnePairFctn2D::AliHBTOnePairFctn2D(const Char_t *name, const Char_t *title):
791 AliHBTFunction2D(name,title)
794 /******************************************************************/
796 AliHBTOnePairFctn2D::AliHBTOnePairFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval,
797 Int_t nYbins, Double_t maxYval, Double_t minYval):
798 AliHBTFunction2D(nXbins, maxXval, minXval, nYbins, maxYval, minYval)
801 /******************************************************************/
803 AliHBTOnePairFctn2D::AliHBTOnePairFctn2D(const Char_t *name, const Char_t *title,
804 Int_t nXbins, Double_t maxXval, Double_t minXval,
805 Int_t nYbins, Double_t maxYval, Double_t minYval):
806 AliHBTFunction2D(name,title, nXbins, maxXval, minXval, nYbins, maxYval, minYval)
809 /******************************************************************/
811 void AliHBTOnePairFctn2D::ProcessSameEventParticles(AliHBTPair* pair)
813 pair = CheckPair(pair);
818 fNumerator->Fill(x,y);
821 /******************************************************************/
823 void AliHBTOnePairFctn2D::ProcessDiffEventParticles(AliHBTPair* pair)
825 pair = CheckPair(pair);
830 fDenominator->Fill(x,y);
833 /******************************************************************/
834 /******************************************************************/
835 /******************************************************************/
836 /******************************************************************/
837 //____________________
838 ///////////////////////////////////////////////////////
840 // AliHBTOnePairFctn3D //
842 // Base Calss for 3-dimensinal Functions that need //
843 // one pair to fill function //
845 // Piotr.Skowronski@cern.ch //
846 // http://alisoft.cern.ch/people/skowron/analyzer //
848 ///////////////////////////////////////////////////////
849 ClassImp( AliHBTOnePairFctn3D)
851 /******************************************************************/
853 AliHBTOnePairFctn3D::AliHBTOnePairFctn3D(const Char_t *name, const Char_t *title):
854 AliHBTFunction3D(name,title)
857 /******************************************************************/
859 AliHBTOnePairFctn3D::AliHBTOnePairFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
860 Int_t nYbins, Double_t maxYval, Double_t minYval,
861 Int_t nZbins, Double_t maxZval, Double_t minZval):
862 AliHBTFunction3D(nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
865 /******************************************************************/
867 AliHBTOnePairFctn3D::AliHBTOnePairFctn3D(const Char_t *name, const Char_t *title,
868 Int_t nXbins, Double_t maxXval, Double_t minXval,
869 Int_t nYbins, Double_t maxYval, Double_t minYval,
870 Int_t nZbins, Double_t maxZval, Double_t minZval):
871 AliHBTFunction3D(name,title,nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
874 /******************************************************************/
876 void AliHBTOnePairFctn3D::ProcessSameEventParticles(AliHBTPair* pair)
878 //Reacts on pair coming from same event (real pairs)
879 //and fills numerator histogram
880 pair = CheckPair(pair);
884 GetValues(pair,x,y,z);
885 fNumerator->Fill(x,y,z);
888 /******************************************************************/
890 void AliHBTOnePairFctn3D::ProcessDiffEventParticles(AliHBTPair* pair)
892 //Reacts on pair coming from different events (mixed pairs)
893 //and fills denominator histogram
894 pair = CheckPair(pair);
898 GetValues(pair,x,y,z);
899 fDenominator->Fill(x,y,z);
903 /******************************************************************/
904 /******************************************************************/
905 /******************************************************************/
907 //____________________
908 ///////////////////////////////////////////////////////
910 // AliHBTTwoPairFctn1D //
912 // Base Calss for 1-dimensinal Functions that need //
913 // two pair (simulated and reconstructed) //
914 // to fill function //
916 // Piotr.Skowronski@cern.ch //
917 // http://alisoft.cern.ch/people/skowron/analyzer //
919 ///////////////////////////////////////////////////////
920 ClassImp(AliHBTTwoPairFctn1D)
921 /******************************************************************/
923 AliHBTTwoPairFctn1D::AliHBTTwoPairFctn1D(Int_t nbins, Float_t maxXval, Float_t minXval):
924 AliHBTFunction1D(nbins,maxXval,minXval)
927 /******************************************************************/
929 AliHBTTwoPairFctn1D::AliHBTTwoPairFctn1D(const Char_t *name, const Char_t *title):
930 AliHBTFunction1D(name,title)
933 /******************************************************************/
935 AliHBTTwoPairFctn1D::AliHBTTwoPairFctn1D(const Char_t *name, const Char_t *title,
936 Int_t nbins, Float_t maxXval, Float_t minXval):
937 AliHBTFunction1D(name,title,nbins,maxXval,minXval)
940 /******************************************************************/
942 void AliHBTTwoPairFctn1D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
944 partpair = CheckPair(partpair);
947 Double_t x = GetValue(trackpair,partpair);
951 /******************************************************************/
953 void AliHBTTwoPairFctn1D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
955 partpair = CheckPair(partpair);
958 Double_t x = GetValue(trackpair,partpair);
959 fDenominator->Fill(x);
962 /******************************************************************/
963 /******************************************************************/
964 /******************************************************************/
966 //____________________
967 ///////////////////////////////////////////////////////
969 // AliHBTTwoPairFctn2D //
971 // Base Calss for 2-dimensinal Functions that need //
972 // two pair (simulated and reconstructed) //
973 // to fill function //
975 // Piotr.Skowronski@cern.ch //
976 // http://alisoft.cern.ch/people/skowron/analyzer //
978 ///////////////////////////////////////////////////////
980 ClassImp(AliHBTTwoPairFctn2D)
982 /******************************************************************/
984 AliHBTTwoPairFctn2D::AliHBTTwoPairFctn2D(const Char_t *name, const Char_t *title):
985 AliHBTFunction2D(name,title)
988 /******************************************************************/
990 AliHBTTwoPairFctn2D::AliHBTTwoPairFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval,
991 Int_t nYbins, Double_t maxYval, Double_t minYval):
992 AliHBTFunction2D(nXbins, maxXval, minXval, nYbins, maxYval, minYval)
995 /******************************************************************/
997 AliHBTTwoPairFctn2D::AliHBTTwoPairFctn2D(const Char_t *name, const Char_t *title,
998 Int_t nXbins, Double_t maxXval, Double_t minXval,
999 Int_t nYbins, Double_t maxYval, Double_t minYval):
1000 AliHBTFunction2D(name,title,nXbins, maxXval, minXval, nYbins, maxYval, minYval)
1003 /******************************************************************/
1005 void AliHBTTwoPairFctn2D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
1007 //processes pair of particles coming from a same events (real pair)
1008 partpair = CheckPair(partpair); //check cuts
1012 GetValues(trackpair,partpair,x,y);
1013 fNumerator->Fill(x,y);
1016 /******************************************************************/
1018 void AliHBTTwoPairFctn2D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
1020 //processes pair of particles coming from a different events (mixed pair)
1021 partpair = CheckPair(partpair);
1025 GetValues(trackpair,partpair,x,y);
1026 fDenominator->Fill(x,y);
1030 /******************************************************************/
1031 /******************************************************************/
1032 /******************************************************************/
1034 //____________________
1035 ///////////////////////////////////////////////////////
1037 // AliHBTTwoPairFctn3D //
1039 // Base Calss for 3-dimensinal Functions that need //
1040 // two pair (simulated and reconstructed) //
1041 // to fill function //
1043 // Piotr.Skowronski@cern.ch //
1044 // http://alisoft.cern.ch/people/skowron/analyzer //
1046 ///////////////////////////////////////////////////////
1048 ClassImp(AliHBTTwoPairFctn3D)
1050 /******************************************************************/
1052 AliHBTTwoPairFctn3D::AliHBTTwoPairFctn3D(const Char_t *name, const Char_t *title):
1053 AliHBTFunction3D(name,title)
1056 /******************************************************************/
1058 AliHBTTwoPairFctn3D::AliHBTTwoPairFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
1059 Int_t nYbins, Double_t maxYval, Double_t minYval,
1060 Int_t nZbins, Double_t maxZval, Double_t minZval):
1061 AliHBTFunction3D(nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
1064 /******************************************************************/
1066 AliHBTTwoPairFctn3D::AliHBTTwoPairFctn3D(const Char_t *name, const Char_t *title,
1067 Int_t nXbins, Double_t maxXval, Double_t minXval,
1068 Int_t nYbins, Double_t maxYval, Double_t minYval,
1069 Int_t nZbins, Double_t maxZval, Double_t minZval):
1070 AliHBTFunction3D(name,title,nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
1073 /******************************************************************/
1075 void AliHBTTwoPairFctn3D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
1077 partpair = CheckPair(partpair);
1081 GetValues(trackpair,partpair,x,y,z);
1082 fNumerator->Fill(x,y,z);
1085 /******************************************************************/
1087 void AliHBTTwoPairFctn3D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
1089 partpair = CheckPair(partpair);
1093 GetValues(trackpair,partpair,x,y,z);
1094 fDenominator->Fill(x,y,z);
1100 /******************************************************************/
1101 /******************************************************************/
1102 /******************************************************************/