1 #include "AliHBTFunction.h"
3 //////////////////////////////////////////////////////////////////////
6 //Author: Piotr Krzysztof Skowronski
7 //Piotr.Skowronski@cern.ch
8 /*Base classes for HBT functions
10 OnePairFctn unction 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()
43 fPairCut = new AliHBTEmptyPairCut(); //dummy cut
45 /******************************************************************/
46 AliHBTFunction::AliHBTFunction(const char* name,const char* title):TNamed(name,title)
48 fPairCut = new AliHBTEmptyPairCut(); //dummy cut
50 /******************************************************************/
52 AliHBTFunction::~AliHBTFunction()
56 /******************************************************************/
58 void AliHBTFunction::Write()
60 if (GetNumerator()) GetNumerator()->Write();
61 if (GetDenominator()) GetDenominator()->Write();
62 TH1* res = GetResult();
63 if (res) res->Write();
65 /******************************************************************/
67 TH1* AliHBTFunction::GetRatio(Double_t normfactor)
69 if (gDebug>0) Info("GetRatio","Norm. Factor is %f for %s",normfactor,GetName());
71 if (normfactor == 0.0)
73 Error("GetRatio","Scaling Factor is 0. Null poiner returned");
76 TString str = fName + " ratio";
77 TH1 *result = (TH1*)GetNumerator()->Clone(str.Data());
79 result->SetTitle(str.Data());
81 result->Divide(GetNumerator(),GetDenominator(),normfactor);
86 /******************************************************************/
87 void AliHBTFunction::SetPairCut(AliHBTPairCut* cut)
89 //Sets new Pair Cut. Old one is deleted
90 //Note that it is created new object instead of simple pointer set
91 //I do not want to have pointer
92 //to object created somewhere else
93 //because in that case I could not believe that
94 //it would always exist (sb could delete it)
95 //so we have always own copy
99 Error("AliHBTFunction::SetPairCut","argument is NULL");
103 fPairCut = (AliHBTPairCut*)cut->Clone();
107 /******************************************************************/
109 void AliHBTFunction::Rename(const Char_t * name)
111 //renames the function and histograms
115 TString numstr = fName + " Numerator"; //title and name of the
116 //numerator histogram
117 TString denstr = fName + " Denominator";//title and name of the
118 //denominator histogram
120 GetNumerator()->SetName(numstr.Data());
121 GetNumerator()->SetTitle(numstr.Data());
123 GetDenominator()->SetName(denstr.Data());
124 GetDenominator()->SetTitle(denstr.Data());
128 void AliHBTFunction::Rename(const Char_t * name, const Char_t * title)
130 //renames and retitle the function and histograms
135 TString numstrn = fName + " Numerator"; //name of the
136 //numerator histogram
138 TString numstrt = fTitle + " Numerator"; //title of the
139 //numerator histogram
141 TString denstrn = fName + " Denominator";//name of the
142 //denominator histogram
144 TString denstrt = fTitle + " Denominator";//title of the
145 //denominator histogram
148 GetNumerator()->SetName(numstrn.Data());
149 GetNumerator()->SetTitle(numstrt.Data());
151 GetDenominator()->SetName(denstrn.Data());
152 GetDenominator()->SetTitle(denstrt.Data());
156 /******************************************************************/
158 void AliHBTFunction::Init()
160 //Iniotializes fctn.: Resets histograms
161 //In case histograms are not created in ctor, builds with default parameters
162 if ( !(GetNumerator()&&GetDenominator()) ) BuildHistos();
163 GetNumerator()->Reset();
164 GetDenominator()->Reset();
167 /******************************************************************/
168 /******************************************************************/
169 /******************************************************************/
171 ClassImp( AliHBTOnePairFctn )
173 /******************************************************************/
174 /******************************************************************/
175 /******************************************************************/
177 ClassImp( AliHBTTwoPairFctn)
179 /******************************************************************/
180 /******************************************************************/
181 /******************************************************************/
183 ClassImp( AliHBTFunction1D )
185 const Int_t AliHBTFunction1D::fgkDefaultNBins = 100;
186 const Float_t AliHBTFunction1D::fgkDefaultMin = 0.0;
187 const Float_t AliHBTFunction1D::fgkDefaultMax = 0.15;
188 const UInt_t AliHBTFunction1D::fgkDefaultNBinsToScale = 30;
191 AliHBTFunction1D::AliHBTFunction1D():
194 fNBinsToScale(fgkDefaultNBinsToScale)
197 /******************************************************************/
199 AliHBTFunction1D::AliHBTFunction1D(Int_t nbins, Float_t maxXval, Float_t minXval):
202 fNBinsToScale(fgkDefaultNBinsToScale)
204 //Constructor of Two Part One Dimentional Function
205 // nbins: number of bins in histograms - default 100
206 // maxXval and minXval: range of histgram(s) default 0 - 0.15 (GeV)
207 BuildHistos(nbins,maxXval,minXval);
209 /******************************************************************/
210 AliHBTFunction1D::AliHBTFunction1D(const Char_t *name, const Char_t *title):
211 AliHBTFunction(name,title),
214 fNBinsToScale(fgkDefaultNBinsToScale)
217 /******************************************************************/
218 AliHBTFunction1D::AliHBTFunction1D(const Char_t *name, const Char_t *title,
219 Int_t nbins, Float_t maxXval, Float_t minXval):
220 AliHBTFunction(name,title),
223 fNBinsToScale(fgkDefaultNBinsToScale)
225 BuildHistos(nbins,maxXval,minXval);
227 /******************************************************************/
229 AliHBTFunction1D::~AliHBTFunction1D()
234 /******************************************************************/
235 void AliHBTFunction1D::BuildHistos()
237 BuildHistos(fgkDefaultNBins,fgkDefaultMax,fgkDefaultMin);
240 /******************************************************************/
242 void AliHBTFunction1D::BuildHistos(Int_t nbins, Float_t max, Float_t min)
244 TString numstr = fName + " Numerator"; //title and name of the
245 //numerator histogram
246 TString denstr = fName + " Denominator";//title and name of the
247 //denominator histogram
248 fNumerator = new TH1D(numstr.Data(),numstr.Data(),nbins,min,max);
249 fDenominator = new TH1D(denstr.Data(),denstr.Data(),nbins,min,max);
252 fDenominator->Sumw2();
254 /******************************************************************/
256 Double_t AliHBTFunction1D::Scale()
258 //Calculates the factor that should be used to scale
259 //quatience of fNumerator and fDenominator to 1 at tail
260 return Scale(fNumerator,fDenominator);
262 /******************************************************************/
264 Double_t AliHBTFunction1D::Scale(TH1D* num,TH1D* den)
266 //Calculates the factor that should be used to scale
267 //quatience of num and den to 1 at tail
269 if (gDebug>0) Info("Scale","Enetered Scale()");
272 Error("Scale","No numerator");
277 Error("Scale","No denominator");
281 if(fNBinsToScale < 1)
284 Error("Scale","Number of bins for scaling is smaller thnan 1");
286 UInt_t nbins = num->GetNbinsX();
287 if (fNBinsToScale > nbins)
289 Error("Scale","Number of bins for scaling is bigger thnan number of bins in histograms");
292 if (gDebug>0) Info("Scale","No errors detected");
298 Int_t offset = nbins - fNBinsToScale - 1;
300 for ( i = offset; i< nbins; i++)
302 if ( num->GetBinContent(i) > 0.0 )
304 ratio = den->GetBinContent(i)/num->GetBinContent(i);
310 if(gDebug > 0) Info("Scale","sum=%f fNBinsToScale=%d N=%d",sum,fNBinsToScale,N);
312 if (N == 0) return 0.0;
313 Double_t ret = sum/((Double_t)N);
315 if(gDebug > 0) Info("Scale","returning %f",ret);
319 /******************************************************************/
320 /******************************************************************/
321 /******************************************************************/
323 //____________________
324 ///////////////////////////////////////////////////////
326 // AliHBTFunction2D //
328 // Base Calss for 2-dimensinal Functions //
330 // Piotr.Skowronski@cern.ch //
331 // http://alisoft.cern.ch/people/skowron/analyzer //
333 ///////////////////////////////////////////////////////
335 ClassImp( AliHBTFunction1D )
337 const Int_t AliHBTFunction2D::fgkDefaultNBinsX = 200;//default number of Bins in X axis in histograms
338 const Float_t AliHBTFunction2D::fgkDefaultMinX = 0.0;//Default min value of X axis in histograms
339 const Float_t AliHBTFunction2D::fgkDefaultMaxX = 1.5;//Default max value of X axis inhistograms
341 const Int_t AliHBTFunction2D::fgkDefaultNBinsY = 200;//default number of Bins in histograms
342 const Float_t AliHBTFunction2D::fgkDefaultMinY = -0.15;//Default min value of histograms
343 const Float_t AliHBTFunction2D::fgkDefaultMaxY = 0.15;//Default max value of histograms
345 const UInt_t AliHBTFunction2D::fgkDefaultNBinsToScaleX = 30;//Default number of X bins used for scaling to tale
346 const UInt_t AliHBTFunction2D::fgkDefaultNBinsToScaleY = 30;//Default number of bins used for scaling to tale
348 /******************************************************************/
349 AliHBTFunction2D::AliHBTFunction2D():
352 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
353 fNBinsToScaleY(fgkDefaultNBinsToScaleY)
354 {//default constructor
356 /******************************************************************/
357 AliHBTFunction2D::AliHBTFunction2D(const Char_t *name, const Char_t *title):
358 AliHBTFunction(name,title),
361 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
362 fNBinsToScaleY(fgkDefaultNBinsToScaleY)
365 /******************************************************************/
367 AliHBTFunction2D::AliHBTFunction2D(Int_t nXbins, Double_t maxXval, Double_t minXval,
368 Int_t nYbins, Double_t maxYval, Double_t minYval):
371 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
372 fNBinsToScaleY(fgkDefaultNBinsToScaleY)
374 BuildHistos(nXbins,maxXval,minXval,nYbins,maxYval,minYval);
376 /******************************************************************/
378 AliHBTFunction2D::AliHBTFunction2D(const Char_t *name, const Char_t *title,
379 Int_t nXbins, Double_t maxXval, Double_t minXval,
380 Int_t nYbins, Double_t maxYval, Double_t minYval):
381 AliHBTFunction(name,title),
384 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
385 fNBinsToScaleY(fgkDefaultNBinsToScaleY)
387 BuildHistos(nXbins,maxXval,minXval,nYbins,maxYval,minYval);
389 /******************************************************************/
391 AliHBTFunction2D::~AliHBTFunction2D()
396 /******************************************************************/
398 void AliHBTFunction2D::BuildHistos()
400 //Creates default histograms
401 BuildHistos(fgkDefaultNBinsX,fgkDefaultMaxX,fgkDefaultMinX,
402 fgkDefaultNBinsY,fgkDefaultMaxY,fgkDefaultMinY);
404 /******************************************************************/
406 void AliHBTFunction2D::BuildHistos(Int_t nxbins, Float_t xmax, Float_t xmin,
407 Int_t nybins, Float_t ymax, Float_t ymin)
409 TString numstr = fName + " Numerator"; //title and name of the
410 //numerator histogram
411 TString denstr = fName + " Denominator";//title and name of the
412 //denominator histogram
414 fNumerator = new TH2D(numstr.Data(),numstr.Data(),
415 nxbins,xmin,xmax,nybins,ymin,ymax);
417 fDenominator = new TH2D(denstr.Data(),denstr.Data(),
418 nxbins,xmin,xmax,nybins,ymin,ymax);
421 fDenominator->Sumw2();
423 /******************************************************************/
425 void AliHBTFunction2D::SetNumberOfBinsToScale(UInt_t xn, UInt_t yn)
427 //defines area used for scaling factor calculation
431 /******************************************************************/
433 Double_t AliHBTFunction2D::Scale()
435 if (gDebug>0) Info("Scale","Enetered Scale()");
438 Error("Scale","No numerator");
443 Error("Scale","No denominator");
447 if( (fNBinsToScaleX < 1) || (fNBinsToScaleY < 1) )
450 Error("Scale","Number of bins for scaling is smaller thnan 1");
452 UInt_t nbinsX = fNumerator->GetNbinsX();
453 if (fNBinsToScaleX > nbinsX)
455 Error("Scale","Number of X bins for scaling is bigger thnan number of bins in histograms");
459 UInt_t nbinsY = fNumerator->GetNbinsX();
460 if (fNBinsToScaleY > nbinsY)
462 Error("Scale","Number of Y bins for scaling is bigger thnan number of bins in histograms");
466 if (gDebug>0) Info("Scale","No errors detected");
468 Int_t offsetX = nbinsX - fNBinsToScaleX - 1; //bin that we start loop over bins in axis X
469 Int_t offsetY = nbinsY - fNBinsToScaleY - 1; //bin that we start loop over bins in axis X
476 for ( j = offsetY; j< nbinsY; j++)
477 for ( i = offsetX; i< nbinsX; i++)
479 if ( fNumerator->GetBinContent(i,j) > 0.0 )
481 ratio = fDenominator->GetBinContent(i,j)/fNumerator->GetBinContent(i,j);
487 if(gDebug > 0) Info("Scale","sum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d N=%d",sum,fNBinsToScaleX,fNBinsToScaleY,N);
489 if (N == 0) return 0.0;
490 Double_t ret = sum/((Double_t)N);
492 if(gDebug > 0) Info("Scale","returning %f",ret);
496 /******************************************************************/
497 /******************************************************************/
498 /******************************************************************/
500 //____________________
501 ///////////////////////////////////////////////////////
503 // AliHBTFunction3D //
505 // Base Calss for 3-dimensinal Functions //
507 // Piotr.Skowronski@cern.ch //
508 // http://alisoft.cern.ch/people/skowron/analyzer //
510 ///////////////////////////////////////////////////////
512 ClassImp( AliHBTFunction3D)
514 const Int_t AliHBTFunction3D::fgkDefaultNBinsX = 200;//default number of Bins in X axis in histograms
515 const Float_t AliHBTFunction3D::fgkDefaultMinX = 0.0;//Default min value of X axis in histograms
516 const Float_t AliHBTFunction3D::fgkDefaultMaxX = 1.5;//Default max value of X axis inhistograms
518 const Int_t AliHBTFunction3D::fgkDefaultNBinsY = 200;//default number of Bins in histograms
519 const Float_t AliHBTFunction3D::fgkDefaultMinY = -0.15;//Default min value of histograms
520 const Float_t AliHBTFunction3D::fgkDefaultMaxY = 0.15;//Default max value of histograms
522 const Int_t AliHBTFunction3D::fgkDefaultNBinsZ = 200;//default number of Bins in histograms
523 const Float_t AliHBTFunction3D::fgkDefaultMinZ = -0.15;//Default min value of histograms
524 const Float_t AliHBTFunction3D::fgkDefaultMaxZ = 0.15;//Default max value of histograms
526 const UInt_t AliHBTFunction3D::fgkDefaultNBinsToScaleX = 30;//Default number of X bins used for scaling to tale
527 const UInt_t AliHBTFunction3D::fgkDefaultNBinsToScaleY = 30;//Default number of bins used for scaling to tale
528 const UInt_t AliHBTFunction3D::fgkDefaultNBinsToScaleZ = 30;//Default number of bins used for scaling to tale
531 AliHBTFunction3D::AliHBTFunction3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
532 Int_t nYbins, Double_t maxYval, Double_t minYval,
533 Int_t nZbins, Double_t maxZval, Double_t minZval):
536 fNBinsToScaleX(fgkDefaultNBinsToScaleX),
537 fNBinsToScaleY(fgkDefaultNBinsToScaleY),
538 fNBinsToScaleZ(fgkDefaultNBinsToScaleZ)
541 /******************************************************************/
543 AliHBTFunction3D::~AliHBTFunction3D()
548 /******************************************************************/
550 void AliHBTFunction3D::BuildHistos()
552 //Creates default histograms
553 BuildHistos(fgkDefaultNBinsX,fgkDefaultMaxX,fgkDefaultMinX,
554 fgkDefaultNBinsY,fgkDefaultMaxY,fgkDefaultMinY,
555 fgkDefaultNBinsZ,fgkDefaultMaxZ,fgkDefaultMinZ);
557 /******************************************************************/
559 void AliHBTFunction3D::BuildHistos(Int_t nxbins, Float_t xmax, Float_t xmin,
560 Int_t nybins, Float_t ymax, Float_t ymin,
561 Int_t nzbins, Float_t zmax, Float_t zmin)
563 TString numstr = fName + " Numerator"; //title and name of the
564 //numerator histogram
565 TString denstr = fName + " Denominator";//title and name of the
566 //denominator histogram
568 fNumerator = new TH3D(numstr.Data(),numstr.Data(),
569 nxbins,xmin,xmin,nybins,ymin,ymin,nzbins,zmin,zmin);
571 fDenominator = new TH3D(denstr.Data(),denstr.Data(),
572 nxbins,xmin,xmin,nybins,ymin,ymin,nzbins,zmin,zmin);
575 fDenominator->Sumw2();
578 /******************************************************************/
580 Double_t AliHBTFunction3D::Scale()
582 if (gDebug>0) Info("Scale","Enetered Scale()");
585 Error("Scale","No numerator");
590 Error("Scale","No denominator");
594 if( (fNBinsToScaleX < 1) || (fNBinsToScaleY < 1) || (fNBinsToScaleZ < 1))
597 Error("Scale","Number of bins for scaling is smaller thnan 1");
599 UInt_t nbinsX = fNumerator->GetNbinsX();
600 if (fNBinsToScaleX > nbinsX)
602 Error("Scale","Number of X bins for scaling is bigger thnan number of bins in histograms");
606 UInt_t nbinsY = fNumerator->GetNbinsX();
607 if (fNBinsToScaleY > nbinsY)
609 Error("Scale","Number of Y bins for scaling is bigger thnan number of bins in histograms");
613 UInt_t nbinsZ = fNumerator->GetNbinsZ();
614 if (fNBinsToScaleZ > nbinsZ)
616 Error("Scale","Number of Z bins for scaling is bigger thnan number of bins in histograms");
620 if (gDebug>0) Info("Scale","No errors detected");
622 Int_t offsetX = nbinsX - fNBinsToScaleX - 1; //bin that we start loop over bins in axis X
623 Int_t offsetY = nbinsY - fNBinsToScaleY - 1; //bin that we start loop over bins in axis Y
624 Int_t offsetZ = nbinsZ - fNBinsToScaleZ - 1; //bin that we start loop over bins in axis Z
630 for (UInt_t k = offsetZ; k<nbinsZ; k++)
631 for (UInt_t j = offsetY; j<nbinsY; j++)
632 for (UInt_t i = offsetX; i<nbinsX; i++)
634 if ( fNumerator->GetBinContent(i,j,k) > 0.0 )
636 ratio = fDenominator->GetBinContent(i,j,k)/fNumerator->GetBinContent(i,j,k);
643 Info("Scale","sum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d fNBinsToScaleZ=%d N=%d",
644 sum,fNBinsToScaleX,fNBinsToScaleY,fNBinsToScaleZ,N);
646 if (N == 0) return 0.0;
647 Double_t ret = sum/((Double_t)N);
649 if(gDebug > 0) Info("Scale","returning %f",ret);
653 /******************************************************************/
654 /******************************************************************/
655 /******************************************************************/
656 /******************************************************************/
657 /******************************************************************/
658 /******************************************************************/
659 /******************************************************************/
660 /******************************************************************/
661 /******************************************************************/
663 //____________________
664 ///////////////////////////////////////////////////////
666 // AliHBTOnePairFctn1D //
668 // Base Calss for 1-dimensinal Functions that need //
669 // one pair to fill function //
671 // Piotr.Skowronski@cern.ch //
672 // http://alisoft.cern.ch/people/skowron/analyzer //
674 ///////////////////////////////////////////////////////
676 ClassImp( AliHBTOnePairFctn1D )
677 /******************************************************************/
679 AliHBTOnePairFctn1D::AliHBTOnePairFctn1D(Int_t nbins, Float_t maxXval, Float_t minXval):
680 AliHBTFunction1D(nbins,maxXval,minXval)
683 /******************************************************************/
685 AliHBTOnePairFctn1D::AliHBTOnePairFctn1D(const Char_t *name, const Char_t *title):
686 AliHBTFunction1D(name,title)
689 /******************************************************************/
691 AliHBTOnePairFctn1D::AliHBTOnePairFctn1D(const Char_t *name, const Char_t *title,
692 Int_t nbins, Float_t maxXval, Float_t minXval):
693 AliHBTFunction1D(name,title,nbins,maxXval,minXval)
696 /******************************************************************/
698 void AliHBTOnePairFctn1D::ProcessSameEventParticles(AliHBTPair* pair)
700 //Fills the numerator
701 pair = CheckPair(pair);
702 if(pair) fNumerator->Fill(GetValue(pair));
704 /******************************************************************/
705 void AliHBTOnePairFctn1D::ProcessDiffEventParticles(AliHBTPair* pair)
708 pair = CheckPair(pair);
709 if(pair) fDenominator->Fill(GetValue(pair));
712 /******************************************************************/
713 /******************************************************************/
714 /******************************************************************/
716 //____________________
717 ///////////////////////////////////////////////////////
719 // AliHBTOnePairFctn2D //
721 // Base Calss for 2-dimensinal Functions that need //
722 // one pair to fill function //
724 // Piotr.Skowronski@cern.ch //
725 // http://alisoft.cern.ch/people/skowron/analyzer //
727 ///////////////////////////////////////////////////////
729 ClassImp( AliHBTOnePairFctn2D )
730 /******************************************************************/
732 AliHBTOnePairFctn2D::AliHBTOnePairFctn2D(const Char_t *name, const Char_t *title):
733 AliHBTFunction2D(name,title)
736 /******************************************************************/
738 AliHBTOnePairFctn2D::AliHBTOnePairFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval,
739 Int_t nYbins, Double_t maxYval, Double_t minYval):
740 AliHBTFunction2D(nXbins, maxXval, minXval, nYbins, maxYval, minYval)
743 /******************************************************************/
745 AliHBTOnePairFctn2D::AliHBTOnePairFctn2D(const Char_t *name, const Char_t *title,
746 Int_t nXbins, Double_t maxXval, Double_t minXval,
747 Int_t nYbins, Double_t maxYval, Double_t minYval):
748 AliHBTFunction2D(name,title, nXbins, maxXval, minXval, nYbins, maxYval, minYval)
751 /******************************************************************/
753 void AliHBTOnePairFctn2D::ProcessSameEventParticles(AliHBTPair* pair)
755 pair = CheckPair(pair);
760 fNumerator->Fill(x,y);
763 /******************************************************************/
765 void AliHBTOnePairFctn2D::ProcessDiffEventParticles(AliHBTPair* pair)
767 pair = CheckPair(pair);
772 fDenominator->Fill(x,y);
775 /******************************************************************/
776 /******************************************************************/
777 /******************************************************************/
778 /******************************************************************/
779 //____________________
780 ///////////////////////////////////////////////////////
782 // AliHBTOnePairFctn3D //
784 // Base Calss for 3-dimensinal Functions that need //
785 // one pair to fill function //
787 // Piotr.Skowronski@cern.ch //
788 // http://alisoft.cern.ch/people/skowron/analyzer //
790 ///////////////////////////////////////////////////////
791 ClassImp( AliHBTOnePairFctn3D)
793 /******************************************************************/
795 AliHBTOnePairFctn3D::AliHBTOnePairFctn3D(const Char_t *name, const Char_t *title):
796 AliHBTFunction3D(name,title)
799 /******************************************************************/
801 AliHBTOnePairFctn3D::AliHBTOnePairFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
802 Int_t nYbins, Double_t maxYval, Double_t minYval,
803 Int_t nZbins, Double_t maxZval, Double_t minZval):
804 AliHBTFunction3D(nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
807 /******************************************************************/
809 AliHBTOnePairFctn3D::AliHBTOnePairFctn3D(const Char_t *name, const Char_t *title,
810 Int_t nXbins, Double_t maxXval, Double_t minXval,
811 Int_t nYbins, Double_t maxYval, Double_t minYval,
812 Int_t nZbins, Double_t maxZval, Double_t minZval):
813 AliHBTFunction3D(name,title,nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
816 /******************************************************************/
818 void AliHBTOnePairFctn3D::ProcessSameEventParticles(AliHBTPair* pair)
820 //Reacts on pair coming from same event (real pairs)
821 //and fills numerator histogram
822 pair = CheckPair(pair);
826 GetValues(pair,x,y,z);
827 fNumerator->Fill(x,y,z);
830 /******************************************************************/
832 void AliHBTOnePairFctn3D::ProcessDiffEventParticles(AliHBTPair* pair)
834 //Reacts on pair coming from different events (mixed pairs)
835 //and fills denominator histogram
836 pair = CheckPair(pair);
840 GetValues(pair,x,y,z);
841 fDenominator->Fill(x,y,z);
845 /******************************************************************/
846 /******************************************************************/
847 /******************************************************************/
849 //____________________
850 ///////////////////////////////////////////////////////
852 // AliHBTTwoPairFctn1D //
854 // Base Calss for 1-dimensinal Functions that need //
855 // two pair (simulated and reconstructed) //
856 // to fill function //
858 // Piotr.Skowronski@cern.ch //
859 // http://alisoft.cern.ch/people/skowron/analyzer //
861 ///////////////////////////////////////////////////////
862 ClassImp(AliHBTTwoPairFctn1D)
863 /******************************************************************/
865 AliHBTTwoPairFctn1D::AliHBTTwoPairFctn1D(Int_t nbins, Float_t maxXval, Float_t minXval):
866 AliHBTFunction1D(nbins,maxXval,minXval)
869 /******************************************************************/
871 AliHBTTwoPairFctn1D::AliHBTTwoPairFctn1D(const Char_t *name, const Char_t *title):
872 AliHBTFunction1D(name,title)
875 /******************************************************************/
877 AliHBTTwoPairFctn1D::AliHBTTwoPairFctn1D(const Char_t *name, const Char_t *title,
878 Int_t nbins, Float_t maxXval, Float_t minXval):
879 AliHBTFunction1D(name,title,nbins,maxXval,minXval)
882 /******************************************************************/
884 void AliHBTTwoPairFctn1D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
886 partpair = CheckPair(partpair);
889 Double_t x = GetValue(trackpair,partpair);
893 /******************************************************************/
895 void AliHBTTwoPairFctn1D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
897 partpair = CheckPair(partpair);
900 Double_t x = GetValue(trackpair,partpair);
901 fDenominator->Fill(x);
904 /******************************************************************/
905 /******************************************************************/
906 /******************************************************************/
908 //____________________
909 ///////////////////////////////////////////////////////
911 // AliHBTTwoPairFctn2D //
913 // Base Calss for 2-dimensinal Functions that need //
914 // two pair (simulated and reconstructed) //
915 // to fill function //
917 // Piotr.Skowronski@cern.ch //
918 // http://alisoft.cern.ch/people/skowron/analyzer //
920 ///////////////////////////////////////////////////////
922 ClassImp(AliHBTTwoPairFctn2D)
924 /******************************************************************/
926 AliHBTTwoPairFctn2D::AliHBTTwoPairFctn2D(const Char_t *name, const Char_t *title):
927 AliHBTFunction2D(name,title)
930 /******************************************************************/
932 AliHBTTwoPairFctn2D::AliHBTTwoPairFctn2D(Int_t nXbins, Double_t maxXval, Double_t minXval,
933 Int_t nYbins, Double_t maxYval, Double_t minYval):
934 AliHBTFunction2D(nXbins, maxXval, minXval, nYbins, maxYval, minYval)
937 /******************************************************************/
939 AliHBTTwoPairFctn2D::AliHBTTwoPairFctn2D(const Char_t *name, const Char_t *title,
940 Int_t nXbins, Double_t maxXval, Double_t minXval,
941 Int_t nYbins, Double_t maxYval, Double_t minYval):
942 AliHBTFunction2D(name,title,nXbins, maxXval, minXval, nYbins, maxYval, minYval)
945 /******************************************************************/
947 void AliHBTTwoPairFctn2D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
949 partpair = CheckPair(partpair);
953 GetValues(trackpair,partpair,x,y);
954 fNumerator->Fill(x,y);
957 /******************************************************************/
959 void AliHBTTwoPairFctn2D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
961 partpair = CheckPair(partpair);
965 GetValues(trackpair,partpair,x,y);
966 fDenominator->Fill(x,y);
971 /******************************************************************/
972 /******************************************************************/
973 /******************************************************************/
975 //____________________
976 ///////////////////////////////////////////////////////
978 // AliHBTTwoPairFctn3D //
980 // Base Calss for 3-dimensinal Functions that need //
981 // two pair (simulated and reconstructed) //
982 // to fill function //
984 // Piotr.Skowronski@cern.ch //
985 // http://alisoft.cern.ch/people/skowron/analyzer //
987 ///////////////////////////////////////////////////////
989 ClassImp(AliHBTTwoPairFctn3D)
991 /******************************************************************/
993 AliHBTTwoPairFctn3D::AliHBTTwoPairFctn3D(const Char_t *name, const Char_t *title):
994 AliHBTFunction3D(name,title)
997 /******************************************************************/
999 AliHBTTwoPairFctn3D::AliHBTTwoPairFctn3D(Int_t nXbins, Double_t maxXval, Double_t minXval,
1000 Int_t nYbins, Double_t maxYval, Double_t minYval,
1001 Int_t nZbins, Double_t maxZval, Double_t minZval):
1002 AliHBTFunction3D(nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
1005 /******************************************************************/
1007 AliHBTTwoPairFctn3D::AliHBTTwoPairFctn3D(const Char_t *name, const Char_t *title,
1008 Int_t nXbins, Double_t maxXval, Double_t minXval,
1009 Int_t nYbins, Double_t maxYval, Double_t minYval,
1010 Int_t nZbins, Double_t maxZval, Double_t minZval):
1011 AliHBTFunction3D(name,title,nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
1014 /******************************************************************/
1016 void AliHBTTwoPairFctn3D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
1018 partpair = CheckPair(partpair);
1022 GetValues(trackpair,partpair,x,y,z);
1023 fNumerator->Fill(x,y,z);
1026 /******************************************************************/
1028 void AliHBTTwoPairFctn3D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
1030 partpair = CheckPair(partpair);
1034 GetValues(trackpair,partpair,x,y,z);
1035 fDenominator->Fill(x,y,z);
1041 /******************************************************************/
1042 /******************************************************************/
1043 /******************************************************************/