]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliCentralitySelectionTask.cxx
Fixes in the command to submit merging
[u/mrichter/AliRoot.git] / ANALYSIS / AliCentralitySelectionTask.cxx
index 3289104c4c186ceb923b5a1ab34a5bb0b89dca7e..b219971943583ad8096186a1da8e00f1923886b1 100644 (file)
@@ -19,6 +19,8 @@
 //   author: Alberica Toia
 //*****************************************************
 
+#include "AliCentralitySelectionTask.h"
+
 #include <TTree.h>
 #include <TList.h>
 #include <TH1F.h>
@@ -28,6 +30,9 @@
 #include <TObjString.h>
 #include <TString.h>
 #include <TCanvas.h>
+#include <TROOT.h>
+#include <TDirectory.h>
+#include <TSystem.h>
 #include <iostream>
 
 #include "AliAnalysisManager.h"
 #include "AliESDFMD.h"
 #include "AliESDVZERO.h"
 #include "AliESDCentrality.h"
+#include "AliESDtrackCuts.h"
 #include "AliMultiplicity.h"
 #include "AliAODHandler.h"
 #include "AliAODEvent.h"
+#include "AliESDVertex.h"
 #include "AliAODVertex.h"
 #include "AliAODMCHeader.h"
 #include "AliMCEvent.h"
@@ -57,7 +64,7 @@
 #include "AliPhysicsSelectionTask.h"
 #include "AliPhysicsSelection.h"
 #include "AliBackgroundSelection.h"
-#include "AliCentralitySelectionTask.h"
+#include "AliESDUtils.h"
 
 ClassImp(AliCentralitySelectionTask)
 
@@ -70,11 +77,9 @@ AliAnalysisTaskSE(),
   fIsMCInput(kFALSE),
   fFile(0),
   fFile2(0),
-  fCentfilename(0),
-  fCentfilename2(0),
-  fFileList(new TList),
-  fFileList2(new TList),
   fCurrentRun(-1),
+  fRunNo(-1),
+  fTrackCuts(0),
   fCentV0M(0),
   fCentFMD(0),
   fCentTRK(0),
@@ -92,12 +97,31 @@ AliAnalysisTaskSE(),
   fHtempCL1(0),
   fHtempV0MvsFMD(0),
   fHtempTKLvsV0M(0),
-  fHtempZEMvsZDC(0)
+  fHtempZEMvsZDC(0),
+  fOutputList(0),
+  fHOutCentV0M     (0),
+  fHOutCentFMD     (0),
+  fHOutCentTRK     (0),
+  fHOutCentTKL     (0),
+  fHOutCentCL0     (0),
+  fHOutCentCL1     (0),
+  fHOutCentV0MvsFMD(0),
+  fHOutCentTKLvsV0M(0),
+  fHOutCentZEMvsZDC(0),
+  fHOutMultV0M(0),
+  fHOutMultV0R(0),
+  fHOutMultFMD(0),
+  fHOutMultTRK(0),
+  fHOutMultTKL(0),
+  fHOutMultCL0(0),
+  fHOutMultCL1(0),
+  fHOutMultV0MvsZDC(0),
+  fHOutMultZEMvsZDC(0),
+  fHOutMultV0MvsCL1(0),
+  fHOutMultV0MvsTRK(0),
+  fHOutMultTRKvsCL1(0)
 {   
   // Default constructor
-  fFileList->SetOwner();
-  fFileList2->SetOwner();
-
   AliInfo("Centrality Selection enabled.");
 }   
 
@@ -109,11 +133,9 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fIsMCInput(kFALSE),
   fFile(0),
   fFile2(0),
-  fCentfilename(0),
-  fCentfilename2(0),
-  fFileList(new TList),
-  fFileList2(new TList),
   fCurrentRun(-1),
+  fRunNo(-1),
+  fTrackCuts(0),
   fCentV0M(0),
   fCentFMD(0),
   fCentTRK(0),
@@ -131,13 +153,33 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fHtempCL1(0),
   fHtempV0MvsFMD(0),
   fHtempTKLvsV0M(0),
-  fHtempZEMvsZDC(0)
+  fHtempZEMvsZDC(0),
+  fOutputList(0),
+  fHOutCentV0M     (0),
+  fHOutCentFMD     (0),
+  fHOutCentTRK     (0),
+  fHOutCentTKL     (0),
+  fHOutCentCL0     (0),
+  fHOutCentCL1     (0),
+  fHOutCentV0MvsFMD(0),
+  fHOutCentTKLvsV0M(0),
+  fHOutCentZEMvsZDC(0),
+  fHOutMultV0M(0),
+  fHOutMultV0R(0),
+  fHOutMultFMD(0),
+  fHOutMultTRK(0),
+  fHOutMultTKL(0),
+  fHOutMultCL0(0),
+  fHOutMultCL1(0),
+  fHOutMultV0MvsZDC(0),
+  fHOutMultZEMvsZDC(0),
+  fHOutMultV0MvsCL1(0),
+  fHOutMultV0MvsTRK(0),
+  fHOutMultTRKvsCL1(0)
 {
   // Default constructor
-  fFileList->SetOwner();
-  fFileList2->SetOwner();
-
   AliInfo("Centrality Selection enabled.");
+  DefineOutput(1, TList::Class());
 }
 
 //________________________________________________________________________
@@ -158,11 +200,9 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fIsMCInput(ana.fIsMCInput),
   fFile(ana.fFile),
   fFile2(ana.fFile2),
-  fCentfilename(ana.fCentfilename),
-  fCentfilename2(ana.fCentfilename2),
-  fFileList(ana.fFileList),
-  fFileList2(ana.fFileList2),
   fCurrentRun(ana.fCurrentRun),
+  fRunNo(ana.fRunNo),
+  fTrackCuts(ana.fTrackCuts),
   fCentV0M(ana.fCentV0M),
   fCentFMD(ana.fCentFMD),
   fCentTRK(ana.fCentTRK),
@@ -180,7 +220,29 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fHtempCL1(ana.fHtempCL1),
   fHtempV0MvsFMD(ana.fHtempV0MvsFMD),
   fHtempTKLvsV0M(ana.fHtempTKLvsV0M),
-  fHtempZEMvsZDC(ana.fHtempZEMvsZDC)
+  fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
+  fOutputList(ana.fOutputList),
+  fHOutCentV0M     (ana.fHOutCentV0M     ),
+  fHOutCentFMD     (ana.fHOutCentFMD     ),
+  fHOutCentTRK     (ana.fHOutCentTRK     ),
+  fHOutCentTKL     (ana.fHOutCentTKL     ),
+  fHOutCentCL0     (ana.fHOutCentCL0     ),
+  fHOutCentCL1     (ana.fHOutCentCL1     ),
+  fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD),
+  fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M),
+  fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC),
+  fHOutMultV0M(ana.fHOutMultV0M),
+  fHOutMultV0R(ana.fHOutMultV0R),
+  fHOutMultFMD(ana.fHOutMultFMD),
+  fHOutMultTRK(ana.fHOutMultTRK),
+  fHOutMultTKL(ana.fHOutMultTKL),
+  fHOutMultCL0(ana.fHOutMultCL0),
+  fHOutMultCL1(ana.fHOutMultCL1),
+  fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
+  fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
+  fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
+  fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK),
+  fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1)
 {
   // Copy Constructor  
 }
@@ -188,19 +250,9 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
 //________________________________________________________________________
 AliCentralitySelectionTask::~AliCentralitySelectionTask()
 {
-  // Destructor
-  
-  if (fFileList) {
-    fFileList->Clear();
-    delete fFileList;
-  }
-  fFileList = NULL;
-
-  if (fFileList2) {
-    fFileList2->Clear();
-    delete fFileList2;
-  }
-  fFileList2 = NULL;
+  // Destructor  
+  if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
+  if (fTrackCuts) delete fTrackCuts;
 }  
 
 //________________________________________________________________________
@@ -208,12 +260,59 @@ void AliCentralitySelectionTask::UserCreateOutputObjects()
 {  
   // Create the output containers
   if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
-
-  if (fFileList->GetEntries() < 1) {
-    AliError("No Inputfiles Added");
-  }
-
   AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
+
+  fOutputList = new TList();
+  fOutputList->SetOwner();
+  fHOutCentV0M     = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",101,-0.5,100.5);
+  fHOutCentFMD     = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",101,-0.5,100.5);
+  fHOutCentTRK     = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",101,-0.5,100.5);
+  fHOutCentTKL     = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",101,-0.5,100.5);
+  fHOutCentCL0     = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",101,-0.5,100.5);
+  fHOutCentCL1     = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",101,-0.5,100.5);
+  fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",101,-0.5,100.5);
+  fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",101,-0.5,100.5);
+  fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",101,-0.5,100.5);
+
+  fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000);
+  fHOutMultV0R = new TH1F("fHOutMultV0R","fHOutMultV0R; Multiplicity V0",25000,0,25000);
+  fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
+  fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
+  fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
+  fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
+  fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
+  fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,25000,500,0,6000);
+  fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,6000);
+  fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
+  fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
+  fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
+
+  fOutputList->Add(  fHOutCentV0M     );
+  fOutputList->Add(  fHOutCentFMD     );
+  fOutputList->Add(  fHOutCentTRK     );
+  fOutputList->Add(  fHOutCentTKL     );
+  fOutputList->Add(  fHOutCentCL0     );
+  fOutputList->Add(  fHOutCentCL1     );
+  fOutputList->Add(  fHOutCentV0MvsFMD);
+  fOutputList->Add(  fHOutCentTKLvsV0M);
+  fOutputList->Add(  fHOutCentZEMvsZDC);
+  fOutputList->Add(  fHOutMultV0M); 
+  fOutputList->Add(  fHOutMultV0R); 
+  fOutputList->Add(  fHOutMultFMD); 
+  fOutputList->Add(  fHOutMultTRK); 
+  fOutputList->Add(  fHOutMultTKL); 
+  fOutputList->Add(  fHOutMultCL0); 
+  fOutputList->Add(  fHOutMultCL1); 
+  fOutputList->Add(  fHOutMultV0MvsZDC);
+  fOutputList->Add(  fHOutMultZEMvsZDC);
+  fOutputList->Add(  fHOutMultV0MvsCL1);
+  fOutputList->Add(  fHOutMultV0MvsTRK);
+  fOutputList->Add(  fHOutMultTRKvsCL1);
+
+
+  fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+
+  PostData(1, fOutputList); 
 }
 
 //________________________________________________________________________
@@ -222,10 +321,10 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   // Execute analysis for current event:
   if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
   
-  Float_t  zncEnergy;          //  ZNC Energy
-  Float_t  zpcEnergy;          //  ZPC Energy
-  Float_t  znaEnergy;          //  ZNA Energy
-  Float_t  zpaEnergy;          //  ZPA Energy
+  Float_t  zncEnergy = 0.;          //  ZNC Energy
+  Float_t  zpcEnergy = 0.;          //  ZPC Energy
+  Float_t  znaEnergy = 0.;          //  ZNA Energy
+  Float_t  zpaEnergy = 0.;          //  ZPA Energy
   Float_t  zem1Energy = 0.;         //  ZEM1 Energy
   Float_t  zem2Energy = 0.;         //  ZEM2 Energy
   
@@ -233,21 +332,29 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   Int_t    nTracklets = 0;          //  no. tracklets
   Int_t    nClusters[6];            //  no. clusters on 6 ITS layers
   Int_t    nChips[2];               //  no. chips on 2 SPD layers
+  Float_t  spdCorr =0;              //  corrected spd2 multiplicity
 
   Float_t  multV0A  = 0;            //  multiplicity from V0 reco side A
   Float_t  multV0C  = 0;            //  multiplicity from V0 reco side C
   Float_t  multFMDA = 0;            //  multiplicity from FMD on detector A
   Float_t  multFMDC = 0;            //  multiplicity from FMD on detector C
 
+  Short_t v0Corr = 0;               // corrected V0 multiplicity
+  Short_t v0CorrResc = 0;           // corrected and rescaled V0 multiplicity
+
+  Float_t zvtx =0;                  // z-vertex SPD
   AliESDCentrality *esdCent = 0;
 
   if(fAnalysisInput.CompareTo("ESD")==0){
 
     AliVEvent* event = InputEvent();
     AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
-
-    if (SetupRun(esd))   
-      return;
+  
+    if (fRunNo<=0) {
+      if (SetupRun(esd)<0)
+         AliFatal("Centrality File not available for this run");
+    }
 
     esdCent = esd->GetCentrality();
 
@@ -255,9 +362,18 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     AliESDVZERO* esdV0 = esd->GetVZEROData();
     multV0A=esdV0->GetMTotV0A();
     multV0C=esdV0->GetMTotV0C();
-    
+
+    float v0CorrR;
+    v0Corr = (Short_t)AliESDUtils::GetCorrV0(esd,v0CorrR);
+    v0CorrResc = (Short_t)v0CorrR;
+
+    // ***** Vertex Info
+    const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
+    zvtx        = vtxESD->GetZ(); 
+
     // ***** CB info (tracklets, clusters, chips)
-    nTracks    = event->GetNumberOfTracks();     
+    //nTracks    = event->GetNumberOfTracks();     
+    nTracks    = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
 
     const AliMultiplicity *mult = esd->GetMultiplicity();
 
@@ -270,7 +386,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     for(Int_t ilay=0; ilay<2; ilay++){
       nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
     }
-    
+
+    spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);    
 
     // ***** FMD info
     AliESDFMD *fmd = esd->GetFMDData();
@@ -308,12 +425,12 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     
     // ***** ZDC info
     AliESDZDC *esdZDC = esd->GetESDZDC();
-    zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
-    zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
-    znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
-    zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
-    zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0));
-    zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1));
+    zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
+    zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
+    znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
+    zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
+    zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
+    zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
     
   }   
   else if(fAnalysisInput.CompareTo("AOD")==0){
@@ -324,7 +441,7 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   }
 
   // ***** Centrality Selection
-  if(fHtempV0M)  fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((multV0A+multV0C)));
+  if(fHtempV0M)  fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
   ///  else     printf("  Centrality by V0 not available!!!\n\n");
   if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
   //  else     printf("  Centrality by FMD not available!!!\n\n");
@@ -334,7 +451,7 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   //  else     printf("  Centrality by TKL not available!!!\n\n");
   if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
   //  else     printf("  Centrality by CL0 not available!!!\n\n");
-  if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(nClusters[1]));
+  if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
   ///  else     printf("  Centrality by CL1 not available!!!\n\n");
   
   if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
@@ -353,41 +470,70 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
   esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
   esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
-}
-
-//________________________________________________________________________
-void AliCentralitySelectionTask::ReadCentralityHistos() 
-{
-  fFile = TFile::Open(fCentfilename,"READ");
-  fHtempV0M  = (TH1D*) (fFile->Get("hmultV0_percentile")); 
-  fHtempFMD  = (TH1D*) (fFile->Get("hmultFMD_percentile")); 
-  fHtempTRK  = (TH1D*) (fFile->Get("hNtracks_percentile")); 
-  fHtempTKL  = (TH1D*) (fFile->Get("hNtracklets_percentile")); 
-  fHtempCL0  = (TH1D*) (fFile->Get("hNclusters0_percentile")); 
-  fHtempCL1  = (TH1D*) (fFile->Get("hNclusters1_percentile")); 
-}  
 
-//________________________________________________________________________
-void AliCentralitySelectionTask::ReadCentralityHistos2() 
-{
-  fFile2 = TFile::Open(fCentfilename2);
-  fHtempV0MvsFMD  = (TH1D*) (fFile2->Get("hmultV0vsmultFMD_all_percentile")); 
-  fHtempTKLvsV0M  = (TH1D*) (fFile2->Get("hNtrackletsvsmultV0_all_percentile")); 
-  fHtempZEMvsZDC  = (TH1D*) (fFile2->Get("hEzemvsEzdc_all_percentile"));  
+  fHOutCentV0M->Fill(fCentV0M);
+  fHOutCentFMD->Fill(fCentFMD);
+  fHOutCentTRK->Fill(fCentTRK);
+  fHOutCentTKL->Fill(fCentTKL);
+  fHOutCentCL0->Fill(fCentCL0);
+  fHOutCentCL1->Fill(fCentCL1);
+  fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
+  fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
+  fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
+  fHOutMultV0M->Fill(v0Corr);
+  fHOutMultV0R->Fill(multV0A+multV0C);
+  fHOutMultFMD->Fill((multFMDA+multFMDC));
+  fHOutMultTRK->Fill(nTracks);
+  fHOutMultTKL->Fill(nTracklets);
+  fHOutMultCL0->Fill(nClusters[0]);
+  fHOutMultCL1->Fill(spdCorr);
+  fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
+  fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
+  fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
+  fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
+  fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
+
+  PostData(1, fOutputList); 
 }
 
 //________________________________________________________________________
-void AliCentralitySelectionTask::SetPercentileFile(TString filename) 
+void AliCentralitySelectionTask::ReadCentralityHistos(TString fCentfilename) 
 {
-  fCentfilename = filename;
-  ReadCentralityHistos();
-}
+  //  Read centrality histograms
+  TDirectory *owd = gDirectory;
+  // Check if the file is present
+  TString path = gSystem->ExpandPathName(fCentfilename.Data());
+  if (gSystem->AccessPathName(path)) {
+     AliError(Form("File %s does not exist", path.Data()));
+     return;
+  }
+  fFile  = TFile::Open(fCentfilename);
+  owd->cd();
+  fHtempV0M  = (TH1F*) (fFile->Get("hmultV0_percentile"));
+  fHtempFMD  = (TH1F*) (fFile->Get("hmultFMD_percentile"));
+  fHtempTRK  = (TH1F*) (fFile->Get("hNtracks_percentile"));
+  fHtempTKL  = (TH1F*) (fFile->Get("hNtracklets_percentile"));
+  fHtempCL0  = (TH1F*) (fFile->Get("hNclusters0_percentile"));
+  fHtempCL1  = (TH1F*) (fFile->Get("hNclusters1_percentile"));
+  owd->cd();
+}  
 
 //________________________________________________________________________
-void AliCentralitySelectionTask::SetPercentileFile2(TString filename
+void AliCentralitySelectionTask::ReadCentralityHistos2(TString fCentfilename2
 {
-  fCentfilename2 = filename;
-  ReadCentralityHistos2();
+  //  Read centrality histograms
+  TDirectory *owd = gDirectory;
+  TString path = gSystem->ExpandPathName(fCentfilename2.Data());
+  if (gSystem->AccessPathName(path)) {
+     AliError(Form("File %s does not exist", path.Data()));
+     return;
+  }   
+  fFile2  = TFile::Open(fCentfilename2);
+  owd->cd();
+  fHtempV0MvsFMD =  (TH1F*) (fFile2->Get("hmultV0vsmultFMD_all_percentile"));
+  fHtempTKLvsV0M  = (TH1F*) (fFile2->Get("hNtrackletsvsmultV0_all_percentile"));
+  fHtempZEMvsZDC  = (TH1F*) (fFile2->Get("hEzemvsEzdc_all_percentile"));
+  owd->cd();
 }
 
 //________________________________________________________________________
@@ -415,41 +561,23 @@ Int_t AliCentralitySelectionTask::SetupRun(AliESDEvent* esd)
   
   AliInfo(Form("Setup Centrality Selection for run %d\n",fCurrentRun));
 
-  Int_t runNo = fCurrentRun;
+  fRunNo = fCurrentRun;
 
   // CHANGE HERE FOR RUN RANGES
-  if ( runNo == 137162 ) runNo = 137161;
-  else if ( runNo == 137365 ) runNo = 137366;
+  if ( fRunNo <= 137162 ) fRunNo = 137161;
+  else if ( fRunNo == 137365 ) fRunNo = 137366;
+  else if ( fRunNo >= 137366 ) fRunNo = 137366;
   // CHANGE HERE FOR RUN RANGES
-
-  TString runName(Form("%d", runNo));
-  TString fileName("");
-  Bool_t isRunKnown = kFALSE;
-
-  // Check if run is in fileList
-  // if not, take the last name in the list
-  for ( Int_t idx=0 ; idx < fFileList->GetEntries(); ++idx ) {
-
-    TString str((dynamic_cast<TObjString*>(fFileList->At(idx)))->GetString());
-    if (str.Contains(runName)) {
-      fileName += str;
-      isRunKnown = kTRUE;
-      break;
-    }
-  }
-
-  if (!isRunKnown) {
-    if (fFileList->Last()) {
-      fileName += (dynamic_cast<TObjString*>(fFileList->Last()))->GetString();
-      AliError(Form("Run %d not known to centrality selection!", fCurrentRun));
-    }
-  }
-
-  if (fileName.Contains(".root")) {
-    AliInfo(Form("Centrality Selection for run %d is initialized with %s", fCurrentRun, fileName.Data()));
-    SetPercentileFile(fileName.Data());
-    return 0;
-  }
   
-  return -1;
+  TString fileName(Form("$ALICE_ROOT/ANALYSIS/macros/AliCentralityBy1D_%d.root", fRunNo));
+  TString fileName2(Form("$ALICE_ROOT/ANALYSIS/macros/AliCentralityByFunction_%d.root", fRunNo));
+  
+  AliInfo(Form("Centrality Selection for run %d is initialized with %s", fCurrentRun, fileName.Data()));
+  ReadCentralityHistos(fileName.Data());
+  ReadCentralityHistos2(fileName2.Data());
+  if (!fFile && !fFile2) {
+     AliFatal(Form("Run %d not known to centrality selection!", fCurrentRun));       
+     return -1;
+  }   
+  return 0;
 }