]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/CaloTrackCorrelations/AliAnaPi0EbE.h
add histograms to check the correlation between reconstructed and primary energy...
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaPi0EbE.h
index b5409f4de39d6652726a04cfacb7948939b53f33..6be20925bae8c2d8acd01a77d8108f1832ed3a05 100755 (executable)
@@ -32,7 +32,7 @@ class AliAnaPi0EbE : public AliAnaCaloTrackCorrBaseClass {
   
   TList      *   GetCreateOutputObjects();
   
-  Int_t          GetMCIndex(const Int_t aodTag);
+  Int_t          GetMCIndex(Int_t aodTag);
   
   void           Init();
   
@@ -46,14 +46,13 @@ class AliAnaPi0EbE : public AliAnaCaloTrackCorrBaseClass {
   
   // Main
   
-  void           FillPileUpHistograms(const Float_t energy, const Float_t time) ;
+  void           FillPileUpHistograms(Float_t pt, Float_t time, AliVCluster * c) ;
   
-  void           FillRejectedClusterHistograms(const TLorentzVector mom, const Int_t mctag);
+  void           FillRejectedClusterHistograms(TLorentzVector mom, Int_t mctag, Int_t nMaxima);
   
-  void           FillSelectedClusterHistograms(AliVCluster* cluster, 
-                                               const Int_t nLocMax,
-                                               const Int_t tag,
-                                               const Float_t asy = 0);
+  void           FillSelectedClusterHistograms(AliVCluster* cluster, Float_t pt,
+                                               Int_t nLocMax,        Int_t tag,
+                                               Float_t asy = 0);
     
   void           FillWeightHistograms(AliVCluster *clus);
     
@@ -115,7 +114,14 @@ class AliAnaPi0EbE : public AliAnaCaloTrackCorrBaseClass {
   void           SwitchOnOnlySimpleSSHistoFill()             { fFillOnlySimpleSSHisto = kTRUE  ; }
   void           SwitchOffOnlySimpleHistoFill()              { fFillOnlySimpleSSHisto = kFALSE ; }
 
+  void           SwitchOnFillEMCALBCHistograms()             { fFillEMCALBCHistograms = kTRUE  ; }
+  void           SwitchOffFillEMCALBCHistograms()            { fFillEMCALBCHistograms = kFALSE ; }
   
+  void           SwitchOnSplitClusterDistToBad()             { fCheckSplitDistToBad   = kTRUE  ; }
+  void           SwitchOffSplitClusterDistToBad()            { fCheckSplitDistToBad   = kFALSE ; }
+
+  void           SetNumberOfSuperModules(Int_t nSM)          { fNSuperModules         = nSM    ; }
+
   
   //For histograms
   enum mcTypes   { kmcPhoton = 0, kmcConversion = 1, kmcPi0    = 2,  
@@ -142,98 +148,178 @@ class AliAnaPi0EbE : public AliAnaCaloTrackCorrBaseClass {
   Bool_t         fFillTMHisto;             // Fill track matching plots
   Bool_t         fFillSelectClHisto;       // Fill selected cluster histograms
   Bool_t         fFillOnlySimpleSSHisto;   // Fill selected cluster histograms, selected SS histograms
+  Bool_t         fFillEMCALBCHistograms;   // Fill eta-phi BC dependent histograms
 
-  
   //Only for combination of calorimeter and conversion photons, kIMCaloTracks
   TString        fInputAODGammaConvName;   //  Name of AOD branch with conversion photons
+
+  Bool_t         fCheckSplitDistToBad;     // Check the distance to bad channel and to EMCal borders of split clusters
+  
+  Int_t          fNSuperModules;           // Number of supermodules
   
   //Histograms
   
   TH1F         * fhPt  ;                   //! Number of identified  pi0/eta vs pT
   TH1F         * fhE   ;                   //! Number of identified  pi0/eta vs E
-  TH2F         * fhEEta  ;                 //! E vs eta of identified  pi0/eta 
-  TH2F         * fhEPhi  ;                 //! E vs phi of identified  pi0/eta 
-  TH2F         * fhEtaPhi  ;               //! eta vs phi of identified  pi0/eta 
+  TH2F         * fhPtEta  ;                //! Pt vs eta of identified  pi0/eta
+  TH2F         * fhPtPhi  ;                //! Pt vs phi of identified  pi0/eta
+  TH2F         * fhEtaPhi  ;               //! eta vs phi of identified  pi0/eta
+  TH2F         * fhEtaPhiEMCALBC0  ;       //! Pseudorapidity vs Phi of clusters 
+  TH2F         * fhEtaPhiEMCALBC1  ;       //! Pseudorapidity vs Phi of clusters 
+  TH2F         * fhEtaPhiEMCALBCN  ;       //! Pseudorapidity vs Phi of clusters 
+
+  TH2F         * fhEtaPhiTriggerEMCALBC[11]  ;    //! Pseudorapidity vs Phi of pi0 for E > 2
+  TH2F         * fhTimeTriggerEMCALBC  [11]  ;    //! Time distribution of pi0, when trigger is in a given BC
+  TH2F         * fhTimeTriggerEMCALBCPileUpSPD[11] ; //! Time distribution of pi0, when trigger is in a given BC, tagged as pile-up SPD
+  TH2F         * fhEtaPhiTriggerEMCALBCUM[11]  ;  //! Pseudorapidity vs Phi of pi0 for E > 2, not matched to trigger
+  TH2F         * fhTimeTriggerEMCALBCUM[11]  ;    //! Time distribution of pi0, when trigger is in a given BC, not matched to trigger
+
+  TH2F         * fhTimeTriggerEMCALBC0UMReMatchOpenTime   ; //! Time distribution of pi0s in event, when trigger is not found, rematched open time trigger
+  TH2F         * fhTimeTriggerEMCALBC0UMReMatchCheckNeigh ; //! Time distribution of pi0s in event, when trigger is not found, rematched with neigbour patchs
+  TH2F         * fhTimeTriggerEMCALBC0UMReMatchBoth       ; //! Time distribution of pi0s in event, when trigger is not found, rematched open both
 
   TH2F         * fhPtCentrality ;          //! centrality  vs pi0/eta pT
   TH2F         * fhPtEventPlane ;          //! event plane vs pi0/eta pT
   
   TH1F         * fhPtReject  ;             //! Number of rejected as  pi0/eta vs pT
   TH1F         * fhEReject   ;             //! Number of rejected as  pi0/eta vs E
-  TH2F         * fhEEtaReject  ;           //! E vs eta of rejected as  pi0/eta 
-  TH2F         * fhEPhiReject  ;           //! E vs phi of rejected as  pi0/eta 
+  TH2F         * fhPtEtaReject  ;          //! pT vs eta of rejected as  pi0/eta
+  TH2F         * fhPtPhiReject  ;          //! pT vs phi of rejected as  pi0/eta
   TH2F         * fhEtaPhiReject  ;         //! eta vs phi of rejected as  pi0/eta 
   
   TH2F         * fhMass  ;                 //! pair mass vs E, for all pairs
-  TH2F         * fhAsymmetry ;             //! cluster E vs asymmetry of 2 splitted clusters 
+  TH2F         * fhMassPt  ;               //! pair mass vs pT, for all pairs
+  TH2F         * fhMassSplitPt  ;          //! pair mass vs pT (split), for all pairs
   TH2F         * fhSelectedMass  ;         //! pair mass vs E, for selected pairs
-  TH2F         * fhSelectedAsymmetry  ;    //! cluster E vs asymmetry of 2 splitted clusters, for selected pairs
-  TH1F         * fhSplitE  ;       //! split sub-cluster pair energy sum
-  TH1F         * fhSplitPt  ;      //! split sub-cluster pair pT sum
+  TH2F         * fhSelectedMassPt  ;       //! pair mass vs pT, for selected pairs
+  TH2F         * fhSelectedMassSplitPt  ;  //! pair mass vs pT (split), for selected pairs
+  
+  TH2F         * fhMassPtLocMax[3] ;             //! pair mass vs pT, for all pairs, for each NLM case
+  TH2F         * fhSelectedMassPtLocMax[3] ;     //! pair mass vs pT, for selected pairs, for each NLM case
+  TH2F         * fhSelectedMassPtLocMaxSM[3][22];//! pair mass vs pT, for selected pairs, for each NLM case, for each SM
+  TH2F         * fhMCSelectedMassPtLocMax[6][3] ;//! pair mass vs pT, for selected pairs, vs originating particle
+
+  TH2F         * fhSelectedLambda0PtLocMaxSM[3][22];//! pair mass vs pT, for selected pairs, for each NLM case, for each SM
+
+  TH2F         * fhMassNoOverlap  ;                 //! pair mass vs E, for all pairs, no overlap
+  TH2F         * fhMassPtNoOverlap  ;               //! pair mass vs pT, for all pairs, no overlap
+  TH2F         * fhMassSplitPtNoOverlap  ;          //! pair mass vs pT (split), for all pairs, no overlap
+  TH2F         * fhSelectedMassNoOverlap  ;         //! pair mass vs E, for selected pairs, no overlap
+  TH2F         * fhSelectedMassPtNoOverlap  ;       //! pair mass vs pT, for selected pairs, no overlap
+  TH2F         * fhSelectedMassSplitPtNoOverlap  ;  //! pair mass vs pT (split), for selected pairs, no overlap
+
+  TH2F         * fhMCPi0PtRecoPtPrim;                  //! pt reco vs pt prim for pi0 mother
+  TH2F         * fhMCEtaPtRecoPtPrim;                  //! pt reco vs pt prim for eta mother
+  TH2F         * fhMCPi0PtRecoPtPrimNoOverlap;         //! pt reco vs pt prim for pi0 mother
+  TH2F         * fhMCEtaPtRecoPtPrimNoOverlap;         //! pt reco vs pt prim for eta mother
+
+  TH2F         * fhMCPi0SplitPtRecoPtPrim;             //! pt split reco vs pt prim for pi0 mother
+  TH2F         * fhMCEtaSplitPtRecoPtPrim;             //! pt split reco vs pt prim for eta mother
+  TH2F         * fhMCPi0SplitPtRecoPtPrimNoOverlap;    //! pt split reco vs pt prim for pi0 mother
+  TH2F         * fhMCEtaSplitPtRecoPtPrimNoOverlap;    //! pt split reco vs pt prim for eta mother
+
+  TH2F         * fhMCPi0SelectedPtRecoPtPrim;          //! pt reco vs pt prim for pi0 mother
+  TH2F         * fhMCEtaSelectedPtRecoPtPrim;          //! pt reco vs pt prim for eta mother
+  TH2F         * fhMCPi0SelectedPtRecoPtPrimNoOverlap; //! pt reco vs pt prim for pi0 mother
+  TH2F         * fhMCEtaSelectedPtRecoPtPrimNoOverlap; //! pt reco vs pt prim for eta mother
+  
+  TH2F         * fhMCPi0SelectedSplitPtRecoPtPrim;          //! pt split reco vs pt prim for pi0 mother
+  TH2F         * fhMCEtaSelectedSplitPtRecoPtPrim;          //! pt split reco vs pt prim for eta mother
+  TH2F         * fhMCPi0SelectedSplitPtRecoPtPrimNoOverlap; //! pt split reco vs pt prim for pi0 mother
+  TH2F         * fhMCEtaSelectedSplitPtRecoPtPrimNoOverlap; //! pt split reco vs pt prim for eta mother
+  
+  TH2F         * fhMCPi0PtRecoPtPrimLocMax[3];              //! pt reco vs pt prim for pi0 mother, vs NLM
+  TH2F         * fhMCEtaPtRecoPtPrimLocMax[3];              //! pt reco vs pt prim for eta mother, vs NLM
+  TH2F         * fhMCPi0SplitPtRecoPtPrimLocMax[3];         //! pt split reco vs pt prim for pi0 mother, vs NLM
+  TH2F         * fhMCEtaSplitPtRecoPtPrimLocMax[3];         //! pt split reco vs pt prim for eta mother, vs NLM
+  TH2F         * fhMCPi0SelectedPtRecoPtPrimLocMax[3];      //! pt reco vs pt prim for pi0 mother, vs NLM
+  TH2F         * fhMCEtaSelectedPtRecoPtPrimLocMax[3];      //! pt reco vs pt prim for eta mother, vs NLM
+  TH2F         * fhMCPi0SelectedSplitPtRecoPtPrimLocMax[3]; //! pt split reco vs pt prim for pi0 mother, vs NLM
+  TH2F         * fhMCEtaSelectedSplitPtRecoPtPrimLocMax[3]; //! pt split reco vs pt prim for eta mother, vs NLM
+
+  TH2F         * fhAsymmetry ;             //! cluster pT vs asymmetry of 2 splitted clusters
+  TH2F         * fhSelectedAsymmetry  ;    //! cluster pT vs asymmetry of 2 splitted clusters, for selected pairs
+  TH1F         * fhSplitE  ;               //! split sub-cluster pair energy sum
+  TH1F         * fhSplitPt  ;              //! split sub-cluster pair pT sum
+  TH2F         * fhSplitPtEta  ;           //! split sub-cluster pair pT sum vs eta
+  TH2F         * fhSplitPtPhi  ;           //! split sub-cluster pair pT sum vs phi
+  TH2F         * fhNLocMaxSplitPt  ;       //! split sub-cluster pair pT sum, as a function of n maxima
   
   TH1F         * fhPtDecay  ;              //! Number of identified  pi0/eta decay photons vs pT
   TH1F         * fhEDecay   ;              //! Number of identified  pi0/eta decay photons vs E
   
-  TH2F         * fhEDispersion ;           //! E vs disp of selected cluster
-  TH2F         * fhELambda0 ;              //! E vs lambda0 of selected cluster 
-  TH2F         * fhELambda1 ;              //! E vs lambda1 of selected cluster 
-  TH2F         * fhELambda0NoTRD ;         //! E vs lambda0 of selected cluster, not behind TRD 
-  TH2F         * fhELambda0FracMaxCellCut ;//! E vs lambda0 of selected cluster, fraction of cluster energy in max cell cut 
-  TH2F         * fhEFracMaxCell ;          //! E vs frac max cell of selected cluster 
-  TH2F         * fhEFracMaxCellNoTRD ;     //! E vs frac max cell of selected cluster, not behind TRD  
-  TH2F         * fhENCells;                //! E vs N cells in selected cluster
-  TH2F         * fhETime;                  //! E vs Time of selected cluster 
-  TH2F         * fhEPairDiffTime;          //! E vs Pair of clusters time difference vs E
-  
-  TH2F         * fhDispEtaE ;              //! shower dispersion in eta direction
-  TH2F         * fhDispPhiE ;              //! shower dispersion in phi direction
-  TH2F         * fhLambda0DispEta[7] ;     //! shower shape correlation l0 vs disp eta
-  TH2F         * fhLambda0DispPhi[7] ;     //! shower shape correlation l0 vs disp phi
-  TH2F         * fhSumEtaE ;               //! shower dispersion in eta direction
-  TH2F         * fhSumPhiE ;               //! shower dispersion in phi direction
-  TH2F         * fhSumEtaPhiE ;            //! shower dispersion in eta and phi direction
-  TH2F         * fhDispEtaPhiDiffE ;       //! shower dispersion eta - phi
-  TH2F         * fhSphericityE ;           //! shower sphericity in eta vs phi
-  TH2F         * fhDispEtaDispPhi[7] ;     //! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
-  TH2F         * fhAsymmetryLambda0[7] ;   //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
-  TH2F         * fhAsymmetryDispEta[7] ;   //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
-  TH2F         * fhAsymmetryDispPhi[7] ;   //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
+  TH2F         * fhPtDispersion ;           //! pT vs disp of selected cluster
+  TH2F         * fhPtLambda0 ;              //! pT vs lambda0 of selected cluster 
+  TH2F         * fhPtLambda1 ;              //! pT vs lambda1 of selected cluster 
+  TH2F         * fhPtLambda0NoTRD ;         //! pT vs lambda0 of selected cluster, not behind TRD 
+  TH2F         * fhPtLambda0FracMaxCellCut ;//! pT vs lambda0 of selected cluster, fraction of cluster energy in max cell cut 
+  TH2F         * fhPtFracMaxCell ;          //! pT vs frac max cell of selected cluster 
+  TH2F         * fhPtFracMaxCellNoTRD ;     //! pT vs frac max cell of selected cluster, not behind TRD  
+  TH2F         * fhPtNCells;                //! pT vs N cells in selected cluster
+  TH2F         * fhPtTime;                  //! pT vs Time of selected cluster 
+  TH2F         * fhEPairDiffTime;           //! E pair vs Pair of clusters time difference vs E
+  
+  TH2F         * fhPtDispEta ;              //! shower dispersion in eta direction
+  TH2F         * fhPtDispPhi ;              //! shower dispersion in phi direction
+  TH2F         * fhLambda0DispEta[7] ;      //! shower shape correlation l0 vs disp eta
+  TH2F         * fhLambda0DispPhi[7] ;      //! shower shape correlation l0 vs disp phi
+  TH2F         * fhPtSumEta ;               //! shower dispersion in eta direction
+  TH2F         * fhPtSumPhi ;               //! shower dispersion in phi direction
+  TH2F         * fhPtSumEtaPhi ;            //! shower dispersion in eta and phi direction
+  TH2F         * fhPtDispEtaPhiDiff ;       //! shower dispersion eta - phi
+  TH2F         * fhPtSphericity ;           //! shower sphericity in eta vs phi
+  TH2F         * fhDispEtaDispPhi[7] ;      //! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
+  TH2F         * fhAsymmetryLambda0[7] ;    //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
+  TH2F         * fhAsymmetryDispEta[7] ;    //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
+  TH2F         * fhAsymmetryDispPhi[7] ;    //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
 
   //MC histograms
   
-  TH2F         * fhEMCLambda0[6] ;            //! E vs lambda0 of pi0 pairs but really from MC particle
-  TH2F         * fhEMCLambda1[6] ;            //! E vs lambda1 of pi0 pairs but really from MC particle
-  TH2F         * fhEMCDispersion[6] ;         //! E vs dispersion of pi0 pairs but really from MC particle
-  TH2F         * fhEMCLambda0NoTRD[6] ;         //! E vs lambda0 of pi0 pairs but really from MC particle, not behind TRD
-  TH2F         * fhEMCLambda0FracMaxCellCut[6] ;//! E vs lambda0 of pi0 pairs but really from MC particle, fraction of cluster energy in max cell cut
-  TH2F         * fhEMCFracMaxCell[6] ;        //! E vs fraction of max cell 
+  TH2F         * fhMCPtLambda0[6] ;              //! pT vs lambda0 of pi0 pairs but really from MC particle
+  TH2F         * fhMCPtLambda1[6] ;              //! pT vs lambda1 of pi0 pairs but really from MC particle
+  TH2F         * fhMCPtDispersion[6] ;           //! pT vs dispersion of pi0 pairs but really from MC particle
+  TH2F         * fhMCPtLambda0NoTRD[6] ;         //! pT vs lambda0 of pi0 pairs but really from MC particle, not behind TRD
+  TH2F         * fhMCPtLambda0FracMaxCellCut[6] ;//! pT vs lambda0 of pi0 pairs but really from MC particle, fraction of cluster energy in max cell cut
+  TH2F         * fhMCPtFracMaxCell[6] ;       //! pT vs fraction of max cell
   
-  TH2F         * fhMCEDispEta[6] ;            //! shower dispersion in eta direction
-  TH2F         * fhMCEDispPhi[6] ;            //! shower dispersion in phi direction
+  TH2F         * fhMCPtDispEta[6] ;           //! shower dispersion in eta direction
+  TH2F         * fhMCPtDispPhi[6] ;           //! shower dispersion in phi direction
   TH2F         * fhMCLambda0DispEta[7][6] ;   //! shower shape correlation l0 vs disp eta
   TH2F         * fhMCLambda0DispPhi[7][6] ;   //! shower shape correlation l0 vs disp phi
-  TH2F         * fhMCESumEtaPhi[6] ;          //! shower dispersion in eta vs phi direction
-  TH2F         * fhMCEDispEtaPhiDiff[6] ;     //! shower dispersion in eta -phi direction
-  TH2F         * fhMCESphericity[6] ;         //! shower sphericity, eta vs phi
+  TH2F         * fhMCPtSumEtaPhi[6] ;         //! shower dispersion in eta vs phi direction
+  TH2F         * fhMCPtDispEtaPhiDiff[6] ;    //! shower dispersion in eta -phi direction
+  TH2F         * fhMCPtSphericity[6] ;        //! shower sphericity, eta vs phi
   TH2F         * fhMCDispEtaDispPhi[7][6] ;   //! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
-  TH2F         * fhMCEAsymmetry[6] ;          //! E asymmetry of 2 splitted clusters vs cluster E
+  TH2F         * fhMCPtAsymmetry[6] ;         //! E asymmetry of 2 splitted clusters vs cluster pT
   TH2F         * fhMCAsymmetryLambda0[7][6] ; //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
   TH2F         * fhMCAsymmetryDispEta[7][6] ; //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
   TH2F         * fhMCAsymmetryDispPhi[7][6] ; //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
   
   TH1F         * fhMCE[6];                    //! Number of identified as pi0 vs E coming from X
   TH1F         * fhMCPt[6];                   //! Number of identified as pi0 vs Pt coming from X
-  TH2F         * fhMCPhi[6];                  //! Phi of identified as pi0, coming from X
-  TH2F         * fhMCEta[6];                  //! eta of identified as pi0, coming from X
+  TH2F         * fhMCPtPhi[6];                //! pt vs phi of identified as pi0, coming from X
+  TH2F         * fhMCPtEta[6];                //! pt vs eta of identified as pi0, coming from X
   TH1F         * fhMCEReject[6];              //! Number of rejected as pi0 vs E coming from X
   TH1F         * fhMCPtReject[6];             //! Number of rejected as pi0 vs Pt coming from X
 
   TH1F         * fhMCSplitE[6];               //! Number of identified as pi0 vs sum E  split coming from X
   TH1F         * fhMCSplitPt[6];              //! Number of identified as pi0 vs sum Pt split coming from X
+  TH2F         * fhMCSplitPtPhi[6];           //! pt vs phi of identified as pi0, coming from X
+  TH2F         * fhMCSplitPtEta[6];           //! pt vs eta of identified as pi0, coming from X
+  TH2F         * fhMCNLocMaxSplitPt[6];       //! Number of identified as pi0 vs sum Pt split coming from X, for different NLM
+  
+  TH2F         * fhMCMassPt[6];               //! pair pT vs Mass coming from X
+  TH2F         * fhMCMassSplitPt[6];          //! pair pT (split) vs Mass coming from X
+  TH2F         * fhMCSelectedMassPt[6];       //! selected pair pT vs Mass coming from X
+  TH2F         * fhMCSelectedMassSplitPt[6];  //! selected pair pT (split) vs Mass coming from X
 
+  TH2F         * fhMCMassPtNoOverlap[6];               //! pair pT vs Mass coming from X, no random particles overlap
+  TH2F         * fhMCMassSplitPtNoOverlap[6];          //! pair pT (split) vs Mass coming from X, no random particles overlap
+  TH2F         * fhMCSelectedMassPtNoOverlap[6];       //! selected pair pT vs Mass coming from X, no random particles overlap
+  TH2F         * fhMCSelectedMassSplitPtNoOverlap[6];  //! selected pair pT (split) vs Mass coming from X, no random particles overlap
   
   TH2F         * fhMCPtCentrality[6] ;        //! centrality  vs pi0/eta pT  coming from X
-
   
   TH2F         * fhMCPi0PtGenRecoFraction;    //! SS id, clusters id as pi0 (eta), coming from 2 photon, pi0 primary, pt vs E prim pi0 / E reco
   TH2F         * fhMCEtaPtGenRecoFraction;    //! SS id, clusters id as pi0 (eta), coming from 2 photon, eta primary, pt vs E prim eta / E reco  
@@ -261,40 +347,64 @@ class AliAnaPi0EbE : public AliAnaCaloTrackCorrBaseClass {
   TH2F         * fhTrackMatchedDEta     ;  //! Eta distance between track and cluster vs cluster E
   TH2F         * fhTrackMatchedDPhi     ;  //! Phi distance between track and cluster vs cluster E
   TH2F         * fhTrackMatchedDEtaDPhi ;  //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV
-  TH2F         * fhTrackMatchedMCParticle; //! Trace origin of matched particle
-  TH2F         * fhdEdx  ;                 //! matched track dEdx vs cluster E 
+  TH2F         * fhTrackMatchedDEtaPos  ;  //! Eta distance between track and cluster vs cluster E
+  TH2F         * fhTrackMatchedDPhiPos  ;  //! Phi distance between track and cluster vs cluster E
+  TH2F         * fhTrackMatchedDEtaDPhiPos ; //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV
+  TH2F         * fhTrackMatchedDEtaNeg  ;  //! Eta distance between track and cluster vs cluster E
+  TH2F         * fhTrackMatchedDPhiNeg  ;  //! Phi distance between track and cluster vs cluster E
+  TH2F         * fhTrackMatchedDEtaDPhiNeg ; //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV
+  
+  TH2F         * fhTrackMatchedMCParticlePt;   //! Trace origin of matched particle, energy
+  TH2F         * fhTrackMatchedMCParticleDEta; //! Trace origin of matched particle, eta residual
+  TH2F         * fhTrackMatchedMCParticleDPhi; //! Trace origin of matched particle, phi residual
+  TH2F         * fhdEdx  ;                 //! matched track dEdx vs cluster E
   TH2F         * fhEOverP;                 //! matched track E cluster over P track vs cluster E
   TH2F         * fhEOverPNoTRD;                 //! matched track E cluster over P track vs cluster E, not behind TRD 
 
   // Local maxima
-  TH2F         * fhNLocMax;                //! number of maxima in selected clusters
-  TH2F         * fhELambda0LocMax[3] ;     //! E vs lambda0 of selected cluster, 1,2,>2 local maxima in cluster 
-  TH2F         * fhELambda1LocMax[3] ;     //! E vs lambda1 of selected cluster, 1,2,>2 local maxima in cluster 
-  TH2F         * fhEDispersionLocMax[3] ;  //! E vs lambda1 of selected cluster, 1,2,>2 local maxima in cluster 
-  TH2F         * fhEDispEtaLocMax[3] ;     //! E vs eta dispersion of selected cluster, 1,2,>2 local maxima in cluster 
-  TH2F         * fhEDispPhiLocMax[3] ;     //! E vs phi dispersion of selected cluster, 1,2,>2 local maxima in cluster 
-  TH2F         * fhESumEtaPhiLocMax[3] ;   //! E vs dispersion in eta and phi direction
-  TH2F         * fhEDispEtaPhiDiffLocMax[3] ; //! E vs dispersion eta - phi
-  TH2F         * fhESphericityLocMax[3] ;  //! E vs sphericity in eta vs phi  
-  TH2F         * fhEAsymmetryLocMax[3] ;   //! E asymmetry of 2 splitted clusters vs cluster E for different NLM
+  TH2F         * fhNLocMaxPt;               //! number of maxima in selected clusters
+  TH2F         * fhNLocMaxPtSM[22] ;        //! number of maxima in selected clusters, per super module
+  TH2F         * fhMCNLocMaxPt[6];          //! number of maxima in selected clusters, vs originating particle
+  TH2F         * fhPtLambda0LocMax[3] ;     //! pT vs lambda0 of selected cluster, 1,2,>2 local maxima in cluster
+  TH2F         * fhMCPtLambda0LocMax[6][3] ;//! pT vs lambda0 of selected cluster, 1,2,>2 local maxima in cluster, vs originating particle
+  TH2F         * fhPtLambda1LocMax[3] ;     //! pT vs lambda1 of selected cluster, 1,2,>2 local maxima in cluster
+  TH2F         * fhPtDispersionLocMax[3] ;  //! pT vs lambda1 of selected cluster, 1,2,>2 local maxima in cluster 
+  TH2F         * fhPtDispEtaLocMax[3] ;     //! pT vs eta dispersion of selected cluster, 1,2,>2 local maxima in cluster 
+  TH2F         * fhPtDispPhiLocMax[3] ;     //! pT vs phi dispersion of selected cluster, 1,2,>2 local maxima in cluster 
+  TH2F         * fhPtSumEtaPhiLocMax[3] ;   //! pT vs dispersion in eta and phi direction
+  TH2F         * fhPtDispEtaPhiDiffLocMax[3] ; //! pT vs dispersion eta - phi
+  TH2F         * fhPtSphericityLocMax[3] ;  //! pT vs sphericity in eta vs phi  
+  TH2F         * fhPtAsymmetryLocMax[3] ;   //! E asymmetry of 2 splitted clusters vs cluster E for different NLM
 
   TH2F         * fhMassPairLocMax[8];      //! pair mass, origin is same pi0, combine clusters depending on number of maxima
-
+  
+  TH2F         * fhNLocMaxPtReject;              //! number of maxima in selected clusters
+  TH2F         * fhMCNLocMaxPtReject[6];         //! number of maxima in selected clusters
+  
   // Pile-up
-  TH1F         * fhPtPi0PileUp[7];                //! pT distribution of selected pi0/eta
-  TH2F         * fhTimeENoCut;                    //! time of cluster vs E, no cut
-  TH2F         * fhTimeESPD;                      //! time of cluster vs E, IsSPDPileUp
-  TH2F         * fhTimeESPDMulti;                 //! time of cluster vs E, IsSPDPileUpMulti
+  TH1F         * fhPtPileUp[7];                   //! pT distribution of selected pi0/eta
+  TH2F         * fhPtCellTimePileUp[7];           //! pT vs Time inside cluster, before any selection, not max cell
+  TH2F         * fhPtTimeDiffPileUp[7];           //! pT vs Time difference inside cluster, before any selection
+  TH2F         * fhTimePtNoCut;                   //! time of cluster vs pT, no cut
+  TH2F         * fhTimePtSPD;                     //! time of cluster vs pT, IsSPDPileUp
+  TH2F         * fhTimePtSPDMulti;                //! time of cluster vs pT, IsSPDPileUpMulti
   TH2F         * fhTimeNPileUpVertSPD;            //! time of cluster vs n pile-up vertices from SPD
   TH2F         * fhTimeNPileUpVertTrack;          //! time of cluster vs n pile-up vertices from Tracks
   TH2F         * fhTimeNPileUpVertContributors;   //! time of cluster vs n pile-up vertex from SPD contributors
   TH2F         * fhTimePileUpMainVertexZDistance; //! time of cluster vs difference of z main vertex and pile-up vertex 
   TH2F         * fhTimePileUpMainVertexZDiamond;  //! time of cluster vs difference of z diamond and pile-up vertex 
   
+  TH2F         * fhPtNPileUpSPDVtx;                  //! cluster pt vs number of spd pile-up vertices
+  TH2F         * fhPtNPileUpTrkVtx;               //! cluster pt vs number of track pile-up vertices
+  TH2F         * fhPtNPileUpSPDVtxTimeCut;           //! cluster pt vs number of spd pile-up vertices, time cut +-25 ns
+  TH2F         * fhPtNPileUpTrkVtxTimeCut;        //! cluster pt vs number of track pile-up vertices, time cut +- 25 ns                
+  TH2F         * fhPtNPileUpSPDVtxTimeCut2;          //! cluster pt vs number of spd pile-up vertices, time cut +-75 ns
+  TH2F         * fhPtNPileUpTrkVtxTimeCut2;       //! cluster pt vs number of track pile-up vertices, time cut +- 75 ns
+  
   AliAnaPi0EbE(              const AliAnaPi0EbE & pi0ebe) ; // cpy ctor
   AliAnaPi0EbE & operator = (const AliAnaPi0EbE & pi0ebe) ; // cpy assignment
   
-  ClassDef(AliAnaPi0EbE,25)
+  ClassDef(AliAnaPi0EbE,36)
 } ;