Track selection bit corrected; vertex z-bin bug fixed
authorprsnko <Dmitri.Peressounko@cern.ch>
Tue, 7 Oct 2014 13:12:36 +0000 (17:12 +0400)
committerprsnko <Dmitri.Peressounko@cern.ch>
Tue, 7 Oct 2014 13:29:59 +0000 (17:29 +0400)
PWGGA/PHOSTasks/PHOS_Correlation/AddTaskPi0Correlations.C
PWGGA/PHOSTasks/PHOS_Correlation/AliPHOSCorrelations.cxx
PWGGA/PHOSTasks/PHOS_Correlation/AliPHOSCorrelations.h

index 9610939..cfb706e 100644 (file)
@@ -20,68 +20,65 @@ AliPHOSCorrelations* AddTaskPi0Correlations (       const char* name = "Pi0Corr",
                return NULL;
        }
        
-               
-       stringstream ss;
-       ss << downCentLimit;
-       string strDownCentLimit = ss.str();
-       char text[255];
-       sprintf(text,"%2i",upCentLimit);
-       string strUpCentLimit = text;
-       TString centralityBorder = TString ("CB") + strDownCentLimit.c_str() + TString ("t") + strUpCentLimit.c_str() + TString ("Cnt");
-       TString sigmaBorder = Form("%2iSigma", int(sigmaWidth*10.));
-       if (sigmaWidth == 0) sigmaBorder = "00Sigma";
-       TString sName = TString (name) + sigmaBorder + centralityBorder ;
-
+       
+       TString className = name;
+       TString sigmaName = Form( "%2iSigma", int(sigmaWidth*10.) ) ;
+       if( sigmaWidth==0 ) sigmaName = "00Sigma";
+       TString sName = Form("%s%sCB%it%iCnt", className.Data(), sigmaName.Data(), downCentLimit, upCentLimit);
+       //TString sName = "LOL";
 
        AliPHOSCorrelations* task = new AliPHOSCorrelations( Form("%sTask", sName.Data()) );
 
-       if( TString(options).Contains("10h") )  {
+       if( TString(options).Contains("10h") )  
+       {
                task->SetPeriod( AliPHOSCorrelations::kLHC10h );
                task->SetCentralityEstimator("V0M");
        }
-       if( TString(options).Contains("11h") )  {
+       
+       if( TString(options).Contains("11h") )  
+       {
                task->SetPeriod( AliPHOSCorrelations::kLHC11h );
                task->SetCentralityEstimator("V0M");
                if( downCentLimit == 0 && upCentLimit == 10 ) 
                {
-                       Double_t meanParametrs[2]  = { -4.03237e-05, 0.138352 };
-                       Double_t sigmaParametrs[4] = { 0.00722915, 1.24329e-08, 0.00553326, 0.00128347 };
+                       Double_t meanParametrs[2]  = {-0.000129767, 0.138874 };
+                       Double_t sigmaParametrs[4] = {5.73226e-06, -0.00879368, 0.00462739 };
                        task->SetMassMeanParametrs(meanParametrs);
                        task->SetMassSigmaParametrs(sigmaParametrs);
                }
 
                if( downCentLimit == 20 && upCentLimit == 50 ) 
                {
-                       Double_t meanParametrs[2]  = { 1.00796e-05, 0.136096 };
-                       Double_t sigmaParametrs[4] = { 0.00100059, 1.10485, 0.00570446, 0.00100001 };
+                       Double_t meanParametrs[2]  = {-8.35555e-05, 0.136538 };
+                       Double_t sigmaParametrs[4] = {-7.61949e-06, 1.20701e-06, 0.00474992 };
                        task->SetMassMeanParametrs(meanParametrs);
                        task->SetMassSigmaParametrs(sigmaParametrs);
                }
-
        }
-       if( TString(options).Contains("13") )   {
+       
+       if( TString(options).Contains("13") )   
+       {
                task->SetPeriod( AliPHOSCorrelations::kLHC13 );
                task->SetCentralityEstimator("V0A");
                if( downCentLimit == 0 && upCentLimit == 10 ) 
                {
-                       Double_t meanParametrs[2]  = { -1.15288e-05, 0.134496 };
-                       Double_t sigmaParametrs[4] = {0.00541561, 1.55431e-15, 0.00661674, 0.00899229 };
+                       Double_t meanParametrs[2]  = {-4.64539e-05, 0.134773 };
+                       Double_t sigmaParametrs[3] = {0.00383029, 0.0041709, 0.00468736 };
                        task->SetMassMeanParametrs(meanParametrs);
                        task->SetMassSigmaParametrs(sigmaParametrs);
                }
 
                if( downCentLimit == 20 && upCentLimit == 50 ) 
                {
-                       Double_t meanParametrs[2]  = { -8.28487e-06, 0.134528 };
-                       Double_t sigmaParametrs[4] = { 0.0070921, 2.05058e-12, 0.00660061, 0.00750263 };
+                       Double_t meanParametrs[2]  = {-4.90799e-06, 0.134566 };
+                       Double_t sigmaParametrs[4] = {0.00293721, 0.00622308, 0.00468625 };
                        task->SetMassMeanParametrs(meanParametrs);
                        task->SetMassSigmaParametrs(sigmaParametrs);
                }
        }
 
 
-       // Binning 
-       // TODO: Make other binning for 0-10% and 20-50%
+       // Mixed binning 
        //Central:
        if( downCentLimit == 0 && upCentLimit == 10 ) 
        {
@@ -103,11 +100,22 @@ AliPHOSCorrelations* AddTaskPi0Correlations (     const char* name = "Pi0Corr",
                task->SetCentralityBinning(tbin, tNMixed);
        }
 
-       task->EnableTOFCut(false, 100.e-9);
+       // Events
        task->SelectCollisionCandidates(AliVEvent::kAny);
-       task->SetCentralityBorders(downCentLimit , upCentLimit) ;
+       task->SetCentralityBorders((Double_t)downCentLimit , (Double_t)upCentLimit) ;
+       // Clasters
+       task->EnableTOFCut(false, 100.e-9);
+       task->SwitchOnPionEfficiency();
+       task->SwitchOnMassParametrisation();
        task->SetSigmaWidth(sigmaWidth);
-       task->SetUseEfficiency(true);
+       // Tracks
+       task->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
+    task->SetTrackStatus(AliVTrack::kITSrefit);
+    task->SetTPCSharedClusterFraction(0.4);
+    task->SwitchOnAODTrackSharedClusterSelection();
+    task->SwitchOffTrackHitSPDSelection();
+    task->SetTrackFilterMask(786);
+
 
        mgr->AddTask(task);
        mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer() );
index ee4f602..0e7a410 100644 (file)
@@ -48,7 +48,6 @@
 #include "AliCDBManager.h"
 #include "AliPHOSCalibData.h"
 #include "AliCentrality.h"
-#include "AliAnalysisTaskSE.h"
 #include "AliEventplane.h"
 #include "AliOADBContainer.h"
 #include "AliAODEvent.h"
@@ -82,9 +81,10 @@ AliPHOSCorrelations::AliPHOSCorrelations()
        fPHOSEvent(false),
     fMBEvent(false),
     fNVtxZBins(10),
+    fVtxEdges(10),
     fCentEdges(10),
     fCentNMixed(),
-    fNEMRPBins(9),
+    fNEMRPBins(6),
     fAssocBins(),
        fVertexVector(),
     fVtxBin(0),
@@ -97,26 +97,26 @@ AliPHOSCorrelations::AliPHOSCorrelations()
     fMaxAbsVertexZ(10.),
     fCentralityLowLimit(0.),
     fCentralityHightLimit(90),
-    fESDtrackCuts(0x0),
-    fCheckHibridGlobal(kOnlyHibridTracks),
     fMinClusterEnergy(0.3),
     fMinBCDistance(0),
     fMinNCells(3),
     fMinM02(0.2),
     fTOFCutEnabled(1),
     fTOFCut(100.e-9),
-    fMassInvMean(0.135),
-    fMassInvSigma(0.05),
-    fSigmaWidth(0.),
-    fUseEfficiency(true)
+    fUseMassWindowParametrisation(true),
+    fMassInvMeanMin(0.13),
+    fMassInvMeanMax(0.145),
+    fNSigmaWidth(0.),
+    fUseEfficiency(true),
+    fESDtrackCuts(0x0),
+    fSelectHybridTracks(0),
+    fTrackStatus(0),      
+    fTrackFilterMask(786),
+    fSelectSPDHitTracks(0),
+    fSelectFractionTPCSharedClusters(kTRUE),
+    fCutTPCSharedClustersFraction(0.4)
 {
        //Deafult constructor, no memory allocations here
-       fMassMean[0] = 1.00796e-05 ;
-       fMassMean[1] = 0.136096    ;
-       fMassSigma[0] = 0.00100059 ;
-       fMassSigma[1] = 1.10485 ;
-       fMassSigma[2] = 0.00570446 ;
-       fMassSigma[3] = 0.00100001 ;
 }
 
 //_______________________________________________________________________________
@@ -138,9 +138,10 @@ AliPHOSCorrelations::AliPHOSCorrelations(const char *name)
        fPHOSEvent(false),
     fMBEvent(false),
     fNVtxZBins(10),
+    fVtxEdges(10),
     fCentEdges(10),
     fCentNMixed(),
-    fNEMRPBins(9),
+    fNEMRPBins(6),
     fAssocBins(),
        fVertexVector(),
     fVtxBin(0),
@@ -153,18 +154,24 @@ AliPHOSCorrelations::AliPHOSCorrelations(const char *name)
     fMaxAbsVertexZ(10.),
     fCentralityLowLimit(0.),
     fCentralityHightLimit(90),
-    fESDtrackCuts(0x0),
-    fCheckHibridGlobal(kOnlyHibridTracks),
     fMinClusterEnergy(0.3),
     fMinBCDistance(0),
     fMinNCells(3),
     fMinM02(0.2),
     fTOFCutEnabled(1),
     fTOFCut(100.e-9),
-    fMassInvMean(0.135),
-    fMassInvSigma(0.05),
-    fSigmaWidth(0.),
-    fUseEfficiency(true)
+    fUseMassWindowParametrisation(true),
+    fMassInvMeanMin(0.13),
+    fMassInvMeanMax(0.145),
+    fNSigmaWidth(0.),
+    fUseEfficiency(true),
+    fESDtrackCuts(0x0),
+    fSelectHybridTracks(0),
+    fTrackStatus(0),      
+    fTrackFilterMask(786),
+    fSelectSPDHitTracks(0),
+    fSelectFractionTPCSharedClusters(kTRUE),
+    fCutTPCSharedClustersFraction(0.4)
 {
     // Constructor
     // Output slots #0 write into a TH1 container
@@ -172,10 +179,9 @@ AliPHOSCorrelations::AliPHOSCorrelations(const char *name)
 
     fMassMean[0] = 1.00796e-05 ;
        fMassMean[1] = 0.136096    ;
-       fMassSigma[0] = 0.00100059 ;
-       fMassSigma[1] = 1.10485 ;
-       fMassSigma[2] = 0.00570446 ;
-       fMassSigma[3] = 0.00100001 ;
+       fMassSigma[0] = 0.00383029 ;
+       fMassSigma[1] = 0.0041709 ;
+       fMassSigma[2] = 0.00468736 ;
 
     const Int_t nPtAssoc = 10 ;
     Double_t ptAssocBins[nPtAssoc] = {0.,0.5,1.0,1.5,2.0,3.,5.,7.,10.,16} ;
@@ -187,6 +193,7 @@ AliPHOSCorrelations::AliPHOSCorrelations(const char *name)
     Int_t nMixed[nbins] = {4,4,6,10,20,30,50,100,100};
     TArrayI centNMixed(nbins, nMixed);
     SetCentralityBinning(centEdges, centNMixed);
+    SetVertexBinning();
 
     fVertex[0] = 0; 
     fVertex[1] = 0; 
@@ -216,9 +223,10 @@ AliPHOSCorrelations::AliPHOSCorrelations(const char *name, Period period)
        fPHOSEvent(false),
     fMBEvent(false),
     fNVtxZBins(10),
+    fVtxEdges(10),
     fCentEdges(10),
     fCentNMixed(),
-    fNEMRPBins(9),
+    fNEMRPBins(6),
     fAssocBins(),
        fVertexVector(),
     fVtxBin(0),
@@ -231,18 +239,24 @@ AliPHOSCorrelations::AliPHOSCorrelations(const char *name, Period period)
     fMaxAbsVertexZ(10.),
     fCentralityLowLimit(0.),
     fCentralityHightLimit(90),
-    fESDtrackCuts(0x0),
-    fCheckHibridGlobal(kOnlyHibridTracks),
     fMinClusterEnergy(0.3),
     fMinBCDistance(0),
     fMinNCells(3),
     fMinM02(0.2),
     fTOFCutEnabled(1),
     fTOFCut(100.e-9),
-    fMassInvMean(0.135),
-    fMassInvSigma(0.05),
-    fSigmaWidth(0.),
-    fUseEfficiency(true)
+    fUseMassWindowParametrisation(true),
+    fMassInvMeanMin(0.13),
+    fMassInvMeanMax(0.145),
+    fNSigmaWidth(0.),
+    fUseEfficiency(true),
+    fESDtrackCuts(0x0),
+    fSelectHybridTracks(0),
+    fTrackStatus(0),      
+    fTrackFilterMask(786),
+    fSelectSPDHitTracks(0),
+    fSelectFractionTPCSharedClusters(kTRUE),
+    fCutTPCSharedClustersFraction(0.4)
 {
        // Constructor
        // Output slots #0 write into a TH1 container
@@ -250,10 +264,9 @@ AliPHOSCorrelations::AliPHOSCorrelations(const char *name, Period period)
 
        fMassMean[0] = 1.00796e-05 ;
        fMassMean[1] = 0.136096    ;
-       fMassSigma[0] = 0.00100059 ;
-       fMassSigma[1] = 1.10485 ;
-       fMassSigma[2] = 0.00570446 ;
-       fMassSigma[3] = 0.00100001 ;
+       fMassSigma[0] = 0.00383029 ;
+       fMassSigma[1] = 0.0041709 ;
+       fMassSigma[2] = 0.00468736 ;
 
        const Int_t nPtAssoc=10 ;
        Double_t ptAssocBins[nPtAssoc]={0.,0.5,1.0,1.5,2.0,3.,5.,7.,10.,16} ;
@@ -266,6 +279,7 @@ AliPHOSCorrelations::AliPHOSCorrelations(const char *name, Period period)
        //Int_t nMixed[nbins] = {100,100,100,100,100,100,100,100,100};
        TArrayI centNMixed(nbins, nMixed);
        SetCentralityBinning(centEdges, centNMixed);
+       SetVertexBinning();
 
        fVertex[0] = 0; 
        fVertex[1] = 0; 
@@ -317,10 +331,10 @@ void AliPHOSCorrelations::UserCreateOutputObjects()
 {
        // Create histograms
        // Called once
-       const Int_t     nRuns   =200 ;
-       const Int_t     ptMult  = 300;
-       const Double_t  ptMin   = 0.;
-       const Double_t  ptMax   = 30.;
+       const Int_t     nRuns   = 200 ;
+       const Int_t     ptMult  = 300 ;
+       const Double_t  ptMin   = 0.  ;
+       const Double_t  ptMax   = 30. ;
 
        // Create histograms
        if(fOutputContainer != NULL) { delete fOutputContainer; }
@@ -328,25 +342,38 @@ void AliPHOSCorrelations::UserCreateOutputObjects()
        fOutputContainer->SetOwner(kTRUE);
        
     // Event selection
-    fOutputContainer->Add(new TH1F( "hTriggerPassedEvents","Event selection passed Cuts",      20, 0., 20.) );
+    fOutputContainer->Add(new TH1F( "hTriggerPassedEvents", "Event selection passed Cuts",             60, 0., 60.)) ;
     // Analysis event's progress
-    fOutputContainer->Add(new TH1F( "hTotSelEvents","Event selection",                                                 15, 0., 15)) ;
-       fOutputContainer->Add(new TH2F( "hSelEvents","Event selection", kTotalSelected+1, 0., double(kTotalSelected+1), nRuns,0., float(nRuns) )) ;
+    fOutputContainer->Add(new TH1F( "hTotSelEvents", "Event selection",                                                15, 0., 15 )) ;
+       fOutputContainer->Add(new TH2F( "hSelEvents", "Event selection", kTotalSelected+1, 0., double(kTotalSelected+1), nRuns,0., float(nRuns) )) ;
     // Centrality, Reaction plane selection
-    fOutputContainer->Add(new TH2F( "hCentrality","Event centrality of all events",                            100, 0., 100., nRuns,0., float(nRuns)   )) ;
-    fOutputContainer->Add(new TH2F( "hCentralityTriggerEvent","Event centrality trigger events",       100, 0., 100., nRuns,0., float(nRuns)   )) ;
-    fOutputContainer->Add(new TH2F( "hCentralityMBEvent","Event centrality MB events",                                 100, 0., 100., nRuns,0., float(nRuns)   )) ;
-       fOutputContainer->Add(new TH2F( "phiRPflat","RP distribution with TPC flat",                                    100, 0., 2.*TMath::Pi(), 20, 0., 100.   )) ;
+    fOutputContainer->Add(new TH2F( "hCentrality", "Event centrality of all events",                           100, 0., 100., nRuns,0., float(nRuns)   )) ;
+    fOutputContainer->Add(new TH2F( "hCentralityTriggerEvent", "Event centrality trigger events",      100, 0., 100., nRuns,0., float(nRuns)   )) ;
+    fOutputContainer->Add(new TH2F( "hCentralityMBEvent", "Event centrality MB events",                        100, 0., 100., nRuns,0., float(nRuns)   )) ;
+       fOutputContainer->Add(new TH2F( "phiRPflat", "RP distribution with TPC flat",                                   100, 0., 2.*TMath::Pi(), 20, 0., 100.   )) ;
+
+       fOutputContainer->Add(new TH1F( "hCentralityBining", "Event centrality bining of all events",            GetNumberOfCentralityBins(), 0., GetNumberOfCentralityBins() )) ;
+       fOutputContainer->Add(new TH1F( "hCentralityBiningTrigger", "Event centrality bining of trigger events", GetNumberOfCentralityBins(), 0., GetNumberOfCentralityBins() )) ;
+       fOutputContainer->Add(new TH1F( "hCentralityBiningMB", "Event centrality bining of MB events",           GetNumberOfCentralityBins(), 0., GetNumberOfCentralityBins() )) ;
+
+       fOutputContainer->Add(new TH1F( "phiRPflatBining", "Event RP bining of all events",                             GetNumberOfRPBins(), 0., GetNumberOfRPBins() )) ;
+       fOutputContainer->Add(new TH1F( "phiRPflatBiningTrigger", "Event RP bining of trigger events",                  GetNumberOfRPBins(), 0., GetNumberOfRPBins() )) ;
+       fOutputContainer->Add(new TH1F( "phiRPflatBiningMB", "Event RP bining of MB events",                            GetNumberOfRPBins(), 0., GetNumberOfRPBins() )) ;
+
+       fOutputContainer->Add(new TH1F( "hVertexZBining", "Event vertex bining of all events",                          GetNumberOfVertexBins(), 0., GetNumberOfVertexBins() )) ;
+       fOutputContainer->Add(new TH1F( "hVertexZBiningTrigger", "Event vertex bining of trigger events",               GetNumberOfVertexBins(), 0., GetNumberOfVertexBins() )) ;
+       fOutputContainer->Add(new TH1F( "hVertexZBiningMB", "Event vertex bining of MB events",                         GetNumberOfVertexBins(), 0., GetNumberOfVertexBins() )) ;
+
     // Mass selection
-       fOutputContainer->Add(new TH2F( "massWindow","mean & sigma",                                                                    100,0.095,0.185,500,0.,0.05));
-    fOutputContainer->Add(new TH1F( "massWindowPass","Mass selection",                                                                 10, 0., 10.)) ;
+       fOutputContainer->Add(new TH2F( "massWindow", "mean & sigma",                                                           100., 0.095, 0.185, 500, 0., 0.05 )) ;
+    fOutputContainer->Add(new TH1F( "massWindowPass", "Mass selection",                                                  10,    0.,    10.               )) ;
     // Cluster multiplisity
-       fOutputContainer->Add(new TH2F( "hCluEvsClu","ClusterMult vs E",                                                                200,0.,10.,100,0.,100.)) ;
+       fOutputContainer->Add(new TH2F( "hCluEvsClu", "ClusterMult vs E",                                            200,    0.,   10., 100, 0., 100. )) ;
        
 
        // Set hists, with track's and cluster's angle distributions.
        SetHistPtNumTrigger(ptMult, ptMin, ptMax);
-       SetHistEtaPhi();
+       SetHistEtaPhi(ptMult, ptMin, ptMax);
        SetHistPHOSClusterMap();
        SetHistMass       (ptMult, ptMin, ptMax);
        SetHistPtAssoc(ptMult, ptMin, ptMax);
@@ -363,7 +390,7 @@ void AliPHOSCorrelations::UserCreateOutputObjects()
 }
 
 //_______________________________________________________________________________
-void AliPHOSCorrelations::SetHistPtNumTrigger(Int_t  ptMult, Double_t ptMin, Double_t ptMax)
+void AliPHOSCorrelations::SetHistPtNumTrigger(const Int_t& ptMult, const Double_t& ptMin, const Double_t& ptMax) const
 {
        TString spid[4]={"all","cpv","disp","both"} ;
        for(Int_t ipid=0; ipid<4; ipid++)       
@@ -389,7 +416,7 @@ void AliPHOSCorrelations::SetHistPtNumTrigger(Int_t  ptMult, Double_t ptMin, Dou
 }
 
 //_______________________________________________________________________________
-void AliPHOSCorrelations::SetHistEtaPhi() 
+void AliPHOSCorrelations::SetHistEtaPhi(const Int_t& ptMult, const Double_t& ptMin, const Double_t& ptMax) const
 {
        // Set hists, with track's and cluster's angle distributions.
 
@@ -412,16 +439,18 @@ void AliPHOSCorrelations::SetHistEtaPhi()
        h->GetYaxis()->SetTitle("#eta");
        
        //===
-       fOutputContainer->Add(new TH2F( "track_phieta","TPC track's  #phi & #eta distribution", 
+       fOutputContainer->Add(new TH3F( "track_phieta","TPC track's  #phi & #eta distribution", 
                                                                        200, double(-pi-0.3), double(pi+0.3), 
-                                                                       200, double(-0.9), double(0.9) ) );
-       h = static_cast<TH2F*>(fOutputContainer->FindObject("track_phieta")) ;
-    h->GetXaxis()->SetTitle("#phi [rad]");
-       h->GetYaxis()->SetTitle("#eta");
+                                                                       200, double(-0.9), double(0.9), 
+                                                                       ptMult, ptMin, ptMax ) );
+       TH3F* h3 = static_cast<TH3F*>(fOutputContainer->FindObject("track_phieta")) ;
+    h3->GetXaxis()->SetTitle("#phi [rad]");
+       h3->GetYaxis()->SetTitle("#eta");
+       h3->GetZaxis()->SetTitle("Pt [GeV/c]");
 } 
 
 //_______________________________________________________________________________
-void AliPHOSCorrelations::SetHistMass(Int_t  ptMult, Double_t ptMin, Double_t ptMax) 
+void AliPHOSCorrelations::SetHistMass(const Int_t& ptMult, const Double_t& ptMin, const Double_t& ptMax) const
 {
        // Set mass histograms.
 
@@ -479,7 +508,7 @@ void AliPHOSCorrelations::SetHistMass(Int_t  ptMult, Double_t ptMin, Double_t pt
 }
 
 //_______________________________________________________________________________
-void AliPHOSCorrelations::SetHistPtAssoc(Int_t  ptMult, Double_t ptMin, Double_t ptMax)
+void AliPHOSCorrelations::SetHistPtAssoc(const Int_t& ptMult, const Double_t& ptMin, const Double_t& ptMax) const
 {
        Double_t pi = TMath::Pi();
        
@@ -639,11 +668,11 @@ void AliPHOSCorrelations::UserExec(Option_t *)
         LogSelection(kHasTPCTracks, fInternalRunNumber);
        LogSelection(kTotalSelected, fInternalRunNumber);
 
-    // Step 9: Fill TPC's track mask
+    // Step 9: Fill TPC's track mask and control bining hists.
     FillTrackEtaPhi();
+    FillEventBiningProperties();
     LogProgress(7);
 
-
     // Step 10: Extract one most energetic pi0 candidate in this event.   
     SelectTriggerPi0ME();
 
@@ -664,14 +693,15 @@ void AliPHOSCorrelations::UserExec(Option_t *)
     if (fMBEvent)
     {
         ConsiderPi0sMix();      // Make background for extracting pi0 mass.
-        ConsiderTracksMix();  // Compare only one most energetic pi0 candidate with all tracks from previous MB events.
+        ConsiderTracksMix();    // Compare only one most energetic pi0 candidate with all tracks from previous MB events.
 
+        // Update pull using MB events only!
         UpdatePhotonLists();    // Updating pull of photons.
         UpdateTrackLists();     // Updating pull of tracks.
         LogProgress(10);
     }
 
-    LogProgress(14);
+    LogProgress(11);
        // Post output data.
        PostData(1, fOutputContainer);
 }
@@ -688,519 +718,525 @@ void AliPHOSCorrelations::SetESDTrackCuts()
 }
 
 //_______________________________________________________________________________
-Int_t AliPHOSCorrelations::ConvertToInternalRunNumber(Int_t run)
+Int_t AliPHOSCorrelations::ConvertToInternalRunNumber(const Int_t& run) const
 {
        // Manual setup using data from logbook.
-       if(fPeriod== kLHC11h){
-                               switch(run)
-                               {
-                                       case  170593 : return 179 ;
-                                       case  170572 : return 178 ;
-                                       case  170556 : return 177 ;
-                                       case  170552 : return 176 ;
-                                       case  170546 : return 175 ;
-                                       case  170390 : return 174 ;
-                                       case  170389 : return 173 ;
-                                       case  170388 : return 172 ;
-                                       case  170387 : return 171 ;
-                                       case  170315 : return 170 ;
-                                       case  170313 : return 169 ;
-                                       case  170312 : return 168 ;
-                                       case  170311 : return 167 ;
-                                       case  170309 : return 166 ;
-                                       case  170308 : return 165 ;
-                                       case  170306 : return 164 ;
-                                       case  170270 : return 163 ;
-                                       case  170269 : return 162 ;
-                                       case  170268 : return 161 ;
-                                       case  170267 : return 160 ;
-                                       case  170264 : return 159 ;
-                                       case  170230 : return 158 ;
-                                       case  170228 : return 157 ;
-                                       case  170208 : return 156 ;
-                                       case  170207 : return 155 ;
-                                       case  170205 : return 154 ;
-                                       case  170204 : return 153 ;
-                                       case  170203 : return 152 ;
-                                       case  170195 : return 151 ;
-                                       case  170193 : return 150 ;
-                                       case  170163 : return 149 ;
-                                       case  170162 : return 148 ;
-                                       case  170159 : return 147 ;
-                                       case  170155 : return 146 ;
-                                       case  170152 : return 145 ;
-                                       case  170091 : return 144 ;
-                                       case  170089 : return 143 ;
-                                       case  170088 : return 142 ;
-                                       case  170085 : return 141 ;
-                                       case  170084 : return 140 ;
-                                       case  170083 : return 139 ;
-                                       case  170081 : return 138 ;
-                                       case  170040 : return 137 ;
-                                       case  170038 : return 136 ;
-                                       case  170036 : return 135 ;
-                                       case  170027 : return 134 ;
-                                       case  169981 : return 133 ;
-                                       case  169975 : return 132 ;
-                                       case  169969 : return 131 ;
-                                       case  169965 : return 130 ;
-                                       case  169961 : return 129 ;
-                                       case  169956 : return 128 ;
-                                       case  169926 : return 127 ;
-                                       case  169924 : return 126 ;
-                                       case  169923 : return 125 ;
-                                       case  169922 : return 124 ;
-                                       case  169919 : return 123 ;
-                                       case  169918 : return 122 ;
-                                       case  169914 : return 121 ;
-                                       case  169859 : return 120 ;
-                                       case  169858 : return 119 ;
-                                       case  169855 : return 118 ;
-                                       case  169846 : return 117 ;
-                                       case  169838 : return 116 ;
-                                       case  169837 : return 115 ;
-                                       case  169835 : return 114 ;
-                                       case  169683 : return 113 ;
-                                       case  169628 : return 112 ;
-                                       case  169591 : return 111 ;
-                                       case  169590 : return 110 ;
-                                       case  169588 : return 109 ;
-                                       case  169587 : return 108 ;
-                                       case  169586 : return 107 ;
-                                       case  169584 : return 106 ;
-                                       case  169557 : return 105 ;
-                                       case  169555 : return 104 ;
-                                       case  169554 : return 103 ;
-                                       case  169553 : return 102 ;
-                                       case  169550 : return 101 ;
-                                       case  169515 : return 100 ;
-                                       case  169512 : return 99 ;
-                                       case  169506 : return 98 ;
-                                       case  169504 : return 97 ;
-                                       case  169498 : return 96 ;
-                                       case  169475 : return 95 ;
-                                       case  169420 : return 94 ;
-                                       case  169419 : return 93 ;
-                                       case  169418 : return 92 ;
-                                       case  169417 : return 91 ;
-                                       case  169415 : return 90 ;
-                                       case  169411 : return 89 ;
-                                       case  169238 : return 88 ;
-                                       case  169236 : return 87 ;
-                                       case  169167 : return 86 ;
-                                       case  169160 : return 85 ;
-                                       case  169156 : return 84 ;
-                                       case  169148 : return 83 ;
-                                       case  169145 : return 82 ;
-                                       case  169144 : return 81 ;
-                                       case  169143 : return 80 ;
-                                       case  169138 : return 79 ;
-                                       case  169099 : return 78 ;
-                                       case  169094 : return 77 ;
-                                       case  169091 : return 76 ;
-                                       case  169045 : return 75 ;
-                                       case  169044 : return 74 ;
-                                       case  169040 : return 73 ;
-                                       case  169035 : return 72 ;
-                                       case  168992 : return 71 ;
-                                       case  168988 : return 70 ;
-                                       case  168984 : return 69 ;
-                                       case  168826 : return 68 ;
-                                       case  168777 : return 67 ;
-                                       case  168514 : return 66 ;
-                                       case  168512 : return 65 ;
-                                       case  168511 : return 64 ;
-                                       case  168467 : return 63 ;
-                                       case  168464 : return 62 ;
-                                       case  168461 : return 61 ;
-                                       case  168460 : return 60 ;
-                                       case  168458 : return 59 ;
-                                       case  168362 : return 58 ;
-                                       case  168361 : return 57 ;
-                                       case  168356 : return 56 ;
-                                       case  168342 : return 55 ;
-                                       case  168341 : return 54 ;
-                                       case  168325 : return 53 ;
-                                       case  168322 : return 52 ;
-                                       case  168318 : return 51 ;
-                                       case  168311 : return 50 ;
-                                       case  168310 : return 49 ;
-                                       case  168213 : return 48 ;
-                                       case  168212 : return 47 ;
-                                       case  168208 : return 46 ;
-                                       case  168207 : return 45 ;
-                                       case  168206 : return 44 ;
-                                       case  168205 : return 43 ;
-                                       case  168204 : return 42 ;
-                                       case  168203 : return 41 ;
-                                       case  168181 : return 40 ;
-                                       case  168177 : return 39 ;
-                                       case  168175 : return 38 ;
-                                       case  168173 : return 37 ;
-                                       case  168172 : return 36 ;
-                                       case  168171 : return 35 ;
-                                       case  168115 : return 34 ;
-                                       case  168108 : return 33 ;
-                                       case  168107 : return 32 ;
-                                       case  168105 : return 31 ;
-                                       case  168104 : return 30 ;
-                                       case  168103 : return 29 ;
-                                       case  168076 : return 28 ;
-                                       case  168069 : return 27 ;
-                                       case  168068 : return 26 ;
-                                       case  168066 : return 25 ;
-                                       case  167988 : return 24 ;
-                                       case  167987 : return 23 ;
-                                       case  167986 : return 22 ;
-                                       case  167985 : return 21 ;
-                                       case  167921 : return 20 ;
-                                       case  167920 : return 19 ;
-                                       case  167915 : return 18 ;
-                                       case  167909 : return 17 ;
-                                       case  167903 : return 16 ;
-                                       case  167902 : return 15 ;
-                                       case  167818 : return 14 ;
-                                       case  167814 : return 13 ;
-                                       case  167813 : return 12 ;
-                                       case  167808 : return 11 ;
-                                       case  167807 : return 10 ;
-                                       case  167806 : return 9 ;
-                                       case  167713 : return 8 ;
-                                       case  167712 : return 7 ;
-                                       case  167711 : return 6 ;
-                                       case  167706 : return 5 ;
-                                       case  167693 : return 4 ;
-                                       case  166532 : return 3 ;
-                                       case  166530 : return 2 ;
-                                       case  166529 : return 1 ;
-
-                                       default : return 199;
-                               }
-                       }
-       if(fPeriod== kLHC10h){
-               switch(run){
-                                               case  139517 : return 137;
-                                               case  139514 : return 136;
-                                               case  139513 : return 135;
-                                               case  139511 : return 134;
-                                               case  139510 : return 133;
-                                               case  139507 : return 132;
-                                               case  139505 : return 131;
-                                               case  139504 : return 130;
-                                               case  139503 : return 129;
-                                               case  139470 : return 128;
-                                               case  139467 : return 127;
-                                               case  139466 : return 126;
-                                               case  139465 : return 125;
-                                               case  139440 : return 124;
-                                               case  139439 : return 123;
-                                               case  139438 : return 122;
-                                               case  139437 : return 121;
-                                               case  139360 : return 120;
-                                               case  139329 : return 119;
-                                               case  139328 : return 118;
-                                               case  139314 : return 117;
-                                               case  139311 : return 116;
-                                               case  139310 : return 115;
-                                               case  139309 : return 114;
-                                               case  139308 : return 113;
-                                               case  139173 : return 112;
-                                               case  139172 : return 111;
-                                               case  139110 : return 110;
-                                               case  139107 : return 109;
-                                               case  139105 : return 108;
-                                               case  139104 : return 107;
-                                               case  139042 : return 106;
-                                               case  139038 : return 105;
-                                               case  139037 : return 104;
-                                               case  139036 : return 103;
-                                               case  139029 : return 102;
-                                               case  139028 : return 101;
-                                               case  138983 : return 100;
-                                               case  138982 : return 99;
-                                               case  138980 : return 98;
-                                               case  138979 : return 97;
-                                               case  138978 : return 96;
-                                               case  138977 : return 95;
-                                               case  138976 : return 94;
-                                               case  138973 : return 93;
-                                               case  138972 : return 92;
-                                               case  138965 : return 91;
-                                               case  138924 : return 90;
-                                               case  138872 : return 89;
-                                               case  138871 : return 88;
-                                               case  138870 : return 87;
-                                               case  138837 : return 86;
-                                               case  138830 : return 85;
-                                               case  138828 : return 84;
-                                               case  138826 : return 83;
-                                               case  138796 : return 82;
-                                               case  138795 : return 81;
-                                               case  138742 : return 80;
-                                               case  138732 : return 79;
-                                               case  138730 : return 78;
-                                               case  138666 : return 77;
-                                               case  138662 : return 76;
-                                               case  138653 : return 75;
-                                               case  138652 : return 74;
-                                               case  138638 : return 73;
-                                               case  138624 : return 72;
-                                               case  138621 : return 71;
-                                               case  138583 : return 70;
-                                               case  138582 : return 69;
-                                               case  138579 : return 68;
-                                               case  138578 : return 67;
-                                               case  138534 : return 66;
-                                               case  138469 : return 65;
-                                               case  138442 : return 64;
-                                               case  138439 : return 63;
-                                               case  138438 : return 62;
-                                               case  138396 : return 61;
-                                               case  138364 : return 60;
-                                               case  138359 : return 59;
-                                               case  138275 : return 58;
-                                               case  138225 : return 57;
-                                               case  138201 : return 56;
-                                               case  138200 : return 55;
-                                               case  138197 : return 54;
-                                               case  138192 : return 53;
-                                               case  138190 : return 52;
-                                               case  138154 : return 51;
-                                               case  138153 : return 50;
-                                               case  138151 : return 49;
-                                               case  138150 : return 48;
-                                               case  138126 : return 47;
-                                               case  138125 : return 46;
-                                               case  137848 : return 45;
-                                               case  137847 : return 44;
-                                               case  137844 : return 43;
-                                               case  137843 : return 42;
-                                               case  137752 : return 41;
-                                               case  137751 : return 40;
-                                               case  137748 : return 39;
-                                               case  137724 : return 38;
-                                               case  137722 : return 37;
-                                               case  137718 : return 36;
-                                               case  137704 : return 35;
-                                               case  137693 : return 34;
-                                               case  137692 : return 33;
-                                               case  137691 : return 32;
-                                               case  137689 : return 31;
-                                               case  137686 : return 30;
-                                               case  137685 : return 29;
-                                               case  137639 : return 28;
-                                               case  137638 : return 27;
-                                               case  137608 : return 26;
-                                               case  137595 : return 25;
-                                               case  137549 : return 24;
-                                               case  137546 : return 23;
-                                               case  137544 : return 22;
-                                               case  137541 : return 21;
-                                               case  137539 : return 20;
-                                               case  137531 : return 19;
-                                               case  137530 : return 18;
-                                               case  137443 : return 17;
-                                               case  137441 : return 16;
-                                               case  137440 : return 15;
-                                               case  137439 : return 14;
-                                               case  137434 : return 13;
-                                               case  137432 : return 12;
-                                               case  137431 : return 11;
-                                               case  137430 : return 10;
-                                               case  137366 : return 9;
-                                               case  137243 : return 8;
-                                               case  137236 : return 7;
-                                               case  137235 : return 6;
-                                               case  137232 : return 5;
-                                               case  137231 : return 4;
-                                               case  137165 : return 3;
-                                               case  137162 : return 2;
-                                               case  137161 : return 1;
-                                               default : return 199;
-                                       }
-                               }
-                               if( kLHC13 == fPeriod ) 
-                               {
-                                       switch(run)
-                                       {
-                                               case  195344 : return 1;
-                                               case  195346 : return 2;
-                                               case  195351 : return 3;
-                                               case  195389 : return 4;
-                                               case  195390 : return 5;
-                                               case  195391 : return 6;
-                                               case  195478 : return 7;
-                                               case  195479 : return 8;
-                                               case  195480 : return 9;
-                                               case  195481 : return 10;
-                                               case  195482 : return 11;
-                                               case  195483 : return 12;
-                                               case  195529 : return 13;
-                                               case  195531 : return 14;
-                                               case  195532 : return 15;
-                                               case  195566 : return 16;
-                                               case  195567 : return 17;
-                                               case  195568 : return 18;
-                                               case  195592 : return 19;
-                                               case  195593 : return 20;
-                                               case  195596 : return 21;
-                                               case  195633 : return 22;
-                                               case  195635 : return 23;
-                                               case  195644 : return 24;
-                                               case  195673 : return 25;
-                                               case  195675 : return 26;
-                                               case  195676 : return 27;
-                                               case  195677 : return 28;
-                                               case  195681 : return 29;
-                                               case  195682 : return 30;
-                                               case  195720 : return 31;
-                                               case  195721 : return 32;
-                                               case  195722 : return 33;
-                                               case  195724 : return 34;
-                                               case  195725 : return 34;
-                                               case  195726 : return 35;
-                                               case  195727 : return 36;
-                                               case  195760 : return 37;
-                                               case  195761 : return 38;
-                                               case  195765 : return 39;
-                                               case  195767 : return 40;
-                                               case  195783 : return 41;
-                                               case  195787 : return 42;
-                                               case  195826 : return 43;
-                                               case  195827 : return 44;
-                                               case  195829 : return 45;
-                                               case  195830 : return 46;
-                                               case  195831 : return 47;
-                                               case  195867 : return 48;
-                                               case  195869 : return 49;
-                                               case  195871 : return 50;
-                                               case  195872 : return 51;
-                                               case  195873 : return 52;
-                                               case  195935 : return 53;
-                                               case  195949 : return 54;
-                                               case  195950 : return 55;
-                                               case  195954 : return 56;
-                                               case  195955 : return 57;
-                                               case  195958 : return 58;
-                                               case  195989 : return 59;
-                                               case  195994 : return 60;
-                                               case  195998 : return 61;
-                                               case  196000 : return 62;
-                                               case  196006 : return 63;
-                                               case  196085 : return 64;
-                                               case  196089 : return 65;
-                                               case  196090 : return 66;
-                                               case  196091 : return 67;
-                                               case  196099 : return 68;
-                                               case  196105 : return 69;
-                                               case  196107 : return 70;
-                                               case  196185 : return 71;
-                                               case  196187 : return 72;
-                                               case  196194 : return 73;
-                                               case  196197 : return 74;
-                                               case  196199 : return 75;
-                                               case  196200 : return 76;
-                                               case  196201 : return 77;
-                                               case  196203 : return 78;
-                                               case  196208 : return 79;
-                                               case  196214 : return 80;
-                                               case  196308 : return 81;
-                                               case  196309 : return 82;
-                                               case  196310 : return 83;
-                                               case  196311 : return 84;
-                                               case  196433 : return 85;
-                                               case  196474 : return 86;
-                                               case  196475 : return 87;
-                                               case  196477 : return 88;
-                                               case  196528 : return 89;
-                                               case  196533 : return 90;
-                                               case  196535 : return 91;
-                                               case  196563 : return 92;
-                                               case  196564 : return 93;
-                                               case  196566 : return 94;
-                                               case  196568 : return 95;
-                                               case  196601 : return 96;
-                                               case  196605 : return 97;
-                                               case  196608 : return 98;
-                                               case  196646 : return 99;
-                                               case  196648 : return 100;
-                                               case  196701 : return 101;
-                                               case  196702 : return 102;
-                                               case  196703 : return 103;
-                                               case  196706 : return 104;
-                                               case  196714 : return 105;
-                                               case  196720 : return 106;
-                                               case  196721 : return 107;
-                                               case  196722 : return 108;
-                                               case  196772 : return 109;
-                                               case  196773 : return 110;
-                                               case  196774 : return 111;
-                                               case  196869 : return 112;
-                                               case  196870 : return 113;
-                                               case  196874 : return 114;
-                                               case  196876 : return 115;
-                                               case  196965 : return 116;
-                                               case  196967 : return 117;
-                                               case  196972 : return 118;
-                                               case  196973 : return 119;
-                                               case  196974 : return 120;
-                                               case  197003 : return 121;
-                                               case  197011 : return 122;
-                                               case  197012 : return 123;
-                                               case  197015 : return 124;
-                                               case  197027 : return 125;
-                                               case  197031 : return 126;
-                                               case  197089 : return 127;
-                                               case  197090 : return 128;
-                                               case  197091 : return 129;
-                                               case  197092 : return 130;
-                                               case  197094 : return 131;
-                                               case  197098 : return 132;
-                                               case  197099 : return 133;
-                                               case  197138 : return 134;
-                                               case  197139 : return 135;
-                                               case  197142 : return 136;
-                                               case  197143 : return 137;
-                                               case  197144 : return 138;
-                                               case  197145 : return 139;
-                                               case  197146 : return 140;
-                                               case  197147 : return 140;
-                                               case  197148 : return 141;
-                                               case  197149 : return 142;
-                                               case  197150 : return 143;
-                                               case  197152 : return 144;
-                                               case  197153 : return 145;
-                                               case  197184 : return 146;
-                                               case  197189 : return 147;
-                                               case  197247 : return 148;
-                                               case  197248 : return 149;
-                                               case  197254 : return 150;
-                                               case  197255 : return 151;
-                                               case  197256 : return 152;
-                                               case  197258 : return 153;
-                                               case  197260 : return 154;
-                                               case  197296 : return 155;
-                                               case  197297 : return 156;
-                                               case  197298 : return 157;
-                                               case  197299 : return 158;
-                                               case  197300 : return 159;
-                                               case  197302 : return 160;
-                                               case  197341 : return 161;
-                                               case  197342 : return 162;
-                                               case  197348 : return 163;
-                                               case  197349 : return 164;
-                                               case  197351 : return 165;
-                                               case  197386 : return 166;
-                                               case  197387 : return 167;
-                                               case  197388 : return 168;
-                                               default : return 199;
-                                       }
-                               }
-                               if((fPeriod == kUndefinedPeriod) && (fDebug >= 1) ) 
-                               {
-                                       AliWarning("Period not defined");
-                               }
-                               return 1;
+       if(fPeriod== kLHC11h)
+       {
+               switch(run)
+               {
+                       case  170593 : return 179 ;
+                       case  170572 : return 178 ;
+                       case  170556 : return 177 ;
+                       case  170552 : return 176 ;
+                       case  170546 : return 175 ;
+                       case  170390 : return 174 ;
+                       case  170389 : return 173 ;
+                       case  170388 : return 172 ;
+                       case  170387 : return 171 ;
+                       case  170315 : return 170 ;
+                       case  170313 : return 169 ;
+                       case  170312 : return 168 ;
+                       case  170311 : return 167 ;
+                       case  170309 : return 166 ;
+                       case  170308 : return 165 ;
+                       case  170306 : return 164 ;
+                       case  170270 : return 163 ;
+                       case  170269 : return 162 ;
+                       case  170268 : return 161 ;
+                       case  170267 : return 160 ;
+                       case  170264 : return 159 ;
+                       case  170230 : return 158 ;
+                       case  170228 : return 157 ;
+                       case  170208 : return 156 ;
+                       case  170207 : return 155 ;
+                       case  170205 : return 154 ;
+                       case  170204 : return 153 ;
+                       case  170203 : return 152 ;
+                       case  170195 : return 151 ;
+                       case  170193 : return 150 ;
+                       case  170163 : return 149 ;
+                       case  170162 : return 148 ;
+                       case  170159 : return 147 ;
+                       case  170155 : return 146 ;
+                       case  170152 : return 145 ;
+                       case  170091 : return 144 ;
+                       case  170089 : return 143 ;
+                       case  170088 : return 142 ;
+                       case  170085 : return 141 ;
+                       case  170084 : return 140 ;
+                       case  170083 : return 139 ;
+                       case  170081 : return 138 ;
+                       case  170040 : return 137 ;
+                       case  170038 : return 136 ;
+                       case  170036 : return 135 ;
+                       case  170027 : return 134 ;
+                       case  169981 : return 133 ;
+                       case  169975 : return 132 ;
+                       case  169969 : return 131 ;
+                       case  169965 : return 130 ;
+                       case  169961 : return 129 ;
+                       case  169956 : return 128 ;
+                       case  169926 : return 127 ;
+                       case  169924 : return 126 ;
+                       case  169923 : return 125 ;
+                       case  169922 : return 124 ;
+                       case  169919 : return 123 ;
+                       case  169918 : return 122 ;
+                       case  169914 : return 121 ;
+                       case  169859 : return 120 ;
+                       case  169858 : return 119 ;
+                       case  169855 : return 118 ;
+                       case  169846 : return 117 ;
+                       case  169838 : return 116 ;
+                       case  169837 : return 115 ;
+                       case  169835 : return 114 ;
+                       case  169683 : return 113 ;
+                       case  169628 : return 112 ;
+                       case  169591 : return 111 ;
+                       case  169590 : return 110 ;
+                       case  169588 : return 109 ;
+                       case  169587 : return 108 ;
+                       case  169586 : return 107 ;
+                       case  169584 : return 106 ;
+                       case  169557 : return 105 ;
+                       case  169555 : return 104 ;
+                       case  169554 : return 103 ;
+                       case  169553 : return 102 ;
+                       case  169550 : return 101 ;
+                       case  169515 : return 100 ;
+                       case  169512 : return 99 ;
+                       case  169506 : return 98 ;
+                       case  169504 : return 97 ;
+                       case  169498 : return 96 ;
+                       case  169475 : return 95 ;
+                       case  169420 : return 94 ;
+                       case  169419 : return 93 ;
+                       case  169418 : return 92 ;
+                       case  169417 : return 91 ;
+                       case  169415 : return 90 ;
+                       case  169411 : return 89 ;
+                       case  169238 : return 88 ;
+                       case  169236 : return 87 ;
+                       case  169167 : return 86 ;
+                       case  169160 : return 85 ;
+                       case  169156 : return 84 ;
+                       case  169148 : return 83 ;
+                       case  169145 : return 82 ;
+                       case  169144 : return 81 ;
+                       case  169143 : return 80 ;
+                       case  169138 : return 79 ;
+                       case  169099 : return 78 ;
+                       case  169094 : return 77 ;
+                       case  169091 : return 76 ;
+                       case  169045 : return 75 ;
+                       case  169044 : return 74 ;
+                       case  169040 : return 73 ;
+                       case  169035 : return 72 ;
+                       case  168992 : return 71 ;
+                       case  168988 : return 70 ;
+                       case  168984 : return 69 ;
+                       case  168826 : return 68 ;
+                       case  168777 : return 67 ;
+                       case  168514 : return 66 ;
+                       case  168512 : return 65 ;
+                       case  168511 : return 64 ;
+                       case  168467 : return 63 ;
+                       case  168464 : return 62 ;
+                       case  168461 : return 61 ;
+                       case  168460 : return 60 ;
+                       case  168458 : return 59 ;
+                       case  168362 : return 58 ;
+                       case  168361 : return 57 ;
+                       case  168356 : return 56 ;
+                       case  168342 : return 55 ;
+                       case  168341 : return 54 ;
+                       case  168325 : return 53 ;
+                       case  168322 : return 52 ;
+                       case  168318 : return 51 ;
+                       case  168311 : return 50 ;
+                       case  168310 : return 49 ;
+                       case  168213 : return 48 ;
+                       case  168212 : return 47 ;
+                       case  168208 : return 46 ;
+                       case  168207 : return 45 ;
+                       case  168206 : return 44 ;
+                       case  168205 : return 43 ;
+                       case  168204 : return 42 ;
+                       case  168203 : return 41 ;
+                       case  168181 : return 40 ;
+                       case  168177 : return 39 ;
+                       case  168175 : return 38 ;
+                       case  168173 : return 37 ;
+                       case  168172 : return 36 ;
+                       case  168171 : return 35 ;
+                       case  168115 : return 34 ;
+                       case  168108 : return 33 ;
+                       case  168107 : return 32 ;
+                       case  168105 : return 31 ;
+                       case  168104 : return 30 ;
+                       case  168103 : return 29 ;
+                       case  168076 : return 28 ;
+                       case  168069 : return 27 ;
+                       case  168068 : return 26 ;
+                       case  168066 : return 25 ;
+                       case  167988 : return 24 ;
+                       case  167987 : return 23 ;
+                       case  167986 : return 22 ;
+                       case  167985 : return 21 ;
+                       case  167921 : return 20 ;
+                       case  167920 : return 19 ;
+                       case  167915 : return 18 ;
+                       case  167909 : return 17 ;
+                       case  167903 : return 16 ;
+                       case  167902 : return 15 ;
+                       case  167818 : return 14 ;
+                       case  167814 : return 13 ;
+                       case  167813 : return 12 ;
+                       case  167808 : return 11 ;
+                       case  167807 : return 10 ;
+                       case  167806 : return 9 ;
+                       case  167713 : return 8 ;
+                       case  167712 : return 7 ;
+                       case  167711 : return 6 ;
+                       case  167706 : return 5 ;
+                       case  167693 : return 4 ;
+                       case  166532 : return 3 ;
+                       case  166530 : return 2 ;
+                       case  166529 : return 1 ;
+
+                       default : return 199;
+               }
+       }
+       
+       if(fPeriod== kLHC10h)
+       {
+               switch(run)
+               {
+                       case  139517 : return 137;
+                       case  139514 : return 136;
+                       case  139513 : return 135;
+                       case  139511 : return 134;
+                       case  139510 : return 133;
+                       case  139507 : return 132;
+                       case  139505 : return 131;
+                       case  139504 : return 130;
+                       case  139503 : return 129;
+                       case  139470 : return 128;
+                       case  139467 : return 127;
+                       case  139466 : return 126;
+                       case  139465 : return 125;
+                       case  139440 : return 124;
+                       case  139439 : return 123;
+                       case  139438 : return 122;
+                       case  139437 : return 121;
+                       case  139360 : return 120;
+                       case  139329 : return 119;
+                       case  139328 : return 118;
+                       case  139314 : return 117;
+                       case  139311 : return 116;
+                       case  139310 : return 115;
+                       case  139309 : return 114;
+                       case  139308 : return 113;
+                       case  139173 : return 112;
+                       case  139172 : return 111;
+                       case  139110 : return 110;
+                       case  139107 : return 109;
+                       case  139105 : return 108;
+                       case  139104 : return 107;
+                       case  139042 : return 106;
+                       case  139038 : return 105;
+                       case  139037 : return 104;
+                       case  139036 : return 103;
+                       case  139029 : return 102;
+                       case  139028 : return 101;
+                       case  138983 : return 100;
+                       case  138982 : return 99;
+                       case  138980 : return 98;
+                       case  138979 : return 97;
+                       case  138978 : return 96;
+                       case  138977 : return 95;
+                       case  138976 : return 94;
+                       case  138973 : return 93;
+                       case  138972 : return 92;
+                       case  138965 : return 91;
+                       case  138924 : return 90;
+                       case  138872 : return 89;
+                       case  138871 : return 88;
+                       case  138870 : return 87;
+                       case  138837 : return 86;
+                       case  138830 : return 85;
+                       case  138828 : return 84;
+                       case  138826 : return 83;
+                       case  138796 : return 82;
+                       case  138795 : return 81;
+                       case  138742 : return 80;
+                       case  138732 : return 79;
+                       case  138730 : return 78;
+                       case  138666 : return 77;
+                       case  138662 : return 76;
+                       case  138653 : return 75;
+                       case  138652 : return 74;
+                       case  138638 : return 73;
+                       case  138624 : return 72;
+                       case  138621 : return 71;
+                       case  138583 : return 70;
+                       case  138582 : return 69;
+                       case  138579 : return 68;
+                       case  138578 : return 67;
+                       case  138534 : return 66;
+                       case  138469 : return 65;
+                       case  138442 : return 64;
+                       case  138439 : return 63;
+                       case  138438 : return 62;
+                       case  138396 : return 61;
+                       case  138364 : return 60;
+                       case  138359 : return 59;
+                       case  138275 : return 58;
+                       case  138225 : return 57;
+                       case  138201 : return 56;
+                       case  138200 : return 55;
+                       case  138197 : return 54;
+                       case  138192 : return 53;
+                       case  138190 : return 52;
+                       case  138154 : return 51;
+                       case  138153 : return 50;
+                       case  138151 : return 49;
+                       case  138150 : return 48;
+                       case  138126 : return 47;
+                       case  138125 : return 46;
+                       case  137848 : return 45;
+                       case  137847 : return 44;
+                       case  137844 : return 43;
+                       case  137843 : return 42;
+                       case  137752 : return 41;
+                       case  137751 : return 40;
+                       case  137748 : return 39;
+                       case  137724 : return 38;
+                       case  137722 : return 37;
+                       case  137718 : return 36;
+                       case  137704 : return 35;
+                       case  137693 : return 34;
+                       case  137692 : return 33;
+                       case  137691 : return 32;
+                       case  137689 : return 31;
+                       case  137686 : return 30;
+                       case  137685 : return 29;
+                       case  137639 : return 28;
+                       case  137638 : return 27;
+                       case  137608 : return 26;
+                       case  137595 : return 25;
+                       case  137549 : return 24;
+                       case  137546 : return 23;
+                       case  137544 : return 22;
+                       case  137541 : return 21;
+                       case  137539 : return 20;
+                       case  137531 : return 19;
+                       case  137530 : return 18;
+                       case  137443 : return 17;
+                       case  137441 : return 16;
+                       case  137440 : return 15;
+                       case  137439 : return 14;
+                       case  137434 : return 13;
+                       case  137432 : return 12;
+                       case  137431 : return 11;
+                       case  137430 : return 10;
+                       case  137366 : return 9;
+                       case  137243 : return 8;
+                       case  137236 : return 7;
+                       case  137235 : return 6;
+                       case  137232 : return 5;
+                       case  137231 : return 4;
+                       case  137165 : return 3;
+                       case  137162 : return 2;
+                       case  137161 : return 1;
+                       default : return 199;
+               }
+       }
+       
+       if( kLHC13 == fPeriod ) 
+       {
+               switch(run)
+               {
+                       case  195344 : return 1;
+                       case  195346 : return 2;
+                       case  195351 : return 3;
+                       case  195389 : return 4;
+                       case  195390 : return 5;
+                       case  195391 : return 6;
+                       case  195478 : return 7;
+                       case  195479 : return 8;
+                       case  195480 : return 9;
+                       case  195481 : return 10;
+                       case  195482 : return 11;
+                       case  195483 : return 12;
+                       case  195529 : return 13;
+                       case  195531 : return 14;
+                       case  195532 : return 15;
+                       case  195566 : return 16;
+                       case  195567 : return 17;
+                       case  195568 : return 18;
+                       case  195592 : return 19;
+                       case  195593 : return 20;
+                       case  195596 : return 21;
+                       case  195633 : return 22;
+                       case  195635 : return 23;
+                       case  195644 : return 24;
+                       case  195673 : return 25;
+                       case  195675 : return 26;
+                       case  195676 : return 27;
+                       case  195677 : return 28;
+                       case  195681 : return 29;
+                       case  195682 : return 30;
+                       case  195720 : return 31;
+                       case  195721 : return 32;
+                       case  195722 : return 33;
+                       case  195724 : return 34;
+                       case  195725 : return 34;
+                       case  195726 : return 35;
+                       case  195727 : return 36;
+                       case  195760 : return 37;
+                       case  195761 : return 38;
+                       case  195765 : return 39;
+                       case  195767 : return 40;
+                       case  195783 : return 41;
+                       case  195787 : return 42;
+                       case  195826 : return 43;
+                       case  195827 : return 44;
+                       case  195829 : return 45;
+                       case  195830 : return 46;
+                       case  195831 : return 47;
+                       case  195867 : return 48;
+                       case  195869 : return 49;
+                       case  195871 : return 50;
+                       case  195872 : return 51;
+                       case  195873 : return 52;
+                       case  195935 : return 53;
+                       case  195949 : return 54;
+                       case  195950 : return 55;
+                       case  195954 : return 56;
+                       case  195955 : return 57;
+                       case  195958 : return 58;
+                       case  195989 : return 59;
+                       case  195994 : return 60;
+                       case  195998 : return 61;
+                       case  196000 : return 62;
+                       case  196006 : return 63;
+                       case  196085 : return 64;
+                       case  196089 : return 65;
+                       case  196090 : return 66;
+                       case  196091 : return 67;
+                       case  196099 : return 68;
+                       case  196105 : return 69;
+                       case  196107 : return 70;
+                       case  196185 : return 71;
+                       case  196187 : return 72;
+                       case  196194 : return 73;
+                       case  196197 : return 74;
+                       case  196199 : return 75;
+                       case  196200 : return 76;
+                       case  196201 : return 77;
+                       case  196203 : return 78;
+                       case  196208 : return 79;
+                       case  196214 : return 80;
+                       case  196308 : return 81;
+                       case  196309 : return 82;
+                       case  196310 : return 83;
+                       case  196311 : return 84;
+                       case  196433 : return 85;
+                       case  196474 : return 86;
+                       case  196475 : return 87;
+                       case  196477 : return 88;
+                       case  196528 : return 89;
+                       case  196533 : return 90;
+                       case  196535 : return 91;
+                       case  196563 : return 92;
+                       case  196564 : return 93;
+                       case  196566 : return 94;
+                       case  196568 : return 95;
+                       case  196601 : return 96;
+                       case  196605 : return 97;
+                       case  196608 : return 98;
+                       case  196646 : return 99;
+                       case  196648 : return 100;
+                       case  196701 : return 101;
+                       case  196702 : return 102;
+                       case  196703 : return 103;
+                       case  196706 : return 104;
+                       case  196714 : return 105;
+                       case  196720 : return 106;
+                       case  196721 : return 107;
+                       case  196722 : return 108;
+                       case  196772 : return 109;
+                       case  196773 : return 110;
+                       case  196774 : return 111;
+                       case  196869 : return 112;
+                       case  196870 : return 113;
+                       case  196874 : return 114;
+                       case  196876 : return 115;
+                       case  196965 : return 116;
+                       case  196967 : return 117;
+                       case  196972 : return 118;
+                       case  196973 : return 119;
+                       case  196974 : return 120;
+                       case  197003 : return 121;
+                       case  197011 : return 122;
+                       case  197012 : return 123;
+                       case  197015 : return 124;
+                       case  197027 : return 125;
+                       case  197031 : return 126;
+                       case  197089 : return 127;
+                       case  197090 : return 128;
+                       case  197091 : return 129;
+                       case  197092 : return 130;
+                       case  197094 : return 131;
+                       case  197098 : return 132;
+                       case  197099 : return 133;
+                       case  197138 : return 134;
+                       case  197139 : return 135;
+                       case  197142 : return 136;
+                       case  197143 : return 137;
+                       case  197144 : return 138;
+                       case  197145 : return 139;
+                       case  197146 : return 140;
+                       case  197147 : return 140;
+                       case  197148 : return 141;
+                       case  197149 : return 142;
+                       case  197150 : return 143;
+                       case  197152 : return 144;
+                       case  197153 : return 145;
+                       case  197184 : return 146;
+                       case  197189 : return 147;
+                       case  197247 : return 148;
+                       case  197248 : return 149;
+                       case  197254 : return 150;
+                       case  197255 : return 151;
+                       case  197256 : return 152;
+                       case  197258 : return 153;
+                       case  197260 : return 154;
+                       case  197296 : return 155;
+                       case  197297 : return 156;
+                       case  197298 : return 157;
+                       case  197299 : return 158;
+                       case  197300 : return 159;
+                       case  197302 : return 160;
+                       case  197341 : return 161;
+                       case  197342 : return 162;
+                       case  197348 : return 163;
+                       case  197349 : return 164;
+                       case  197351 : return 165;
+                       case  197386 : return 166;
+                       case  197387 : return 167;
+                       case  197388 : return 168;
+                       default : return 199;
+               }
+       }
+       
+       if((fPeriod == kUndefinedPeriod) && (fDebug >= 1) ) 
+       {
+               AliWarning("Period not defined");
+       }
+       return 1;
 }
 
 //_______________________________________________________________________________
@@ -1213,23 +1249,57 @@ Bool_t AliPHOSCorrelations::RejectTriggerMaskSelection()
        if( fDebug >= 2 )
                AliInfo( Form("Event passed offline phos trigger test: %s ", fEvent->GetFiredTriggerClasses().Data() ) );
 
-       Int_t physSelMask = fEventHandler->IsEventSelected();
+       const Int_t physSelMask = fEventHandler->IsEventSelected();
+
+       Bool_t isAny             = physSelMask & AliVEvent::kAny;                       // to accept any trigger
+
+       Bool_t isPHI1            = physSelMask & AliVEvent::kPHI1;                      // PHOS trigger, CINT1 suite
+       Bool_t isPHI7            = physSelMask & AliVEvent::kPHI7;                      // PHOS trigger, CINT7 suite
+       Bool_t isPHI8            = physSelMask & AliVEvent::kPHI8;                      // PHOS trigger, CINT8 suite
+       Bool_t isCentral         = physSelMask & AliVEvent::kCentral;           // PbPb central collision trigger
+       Bool_t isSemiCentral = physSelMask & AliVEvent::kSemiCentral;   // PbPb semicentral collision trigger
+       Bool_t isPHOSPb          = physSelMask & AliVEvent::kPHOSPb;            // PHOS trigger, CINT8 suite for PbPb
+
+       Bool_t isMB              = physSelMask & AliVEvent::kMB;                        // Minimum bias trigger, i.e. interaction trigger, offline SPD or V0 selection
+       Bool_t isINT7            = physSelMask & AliVEvent::kINT7;                      // V0AND trigger, offline V0 selection
+       Bool_t isAnyINT          = physSelMask & AliVEvent::kAnyINT;            // to accept any interaction (aka minimum bias) trigger
+
+       // Other triggers
+       Bool_t isMUON             = physSelMask & AliVEvent::kMUON;             // Muon trigger, offline SPD or V0 selection
+       Bool_t isHighMult         = physSelMask & AliVEvent::kHighMult;         // High-multiplicity trigger (threshold defined online), offline SPD or V0 selection
+       Bool_t isEMC1         = physSelMask & AliVEvent::kEMC1;         // EMCAL trigger
+       Bool_t isCINT5            = physSelMask & AliVEvent::kCINT5;            // Minimum bias trigger without SPD. i.e. interaction trigger, offline V0 selection
+       Bool_t isCMUS5            = physSelMask & AliVEvent::kCMUS5;            // Muon trigger, offline V0 selection
+       Bool_t isMUSPB            = physSelMask & AliVEvent::kMUSPB;            // idem for PbPb
+       Bool_t isMUSH7            = physSelMask & AliVEvent::kMUSH7;            // Muon trigger: high pt, single muon, offline V0 selection, CINT7 suite
+       Bool_t isMUSHPB           = physSelMask & AliVEvent::kMUSHPB;           // idem for PbPb
+       Bool_t isMUL7             = physSelMask & AliVEvent::kMUL7;             // Muon trigger: like sign dimuon, offline V0 selection, CINT7 suite
+       Bool_t isMuonLikePB   = physSelMask & AliVEvent::kMuonLikePB;   // idem for PbPb
+       Bool_t isMUU7             = physSelMask & AliVEvent::kMUU7;             // Muon trigger, unlike sign dimuon, offline V0 selection, CINT7 suite
+       Bool_t isMuonUnlikePB = physSelMask & AliVEvent::kMuonUnlikePB; // idem for PbPb
+       Bool_t isEMC7             = physSelMask & AliVEvent::kEMC7;             // EMCAL trigger, CINT7 suite
+       Bool_t isEMC8             = physSelMask & AliVEvent::kEMC8;         // EMCAL trigger, CINT8 suite
+       Bool_t isMUS7             = physSelMask & AliVEvent::kMUS7;             // Muon trigger: low pt, single muon, offline V0 selection, CINT7 suite
+
+       Bool_t isEMCEJE           = physSelMask & AliVEvent::kEMCEJE;           // EMCAL jet patch trigger
+       Bool_t isEMCEGA           = physSelMask & AliVEvent::kEMCEGA;           // EMCAL gamma trigger
+
+       Bool_t isDG5                            = physSelMask & AliVEvent::kDG5;                                // Double gap diffractive
+       Bool_t isZED                            = physSelMask & AliVEvent::kZED;                                // ZDC electromagnetic dissociation
+       Bool_t isSPI7                           = physSelMask & AliVEvent::kSPI7;                               // Power interaction trigger
+       Bool_t isSPI                            = physSelMask & AliVEvent::kSPI;                        // Power interaction trigger
+       Bool_t isINT8                           = physSelMask & AliVEvent::kINT8;                       // CINT8 trigger: 0TVX (T0 vertex) triger
+       Bool_t isMuonSingleLowPt8       = physSelMask & AliVEvent::kMuonSingleLowPt8;   // Muon trigger : single muon, low pt, T0 selection, CINT8 suite
+       Bool_t isMuonSingleHighPt8      = physSelMask & AliVEvent::kMuonSingleHighPt8;  // Muon trigger : single muon, high pt, T0 selection, CINT8 suite
+       Bool_t isMuonLikeLowPt8         = physSelMask & AliVEvent::kMuonLikeLowPt8;             // Muon trigger : like sign muon, low pt, T0 selection, CINT8 suite
+       Bool_t isMuonUnlikeLowPt8       = physSelMask & AliVEvent::kMuonUnlikeLowPt8;   // Muon trigger : unlike sign muon, low pt, T0 selection, CINT8 suite
+       Bool_t isMuonUnlikeLowPt0       = physSelMask & AliVEvent::kMuonUnlikeLowPt0;   // Muon trigger : unlike sign muon, low pt, no additional L0 requirement
+       Bool_t isUserDefined            = physSelMask & AliVEvent::kUserDefined;                // Set when custom trigger classes are set in AliPhysicsSelection, offline SPD or V0 selection
+       Bool_t isTRD                            = physSelMask & AliVEvent::kTRD;                                // TRD trigger
+       Bool_t isFastOnly               = physSelMask & AliVEvent::kFastOnly;                   // The fast cluster fired. This bit is set in to addition another trigger bit, e.g. kMB
 
-       Bool_t isAny             = physSelMask & AliVEvent::kAny;
-
-       Bool_t isPHI1            = physSelMask & AliVEvent::kPHI1;
-       Bool_t isPHI7            = physSelMask & AliVEvent::kPHI7;
-       Bool_t isPHI8            = physSelMask & AliVEvent::kPHI8;
-       Bool_t isCentral         = physSelMask & AliVEvent::kCentral;
-       Bool_t isSemiCentral = physSelMask & AliVEvent::kSemiCentral;
-       Bool_t isPHOSPb          = physSelMask & AliVEvent::kPHOSPb;
-
-       Bool_t isMB              = physSelMask & AliVEvent::kMB;
-       Bool_t isINT7            = physSelMask & AliVEvent::kINT7;
-       Bool_t isAnyINT          = physSelMask & AliVEvent::kAnyINT;
-
-       FillHistogram("hTriggerPassedEvents", 0 );
        // All input events
+       FillHistogram("hTriggerPassedEvents", 0 );
        if ( isAny )             FillHistogram("hTriggerPassedEvents",  1.) ;           
 
        // PHOS events.
@@ -1245,56 +1315,93 @@ Bool_t AliPHOSCorrelations::RejectTriggerMaskSelection()
        if ( isINT7 )            FillHistogram("hTriggerPassedEvents",  9. );
        if ( isAnyINT )          FillHistogram("hTriggerPassedEvents", 10. );
 
+       Bool_t isTriggerEvent = false;
+       Bool_t isMIXEvent         = false;
 
-       Bool_t isTriggerEvent ;
-       Bool_t isMIXEvent         ;
-
+       // TODO: Set false by default.
        fPHOSEvent      = false ;
        fMBEvent        = false ;
 
+       // Choosing triggers for different periods.
        if(fPeriod == kLHC13) 
        {
+               // Working: MB + TriggerPHOS events in real events; MB only in mixed events.
                isTriggerEvent  =  isPHI7 || isINT7 ;
                isMIXEvent              =  isINT7 ;
-               // Working:
-               // MB + TriggerPHOS --- in real.
-               // MB --- in mixed.
-               
-               if(isTriggerEvent || isMIXEvent)
-               {
-                       if ( isTriggerEvent )
-                       {
-                               FillHistogram("hTriggerPassedEvents", 16.);
-                               fPHOSEvent = true;
-                       }
-                       
-                       if ( isMIXEvent )
-                       {
-                               FillHistogram("hTriggerPassedEvents", 17.);
-                               fMBEvent = true;
-                       }
-                       return ACCEPT;
-               }
        }
 
        if(fPeriod == kLHC11h) 
        {
-               isTriggerEvent = isCentral || isSemiCentral;
-               // Working:
-               // MB --- in real and mixed.
+               // Working: The same trigger in real and mixed events.
+               isTriggerEvent = isCentral || isSemiCentral ;
+               isMIXEvent     = isCentral || isSemiCentral ;
+       }
 
-               if ( isTriggerEvent)
+       // Select events.
+       if(isTriggerEvent || isMIXEvent)
+       {
+               if ( isTriggerEvent )
                {
-                       FillHistogram("hTriggerPassedEvents", 16.);
                        FillHistogram("hTriggerPassedEvents", 17.);
-                       fPHOSEvent      = true;
-                       fMBEvent        = true;
-                       return ACCEPT;
+                       fPHOSEvent = true;
+               }
+               
+               if ( isMIXEvent )
+               {
+                       FillHistogram("hTriggerPassedEvents", 18.);
+                       fMBEvent = true;
                }
+
+               return ACCEPT;
        }
 
        // other events
-       FillHistogram("hTriggerPassedEvents",  18.); 
+       FillHistogram("hTriggerPassedEvents",  19.); 
+
+       //if ( isAny )           FillHistogram("hTriggerPassedEvents",  1.+20) ; // Not necessary
+       // PHOS events.
+       if ( isPHI1 )            FillHistogram("hTriggerPassedEvents",  2.+20 );        
+       if ( isPHI7 )            FillHistogram("hTriggerPassedEvents",  3.+20 );        
+       if ( isPHI8 )            FillHistogram("hTriggerPassedEvents",  4.+20 ); 
+       if ( isCentral )         FillHistogram("hTriggerPassedEvents",  5.+20 );        
+       if ( isSemiCentral ) FillHistogram("hTriggerPassedEvents",      6.+20 ); 
+       if ( isPHOSPb )          FillHistogram("hTriggerPassedEvents",  7.+20 );        
+       // MB events.
+       if ( isMB )              FillHistogram("hTriggerPassedEvents",  8.+20 );                
+       if ( isINT7 )            FillHistogram("hTriggerPassedEvents",  9.+20 );
+       if ( isAnyINT )          FillHistogram("hTriggerPassedEvents", 10.+20 );
+       // Other rejected events
+       if ( isMUON )                           FillHistogram("hTriggerPassedEvents",   11.+20 );
+       if ( isHighMult )                       FillHistogram("hTriggerPassedEvents",   12.+20 );
+       if ( isEMC1 )                           FillHistogram("hTriggerPassedEvents",   13.+20 );
+       if ( isCINT5 )                          FillHistogram("hTriggerPassedEvents",   14.+20 );
+       if ( isCMUS5 )                          FillHistogram("hTriggerPassedEvents",   15.+20 );
+       if ( isMUSPB )                          FillHistogram("hTriggerPassedEvents",   16.+20 );
+       if ( isMUSH7 )                          FillHistogram("hTriggerPassedEvents",   17.+20 );
+       if ( isMUSHPB )                         FillHistogram("hTriggerPassedEvents",   18.+20 );
+       if ( isMUL7 )                           FillHistogram("hTriggerPassedEvents",   19.+20 );
+       if ( isMuonLikePB )             FillHistogram("hTriggerPassedEvents",   20.+20 );
+       if ( isMUU7 )                           FillHistogram("hTriggerPassedEvents",   21.+20 );
+       if ( isMuonUnlikePB )           FillHistogram("hTriggerPassedEvents",   22.+20 );
+       if ( isEMC7 )                           FillHistogram("hTriggerPassedEvents",   23.+20 );
+       if ( isEMC8 )                           FillHistogram("hTriggerPassedEvents",   24.+20 );
+       if ( isMUS7 )                           FillHistogram("hTriggerPassedEvents",   25.+20 );
+       if ( isEMCEJE )                         FillHistogram("hTriggerPassedEvents",   26.+20 );
+       if ( isEMCEGA )                         FillHistogram("hTriggerPassedEvents",   27.+20 );
+       if ( isDG5 )                            FillHistogram("hTriggerPassedEvents",   28.+20 );
+       if ( isZED )                            FillHistogram("hTriggerPassedEvents",   29.+20 );
+       if ( isSPI7 )                           FillHistogram("hTriggerPassedEvents",   30.+20 );
+       if ( isSPI )                            FillHistogram("hTriggerPassedEvents",   31.+20 );
+       if ( isINT8 )                           FillHistogram("hTriggerPassedEvents",   32.+20 );
+       if ( isMuonSingleLowPt8 )       FillHistogram("hTriggerPassedEvents",   33.+20 );
+       if ( isMuonSingleHighPt8 )      FillHistogram("hTriggerPassedEvents",   34.+20 );
+       if ( isMuonLikeLowPt8 )         FillHistogram("hTriggerPassedEvents",   35.+20 );
+       if ( isMuonUnlikeLowPt8 )       FillHistogram("hTriggerPassedEvents",   36.+20 );
+       if ( isMuonUnlikeLowPt0 )       FillHistogram("hTriggerPassedEvents",   37.+20 );
+       if ( isUserDefined )            FillHistogram("hTriggerPassedEvents",   38.+20 );
+       if ( isTRD )                            FillHistogram("hTriggerPassedEvents",   39.+20 );
+       if ( isFastOnly )                       FillHistogram("hTriggerPassedEvents",   40.+20 );
+
        return REJECT;
 }
 
@@ -1317,11 +1424,11 @@ void AliPHOSCorrelations::SetVertex()
        }
        fVertexVector = TVector3(fVertex);
 
-       fVtxBin=0 ;// No support for vtx binning implemented.
+       fVtxBin=GetVertexBin(fVertexVector) ;
 }
 
 //_______________________________________________________________________________
-Bool_t AliPHOSCorrelations::RejectEventVertex()
+Bool_t AliPHOSCorrelations::RejectEventVertex() const
 {
   if( ! fEvent->GetPrimaryVertex() ) return true; // reject
   LogSelection(kHasVertex, fInternalRunNumber);
@@ -1333,6 +1440,50 @@ Bool_t AliPHOSCorrelations::RejectEventVertex()
 }
 
 //_______________________________________________________________________________
+void AliPHOSCorrelations::SetVertexBinning()
+{
+       // Define vertex bins by their edges
+       const int nbins = fNVtxZBins+1;
+       const double binWidth = 2*fMaxAbsVertexZ/fNVtxZBins;
+       Double_t edges[nbins+1];
+       for (int i = 0; i < nbins; ++i)
+       {
+               edges[i] = -1.*fNVtxZBins + binWidth*(double)i;
+       }
+
+       TArrayD vtxEdges(nbins, edges);
+
+       for(int i=0; i<vtxEdges.GetSize()-1; ++i)
+       {
+               if(vtxEdges.At(i) > vtxEdges.At(i+1)) 
+                       AliFatal("edges are not sorted");
+
+               fVtxEdges = vtxEdges;
+       }
+}
+
+//_______________________________________________________________________________
+Int_t AliPHOSCorrelations::GetVertexBin(const TVector3&  vertexVector)
+{
+       int lastBinUpperIndex = fVtxEdges.GetSize() -1;
+       if( vertexVector.z() > fVtxEdges[lastBinUpperIndex] ) 
+       {
+               if( fDebug >= 1 )
+                       AliWarning( Form("vertex (%f) larger then upper edge of last vertex bin (%f)!", vertexVector.z(), fVtxEdges[lastBinUpperIndex]) );
+               return lastBinUpperIndex-1;
+       }
+       if( vertexVector.z() < fVtxEdges[0] ) 
+       {
+               if( fDebug >= 1 )
+               AliWarning( Form("vertex (%f) smaller then lower edge of first bin (%f)!", vertexVector.z(), fVtxEdges[0]) );
+               return 0;
+       }
+
+       fVtxBin = TMath::BinarySearch<Double_t> ( GetNumberOfVertexBins(), fVtxEdges.GetArray(), vertexVector.z() );
+       return fVtxBin;
+}
+
+//_______________________________________________________________________________
 void AliPHOSCorrelations::SetCentrality()
 {
        AliCentrality *centrality = fEvent->GetCentrality();
@@ -1348,7 +1499,7 @@ void AliPHOSCorrelations::SetCentrality()
 }
 
 //_______________________________________________________________________________
-Bool_t AliPHOSCorrelations::RejectEventCentrality()
+Bool_t AliPHOSCorrelations::RejectEventCentrality() const
 {
        if (fCentrality<fCentralityLowLimit)
                return true; //reject
@@ -1373,7 +1524,7 @@ void AliPHOSCorrelations::SetCentralityBinning(const TArrayD& edges, const TArra
 }
 
 //_______________________________________________________________________________
-Int_t AliPHOSCorrelations::GetCentralityBin(Float_t centralityV0M)
+Int_t AliPHOSCorrelations::GetCentralityBin(const Float_t& centralityV0M)
 {
        int lastBinUpperIndex = fCentEdges.GetSize() -1;
        if( centralityV0M > fCentEdges[lastBinUpperIndex] ) 
@@ -1394,7 +1545,7 @@ Int_t AliPHOSCorrelations::GetCentralityBin(Float_t centralityV0M)
 }
 
 //_______________________________________________________________________________
-void AliPHOSCorrelations::SetCentralityBorders (double downLimit , double upLimit )
+void AliPHOSCorrelations::SetCentralityBorders(const Double_t& downLimit , const Double_t& upLimit )
 {
        if (downLimit < 0. || upLimit > 100 || upLimit<=downLimit)
                AliError( Form("Warning. Bad value of centrality borders. Setting as default: fCentralityLowLimit=%2.f, fCentralityHightLimit=%2.f", fCentralityLowLimit, fCentralityHightLimit) );
@@ -1537,10 +1688,19 @@ void AliPHOSCorrelations::SelectAccosiatedTracks()
        for (Int_t i = 0; i < fEvent->GetNumberOfTracks(); i++) 
        {
          
-               AliVParticle *track = fEvent->GetTrack(i);
+               AliVTrack * track = (AliVTrack*)fEvent->GetTrack(i);
+
+        //Select tracks under certain conditions, TPCrefit, ITSrefit ...
+        ULong_t status = track->GetStatus();
+        if (fTrackStatus && !((status & fTrackStatus) == fTrackStatus))
+        {
+            if( fDebug > 2 ) printf("\t Reject track, status != fTrackStatus\n" );
+            continue ;
+        }
+
        if(fEventESD)
        {
-                               if(!SelectESDTrack((AliESDtrack*)track)) continue ; // reject track
+                       if(!SelectESDTrack((AliESDtrack*)track)) continue ; // reject track
                }
                else
                {
@@ -1759,7 +1919,7 @@ void AliPHOSCorrelations::ConsiderTracksMix()
 
                        Double_t phiAssoc = track->Phi();
                        Double_t etaAssoc = track->Eta();
-                       Double_t ptAssoc  =  track->Pt();
+                       Double_t ptAssoc  = track->Pt();
 
                        Double_t ptAssocBin = GetAssocBin(ptAssoc) ;
 
@@ -1785,7 +1945,7 @@ void AliPHOSCorrelations::ConsiderTracksMix()
 }
 
 //_______________________________________________________________________________
-TList* AliPHOSCorrelations::GetCaloPhotonsPHOSList(UInt_t vtxBin, UInt_t centBin, UInt_t rpBin)
+TList* AliPHOSCorrelations::GetCaloPhotonsPHOSList(const UInt_t vtxBin, const UInt_t centBin, const UInt_t rpBin)
 {
        int offset = vtxBin * GetNumberOfCentralityBins() * fNEMRPBins + centBin * fNEMRPBins + rpBin;
        if( fCaloPhotonsPHOSLists->At(offset) ) 
@@ -1804,8 +1964,8 @@ TList* AliPHOSCorrelations::GetCaloPhotonsPHOSList(UInt_t vtxBin, UInt_t centBin
 }
 
 //_______________________________________________________________________________
-TList* AliPHOSCorrelations::GetTracksTPCList(UInt_t vtxBin, UInt_t centBin, UInt_t rpBin)
-{              
+TList* AliPHOSCorrelations::GetTracksTPCList(const UInt_t vtxBin, const UInt_t centBin, const UInt_t rpBin)
+{
        int offset = vtxBin * GetNumberOfCentralityBins() * fNEMRPBins + centBin * fNEMRPBins + rpBin;
        if( fTracksTPCLists->At(offset) ) 
        { 
@@ -1823,7 +1983,7 @@ TList* AliPHOSCorrelations::GetTracksTPCList(UInt_t vtxBin, UInt_t centBin, UInt
 }
 
 //_______________________________________________________________________________
-Double_t AliPHOSCorrelations::GetAssocBin(Double_t pt) const
+Double_t AliPHOSCorrelations::GetAssocBin(const Double_t& pt) const
 {
        //Calculates bin of associated particle pt.
        for(Int_t i=1; i<fAssocBins.GetSize(); i++)
@@ -1836,13 +1996,17 @@ Double_t AliPHOSCorrelations::GetAssocBin(Double_t pt) const
 }
 
 //_______________________________________________________________________________
-void AliPHOSCorrelations::FillTrackEtaPhi()
+void AliPHOSCorrelations::FillTrackEtaPhi() const
 {
        // Distribution TPC's tracks by angles.
        for (Int_t i1=0; i1<fTracksTPC->GetEntriesFast(); i1++)
        {
                TLorentzVector * track = (TLorentzVector*)fTracksTPC->At(i1);
-               FillHistogram( "track_phieta", track->Phi(), track->Eta() );
+               Double_t phiAssoc = track->Phi();
+               Double_t etaAssoc = track->Eta();
+               Double_t ptAssoc  = track->Pt() ;
+
+               FillHistogram( "track_phieta", phiAssoc, etaAssoc, ptAssoc );
        }
 }
 
@@ -1894,38 +2058,52 @@ void AliPHOSCorrelations::UpdateTrackLists()
 }
 
 //_______________________________________________________________________________
-Bool_t AliPHOSCorrelations::SelectESDTrack(AliESDtrack * t) const
+Bool_t AliPHOSCorrelations::SelectESDTrack(const AliESDtrack * t) const
 {
-       // Estimate if this track can be used for the RP calculation. If all right - return "TRUE"
-       Float_t pt=t->Pt();
-       if(pt<0.5 || pt>20.)                            return kFALSE ;
-       if(fabs( t->Eta() )>0.8)                        return kFALSE;
-       if(!fESDtrackCuts->AcceptTrack(t))      return kFALSE ;
-       return kTRUE ;
+       // Estimate if this track can be used for correlation analisys. If all right - return "TRUE".
+       Float_t pt = t->Pt();
+       if( pt<0.5 || pt>20. ) return kFALSE ;
+       if( TMath::Abs( t->Eta() ) > 0.8 ) return kFALSE;
+       if( !fESDtrackCuts->AcceptTrack(t) ) return kFALSE ;
+       
+    return kTRUE ;
 }
 
 //_______________________________________________________________________________
-Bool_t AliPHOSCorrelations::SelectAODTrack(AliAODTrack * t) const
+Bool_t AliPHOSCorrelations::SelectAODTrack(const AliAODTrack * t) const
 {
-       // Estimate if this track can be used for the RP calculation. If all right - return "TRUE"
-       Float_t pt=t->Pt();
-       if(pt<0.5 || pt>20.)     return kFALSE ;
-       if(fabs( t->Eta() )>0.8) return kFALSE;
+       // Estimate if this track can be used for correlation analisys. If all right - return "TRUE".
+       Float_t pt = t->Pt() ;
+       if( pt<0.5 || pt>20.     ) return kFALSE ;
+       if( TMath::Abs(t->Eta()) > 0.8 ) return kFALSE ;
 
-       if(fCheckHibridGlobal == kOnlyHibridTracks)
+       if(fSelectHybridTracks)
        {
-               if(!t->IsHybridGlobalConstrainedGlobal()) 
-                       return kFALSE ;
-       }
-       else
-       if (fCheckHibridGlobal == kWithOutHibridTracks)
-       {
-               if(t->IsHybridGlobalConstrainedGlobal()) 
-                       return kFALSE ;
+               if(!t->IsHybridGlobalConstrainedGlobal())
+        {
+            if( fDebug > 2 ) printf("\t Reject track, IsHybridGlobalConstrainedGlobal() is FALSE\n ");
+            return kFALSE ;
+        }
        }
-       else
-       if(fCheckHibridGlobal == kAllTracks)
-               return kTRUE;
+       
+    if(fSelectSPDHitTracks) //Not much sense to use with TPC only or Hybrid tracks
+    {
+        if(!t->HasPointOnITSLayer(0) && !t->HasPointOnITSLayer(1)) 
+        {
+            if( fDebug > 2 ) printf("\t Reject track, HasPointOnITSLayer(0) is %i and HasPointOnITSLayer(1) is %i\n", t->HasPointOnITSLayer(0), t->HasPointOnITSLayer(1) );
+            return kFALSE ; ;
+        }
+    }
+
+    if(fSelectFractionTPCSharedClusters)
+    {
+        Double_t frac = Double_t(t->GetTPCnclsS()) / Double_t(t->GetTPCncls());
+        if (frac > fCutTPCSharedClustersFraction)
+        {
+            if( fDebug > 2 ) printf("\t Reject track, shared cluster fraction %f > %f\n",frac, fCutTPCSharedClustersFraction);
+            return kFALSE ;
+        }
+    }
 
        return kTRUE ;
 }
@@ -1938,21 +2116,21 @@ void AliPHOSCorrelations::LogProgress(int step)
 }
 
 //_______________________________________________________________________________
-void AliPHOSCorrelations::LogSelection(int step, int internalRunNumber)
+void AliPHOSCorrelations::LogSelection(const int& step, const int& internalRunNumber) const
 {
        // the +0.5 is not realy neccisarry, but oh well... -henrik
        FillHistogram("hSelEvents", step+0.5, internalRunNumber-0.5);
- }
+}
 
 //_______________________________________________________________________________
-Bool_t AliPHOSCorrelations::TestMass(Double_t m, Double_t pt)
+Bool_t AliPHOSCorrelations::TestMass(const Double_t& m, const Double_t& pt) const
 {
-       //Check if mair in pi0 peak window
-       //To make pT-dependent 
-       if (!fSigmaWidth)       // Default big window 
+    // If pi0 candidate outside of mass peak, then reject. 
+       if (fUseMassWindowParametrisation && fNSigmaWidth)       
        {
-               FillHistogram("massWindow", fMassInvMean, fMassInvSigma);
-        if(fMassInvMean-fMassInvSigma<m && m<fMassInvMean+fMassInvSigma)
+        // Parametrization
+        FillHistogram("massWindow", MassMeanFunction(pt), MassSigmaFunction(pt)*fNSigmaWidth);
+        if ( MassMeanFunction(pt)-MassSigmaFunction(pt)*fNSigmaWidth<m && m<MassMeanFunction(pt)+MassSigmaFunction(pt)*fNSigmaWidth )
         {
             FillHistogram("massWindowPass", 1);
             return true;
@@ -1962,12 +2140,16 @@ Bool_t AliPHOSCorrelations::TestMass(Double_t m, Double_t pt)
             FillHistogram("massWindowPass", 2);
             return false;
         }
-       }
+    }
        else
-       {
-               // Parametrization
-               FillHistogram("massWindow", MassMeanFunktion(pt), MassSigmaFunktion(pt)*fSigmaWidth);
-        if ( MassMeanFunktion(pt)-MassSigmaFunktion(pt)*fSigmaWidth<m && m<MassMeanFunktion(pt)+MassSigmaFunktion(pt)*fSigmaWidth )
+    {
+        if(!fNSigmaWidth)
+        {
+            AliInfo( Form("fNSigmaWidth equel 0. Class will use default mass window: from %f to %f GeV.", fMassInvMeanMin, fMassInvMeanMax ) ); 
+        }
+
+        FillHistogram("massWindow", fMassInvMeanMin, fMassInvMeanMax);
+        if(fMassInvMeanMin>m && m<fMassInvMeanMax)
         {
             FillHistogram("massWindowPass", 3);
             return true;
@@ -1977,25 +2159,25 @@ Bool_t AliPHOSCorrelations::TestMass(Double_t m, Double_t pt)
             FillHistogram("massWindowPass", 4);
             return false;
         }
-       }
+    }
 } 
 
 //_______________________________________________________________________________
-Double_t AliPHOSCorrelations::MassMeanFunktion(Double_t &pt) const
+Double_t AliPHOSCorrelations::MassMeanFunction(const Double_t &pt) const
 {
        // Parametrization mean of mass window
        return ( fMassMean[0]*pt + fMassMean[1] );
 }
 
 //_______________________________________________________________________________
-Double_t AliPHOSCorrelations::MassSigmaFunktion(Double_t &pt) const
+Double_t AliPHOSCorrelations::MassSigmaFunction(const Double_t &pt) const
 {
        // Parametrization sigma of mass window
-       return ( -1*fMassSigma[3]*TMath::Sqrt(fMassSigma[0]*pt + fMassSigma[1]) + fMassSigma[2] );
+       return ( TMath::Sqrt(fMassSigma[0]*fMassSigma[0]/pt + fMassSigma[1]*fMassSigma[1]/pt/pt + fMassSigma[2]*fMassSigma[2]));
 }
 
 //_____________________________________________________________________________
-void AliPHOSCorrelations::FillHistogram(const char * key,Double_t x)const
+void AliPHOSCorrelations::FillHistogram(const char * key, Double_t x) const
 {
        //FillHistogram
        TH1 * hist = dynamic_cast<TH1*>(fOutputContainer->FindObject(key)) ;
@@ -2006,7 +2188,7 @@ void AliPHOSCorrelations::FillHistogram(const char * key,Double_t x)const
 }
 
 //_____________________________________________________________________________
-void AliPHOSCorrelations::FillHistogram(const char * key,Double_t x,Double_t y)const
+void AliPHOSCorrelations::FillHistogram(const char * key, Double_t x, Double_t y)const
 {
        //FillHistogram
        TH1 * th1 = dynamic_cast<TH1*> (fOutputContainer->FindObject(key));
@@ -2017,7 +2199,7 @@ void AliPHOSCorrelations::FillHistogram(const char * key,Double_t x,Double_t y)c
 }
 
 //_____________________________________________________________________________
-void AliPHOSCorrelations::FillHistogram(const char * key,Double_t x,Double_t y, Double_t z) const
+void AliPHOSCorrelations::FillHistogram(const char * key, Double_t x, Double_t y, Double_t z) const
 {
        //Fills 1D histograms with key
        TObject * obj = fOutputContainer->FindObject(key);
@@ -2040,7 +2222,7 @@ void AliPHOSCorrelations::FillHistogram(const char * key,Double_t x,Double_t y,
 }
 
 //_____________________________________________________________________________
-void AliPHOSCorrelations::FillHistogram(const char * key,Double_t x,Double_t y, Double_t z, Double_t w) const
+void AliPHOSCorrelations::FillHistogram(const char * key, Double_t x,Double_t y, Double_t z, Double_t w) const
 {
        //Fills 1D histograms with key
        TObject * obj = fOutputContainer->FindObject(key);
@@ -2085,8 +2267,9 @@ void AliPHOSCorrelations::SetGeometry()
 }
 
 //_____________________________________________________________________________
-Double_t AliPHOSCorrelations::GetEfficiency(Double_t x) const 
+Double_t AliPHOSCorrelations::GetEfficiency(const Double_t& pt) const 
 {
+       Double_t x = pt;
        //Efficiency for Both2core only!
        if (!fUseEfficiency)
                return 1.;
@@ -2113,13 +2296,13 @@ Double_t AliPHOSCorrelations::GetEfficiency(Double_t x) const
        // 8 bin for pPb13 and 0-100%
        Double_t par8[9] = {6.87095e+06, 8.36553e+06, -3.29572e+06, 2.18688e+06, -739490, 521666, 106661, 0, 0};
                
-        
        Double_t* pFitPoint;
 
+       // TODO: fix functions value below 1 GeV/c.
+       if(x < 1.) x = 1.;
+
        if(fPeriod == kLHC11h)
        {
-               if(x < 1.) x = 1.; 
-
                if (fCentrality <= 5)                                           pFitPoint = &par0[0];
                if (fCentrality > 5 && fCentrality <= 10)       pFitPoint = &par1[0];
                if (fCentrality > 10 && fCentrality <= 20)      pFitPoint = &par2[0];
@@ -2162,7 +2345,7 @@ Double_t AliPHOSCorrelations::GetEfficiency(Double_t x) const
 }
 
 //_____________________________________________________________________________
-Int_t AliPHOSCorrelations::GetModCase(Int_t &mod1, Int_t &mod2) const 
+Int_t AliPHOSCorrelations::GetModCase(const Int_t &mod1, const Int_t &mod2) const 
 {
        // Return modules pair namber.
        if(mod1 == mod2)
@@ -2190,7 +2373,7 @@ Int_t AliPHOSCorrelations::GetModCase(Int_t &mod1, Int_t &mod2) const
 }
 
 //_____________________________________________________________________________
-void AliPHOSCorrelations::TestPi0ME(Int_t ipid, TLorentzVector p12, Int_t modCase)
+void AliPHOSCorrelations::TestPi0ME(const Int_t& ipid, const TLorentzVector& p12, const Int_t& modCase)
 {
        Double_t phiTrigger = p12.Phi() ;
        Double_t etaTrigger = p12.Eta() ;
@@ -2229,7 +2412,7 @@ void AliPHOSCorrelations::ZeroingVariables()
 }
 
 //_____________________________________________________________________________
-void AliPHOSCorrelations::SetMassMeanParametrs(Double_t par[2])                                      
+void AliPHOSCorrelations::SetMassMeanParametrs(const Double_t par[2])                                      
 { 
        for (int i = 0; i < 2; ++i)
        {
@@ -2238,10 +2421,35 @@ void AliPHOSCorrelations::SetMassMeanParametrs(Double_t par[2])
 } 
 
 //_____________________________________________________________________________
-void AliPHOSCorrelations::SetMassSigmaParametrs(Double_t par[4])                                   
+void AliPHOSCorrelations::SetMassSigmaParametrs(const Double_t par[3])                                   
 { 
-       for (int i = 0; i < 4; ++i)
+       for (int i = 0; i < 3; ++i)
        {
                fMassSigma[i] = par[i] ;    
        }                  
 }
+
+//_____________________________________________________________________________
+void AliPHOSCorrelations::FillEventBiningProperties() const
+{
+       // Fill fCentBin, fEMRPBin, fVtxBin.
+       if(fPHOSEvent || fMBEvent)
+    {
+       FillHistogram( "hCentralityBining", fCentBin) ;
+       FillHistogram( "phiRPflatBining",   fEMRPBin) ;
+       FillHistogram( "hVertexZBining",    fVtxBin)  ;
+       if(fPHOSEvent) 
+       {
+               FillHistogram( "hCentralityBiningTrigger", fCentBin) ;
+               FillHistogram( "phiRPflatBiningTrigger",   fEMRPBin) ;
+               FillHistogram( "hVertexZBiningTrigger",    fVtxBin) ;
+       }
+       if(fMBEvent)   
+       {
+               FillHistogram( "hCentralityBiningMB", fCentBin) ;
+               FillHistogram( "phiRPflatBiningMB",   fEMRPBin) ;
+               FillHistogram( "hVertexZBiningMB",    fVtxBin) ;
+       }
+    }
+}
+
index 9bf9df2..18736d6 100644 (file)
@@ -25,6 +25,7 @@ class AliAnalysisUtils;
 class AliEPFlattener;
 class AliAODInputHandler;
 class AliESDInputHandler;
+class AliVTrack;
 
 
 #include "TArrayD.h"
@@ -38,7 +39,6 @@ public:
                               kTriggerMaskSelection, kHasVertex, kHasCentrality, 
                               kHasPHOSClusters, kHasTPCTracks, kPHOSEvent, 
                               kMBEvent, kTotalSelected, kHasAbsVertex } ;
-  enum HibridCheckVeriable  { kOnlyHibridTracks, kWithOutHibridTracks, kAllTracks } ;
   enum PID                  { kPidAll, kPidCPV, kPidDisp, kPidBoth} ;
 
 
@@ -51,20 +51,43 @@ public:
   virtual void   UserCreateOutputObjects() ;
   virtual void   UserExec(Option_t *option) ;
 
-  void SetPeriod(Period period)                                                   { fPeriod = period;                      }
-  void SetCentralityEstimator(const char * centr)                                 { fCentralityEstimator = centr;          }
-  void SetEventMixingRPBinning(UInt_t nBins)                                      { fNEMRPBins = nBins;                    }
-  void SetMaxAbsVertexZ(Float_t z)                                                { fMaxAbsVertexZ = z;                    }
-  void SetSigmaWidth(Double_t sigmaWidth)                                         { fSigmaWidth = sigmaWidth;              }
-  void SetUseEfficiency(Bool_t useEff)                                            { fUseEfficiency = useEff;               }
-  void SetHibridGlobalCheking(Int_t hibridCheck)                                  { fCheckHibridGlobal = hibridCheck;      }
-  void EnableTOFCut(Bool_t enable, Double_t TOFCut)                               { fTOFCutEnabled=enable; fTOFCut=TOFCut; }
-  void SetMassMeanParametrs(Double_t par[2])  ;
-  void SetMassSigmaParametrs(Double_t par[4]) ;
-  void SetPtAssocBins(TArrayD * arr)                                              { fAssocBins.Set(arr->GetSize(), arr->GetArray());    } 
-  void SetMassWindow(Double_t massMean, Double_t massSigma)                       { fMassInvMean = massMean; fMassInvSigma = massSigma; }
+  void SetPeriod(const Period period)                                             { fPeriod = period                     ; }
+  void SetCentralityEstimator(const char * centr)                                 { fCentralityEstimator = centr         ; }
+  void SetEventMixingRPBinning(const UInt_t nBins)                                { fNEMRPBins = nBins                   ; }
+  void SetMaxAbsVertexZ(const Float_t z)                                          { fMaxAbsVertexZ = z                   ; }
+  void SwitchOnPionEfficiency()                                                   { fUseEfficiency = kTRUE               ; }
+  void SwitchOffPionEfficiency()                                                  { fUseEfficiency = kFALSE              ; }
+
+  void EnableTOFCut(const Bool_t enable, const Double_t TOFCut)                   { fTOFCutEnabled=enable; fTOFCut=TOFCut; }
+  void SetSigmaWidth(const Double_t sigmaWidth)                                   { fNSigmaWidth = sigmaWidth            ; }
+  void SetMassMeanParametrs(const Double_t par[2])  ;
+  void SetMassSigmaParametrs(const Double_t par[4]) ;
+  void SetMassWindow(const Double_t massMean, const Double_t massSigma)           { fMassInvMeanMin = massMean; fMassInvMeanMax = massSigma ; }
+  void SetPtAssocBins(TArrayD * arr)                                              { fAssocBins.Set(arr->GetSize(), arr->GetArray())         ; } 
   void SetCentralityBinning(const TArrayD& edges, const TArrayI& nMixed) ;
-  void SetCentralityBorders (double down, double up) ;
+  void SetCentralityBorders(const Double_t& downLimit , const Double_t& upLimit) ;
+
+  void SwitchOnMassParametrisation()                                              { fUseMassWindowParametrisation = true ; }
+  void SwitchOffMassParametrisation()                                             { fUseMassWindowParametrisation = false; }
+
+  ULong_t  GetTrackStatus()                                                 const { return fTrackStatus          ; }
+  void     SetTrackStatus(ULong_t bit)                                            { fTrackStatus = bit           ; }   
+
+  ULong_t  GetTrackFilterMask()                                             const { return fTrackFilterMask      ; }
+  void     SetTrackFilterMask(ULong_t bit)                                        { fTrackFilterMask = bit       ; }
+
+  void     SwitchOnTrackHitSPDSelection()                                         { fSelectSPDHitTracks = kTRUE  ; }
+  void     SwitchOffTrackHitSPDSelection()                                        { fSelectSPDHitTracks = kFALSE ; }
+
+  void     SwitchOnAODTrackSharedClusterSelection()                               { fSelectFractionTPCSharedClusters = kTRUE  ; }
+  void     SwitchOffAODTrackSharedClusterSelection()                              { fSelectFractionTPCSharedClusters = kFALSE ; }
+
+  Float_t  GetTPCSharedClusterFraction()                                    const { return fCutTPCSharedClustersFraction ; }
+  void     SetTPCSharedClusterFraction(Float_t fr)                                { fCutTPCSharedClustersFraction = fr   ; }
+
+  void     SwitchOnAODHybridTrackSelection()                                      { fSelectHybridTracks = kTRUE  ; } 
+  void     SwitchOffAODHybridTrackSelection()                                     { fSelectHybridTracks = kFALSE ; } 
   
 
 protected: 
@@ -78,70 +101,73 @@ protected:
   void FillHistogram( const char * key,Double_t x, Double_t y, Double_t z, Double_t w ) const ;  // Fill 3D histogram witn name key
 
   // Setup hists.
-  void SetHistPtNumTrigger( Int_t  ptMult, Double_t ptMin, Double_t ptMax ) ;                    // Set massive of histograms (1-5).
-  void SetHistPtAssoc     ( Int_t  ptMult, Double_t ptMin, Double_t ptMax ) ;                    // Set massive of histograms (1-5).
-  void SetHistMass        ( Int_t  ptMult, Double_t ptMin, Double_t ptMax ) ;                    // Set other histograms.
-  void SetHistEtaPhi() ;                                                                         // Set hists, with track's and cluster's angle distributions.
-  void SetHistPHOSClusterMap() ;                                                                 // XZE distribution in PHOS.
+  void SetHistPtNumTrigger( const Int_t& ptMult, const Double_t& ptMin, const Double_t& ptMax ) const ; // Set trigger's number of histograms (1-5).
+  void SetHistPtAssoc     ( const Int_t& ptMult, const Double_t& ptMin, const Double_t& ptMax ) const ; // Set pt associated of histograms (1-5).
+  void SetHistMass        ( const Int_t& ptMult, const Double_t& ptMin, const Double_t& ptMax ) const ; // Set mass histograms.
+  void SetHistEtaPhi      ( const Int_t& ptMult, const Double_t& ptMin, const Double_t& ptMax ) const ; // Set hists with track's (pt depend.) and cluster's angle distributions.
+  void SetHistPHOSClusterMap() ;                                                                        // XZE distribution in PHOS.
 
   // Logical and debug.
   void LogProgress    ( int step ) ;
-  void LogSelection   ( int step , int internalRunNumber ) ;
-
+  void LogSelection   ( const int& step , const int& internalRunNumber ) const ;
 
   // Step 1(done once):
-  Int_t ConvertToInternalRunNumber(Int_t run) ;                                                  // Convert run number to local number. 
-  void SetESDTrackCuts() ;                                                                       // AliESDtrack cuts ( for esd data )
+  Int_t ConvertToInternalRunNumber(const Int_t& run) const ;                                     // Convert run number to local number. 
+  void  SetESDTrackCuts() ;                                                                      // AliESDtrack cuts ( for esd data )
 
   // Step 2: Preparation variables for new event
   void ZeroingVariables() ;
   void SetGeometry();                                                                            // Initialize the PHOS geometry
 
-
   // Step 3: Event trigger selection
   Bool_t RejectTriggerMaskSelection() ;                                                          // Select event trigger and reject.
 
   // Step 4: Vertex
   void   SetVertex() ;                                                                           // Find vertex of event.
-  Bool_t RejectEventVertex() ;
+  Bool_t RejectEventVertex()         const ;
+
+  void   SetVertexBinning() ;                                                                    // Define vertex bins by their edges
+  Int_t  GetVertexBin(const TVector3&  vertexVector) ;                                           // Find vertex bin
+  UInt_t GetNumberOfVertexBins()     const { return fNVtxZBins ; }                               // Get number of vertex bins.
 
   // Step 5: Centrality
   void   SetCentrality() ;                                                                       // Find centrality of event.
-  Bool_t RejectEventCentrality() ; 
+  Bool_t RejectEventCentrality()     const; 
 
-  Int_t  GetCentralityBin(Float_t centralityV0M) ;                                               // Find centrality bin.
+  Int_t  GetCentralityBin(const Float_t& centralityV0M) ;                                        // Find centrality bin.
   UInt_t GetNumberOfCentralityBins() const { return fCentEdges.GetSize()-1 ; }                   // Get number of centrality bins.
 
   // Step 6: Reaction Plane
-  void  EvalReactionPlane() ;                                                                    // Find RP of event.
-  Int_t GetRPBin() ;                                                                             // Return RP (rad).
+  void   EvalReactionPlane() ;                                                                   // Find RP of event.
+  Int_t  GetRPBin() ;                                                                            // Return RP (rad).
+  UInt_t GetNumberOfRPBins()         const { return fNEMRPBins ; }                               // Get number of RP bins.
 
   // Step 7: Event Photons (PHOS Clusters) selection
-  virtual void SelectPhotonClusters() ;
+  void SelectPhotonClusters() ;
 
   // Step 8: Event Associated particles (TPC Tracks) selection
   void SelectAccosiatedTracks() ;
 
-  // Step 9: Fill TPC's track mask
-  void FillTrackEtaPhi() ;                                                                       // Distribution by track's angles.
+  // Step 9: Fill TPC's track mask and control bining hists.
+  void FillTrackEtaPhi()             const;                                                      // Distribution by track's angles.
+  void FillEventBiningProperties()   const ;                                                     // Fill fCentBin, fEMRPBin, fVtxBin.
 
   // Step 10: Extract one most energetic pi0 candidate in this event. 
   void SelectTriggerPi0ME() ;                                                                    // Select most energetic Pi0 in event.
 
-  void  TestPi0ME(Int_t ipid, TLorentzVector p12, Int_t modCase) ;                              // Compare Pi0 particles and remember most energetic in current event.
+  void  TestPi0ME(const Int_t& ipid, const TLorentzVector& p12, const Int_t& modCase) ;          // Compare Pi0 particles and remember most energetic in current event.
  
   void  SetMEExists(const Int_t pid)                        { fMEExists[pid] = true     ; }
   void  SetMEPhi(const Int_t pid, const Double_t phi)       { fMEPhi[pid] = phi         ; }
   void  SetMEEta(const Int_t pid, const Double_t eta)       { fMEEta[pid] = eta         ; }
-  void  SetMEPt(const Int_t pid, const Double_t pT)         { fMEPt[pid] = pT           ; }
+  void  SetMEPt( const Int_t pid, const Double_t pT)        { fMEPt[pid] = pT           ; }
   void  SetMEModCase(const Int_t pid, const Int_t modcase)  { fMEModCase[pid] = modcase ; }
 
-  Bool_t      GetMEExists(const Int_t pid)    const { return fMEExists[pid]   ; }
-  Double_t    GetMEPhi(const Int_t pid)       const { return fMEPhi[pid]      ; }
-  Double_t    GetMEEta(const Int_t pid)       const { return fMEEta[pid]      ; }
-  Double_t    GetMEPt(const Int_t pid)        const { return fMEPt[pid]       ; }
-  Int_t       GetMEModCase(const Int_t pid)   const { return fMEModCase[pid]  ; }
+  Bool_t   GetMEExists(const Int_t pid)               const { return fMEExists[pid]     ; }
+  Double_t GetMEPhi(const Int_t pid)                  const { return fMEPhi[pid]        ; }
+  Double_t GetMEEta(const Int_t pid)                  const { return fMEEta[pid]        ; }
+  Double_t GetMEPt(const Int_t pid)                   const { return fMEPt[pid]         ; }
+  Int_t    GetMEModCase(const Int_t pid)              const { return fMEModCase[pid]    ; }
 
   // Step 11: Start correlation analysis.
   void ConsiderPi0s() ;                       // Consider the most energetic Pi0 in this event with all tracks of this event.
@@ -154,23 +180,19 @@ protected:
   void UpdateTrackLists() ;                   // Fill Tracks in MIXing pull.
 
 
+  Bool_t TestMass(const Double_t& m, const Double_t& pt)  const ;                                // Check if mair in pi0 peak window.
 
-  Bool_t TestMass(Double_t m, Double_t pt) ;                                                     // Check if mair in pi0 peak window.
-
-  Double_t MassMeanFunktion(Double_t &pt) const ;                                                // Parametrization mean of mass window.
-  Double_t MassSigmaFunktion(Double_t &pt) const ;                                               // Parametrization sigma of mass window.
-
-  Double_t GetAssocBin(Double_t pt) const ;                                                      //Calculates bin for current associated particle pT.
+  Double_t MassMeanFunction(const Double_t &pt)           const ;                                // Parametrization mean of mass window.
+  Double_t MassSigmaFunction(const Double_t &pt)          const ;                                // Parametrization sigma of mass window.
+  Double_t GetAssocBin(const Double_t& pt)                const ;                                // Calculates bin for current associated particle pT.
+  Double_t GetEfficiency(const Double_t& pt)              const ;                                // Return Pi0 efficiency for current pT (PID: both2core only).
+  Int_t GetModCase(const Int_t &mod1, const Int_t &mod2)  const ;                                // Produce part of module neme for pTetaPhi histogram.
 
-  Double_t GetEfficiency(Double_t pt) const ;                                                    // Return Pi0 efficiency for current pT (PID: both2core only).
+  TList* GetCaloPhotonsPHOSList(const UInt_t vtxBin, const UInt_t centBin, const UInt_t rpBin) ; // Return photons from PHOS list from previous events.
+  TList* GetTracksTPCList(const UInt_t vtxBin, const UInt_t centBin, const UInt_t rpBin) ;       // Return tracks from TPC list from previous events.
 
-  Int_t GetModCase(Int_t &mod1, Int_t &mod2) const ;                                             // Produce part of module neme for pTetaPhi histogram.
-
-  TList* GetCaloPhotonsPHOSList(UInt_t vtxBin, UInt_t centBin, UInt_t rpBin) ;                   // Return photons from PHOS list from previous events.
-  TList* GetTracksTPCList(UInt_t vtxBin, UInt_t centBin, UInt_t rpBin) ;                         // Return tracks from TPC list from previous events.
-
-  Bool_t SelectESDTrack(AliESDtrack * t) const ;                                                 // Estimate if this track can be used for the RP calculation.
-  Bool_t SelectAODTrack(AliAODTrack * t) const ;                                                 // Estimate if this track can be used for the RP calculation.
+  Bool_t SelectESDTrack(const AliESDtrack * t) const ;                                           // Estimate if this track can be used for the RP calculation.
+  Bool_t SelectAODTrack(const AliAODTrack * t) const ;                                           // Estimate if this track can be used for the RP calculation.
 
   AliAnalysisUtils* GetAnalysisUtils() ;
 
@@ -199,6 +221,7 @@ private:
 
   // Binning [vtx, centrality, reaction-plane]
   Int_t     fNVtxZBins;                                 // Number of Z vertex bins
+  TArrayD   fVtxEdges;                                  //! Vertex bin Lower edges
   TArrayD   fCentEdges;                                 //! Centrality Bin Lower edges
   TArrayI   fCentNMixed;                                // Number of mixed events for each centrality bin
   UInt_t    fNEMRPBins;                                 // Binning of Reaction plane
@@ -221,9 +244,6 @@ private:
   Double_t  fCentralityLowLimit;                        // Ignore Centrality less % 
   Double_t  fCentralityHightLimit;                      // Ignore Centrality over % 
 
-  AliESDtrackCuts *   fESDtrackCuts;                    // Track cut
-  Int_t     fCheckHibridGlobal ;                        // For checking/dischecking/passingcheck: t->IsHybridGlobalConstrainedGlobal();
-
   Double_t  fMinClusterEnergy;                          // Min energy PHOS's cluster
   Double_t  fMinBCDistance;                             // Min distance to nearest bad channel
   Int_t     fMinNCells;                                 // Min count of Cells in cluster
@@ -231,13 +251,14 @@ private:
   Bool_t    fTOFCutEnabled;                             // Use time of flight or not?
   Double_t  fTOFCut;                                    // Max time of flight
 
-  Double_t fMassInvMean ;                               // Mass Pi0
-  Double_t fMassInvSigma ;                              // Mass width Pi0
-  Double_t fSigmaWidth;                                 // Width in sigma (*N). If fSigmaWidth = 0 code will use fMassInvMean+/-fMassInvSigma
+  Bool_t   fUseMassWindowParametrisation;               // Use parametrization? (Else use fixed mass borders)
+  Double_t fMassInvMeanMin ;                            // Mass Pi0 minimum window value
+  Double_t fMassInvMeanMax ;                            // Mass Pi0 maximum window value
+  Double_t fNSigmaWidth;                                // Width in sigma (*N). If fNSigmaWidth = 0 code will use window fMassInvMeanMin fMassInvMeanMax
 
   // Funktion of mass window parametrs: [mass, pt]
   Double_t  fMassMean[2];                               // Mass mean parametrisation
-  Double_t  fMassSigma[4];                              // Mass sigma parametrisation
+  Double_t  fMassSigma[3];                              // Mass sigma parametrisation
 
   // ME Pi0 selection veriables ([n] = pid).
   Bool_t    fMEExists[4];                               // Does trigger Pi0 candidate exists?
@@ -248,7 +269,19 @@ private:
 
   Bool_t    fUseEfficiency ;                            // Use efficiensy correction during analysis
 
+  AliESDtrackCuts *  fESDtrackCuts ;                    // Track cut
+  
+  Bool_t    fSelectHybridTracks ;                       // Select CTS tracks of type hybrid (only for AODs)
+
+  ULong_t   fTrackStatus        ;                       // the statusflag contains a set of flags  which show which parts of the tracking algorithm were successful.
+  ULong_t   fTrackFilterMask    ;                       // The filterbits encode combinations of cuts on the AOD, such as the hybrid track selection.
+  Bool_t    fSelectSPDHitTracks ;                       // Ensure that track hits SPD layers
+  Bool_t    fSelectFractionTPCSharedClusters ;          // Accept only TPC tracks with over a given fraction of shared clusters
+  Float_t   fCutTPCSharedClustersFraction    ;          // Fraction of TPC shared clusters to be accepted.
+
+
   ClassDef(AliPHOSCorrelations, 2);                     // PHOS analysis task
 };
 
 #endif
+