]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Correcting the event mixing correction for 1D balance functions
authormiweber <miweber@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 1 Dec 2012 11:18:38 +0000 (11:18 +0000)
committermiweber <miweber@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 1 Dec 2012 11:18:38 +0000 (11:18 +0000)
PWGCF/EBYE/BalanceFunctions/AliBalance.cxx
PWGCF/EBYE/macros/readBalanceFunction.C

index 064feaa0a9945952af2daacf32eb10c1b9ad7d44..ceb1441d08319aa5664d0f323437b4788124fc58 100644 (file)
@@ -894,7 +894,7 @@ TH1D *AliBalance::GetBalanceFunctionHistogram(Int_t iAnalysisType,Double_t centr
   // withAcceptanceOnly: Data single distributions are normalized to 1 (efficiency not taken into account)
   // else : Data single distributions are normalized to give single particle efficiency of MC
   TFile *fEfficiencyMatrix = NULL;
-  if(correctWithEfficiency && !correctWithMixed){
+  if(correctWithEfficiency || correctWithMixed){
     if(correctWithAcceptanceOnly) fEfficiencyMatrix = TFile::Open("$ALICE_ROOT/PWGCF/EBYE/macros/accOnlyFromConvolutionAllCent.root");
     else  fEfficiencyMatrix = TFile::Open("$ALICE_ROOT/PWGCF/EBYE/macros/effFromConvolutionAllCent.root");
     if(!fEfficiencyMatrix){
@@ -1023,33 +1023,41 @@ TH1D *AliBalance::GetBalanceFunctionHistogram(Int_t iAnalysisType,Double_t centr
 
   // do the correction with the event mixing directly!
   if(correctWithMixed){
+  
+    // take the MC distributions (for average efficiency)
+    TH1F* hEffP = (TH1F*)fEfficiencyMatrix->Get(Form("etaEffP_Cent%.0f-%.0f_MC",centrMin,centrMax));
+    TH1F* hEffN = (TH1F*)fEfficiencyMatrix->Get(Form("etaEffN_Cent%.0f-%.0f_MC",centrMin,centrMax));  
 
-    if(hMixed[0] && hMixed[1] && hMixed[2] && hMixed[3]){
+    TH1F* hEffPP = (TH1F*)fEfficiencyMatrix->Get(Form("phiEffPP_Cent%.0f-%.0f_Data",centrMin,centrMax));
+    TH1F* hEffNN = (TH1F*)fEfficiencyMatrix->Get(Form("phiEffNN_Cent%.0f-%.0f_Data",centrMin,centrMax));
+    TH1F* hEffPN = (TH1F*)fEfficiencyMatrix->Get(Form("phiEffPN_Cent%.0f-%.0f_Data",centrMin,centrMax));
 
-      // scale that EM is 1 at 0 for Deta
-      //                    in the region 0-10degree (one 1/2 sector) for Dphi
-      if(iAnalysisType==6){
-       hMixed[0]->Scale(1./(Double_t)hMixed[0]->Integral(hMixed[0]->FindBin(0),hMixed[0]->FindBin(10))*(Double_t)(hMixed[0]->FindBin(10)-hMixed[0]->FindBin(0)+1));
-       hMixed[2]->Scale(1./(Double_t)hMixed[2]->Integral(hMixed[2]->FindBin(0),hMixed[2]->FindBin(10))*(Double_t)(hMixed[0]->FindBin(10)-hMixed[0]->FindBin(0)+1));
-       hMixed[3]->Scale(1./(Double_t)hMixed[3]->Integral(hMixed[3]->FindBin(0),hMixed[3]->FindBin(10))*(Double_t)(hMixed[0]->FindBin(10)-hMixed[0]->FindBin(0)+1));
-      }
-      else{
-       hMixed[0]->Scale(1./(Double_t)hMixed[0]->GetBinContent(1));
-       hMixed[2]->Scale(1./(Double_t)hMixed[2]->GetBinContent(1));
-       hMixed[3]->Scale(1./(Double_t)hMixed[3]->GetBinContent(1));
-      }
+    if( !hEffP || !hEffN){
+      AliError(Form("Efficiency (eta) histograms not found: etaEffPP_Cent%.0f-%.0f_Data",centrMin,centrMax));
+      return NULL;
+    }
 
+    if(hMixed[0] && hMixed[1] && hMixed[2] && hMixed[3]){
+    
       // scale to average efficiency in the pt region (0.3-1.5) and |eta| < 0.8
       // by multiplying the average single particle efficiencies from HIJING
-      Double_t normPMC = 0.847546;
-      Double_t normNMC = 0.83827;
-      hMixed[0]->Scale(normNMC*normPMC);
-      hMixed[2]->Scale(normNMC*normNMC);
-      hMixed[3]->Scale(normPMC*normPMC);
+      // here we assume that the distributions are 1:
+      // - in the integral for dphi (for averaging over sector structure)
+      // - in the maximum for deta
+      Double_t normPMC = (Double_t)hEffP->Integral()/(Double_t)hEffP->GetNbinsX();
+      Double_t normNMC = (Double_t)hEffN->Integral()/(Double_t)hEffN->GetNbinsX();
+      Double_t normPPMC = (Double_t)hEffPP->Integral()/(Double_t)hEffPP->GetNbinsX();
+      Double_t normNNMC = (Double_t)hEffNN->Integral()/(Double_t)hEffNN->GetNbinsX();
+      Double_t normPNMC = (Double_t)hEffPN->Integral()/(Double_t)hEffPN->GetNbinsX();
+
+      hMixed[0]->Scale(normPNMC);
+      hMixed[1]->Scale(normPNMC);
+      hMixed[2]->Scale(normNNMC);
+      hMixed[3]->Scale(normPPMC);
 
       // divide by event mixing
       hTemp1->Divide(hMixed[0]);
-      hTemp2->Divide(hMixed[0]);
+      hTemp2->Divide(hMixed[1]);
       hTemp3->Divide(hMixed[2]);
       hTemp4->Divide(hMixed[3]);
 
index a88e70b9222661043892d8842973f419966b052b..a320a3bfb1f16fc878416306d46c0e9d8988e486 100644 (file)
@@ -68,12 +68,32 @@ void drawBF(Bool_t bHistos = kFALSE, TString inFile = "AnalysisResults.root", In
       // at the time of production the event mixing had no centrality info (all in most central bin, centarlity is selected before)
       hMixedEta[iCent][0] =  (TH1D*)fMixed[iCent]->Get(Form("hPN_eta_0"));
       hMixedPhi[iCent][0] =  (TH1D*)fMixed[iCent]->Get(Form("hPN_phi_0"));
-      hMixedEta[iCent][1] =  (TH1D*)fMixed[iCent]->Get(Form("hNP_eta_0"));
-      hMixedPhi[iCent][1] =  (TH1D*)fMixed[iCent]->Get(Form("hNP_phi_0"));
+      hMixedEta[iCent][1] =  (TH1D*)((TH1D*)fMixed[iCent]->Get(Form("hPN_eta_0")))->Clone("hNP_eta_0");
+      hMixedPhi[iCent][1] =  (TH1D*)((TH1D*)fMixed[iCent]->Get(Form("hPN_phi_0")))->Clone("hNP_phi_0");
       hMixedEta[iCent][2] =  (TH1D*)fMixed[iCent]->Get(Form("hNN_eta_0"));
       hMixedPhi[iCent][2] =  (TH1D*)fMixed[iCent]->Get(Form("hNN_phi_0"));
       hMixedEta[iCent][3] =  (TH1D*)fMixed[iCent]->Get(Form("hPP_eta_0"));
       hMixedPhi[iCent][3] =  (TH1D*)fMixed[iCent]->Get(Form("hPP_phi_0"));
+
+      // because NP = PN here
+      hMixedEta[iCent][0]->Scale(0.5);
+      hMixedPhi[iCent][0]->Scale(0.5);
+      hMixedEta[iCent][1]->Scale(0.5);
+      hMixedPhi[iCent][1]->Scale(0.5);
+
+      // normalize the distributions to 1:
+      // - in the integral for dphi (for averaging over sector structure)
+      // - in the maximum for deta   
+      hMixedPhi[iCent][0]->Scale(1./(Double_t)hMixedPhi[iCent][0]->Integral(hMixedPhi[iCent][0]->FindBin(0),hMixedPhi[iCent][0]->FindBin(180))*(Double_t)(hMixedPhi[iCent][0]->FindBin(180)-hMixedPhi[iCent][0]->FindBin(0)+1));
+      hMixedPhi[iCent][1]->Scale(1./(Double_t)hMixedPhi[iCent][1]->Integral(hMixedPhi[iCent][1]->FindBin(0),hMixedPhi[iCent][1]->FindBin(180))*(Double_t)(hMixedPhi[iCent][1]->FindBin(180)-hMixedPhi[iCent][1]->FindBin(0)+1));
+      hMixedPhi[iCent][2]->Scale(1./(Double_t)hMixedPhi[iCent][2]->Integral(hMixedPhi[iCent][2]->FindBin(0),hMixedPhi[iCent][2]->FindBin(180))*(Double_t)(hMixedPhi[iCent][2]->FindBin(180)-hMixedPhi[iCent][2]->FindBin(0)+1));
+      hMixedPhi[iCent][3]->Scale(1./(Double_t)hMixedPhi[iCent][3]->Integral(hMixedPhi[iCent][3]->FindBin(0),hMixedPhi[iCent][3]->FindBin(180))*(Double_t)(hMixedPhi[iCent][3]->FindBin(180)-hMixedPhi[iCent][3]->FindBin(0)+1));
+      
+       hMixedEta[iCent][0]->Scale(0.8 * 20. /(Double_t)hMixedEta[iCent][0]->Integral(hMixedEta[iCent][0]->FindBin(0),hMixedEta[iCent][0]->FindBin(1.6)));
+       hMixedEta[iCent][1]->Scale(0.8 * 20. /(Double_t)hMixedEta[iCent][1]->Integral(hMixedEta[iCent][1]->FindBin(0),hMixedEta[iCent][1]->FindBin(1.6)));
+       hMixedEta[iCent][2]->Scale(0.8 * 20. /(Double_t)hMixedEta[iCent][2]->Integral(hMixedEta[iCent][2]->FindBin(0),hMixedEta[iCent][2]->FindBin(1.6)));
+       hMixedEta[iCent][3]->Scale(0.8 * 20. /(Double_t)hMixedEta[iCent][3]->Integral(hMixedEta[iCent][3]->FindBin(0),hMixedEta[iCent][3]->FindBin(1.6)));
+    
       
     }
   }