]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTFunction.cxx
Using TMath::Pi() instead of kPI
[u/mrichter/AliRoot.git] / HBTAN / AliHBTFunction.cxx
index 30266ff99d8102b438ed2716beaa80afffc84652..767834a3fdcee3fd57585a8658440e4bd76fb56b 100644 (file)
 ClassImp( AliHBTFunction )
 
 AliHBTFunction::AliHBTFunction():
-  fPairCut(new AliHBTEmptyPairCut())   //dummy cut
+ fPairCut(new AliHBTEmptyPairCut()), //dummy cut  
+ fWriteNumAndDen(kFALSE)
 {
 //Default constructor
 }
 /******************************************************************/
+
 AliHBTFunction::AliHBTFunction(const char* name,const char* title):
-  TNamed(name,title),
-  fPairCut(new AliHBTEmptyPairCut()) //dummy cut  
+ TNamed(name,title),
+ fPairCut(new AliHBTEmptyPairCut()), //dummy cut  
+ fWriteNumAndDen(kFALSE)
 {
 //Constructor  
 }
 /******************************************************************/
 
+AliHBTFunction::AliHBTFunction(const AliHBTFunction & source):
+ TNamed(source),
+ fPairCut((AliHBTPairCut*)source.fPairCut->Clone()),
+ fWriteNumAndDen(source.fWriteNumAndDen)
+{
+// Copy constructor needed by the coding conventions
+}
+/******************************************************************/
+
 AliHBTFunction::~AliHBTFunction()
 {
 //destructor  
   delete fPairCut;
 }
 /******************************************************************/
+AliHBTFunction & AliHBTFunction::operator= (const AliHBTFunction & source)
+{
+ // Assignment needed by the coding conventions
+  delete fPairCut;
+  fPairCut = (AliHBTPairCut*)source.fPairCut->Clone();
+  return * this;
+}
 
 void AliHBTFunction::WriteFunction()
 {
 //writes result of the function to file
-   if (GetNumerator()) GetNumerator()->Write();
-   if (GetDenominator()) GetDenominator()->Write();
+   if (fWriteNumAndDen)
+    { 
+     if (GetNumerator()) GetNumerator()->Write();
+     if (GetDenominator()) GetDenominator()->Write();
+    } 
    TH1* res = GetResult();
    if (res) res->Write();
 }
@@ -75,7 +97,7 @@ TH1* AliHBTFunction::GetRatio(Double_t normfactor)
  {
  //returns ratio of numerator and denominator
  //
-   if (gDebug>0) Info("GetRatio","Norm. Factor is %f for %s",normfactor,GetName());
+   if (AliHBTParticle::GetDebug()>0) Info("GetRatio","Norm. Factor is %f for %s",normfactor,GetName());
    
    if (normfactor == 0.0)
     {
@@ -236,6 +258,22 @@ AliHBTFunction1D::AliHBTFunction1D(const Char_t *name, const Char_t *title,
 }
 /******************************************************************/
 
+AliHBTFunction1D::AliHBTFunction1D(const AliHBTFunction1D& source):
+ AliHBTFunction(source)
+{
+// Copy constructor needed by the coding conventions byt not used
+  Fatal("AliHBTFunction1D(const AliHBTFunction1D&)","Cpy ctor not usable.");
+}
+/******************************************************************/
+
+AliHBTFunction1D& AliHBTFunction1D::operator= (const AliHBTFunction1D & /*source*/) 
+{
+// Assignment needed by the coding conventions byt not used
+  Fatal("Assignment operator","not implemented");
+  return * this;
+ }
+/******************************************************************/
+
 AliHBTFunction1D::~AliHBTFunction1D()
 {
 //destructor
@@ -279,7 +317,7 @@ Double_t AliHBTFunction1D::Scale(TH1D* num,TH1D* den)
  //Calculates the factor that should be used to scale 
  //quatience of num and den to 1 at tail
  
-  if (gDebug>0) Info("Scale","Enetered Scale()");
+  if (AliHBTParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
   if(!num) 
    {
      Error("Scale","No numerator");
@@ -293,8 +331,8 @@ Double_t AliHBTFunction1D::Scale(TH1D* num,TH1D* den)
   
   if(fNBinsToScale < 1) 
    {
-    return 0.0;
     Error("Scale","Number of bins for scaling is smaller thnan 1");
+    return 0.0;
    }
   UInt_t nbins = num->GetNbinsX();
   if (fNBinsToScale > nbins) 
@@ -302,7 +340,7 @@ Double_t AliHBTFunction1D::Scale(TH1D* num,TH1D* den)
     Error("Scale","Number of bins for scaling is bigger thnan number of bins in histograms");
     return 0.0;
    }
-  if (gDebug>0) Info("Scale","No errors detected");
+  if (AliHBTParticle::GetDebug()>0) Info("Scale","No errors detected");
 
   Double_t ratio;
   Double_t sum = 0;
@@ -320,12 +358,12 @@ Double_t AliHBTFunction1D::Scale(TH1D* num,TH1D* den)
      }
    }
   
-  if(gDebug > 0) Info("Scale","sum=%f fNBinsToScale=%d n=%d",sum,fNBinsToScale,n);
+  if(AliHBTParticle::GetDebug() > 0) Info("Scale","sum=%f fNBinsToScale=%d n=%d",sum,fNBinsToScale,n);
   
   if (n == 0) return 0.0;
   Double_t ret = sum/((Double_t)n);
 
-  if(gDebug > 0) Info("Scale","returning %f",ret);
+  if(AliHBTParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
   return ret;
 } 
 
@@ -400,9 +438,24 @@ AliHBTFunction2D::AliHBTFunction2D(const Char_t *name, const Char_t *title,
   BuildHistos(nXbins,maxXval,minXval,nYbins,maxYval,minYval);
 }        
 /******************************************************************/
+AliHBTFunction2D::AliHBTFunction2D(const AliHBTFunction2D & source):
+ AliHBTFunction(source)
+{
+// Copy constructor needed by the coding conventions byt not used
+  Fatal("AliHBTFunction2D(const AliHBTFunction2D&)","Cpy ctor not usable.");
+}
+/******************************************************************/
+
+AliHBTFunction2D& AliHBTFunction2D::operator= (const AliHBTFunction2D& /*source*/) {
+// Assignment needed by the coding conventions byt not used
+  Fatal("Assignment operator","not implemented");
+  return * this;
+}
+/******************************************************************/
 
 AliHBTFunction2D::~AliHBTFunction2D()
 {
+//dtor
   delete fNumerator;
   delete fDenominator;
 }
@@ -419,7 +472,7 @@ void AliHBTFunction2D::BuildHistos()
 void AliHBTFunction2D::BuildHistos(Int_t nxbins, Float_t xmax, Float_t xmin,
                                    Int_t nybins, Float_t ymax, Float_t ymin)
 {
-  //Builds numerator and denominator histograms (2d-case)
+//Builds numerator and denominator histograms (2d-case)
  TString numstr = fName + " Numerator";  //title and name of the 
                                            //numerator histogram
  TString denstr = fName + " Denominator";//title and name of the 
@@ -446,10 +499,10 @@ void AliHBTFunction2D::SetNumberOfBinsToScale(UInt_t xn, UInt_t yn)
 
 Double_t AliHBTFunction2D::Scale()
 {
-  // Calculates the factor that should be used to scale 
-  // quatience of fNumerator and fDenominator to 1 at 
-  // given region
-  if (gDebug>0) Info("Scale","Enetered Scale()");
+// Calculates the factor that should be used to scale 
+// quatience of fNumerator and fDenominator to 1 at 
+// given region
+  if (AliHBTParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
   if(!fNumerator) 
    {
      Error("Scale","No numerator");
@@ -463,8 +516,8 @@ Double_t AliHBTFunction2D::Scale()
   
   if( (fNBinsToScaleX < 1) || (fNBinsToScaleY < 1) ) 
    {
-    return 0.0;
     Error("Scale","Number of bins for scaling is smaller thnan 1");
+    return 0.0;
    }
   UInt_t nbinsX = fNumerator->GetNbinsX();
   if (fNBinsToScaleX > nbinsX) 
@@ -480,7 +533,7 @@ Double_t AliHBTFunction2D::Scale()
     return 0.0;
    }
 
-  if (gDebug>0) Info("Scale","No errors detected");
+  if (AliHBTParticle::GetDebug()>0) Info("Scale","No errors detected");
 
   Int_t offsetX = nbinsX - fNBinsToScaleX - 1; //bin that we start loop over bins in axis X
   Int_t offsetY = nbinsY - fNBinsToScaleY - 1; //bin that we start loop over bins in axis X
@@ -500,12 +553,12 @@ Double_t AliHBTFunction2D::Scale()
        }
      }
   
-  if(gDebug > 0) Info("Scale","sum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d n=%d",sum,fNBinsToScaleX,fNBinsToScaleY,n);
+  if(AliHBTParticle::GetDebug() > 0) Info("Scale","sum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d n=%d",sum,fNBinsToScaleX,fNBinsToScaleY,n);
   
   if (n == 0) return 0.0;
   Double_t ret = sum/((Double_t)n);
 
-  if(gDebug > 0) Info("Scale","returning %f",ret);
+  if(AliHBTParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
   return ret;
 } 
 
@@ -596,6 +649,22 @@ AliHBTFunction3D::AliHBTFunction3D(const Char_t *name, const Char_t *title,
 }        
 /******************************************************************/
 
+AliHBTFunction3D::AliHBTFunction3D(const AliHBTFunction3D& source):
+ AliHBTFunction(source)
+{
+// Copy constructor needed by the coding conventions byt not used
+  Fatal("AliHBTFunction3D(const AliHBTFunction3D&)","Cpy ctor not usable.");
+}
+/******************************************************************/
+
+AliHBTFunction3D& AliHBTFunction3D::operator= (const AliHBTFunction3D & /*source*/) 
+{
+// Assignment needed by the coding conventions byt not used
+  Fatal("Assignment operator","not implemented");
+  return * this;
+ }
+/******************************************************************/
+
 
 AliHBTFunction3D::~AliHBTFunction3D()
 {
@@ -624,10 +693,10 @@ void AliHBTFunction3D::BuildHistos(Int_t nxbins, Float_t xmax, Float_t xmin,
                                            //denominator histogram
          
    fNumerator   = new TH3D(numstr.Data(),numstr.Data(),
-                           nxbins,xmin,xmin,nybins,ymin,ymin,nzbins,zmin,zmin);
+                           nxbins,xmin,xmax,nybins,ymin,ymax,nzbins,zmin,zmax);
               
    fDenominator = new TH3D(denstr.Data(),denstr.Data(),
-                           nxbins,xmin,xmin,nybins,ymin,ymin,nzbins,zmin,zmin);
+                           nxbins,xmin,xmax,nybins,ymin,ymax,nzbins,zmin,zmax);
    
    fNumerator->Sumw2();
    fDenominator->Sumw2();
@@ -640,7 +709,7 @@ Double_t AliHBTFunction3D::Scale()
   // Calculates the factor that should be used to scale 
   // quatience of fNumerator and fDenominator to 1 at 
   // given volume
-  if (gDebug>0) Info("Scale","Enetered Scale()");
+  if (AliHBTParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
   if(!fNumerator) 
    {
      Error("Scale","No numerator");
@@ -654,8 +723,8 @@ Double_t AliHBTFunction3D::Scale()
   
   if( (fNBinsToScaleX < 1) || (fNBinsToScaleY < 1) || (fNBinsToScaleZ < 1)) 
    {
-    return 0.0;
     Error("Scale","Number of bins for scaling is smaller thnan 1");
+    return 0.0;
    }
   UInt_t nbinsX = fNumerator->GetNbinsX();
   if (fNBinsToScaleX > nbinsX) 
@@ -678,7 +747,7 @@ Double_t AliHBTFunction3D::Scale()
     return 0.0;
    }
 
-  if (gDebug>0) Info("Scale","No errors detected");
+  if (AliHBTParticle::GetDebug()>0) Info("Scale","No errors detected");
 
   Int_t offsetX = nbinsX - fNBinsToScaleX - 1; //bin that we start loop over bins in axis X
   Int_t offsetY = nbinsY - fNBinsToScaleY - 1; //bin that we start loop over bins in axis Y
@@ -700,14 +769,14 @@ Double_t AliHBTFunction3D::Scale()
          }
        }
   
-  if(gDebug > 0) 
+  if(AliHBTParticle::GetDebug() > 0) 
     Info("Scale","sum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d fNBinsToScaleZ=%d n=%d",
           sum,fNBinsToScaleX,fNBinsToScaleY,fNBinsToScaleZ,n);
   
   if (n == 0) return 0.0;
   Double_t ret = sum/((Double_t)n);
 
-  if(gDebug > 0) Info("Scale","returning %f",ret);
+  if(AliHBTParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
   return ret;
 } 
 /******************************************************************/
@@ -749,12 +818,14 @@ ClassImp( AliHBTOnePairFctn1D )
 AliHBTOnePairFctn1D::AliHBTOnePairFctn1D(Int_t nbins, Float_t maxXval, Float_t minXval):
  AliHBTFunction1D(nbins,maxXval,minXval)
 {
+  //constructor
 }
 /******************************************************************/
 
 AliHBTOnePairFctn1D::AliHBTOnePairFctn1D(const Char_t *name, const Char_t *title):
  AliHBTFunction1D(name,title)
 {
+
 }
 /******************************************************************/
 
@@ -762,6 +833,7 @@ AliHBTOnePairFctn1D::AliHBTOnePairFctn1D(const Char_t *name, const Char_t *title
                                          Int_t nbins, Float_t maxXval, Float_t minXval):
  AliHBTFunction1D(name,title,nbins,maxXval,minXval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -802,6 +874,7 @@ ClassImp( AliHBTOnePairFctn2D )
 AliHBTOnePairFctn2D::AliHBTOnePairFctn2D(const Char_t *name, const Char_t *title):
  AliHBTFunction2D(name,title)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -809,6 +882,7 @@ AliHBTOnePairFctn2D::AliHBTOnePairFctn2D(Int_t nXbins, Double_t maxXval, Double_
                       Int_t nYbins, Double_t maxYval, Double_t minYval):
  AliHBTFunction2D(nXbins, maxXval, minXval, nYbins, maxYval, minYval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -817,6 +891,7 @@ AliHBTOnePairFctn2D::AliHBTOnePairFctn2D(const Char_t *name, const Char_t *title
                       Int_t nYbins, Double_t maxYval, Double_t minYval):
  AliHBTFunction2D(name,title, nXbins, maxXval, minXval, nYbins, maxYval, minYval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -867,6 +942,7 @@ ClassImp( AliHBTOnePairFctn3D)
 AliHBTOnePairFctn3D::AliHBTOnePairFctn3D(const Char_t *name, const Char_t *title):
  AliHBTFunction3D(name,title)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -875,6 +951,7 @@ AliHBTOnePairFctn3D::AliHBTOnePairFctn3D(Int_t nXbins, Double_t maxXval, Double_
                       Int_t nZbins, Double_t maxZval, Double_t minZval):
  AliHBTFunction3D(nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -884,6 +961,7 @@ AliHBTOnePairFctn3D::AliHBTOnePairFctn3D(const Char_t *name, const Char_t *title
                       Int_t nZbins, Double_t maxZval, Double_t minZval):
  AliHBTFunction3D(name,title,nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -937,12 +1015,14 @@ ClassImp(AliHBTTwoPairFctn1D)
 AliHBTTwoPairFctn1D::AliHBTTwoPairFctn1D(Int_t nbins, Float_t maxXval, Float_t minXval):
  AliHBTFunction1D(nbins,maxXval,minXval)
 {
+  //constructor
 }
 /******************************************************************/
 
 AliHBTTwoPairFctn1D::AliHBTTwoPairFctn1D(const Char_t *name, const Char_t *title):
  AliHBTFunction1D(name,title)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -950,6 +1030,7 @@ AliHBTTwoPairFctn1D::AliHBTTwoPairFctn1D(const Char_t *name, const Char_t *title
                                          Int_t nbins, Float_t maxXval, Float_t minXval):
  AliHBTFunction1D(name,title,nbins,maxXval,minXval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -957,11 +1038,13 @@ void AliHBTTwoPairFctn1D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHB
 {
   // Fills the numerator using pairs from the same event
   partpair  = CheckPair(partpair);
-  if( partpair ) 
-   { 
-     Double_t x = GetValue(trackpair,partpair);
-     fNumerator->Fill(x);
-   }
+  if( partpair == 0x0) return;
+  
+  if (partpair->GetSwapedPair() == 0x0)//it means that Check pair returned swapped pair
+    trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
+    
+  Double_t x = GetValue(trackpair,partpair);
+  fNumerator->Fill(x);
 }
 /******************************************************************/
 
@@ -969,11 +1052,13 @@ void AliHBTTwoPairFctn1D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHB
 {
   // Fills the denumerator usin mixed pairs
   partpair  = CheckPair(partpair);
-  if( partpair )
-   { 
-     Double_t x = GetValue(trackpair,partpair);
-     fDenominator->Fill(x);
-   }
+  if( partpair == 0x0) return;
+  
+  if (partpair->GetSwapedPair() == 0x0)//it means that Check pair returned swapped pair
+    trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
+    
+  Double_t x = GetValue(trackpair,partpair);
+  fDenominator->Fill(x);
 }
 /******************************************************************/
 /******************************************************************/
@@ -1000,6 +1085,7 @@ ClassImp(AliHBTTwoPairFctn2D)
 AliHBTTwoPairFctn2D::AliHBTTwoPairFctn2D(const Char_t *name, const Char_t *title):
  AliHBTFunction2D(name,title)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -1007,6 +1093,7 @@ AliHBTTwoPairFctn2D::AliHBTTwoPairFctn2D(Int_t nXbins, Double_t maxXval, Double_
                       Int_t nYbins, Double_t maxYval, Double_t minYval):
  AliHBTFunction2D(nXbins, maxXval, minXval, nYbins, maxYval, minYval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -1015,6 +1102,7 @@ AliHBTTwoPairFctn2D::AliHBTTwoPairFctn2D(const Char_t *name, const Char_t *title
                       Int_t nYbins, Double_t maxYval, Double_t minYval):
  AliHBTFunction2D(name,title,nXbins, maxXval, minXval, nYbins, maxYval, minYval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -1022,12 +1110,14 @@ void AliHBTTwoPairFctn2D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHB
 {
 //processes pair of particles coming from a same events (real pair)
   partpair  = CheckPair(partpair);  //check cuts
-  if( partpair ) 
-   { 
-     Double_t x,y;
-     GetValues(trackpair,partpair,x,y);
-     fNumerator->Fill(x,y);
-   }
+  if (partpair == 0x0) return;
+  
+  if (partpair->GetSwapedPair() == 0x0)//it means that Check pair returned swapped pair
+    trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
+    
+  Double_t x,y;
+  GetValues(trackpair,partpair,x,y);
+  fNumerator->Fill(x,y);
 }
 /******************************************************************/
 
@@ -1035,12 +1125,14 @@ void AliHBTTwoPairFctn2D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHB
 {
 //processes pair of particles coming from a different events (mixed pair)
   partpair  = CheckPair(partpair);
-  if( partpair ) 
-   { 
-     Double_t x,y;
-     GetValues(trackpair,partpair,x,y);
-     fDenominator->Fill(x,y);
-   }
+  if (partpair == 0x0) return;
+  
+  if (partpair->GetSwapedPair() == 0x0)//it means that Check pair returned swapped pair
+    trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
+    
+  Double_t x,y;
+  GetValues(trackpair,partpair,x,y);
+  fDenominator->Fill(x,y);
 }
 
 /******************************************************************/
@@ -1068,6 +1160,7 @@ ClassImp(AliHBTTwoPairFctn3D)
 AliHBTTwoPairFctn3D::AliHBTTwoPairFctn3D(const Char_t *name, const Char_t *title):
  AliHBTFunction3D(name,title)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -1076,6 +1169,7 @@ AliHBTTwoPairFctn3D::AliHBTTwoPairFctn3D(Int_t nXbins, Double_t maxXval, Double_
                       Int_t nZbins, Double_t maxZval, Double_t minZval):
  AliHBTFunction3D(nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -1085,6 +1179,7 @@ AliHBTTwoPairFctn3D::AliHBTTwoPairFctn3D(const Char_t *name, const Char_t *title
                       Int_t nZbins, Double_t maxZval, Double_t minZval):
  AliHBTFunction3D(name,title,nXbins, maxXval, minXval, nYbins, maxYval, minYval, nZbins, maxZval, minZval)
 {
+  //constructor
 }
 /******************************************************************/
 
@@ -1092,12 +1187,15 @@ void AliHBTTwoPairFctn3D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHB
 {
   // Fills th numerator using pairs from the same event
   partpair  = CheckPair(partpair);
-  if( partpair ) 
-   { 
-     Double_t x,y,z;
-     GetValues(trackpair,partpair,x,y,z);
-     fNumerator->Fill(x,y,z);
-   }
+  if( partpair == 0x0) return;
+  
+  if (partpair->GetSwapedPair() == 0x0)//it means that CheckPair returned swapped pair
+    trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
+    
+  Double_t x,y,z;
+  GetValues(trackpair,partpair,x,y,z);
+  fNumerator->Fill(x,y,z);
+   
 }
 /******************************************************************/
 
@@ -1105,16 +1203,16 @@ void AliHBTTwoPairFctn3D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHB
 {
   // Fills the denumerator using mixed pairs
   partpair  = CheckPair(partpair);
-  if( partpair ) 
-   { 
-     Double_t x,y,z;
-     GetValues(trackpair,partpair,x,y,z);
-     fDenominator->Fill(x,y,z);
-   }
-
+  if( partpair == 0x0) return;
+  
+  if (partpair->GetSwapedPair() == 0x0)//it means that CheckPair returned swapped pair
+    trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
+    
+  Double_t x,y,z;
+  GetValues(trackpair,partpair,x,y,z);
+  fDenominator->Fill(x,y,z);
 }
 
-
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/