Scale method added to Two Pair 1D Function
authorskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 20 Jun 2002 12:30:14 +0000 (12:30 +0000)
committerskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 20 Jun 2002 12:30:14 +0000 (12:30 +0000)
HBTAN/AliHBTFunction.cxx
HBTAN/AliHBTFunction.h

index 3e05ee4..33d84a9 100644 (file)
@@ -450,8 +450,7 @@ ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
 }
 /******************************************************************/
 
-void AliHBTTwoPairFctn1D::
-ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+void AliHBTTwoPairFctn1D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
 {
   partpair  = CheckPair(partpair);
   trackpair = CheckPair(trackpair);
@@ -462,6 +461,58 @@ ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
    }
 
 }
+/******************************************************************/
+Double_t AliHBTTwoPairFctn1D::Scale()
+{
+  if (gDebug>0) cout<<"Enetered Scale()"<<endl;
+  if(!fNumerator) 
+   {
+     Error("Scale","No numerator");
+     return 0.0;
+   }
+  if(!fDenominator) 
+   {
+     Error("Scale","No denominator");
+     return 0.0;
+   }
+  
+  if(fNBinsToScale < 1) 
+   {
+    return 0.0;
+    Error("Scale","Number of bins for scaling is smaller thnan 1");
+   }
+  Int_t nbins = fNumerator->GetNbinsX();
+  if (fNBinsToScale > nbins) 
+   {
+    Error("Scale","Number of bins for scaling is bigger thnan number of bins in histograms");
+    return 0.0;
+   }
+  if (gDebug>0) cout<<"No errors detected"<<endl;
+
+  Double_t ratio;
+  Double_t sum = 0;
+  Int_t N = 0;
+  
+  Int_t offset = nbins - fNBinsToScale - 1; 
+  Int_t i;
+  for ( i = offset; i< nbins; i++)
+   {
+    if ( fNumerator->GetBinContent(i) > 0.0 )
+     {
+       ratio = fDenominator->GetBinContent(i)/fNumerator->GetBinContent(i);
+       sum += ratio;
+       N++;
+     }
+   }
+  
+  if(gDebug > 0) cout<<"sum="<<sum<<" fNBinsToScale="<<fNBinsToScale<<" N="<<N<<endl;
+  
+  if (N == 0) return 0.0;
+  Double_t ret = sum/((Double_t)N);
+
+  if(gDebug > 0) cout<<"Scale() returning "<<ret<<endl;
+  return ret;
+} 
 
 /******************************************************************/
 /******************************************************************/
index fa9f1f0..62a77c0 100644 (file)
@@ -199,13 +199,18 @@ class AliHBTTwoPairFctn1D: public AliHBTTwoPairFctn
   
   void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
   void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
+  
+  Double_t Scale();  
+  void SetNumberOfBinsToScale(Int_t n = 30){fNBinsToScale = n;} 
  
  protected:
   virtual Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
 
   TH1D* fNumerator;
   TH1D* fDenominator;
-  
+
+  Int_t fNBinsToScale;
+
  public:
   ClassDef(AliHBTTwoPairFctn1D,1)
 };