]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliCentralitySelectionTask.cxx
including new Salvatore's patch
[u/mrichter/AliRoot.git] / ANALYSIS / AliCentralitySelectionTask.cxx
index 9285b9cd231cc588b6054381d49c229311b5c42b..ebf8a7641d1ba719a5d37e6fc0a8f9673184fa36 100644 (file)
@@ -45,6 +45,7 @@
 #include "AliESDInputHandler.h"
 #include "AliESDZDC.h"
 #include "AliESDFMD.h"
+#include "AliESDTZERO.h"
 #include "AliESDVZERO.h"
 #include "AliESDtrackCuts.h"
 #include "AliESDVertex.h"
@@ -80,10 +81,10 @@ AliCentralitySelectionTask::AliCentralitySelectionTask():
 AliAnalysisTaskSE(),
   fAnalysisInput("ESD"),
   fIsMCInput(kFALSE),
-  fPass(0),
   fCurrentRun(-1),
   fUseScaling(0),
   fUseCleaning(0),
+  fFillHistos(0),
   fV0MScaleFactor(0),
   fSPDScaleFactor(0),
   fTPCScaleFactor(0),
@@ -106,8 +107,22 @@ AliAnalysisTaskSE(),
   fZVCut(10),
   fOutliersCut(5),
   fQuality(999),
+  fIsSelected(0),
+  fMSL(0),
+  fMSH(0),
+  fMUL(0),
+  fMLL(0),
+  fEJE(0),
+  fEGA(0),
+  fPHS(0),
   fCVHN(0),
   fCVLN(0),
+  fCVHNbit(0),
+  fCVLNbit(0),
+  fCCENT(0),
+  fCSEMI(0),
+  fCCENTbit(0),
+  fCSEMIbit(0),
   fCentV0M(0),
   fCentFMD(0),
   fCentTRK(0),
@@ -128,8 +143,28 @@ AliAnalysisTaskSE(),
   fHtempZEMvsZDC(0),
   fOutputList(0),
   fHOutCentV0M     (0),
-  fHOutCentV0M_CVHN(0),
-  fHOutCentV0M_CVLN(0),
+  fHOutCentV0MCVHN(0),
+  fHOutCentV0MCVLN(0),
+  fHOutCentV0MCVHNinMB(0),
+  fHOutCentV0MCVLNinMB(0),
+  fHOutCentV0MCCENT(0),
+  fHOutCentV0MCSEMI(0),
+  fHOutCentV0MCCENTinMB(0),
+  fHOutCentV0MCSEMIinMB(0),
+  fHOutCentV0MMSL(0),
+  fHOutCentV0MMSH(0),
+  fHOutCentV0MMUL(0),
+  fHOutCentV0MMLL(0),
+  fHOutCentV0MEJE(0),
+  fHOutCentV0MEGA(0),
+  fHOutCentV0MPHS(0),
+  fHOutCentV0MMSLinMB(0),
+  fHOutCentV0MMSHinMB(0),
+  fHOutCentV0MMULinMB(0),
+  fHOutCentV0MMLLinMB(0),
+  fHOutCentV0MEJEinMB(0),
+  fHOutCentV0MEGAinMB(0),
+  fHOutCentV0MPHSinMB(0),
   fHOutCentFMD     (0),
   fHOutCentTRK     (0),
   fHOutCentTKL     (0),
@@ -173,14 +208,16 @@ AliAnalysisTaskSE(),
   fHOutMultV0MvsTRKqual2(0),
   fHOutMultTRKvsCL1qual2(0),
   fHOutQuality(0),
-  fHOutVertex(0)
+  fHOutVertex(0),
+  fHOutVertexT0(0)
 {   
   // Default constructor
   AliInfo("Centrality Selection enabled.");
 
   fUseScaling=kTRUE;
   fUseCleaning=kTRUE;
-  fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO."
+  fFillHistos=kFALSE;
+  fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
     ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
 }   
 
@@ -189,10 +226,10 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   AliAnalysisTaskSE(name),
   fAnalysisInput("ESD"),
   fIsMCInput(kFALSE),
-  fPass(0),
   fCurrentRun(-1),
   fUseScaling(0),
   fUseCleaning(0),
+  fFillHistos(0),
   fV0MScaleFactor(0),
   fSPDScaleFactor(0),
   fTPCScaleFactor(0),
@@ -215,8 +252,22 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fZVCut(10),
   fOutliersCut(5),
   fQuality(999),
+  fIsSelected(0),
+  fMSL(0),
+  fMSH(0),
+  fMUL(0),
+  fMLL(0),
+  fEJE(0),
+  fEGA(0),
+  fPHS(0),
   fCVHN(0),
   fCVLN(0),
+  fCVHNbit(0),
+  fCVLNbit(0),
+  fCCENT(0),
+  fCSEMI(0),
+  fCCENTbit(0),
+  fCSEMIbit(0),
   fCentV0M(0),
   fCentFMD(0),
   fCentTRK(0),
@@ -237,8 +288,28 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fHtempZEMvsZDC(0),
   fOutputList(0),
   fHOutCentV0M     (0),
-  fHOutCentV0M_CVHN(0),
-  fHOutCentV0M_CVLN(0),
+  fHOutCentV0MCVHN(0),
+  fHOutCentV0MCVLN(0),
+  fHOutCentV0MCVHNinMB(0),
+  fHOutCentV0MCVLNinMB(0),
+  fHOutCentV0MCCENT(0),
+  fHOutCentV0MCSEMI(0),
+  fHOutCentV0MCCENTinMB(0),
+  fHOutCentV0MCSEMIinMB(0),
+  fHOutCentV0MMSL(0),
+  fHOutCentV0MMSH(0),
+  fHOutCentV0MMUL(0),
+  fHOutCentV0MMLL(0),
+  fHOutCentV0MEJE(0),
+  fHOutCentV0MEGA(0),
+  fHOutCentV0MPHS(0),
+  fHOutCentV0MMSLinMB(0),
+  fHOutCentV0MMSHinMB(0),
+  fHOutCentV0MMULinMB(0),
+  fHOutCentV0MMLLinMB(0),
+  fHOutCentV0MEJEinMB(0),
+  fHOutCentV0MEGAinMB(0),
+  fHOutCentV0MPHSinMB(0),
   fHOutCentFMD     (0),
   fHOutCentTRK     (0),
   fHOutCentTKL     (0),
@@ -282,14 +353,16 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fHOutMultV0MvsTRKqual2(0),
   fHOutMultTRKvsCL1qual2(0),
   fHOutQuality(0),
-  fHOutVertex(0)
+  fHOutVertex(0),
+  fHOutVertexT0(0)
 {
   // Default constructor
   AliInfo("Centrality Selection enabled.");
-  DefineOutput(1, TList::Class());
+  //DefineOutput(1, TList::Class());
   fUseScaling=kTRUE;
   fUseCleaning=kTRUE;
-  fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO."
+  fFillHistos=kFALSE;
+  fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
     ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
 }
 
@@ -306,12 +379,12 @@ AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentr
 //________________________________________________________________________
 AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana):
   AliAnalysisTaskSE(ana),
-  fAnalysisInput(ana.fDebug),
+  fAnalysisInput(ana.fAnalysisInput),
   fIsMCInput(ana.fIsMCInput),
-  fPass(ana.fPass),
   fCurrentRun(ana.fCurrentRun),
   fUseScaling(ana.fUseScaling),
   fUseCleaning(ana.fUseCleaning),
+  fFillHistos(ana.fFillHistos),
   fV0MScaleFactor(ana.fV0MScaleFactor),
   fSPDScaleFactor(ana.fSPDScaleFactor),
   fTPCScaleFactor(ana.fTPCScaleFactor),
@@ -334,8 +407,22 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fZVCut(ana.fZVCut),
   fOutliersCut(ana.fOutliersCut),
   fQuality(ana.fQuality),
+  fIsSelected(ana.fIsSelected),
+  fMSL(ana.fMSL),
+  fMSH(ana.fMSH),
+  fMUL(ana.fMUL),
+  fMLL(ana.fMLL),
+  fEJE(ana.fEJE),
+  fEGA(ana.fEGA),
+  fPHS(ana.fPHS),
   fCVHN(ana.fCVHN),
   fCVLN(ana.fCVLN),
+  fCVHNbit(ana.fCVHNbit),
+  fCVLNbit(ana.fCVLNbit),
+  fCCENT(ana.fCCENT),
+  fCSEMI(ana.fCSEMI),
+  fCCENTbit(ana.fCCENTbit),
+  fCSEMIbit(ana.fCSEMIbit),
   fCentV0M(ana.fCentV0M),
   fCentFMD(ana.fCentFMD),
   fCentTRK(ana.fCentTRK),
@@ -356,8 +443,28 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
   fOutputList(ana.fOutputList),
   fHOutCentV0M     (ana.fHOutCentV0M     ),
-  fHOutCentV0M_CVHN(ana.fHOutCentV0M_CVHN),
-  fHOutCentV0M_CVLN(ana.fHOutCentV0M_CVLN),
+  fHOutCentV0MCVHN(ana.fHOutCentV0MCVHN),
+  fHOutCentV0MCVLN(ana.fHOutCentV0MCVLN),
+  fHOutCentV0MCVHNinMB(ana.fHOutCentV0MCVHNinMB),
+  fHOutCentV0MCVLNinMB(ana.fHOutCentV0MCVLNinMB),
+  fHOutCentV0MCCENT(ana.fHOutCentV0MCCENT),
+  fHOutCentV0MCSEMI(ana.fHOutCentV0MCSEMI),
+  fHOutCentV0MCCENTinMB(ana.fHOutCentV0MCCENTinMB),
+  fHOutCentV0MCSEMIinMB(ana.fHOutCentV0MCSEMIinMB),
+  fHOutCentV0MMSL(ana.fHOutCentV0MMSL),
+  fHOutCentV0MMSH(ana.fHOutCentV0MMSH),
+  fHOutCentV0MMUL(ana.fHOutCentV0MMUL),
+  fHOutCentV0MMLL(ana.fHOutCentV0MMLL),
+  fHOutCentV0MEJE(ana.fHOutCentV0MEJE),
+  fHOutCentV0MEGA(ana.fHOutCentV0MEGA),
+  fHOutCentV0MPHS(ana.fHOutCentV0MPHS),
+  fHOutCentV0MMSLinMB(ana.fHOutCentV0MMSLinMB),
+  fHOutCentV0MMSHinMB(ana.fHOutCentV0MMSHinMB),
+  fHOutCentV0MMULinMB(ana.fHOutCentV0MMULinMB),
+  fHOutCentV0MMLLinMB(ana.fHOutCentV0MMLLinMB),
+  fHOutCentV0MEJEinMB(ana.fHOutCentV0MEJEinMB),
+  fHOutCentV0MEGAinMB(ana.fHOutCentV0MEGAinMB),
+  fHOutCentV0MPHSinMB(ana.fHOutCentV0MPHSinMB),
   fHOutCentFMD     (ana.fHOutCentFMD     ),
   fHOutCentTRK     (ana.fHOutCentTRK     ),
   fHOutCentTKL     (ana.fHOutCentTKL     ),
@@ -401,7 +508,8 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2),
   fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2),
   fHOutQuality(ana.fHOutQuality),
-  fHOutVertex(ana.fHOutVertex)
+  fHOutVertex(ana.fHOutVertex),
+  fHOutVertexT0(ana.fHOutVertexT0)
 {
   // Copy Constructor  
 
@@ -422,116 +530,157 @@ void AliCentralitySelectionTask::UserCreateOutputObjects()
   if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
   AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
 
-  fOutputList = new TList();
-  fOutputList->SetOwner();
-  fHOutCentV0M     = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
-  fHOutCentV0M_CVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
-  fHOutCentV0M_CVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
-  fHOutCentFMD     = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
-  fHOutCentTRK     = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
-  fHOutCentTKL     = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
-  fHOutCentCL0     = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
-  fHOutCentCL1     = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
-  fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
-  fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
-  fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
-  fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
-  fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
-  fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
-  fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
-  fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,30000);
-  fHOutMultV0O = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
-  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);
-  fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
-  fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
-  fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
-  fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
-  fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
-  fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
-  fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
-  fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
-  fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
-  fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
-  fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
-  fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
-  fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
-  fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
-
-  fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
-  fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
-  fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
-  fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
-  fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
-  fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
-
-  fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
-  fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
-  fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
-  fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
-  fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
-  fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
-
-  fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
-  fHOutVertex  = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
-
-  fOutputList->Add(  fHOutCentV0M     );
-  fOutputList->Add(  fHOutCentV0M_CVHN);
-  fOutputList->Add(  fHOutCentV0M_CVLN);
-  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(  fHOutCentV0MvsCentCL1);
-  fOutputList->Add(  fHOutCentV0MvsCentTRK);
-  fOutputList->Add(  fHOutCentTRKvsCentCL1);
-  fOutputList->Add(  fHOutCentV0MvsCentZDC);
-  fOutputList->Add(  fHOutMultV0M); 
-  fOutputList->Add(  fHOutMultV0O); 
-  fOutputList->Add(  fHOutMultFMD); 
-  fOutputList->Add(  fHOutMultTRK); 
-  fOutputList->Add(  fHOutMultTKL); 
-  fOutputList->Add(  fHOutMultCL0); 
-  fOutputList->Add(  fHOutMultCL1); 
-  fOutputList->Add(  fHOutMultV0MvsZDN);
-  fOutputList->Add(  fHOutMultZEMvsZDN);
-  fOutputList->Add(  fHOutMultV0MvsZDC);
-  fOutputList->Add(  fHOutMultZEMvsZDC);
-  fOutputList->Add(  fHOutMultZEMvsZDCw);
-  fOutputList->Add(  fHOutMultV0MvsCL1);
-  fOutputList->Add(  fHOutMultV0MvsTRK);
-  fOutputList->Add(  fHOutMultTRKvsCL1);
-  fOutputList->Add(  fHOutMultV0MvsV0O);
-  fOutputList->Add(  fHOutMultV0OvsCL1);
-  fOutputList->Add(  fHOutMultV0OvsTRK);
-  fOutputList->Add(  fHOutCentV0Mqual1 );
-  fOutputList->Add(  fHOutCentTRKqual1 );
-  fOutputList->Add(  fHOutCentCL1qual1 );                   
-  fOutputList->Add(  fHOutMultV0MvsCL1qual1);
-  fOutputList->Add(  fHOutMultV0MvsTRKqual1);
-  fOutputList->Add(  fHOutMultTRKvsCL1qual1);
-  fOutputList->Add(  fHOutCentV0Mqual2 );
-  fOutputList->Add(  fHOutCentTRKqual2 );
-  fOutputList->Add(  fHOutCentCL1qual2 );
-  fOutputList->Add(  fHOutMultV0MvsCL1qual2);
-  fOutputList->Add(  fHOutMultV0MvsTRKqual2);
-  fOutputList->Add(  fHOutMultTRKvsCL1qual2);
-  fOutputList->Add(  fHOutQuality );
-  fOutputList->Add(  fHOutVertex );
-
-
+  if (fFillHistos) {    
+    fOutputList = new TList();
+    fOutputList->SetOwner();
+    fHOutCentV0M     = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
+    fHOutCentV0MCVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
+    fHOutCentV0MCVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
+    fHOutCentV0MCVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
+    fHOutCentV0MCVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
+    fHOutCentV0MCCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
+    fHOutCentV0MCSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
+    fHOutCentV0MCCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
+    fHOutCentV0MCSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
+    fHOutCentV0MMSL= new TH1F("fHOutCentV0M_MSL","fHOutCentV0M_MSL; Centrality V0",505,0,101);
+    fHOutCentV0MMSH= new TH1F("fHOutCentV0M_MSH","fHOutCentV0M_MSH; Centrality V0",505,0,101);
+    fHOutCentV0MMUL= new TH1F("fHOutCentV0M_MUL","fHOutCentV0M_MUL; Centrality V0",505,0,101);
+    fHOutCentV0MMLL= new TH1F("fHOutCentV0M_MLL","fHOutCentV0M_MLL; Centrality V0",505,0,101);
+    fHOutCentV0MEJE= new TH1F("fHOutCentV0M_EJE","fHOutCentV0M_EJE; Centrality V0",505,0,101);
+    fHOutCentV0MEGA= new TH1F("fHOutCentV0M_EGA","fHOutCentV0M_EGA; Centrality V0",505,0,101);
+    fHOutCentV0MPHS= new TH1F("fHOutCentV0M_PHS","fHOutCentV0M_PHS; Centrality V0",505,0,101);
+    fHOutCentV0MMSLinMB= new TH1F("fHOutCentV0M_MSLinMB","fHOutCentV0M_MSLinMB; Centrality V0",505,0,101);
+    fHOutCentV0MMSHinMB= new TH1F("fHOutCentV0M_MSHinMB","fHOutCentV0M_MSHinMB; Centrality V0",505,0,101);
+    fHOutCentV0MMULinMB= new TH1F("fHOutCentV0M_MULinMB","fHOutCentV0M_MULinMB; Centrality V0",505,0,101);
+    fHOutCentV0MMLLinMB= new TH1F("fHOutCentV0M_MLLinMB","fHOutCentV0M_MLLinMB; Centrality V0",505,0,101);
+    fHOutCentV0MEJEinMB= new TH1F("fHOutCentV0M_EJEinMB","fHOutCentV0M_EJEinMB; Centrality V0",505,0,101);
+    fHOutCentV0MEGAinMB= new TH1F("fHOutCentV0M_EGAinMB","fHOutCentV0M_EGAinMB; Centrality V0",505,0,101);
+    fHOutCentV0MPHSinMB= new TH1F("fHOutCentV0M_PHSinMB","fHOutCentV0M_PHSinMB; Centrality V0",505,0,101);
+    fHOutCentFMD     = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
+    fHOutCentTRK     = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
+    fHOutCentTKL     = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
+    fHOutCentCL0     = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
+    fHOutCentCL1     = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
+    fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
+    fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
+    fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
+    fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
+    fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
+    fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
+    fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
+    fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,30000);
+    fHOutMultV0O = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
+    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);
+    fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
+    fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
+    fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
+    fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
+    fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
+    fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
+    fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
+    fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
+    fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
+    fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
+    fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
+    fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
+    fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
+    fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
+    
+    fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
+    fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
+    fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
+    fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
+    fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
+    fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
+    
+    fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
+    fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
+    fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
+    fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
+    fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
+    fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
+    
+    fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
+    fHOutVertex  = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
+    fHOutVertexT0  = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20);
+  
+    fOutputList->Add(  fHOutCentV0M     );
+    fOutputList->Add(  fHOutCentV0MCVHN);
+    fOutputList->Add(  fHOutCentV0MCVLN);
+    fOutputList->Add(  fHOutCentV0MCVHNinMB);
+    fOutputList->Add(  fHOutCentV0MCVLNinMB);
+    fOutputList->Add(  fHOutCentV0MCCENT);
+    fOutputList->Add(  fHOutCentV0MCSEMI);
+    fOutputList->Add(  fHOutCentV0MCCENTinMB);
+    fOutputList->Add(  fHOutCentV0MCSEMIinMB);
+    fOutputList->Add(  fHOutCentV0MMSL    );
+    fOutputList->Add(  fHOutCentV0MMSH    );
+    fOutputList->Add(  fHOutCentV0MMUL    );
+    fOutputList->Add(  fHOutCentV0MMLL    );
+    fOutputList->Add(  fHOutCentV0MEJE    );
+    fOutputList->Add(  fHOutCentV0MEGA    );
+    fOutputList->Add(  fHOutCentV0MPHS   );
+    fOutputList->Add(  fHOutCentV0MMSLinMB);
+    fOutputList->Add(  fHOutCentV0MMSHinMB);
+    fOutputList->Add(  fHOutCentV0MMULinMB);
+    fOutputList->Add(  fHOutCentV0MMLLinMB);
+    fOutputList->Add(  fHOutCentV0MEJEinMB);
+    fOutputList->Add(  fHOutCentV0MEGAinMB);
+    fOutputList->Add(  fHOutCentV0MPHSinMB);
+    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(  fHOutCentV0MvsCentCL1);
+    fOutputList->Add(  fHOutCentV0MvsCentTRK);
+    fOutputList->Add(  fHOutCentTRKvsCentCL1);
+    fOutputList->Add(  fHOutCentV0MvsCentZDC);
+    fOutputList->Add(  fHOutMultV0M); 
+    fOutputList->Add(  fHOutMultV0O); 
+    fOutputList->Add(  fHOutMultFMD); 
+    fOutputList->Add(  fHOutMultTRK); 
+    fOutputList->Add(  fHOutMultTKL); 
+    fOutputList->Add(  fHOutMultCL0); 
+    fOutputList->Add(  fHOutMultCL1); 
+    fOutputList->Add(  fHOutMultV0MvsZDN);
+    fOutputList->Add(  fHOutMultZEMvsZDN);
+    fOutputList->Add(  fHOutMultV0MvsZDC);
+    fOutputList->Add(  fHOutMultZEMvsZDC);
+    fOutputList->Add(  fHOutMultZEMvsZDCw);
+    fOutputList->Add(  fHOutMultV0MvsCL1);
+    fOutputList->Add(  fHOutMultV0MvsTRK);
+    fOutputList->Add(  fHOutMultTRKvsCL1);
+    fOutputList->Add(  fHOutMultV0MvsV0O);
+    fOutputList->Add(  fHOutMultV0OvsCL1);
+    fOutputList->Add(  fHOutMultV0OvsTRK);
+    fOutputList->Add(  fHOutCentV0Mqual1 );
+    fOutputList->Add(  fHOutCentTRKqual1 );
+    fOutputList->Add(  fHOutCentCL1qual1 );                   
+    fOutputList->Add(  fHOutMultV0MvsCL1qual1);
+    fOutputList->Add(  fHOutMultV0MvsTRKqual1);
+    fOutputList->Add(  fHOutMultTRKvsCL1qual1);
+    fOutputList->Add(  fHOutCentV0Mqual2 );
+    fOutputList->Add(  fHOutCentTRKqual2 );
+    fOutputList->Add(  fHOutCentCL1qual2 );
+    fOutputList->Add(  fHOutMultV0MvsCL1qual2);
+    fOutputList->Add(  fHOutMultV0MvsTRKqual2);
+    fOutputList->Add(  fHOutMultTRKvsCL1qual2);
+    fOutputList->Add(  fHOutQuality );
+    fOutputList->Add(  fHOutVertex );
+    fOutputList->Add(  fHOutVertexT0 );
+  
+    PostData(1, fOutputList); 
+  }
+  
   fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
-
-  PostData(1, fOutputList); 
-
-  if (fPass==0) AliFatal("Which pass are you analyzing? You should set it via taskCentrality->SetPass(N)");
 }
 
 //________________________________________________________________________
@@ -566,6 +715,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   Float_t zvtx =0;                  // z-vertex SPD
   Int_t zvtxNcont =0;               // contributors to z-vertex SPD
 
+  Float_t zvtxT0 =0;                // z-vertex T0
+
 
   AliCentrality *esdCent = 0;
 
@@ -589,6 +740,11 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
 
     // ***** V0 info    
     AliESDVZERO* esdV0 = esd->GetVZEROData();
+    if (!esdV0)
+      {
+       AliError("AliESDVZERO not available");
+       return;
+      }
     multV0A=esdV0->GetMTotV0A();
     multV0C=esdV0->GetMTotV0C();
     v0Corr = multV0A+multV0C;
@@ -596,16 +752,63 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     multV0AOnline=esdV0->GetTriggerChargeA(); 
     multV0COnline=esdV0->GetTriggerChargeC(); 
 
+    // ***** T0 info    
+    const AliESDTZERO* esdT0 = esd->GetESDTZERO();
+    if (!esdT0)
+      {
+       AliError("AliESDTZERO not available");
+       return;
+      }
+    Int_t trig=esdT0->GetT0Trig();
+    Bool_t kT0BB = kFALSE;    
+    if(trig&1) kT0BB=kTRUE;
+    zvtxT0=esdT0->GetT0zVertex();
+
 
     // ***** Trigger info    
+    fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
     TString trigStr(esd->GetFiredTriggerClasses());
-    fCVHN=kFALSE;    fCVLN=kFALSE;
-    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVHN"))) 
-     fCVHN=kTRUE;
-    else if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVLN")))
-     fCVLN=kTRUE;
     
+    fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE; 
+    fMSL=kFALSE;  fMSH=kFALSE;  fMUL=kFALSE;   fMLL=kFALSE;
+    fEJE=kFALSE;  fEGA=kFALSE;  fPHS=kFALSE;
+
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVHN")) && (fIsSelected)) 
+      fCVHN=kTRUE;
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVLN")) && (fIsSelected))
+      fCVLN=kTRUE;
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CCENT")) && (fIsSelected)) 
+      fCCENT=kTRUE;
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CSEMI")) && (fIsSelected))
+      fCSEMI=kTRUE;
+    
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSL")) && (fIsSelected))
+      fMSL=kTRUE;
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSH")) && (fIsSelected))
+      fMSH=kTRUE;
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MUL")) && (fIsSelected))
+      fMUL=kTRUE;
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MLL")) && (fIsSelected))
+      fMLL=kTRUE;
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EJE")) && (fIsSelected))
+      fEJE=kTRUE;
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EGA")) && (fIsSelected))
+      fEGA=kTRUE;
+    if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1PHS")) && (fIsSelected))
+      fPHS=kTRUE;
+
+    fCVHNbit=kFALSE;    fCVLNbit=kFALSE;       fCCENTbit=kFALSE;    fCSEMIbit=kFALSE; 
+    if (esdV0->GetTriggerBits() & (1<<8)) 
+      fCVHNbit=kTRUE;
+    if (esdV0->GetTriggerBits() & (1<<6)) 
+      fCVLNbit=kTRUE;
+    
+    if (kT0BB && fCVHNbit)
+      fCCENTbit=kTRUE;
+    if (kT0BB && fCVLNbit)
+      fCSEMIbit=kTRUE;
 
+    
     // ***** Vertex Info
     const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
     zvtx        = vtxESD->GetZ(); 
@@ -751,66 +954,89 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
   }
 
-  if (fCVHN)     
-  fHOutCentV0M_CVHN->Fill(fCentV0M);
-  if (fCVLN)     
-  fHOutCentV0M_CVLN->Fill(fCentV0M);
-
-  Bool_t isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB); 
-  if (isSelected) { // fill the QA histograms only for MB events!
-  fHOutQuality->Fill(fQuality);
-  fHOutVertex->Fill(zvtx);
-
-  if (fQuality==0) {  
-    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);
-    fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
-    fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
-    fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
-    fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
-    fHOutMultV0M->Fill(multV0A+multV0C);
-    fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
-    fHOutMultFMD->Fill(multFMDA+multFMDC);
-    fHOutMultTRK->Fill(nTracks);
-    fHOutMultTKL->Fill(nTracklets);
-    fHOutMultCL0->Fill(nClusters[0]);
-    fHOutMultCL1->Fill(spdCorr);
-    fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
-    fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
-    fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
-    fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
-    fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
-    fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
-    fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
-    fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
-    fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
-    fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
-    fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
-  } else if (fQuality%2 == 0) {
-    fHOutCentV0Mqual1->Fill(fCentV0M);
-    fHOutCentTRKqual1->Fill(fCentTRK);
-    fHOutCentCL1qual1->Fill(fCentCL1);
-    fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
-    fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
-    fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
-  } else {
-    fHOutCentV0Mqual2->Fill(fCentV0M);
-    fHOutCentTRKqual2->Fill(fCentTRK);
-    fHOutCentCL1qual2->Fill(fCentCL1);
-    fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
-    fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
-    fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
-  }
+  // filling QA histograms
+  if (fFillHistos) {    
+    if (fCVHN)   fHOutCentV0MCVHN->Fill(fCentV0M);
+    if (fCVLN)   fHOutCentV0MCVLN->Fill(fCentV0M);
+    if (fCCENT)  fHOutCentV0MCCENT->Fill(fCentV0M);
+    if (fCSEMI)  fHOutCentV0MCSEMI->Fill(fCentV0M);
+    if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
+    if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
+    if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
+    if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
+    if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
+    if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
+    if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
+
+    if (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) { // fill the QA histograms only for MB events!
+      fHOutQuality->Fill(fQuality);
+      fHOutVertex->Fill(zvtx);
+      fHOutVertexT0->Fill(zvtxT0);
+      
+      if (fQuality==0) {  
+       fHOutCentV0M->Fill(fCentV0M);
+       
+       if (fCVHNbit)  fHOutCentV0MCVHNinMB->Fill(fCentV0M);
+       if (fCVLNbit)  fHOutCentV0MCVLNinMB->Fill(fCentV0M);
+       if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
+       if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
+       if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
+       if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
+       if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
+       if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
+       if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
+       if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
+       if (fPHS) fHOutCentV0MPHSinMB->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);
+       fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
+       fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
+       fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
+       fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
+       fHOutMultV0M->Fill(multV0A+multV0C);
+       fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
+       fHOutMultFMD->Fill(multFMDA+multFMDC);
+       fHOutMultTRK->Fill(nTracks);
+       fHOutMultTKL->Fill(nTracklets);
+       fHOutMultCL0->Fill(nClusters[0]);
+       fHOutMultCL1->Fill(spdCorr);
+       fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
+       fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
+       fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
+       fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
+       fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
+       fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
+       fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
+       fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
+       fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
+       fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
+       fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
+      } else if (fQuality%2 == 0) {
+       fHOutCentV0Mqual1->Fill(fCentV0M);
+       fHOutCentTRKqual1->Fill(fCentTRK);
+       fHOutCentCL1qual1->Fill(fCentCL1);
+       fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
+       fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
+       fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
+      } else {
+       fHOutCentV0Mqual2->Fill(fCentV0M);
+       fHOutCentTRKqual2->Fill(fCentTRK);
+       fHOutCentCL1qual2->Fill(fCentCL1);
+       fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
+       fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
+       fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
+      }
+    }
+    PostData(1, fOutputList); 
   }
-
-  PostData(1, fOutputList); 
 }
 //________________________________________________________________________
 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
@@ -818,7 +1044,7 @@ void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
   // Terminate analysis
 }
 //________________________________________________________________________
-Int_t AliCentralitySelectionTask::SetupRun(AliESDEvent* const esd)
+Int_t AliCentralitySelectionTask::SetupRun(const AliESDEvent* const esd)
 {
   // Setup files for run
 
@@ -868,7 +1094,7 @@ Int_t AliCentralitySelectionTask::SetupRun(AliESDEvent* const esd)
   fV0MScaleFactor    = centOADB->V0MScaleFactor();
   fSPDScaleFactor    = centOADB->SPDScaleFactor();
   fTPCScaleFactor    = centOADB->TPCScaleFactor();
-  fV0MScaleFactorMC  = centOADB->V0MScaleFactor();
+  fV0MScaleFactorMC  = centOADB->V0MScaleFactorMC();
 
   // outliers parameters
   fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();