]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/CaloTrackCorrelations/AliAnaPi0EbE.cxx
new method to reject events triggered by clusters from other BC
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaPi0EbE.cxx
index 253dcdcab6dfd307b398b69f1548265ba40aac0b..6fd6309a92d3b913dd3c74cdb52c91c2e356cd66 100755 (executable)
@@ -52,19 +52,25 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
     fMinDist(0.),fMinDist2(0.),    fMinDist3(0.),      
     fNLMCutMin(-1),                fNLMCutMax(10), 
     fTimeCutMin(-10000),           fTimeCutMax(10000),
+    fRejectTrackMatch(kTRUE),
     fFillPileUpHistograms(0),
     fFillWeightHistograms(kFALSE), fFillTMHisto(0),              
-    fFillSelectClHisto(0),         fFillOnlySimpleSSHisto(1),
+    fFillSelectClHisto(0),         fFillOnlySimpleSSHisto(1),    fFillEMCALBCHistograms(0),
     fInputAODGammaConvName(""),
     // Histograms
     fhPt(0),                       fhE(0),                    
-    fhEEta(0),                     fhEPhi(0),                    fhEtaPhi(0),
+    fhEEta(0),                     fhEPhi(0),                    
+    fhPtEta(0),                    fhPtPhi(0),                   fhEtaPhi(0),
+    fhEtaPhiEMCALBC0(0),           fhEtaPhiEMCALBC1(0),          fhEtaPhiEMCALBCN(0),
     fhPtCentrality(),              fhPtEventPlane(0),
     fhPtReject(0),                 fhEReject(0),
     fhEEtaReject(0),               fhEPhiReject(0),              fhEtaPhiReject(0),
-    fhMass(0),                     fhAsymmetry(0), 
-    fhSelectedMass(0),             fhSelectedAsymmetry(0),
+    fhMass(0),                     fhMassPt(0),                  fhMassSplitPt(0),
+    fhSelectedMass(0),             fhSelectedMassPt(0),          fhSelectedMassSplitPt(0),
+    fhAsymmetry(0),                fhSelectedAsymmetry(0),
     fhSplitE(0),                   fhSplitPt(0),
+    fhSplitPtEta(0),               fhSplitPtPhi(0),
+    fhNLocMaxSplitPt(0),
     fhPtDecay(0),                  fhEDecay(0),
     // Shower shape histos
     fhEDispersion(0),              fhELambda0(0),                fhELambda1(0), 
@@ -90,10 +96,11 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
     fhECellClusterRatio(0),        fhECellClusterLogRatio(0),                 
     fhEMaxCellClusterRatio(0),     fhEMaxCellClusterLogRatio(0),
     fhTrackMatchedDEta(0),         fhTrackMatchedDPhi(0),        fhTrackMatchedDEtaDPhi(0),
-    fhTrackMatchedMCParticle(0),   fhdEdx(0),                     
-    fhEOverP(0),                   fhEOverPNoTRD(0),                
+    fhTrackMatchedMCParticleE(0),
+    fhTrackMatchedMCParticleDEta(0), fhTrackMatchedMCParticleDPhi(0),
+    fhdEdx(0),                     fhEOverP(0),                 fhEOverPNoTRD(0),
     // Number of local maxima in cluster
-    fhNLocMax(0),
+    fhNLocMaxE(0),                 fhNLocMaxPt(0),
     // PileUp
     fhTimeENoCut(0),                    fhTimeESPD(0),           fhTimeESPDMulti(0),
     fhTimeNPileUpVertSPD(0),            fhTimeNPileUpVertTrack(0),
@@ -106,12 +113,16 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
   {
     fhMCE              [i] = 0;
     fhMCPt             [i] = 0;
-    fhMCPhi            [i] = 0;                   
+    fhMCNLocMaxPt      [i] = 0;
+    fhMCPhi            [i] = 0;
     fhMCEta            [i] = 0;
     fhMCPtCentrality   [i] = 0;
     
     fhMCSplitE         [i] = 0;
     fhMCSplitPt        [i] = 0;
+    fhMCSplitPtPhi     [i] = 0;
+    fhMCSplitPtEta     [i] = 0;
+    fhMCNLocMaxSplitPt [i] = 0;
     
     fhEMCLambda0       [i] = 0;
     fhEMCLambda0NoTRD  [i] = 0;
@@ -127,6 +138,11 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
     fhMCESphericity    [i] = 0;    
     fhMCEAsymmetry     [i] = 0;          
 
+    fhMCMassPt             [i]=0;
+    fhMCMassSplitPt        [i]=0;
+    fhMCSelectedMassPt     [i]=0;
+    fhMCSelectedMassSplitPt[i]=0;
+    
     for(Int_t j = 0; j < 7; j++)
     {    
       fhMCLambda0DispEta    [j][i] = 0;
@@ -170,6 +186,12 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
     if(i<8)fhMassPairLocMax[i] = 0;
   }
   
+  for(Int_t i = 0; i < 12; i++)
+  {
+    fhEtaPhiTriggerEMCALBC[i] = 0 ;
+    fhTimeTriggerEMCALBC  [i] = 0 ;
+  }
+  
   //Initialize parameters
   InitParameters();
   
@@ -349,7 +371,7 @@ void AliAnaPi0EbE::FillSelectedClusterHistograms(AliVCluster* cluster,
     }
   }  
   
-  fhNLocMax->Fill(e,nMaxima);
+  fhNLocMaxE ->Fill(e ,nMaxima);
 
   fhELambda0LocMax   [indexMax]->Fill(e,l0); 
   fhELambda1LocMax   [indexMax]->Fill(e,l1);
@@ -422,24 +444,30 @@ void AliAnaPi0EbE::FillSelectedClusterHistograms(AliVCluster* cluster,
       
       if(IsDataMC())
       {
+        Float_t mctag = -1;
         if  ( !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)  )
         {
           if       ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)      ||
-                     GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta)       ) fhTrackMatchedMCParticle->Fill(e, 2.5 );
-          else if  ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)    ) fhTrackMatchedMCParticle->Fill(e, 0.5 );
-          else if  ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)  ) fhTrackMatchedMCParticle->Fill(e, 1.5 );
-          else                                                                                 fhTrackMatchedMCParticle->Fill(e, 3.5 );
+                     GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta)       ) mctag =  2.5 ;
+          else if  ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)    ) mctag =  0.5 ;
+          else if  ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)  ) mctag =  1.5 ;
+          else                                                                                 mctag =  3.5 ;
           
         }
         else
         {
           if       ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)      ||
-                     GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta)       ) fhTrackMatchedMCParticle->Fill(e, 6.5 );
-          else if  ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)    ) fhTrackMatchedMCParticle->Fill(e, 4.5 );
-          else if  ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)  ) fhTrackMatchedMCParticle->Fill(e, 5.5 );
-          else                                                                                 fhTrackMatchedMCParticle->Fill(e, 7.5 );
-        }        
-      }  // MC              
+                     GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta)       ) mctag =  6.5 ;
+          else if  ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)    ) mctag =  4.5 ;
+          else if  ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)  ) mctag =  5.5 ;
+          else                                                                                 mctag =  7.5 ;
+        }
+        
+        fhTrackMatchedMCParticleE   ->Fill(e , mctag);
+        fhTrackMatchedMCParticleDEta->Fill(dZ, mctag);
+        fhTrackMatchedMCParticleDPhi->Fill(dR, mctag);
+        
+      }  // MC
     }
   }// Track matching histograms   
   
@@ -658,6 +686,18 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
   fhEEta->SetYTitle("#eta");
   fhEEta->SetXTitle("E (GeV)");
   outputContainer->Add(fhEEta) ; 
+
+  fhPtPhi  = new TH2F
+  ("hPtPhi","Selected #pi^{0} (#eta) pairs: p_{T} vs #phi",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
+  fhPtPhi->SetYTitle("#phi (rad)");
+  fhPtPhi->SetXTitle("p_{T} (GeV/c)");
+  outputContainer->Add(fhPtPhi) ;
+  
+  fhPtEta  = new TH2F
+  ("hPtEta","Selected #pi^{0} (#eta) pairs: p_{T} vs #eta",nptbins,ptmin,ptmax,netabins,etamin,etamax);
+  fhPtEta->SetYTitle("#eta");
+  fhPtEta->SetXTitle("p_{T} (GeV/c)");
+  outputContainer->Add(fhPtEta) ;
   
   fhEtaPhi  = new TH2F
   ("hEtaPhi","Selected #pi^{0} (#eta) pairs: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax); 
@@ -665,6 +705,54 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
   fhEtaPhi->SetXTitle("#eta");
   outputContainer->Add(fhEtaPhi) ; 
   
+  if(fCalorimeter=="EMCAL" && fFillEMCALBCHistograms)
+  {
+    fhEtaPhiEMCALBC0  = new TH2F
+    ("hEtaPhiEMCALBC0","cluster,E > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax);
+    fhEtaPhiEMCALBC0->SetYTitle("#phi (rad)");
+    fhEtaPhiEMCALBC0->SetXTitle("#eta");
+    outputContainer->Add(fhEtaPhiEMCALBC0) ;
+    
+    fhEtaPhiEMCALBC1  = new TH2F
+    ("hEtaPhiEMCALBC1","cluster,E > 2 GeV, #eta vs #phi, for clusters with 25 < |time| < 75 ns, EMCAL-BC=1",netabins,etamin,etamax,nphibins,phimin,phimax);
+    fhEtaPhiEMCALBC1->SetYTitle("#phi (rad)");
+    fhEtaPhiEMCALBC1->SetXTitle("#eta");
+    outputContainer->Add(fhEtaPhiEMCALBC1) ;
+    
+    fhEtaPhiEMCALBCN  = new TH2F
+    ("hEtaPhiEMCALBCN","cluster,E > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax);
+    fhEtaPhiEMCALBCN->SetYTitle("#phi (rad)");
+    fhEtaPhiEMCALBCN->SetXTitle("#eta");
+    outputContainer->Add(fhEtaPhiEMCALBCN) ;
+    
+    for(Int_t i = 0; i < 12; i++)
+    {
+      fhEtaPhiTriggerEMCALBC[i] = new TH2F
+      (Form("hEtaPhiTriggerEMCALBC%d",i-5),
+       Form("cluster,E > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=%d",i-5),
+       netabins,etamin,etamax,nphibins,phimin,phimax);
+      fhEtaPhiTriggerEMCALBC[i]->SetYTitle("#phi (rad)");
+      fhEtaPhiTriggerEMCALBC[i]->SetXTitle("#eta");
+      outputContainer->Add(fhEtaPhiTriggerEMCALBC[i]) ;
+      
+      fhTimeTriggerEMCALBC[i] = new TH2F
+      (Form("hTimeTriggerEMCALBC%d",i-5),
+       Form("time of cluster vs E of clusters, Trigger EMCAL-BC=%d",i-5),
+       nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
+      fhTimeTriggerEMCALBC[i]->SetXTitle("E (GeV)");
+      fhTimeTriggerEMCALBC[i]->SetYTitle("time (ns)");
+      outputContainer->Add(fhTimeTriggerEMCALBC[i]);
+      
+      fhTimeTriggerEMCALBCPileUpSPD[i] = new TH2F
+      (Form("hTimeTriggerEMCALBC%dPileUpSPD",i-5),
+       Form("time of cluster vs E of clusters, Trigger EMCAL-BC=%d",i-5),
+       nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
+      fhTimeTriggerEMCALBCPileUpSPD[i]->SetXTitle("E (GeV)");
+      fhTimeTriggerEMCALBCPileUpSPD[i]->SetYTitle("time (ns)");
+      outputContainer->Add(fhTimeTriggerEMCALBCPileUpSPD[i]);
+    }
+  }
+  
   fhPtCentrality  = new TH2F("hPtCentrality","centrality vs p_{T}",nptbins,ptmin,ptmax, 100,0,100);
   fhPtCentrality->SetYTitle("centrality");
   fhPtCentrality->SetXTitle("p_{T}(GeV/c)");
@@ -717,7 +805,19 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
   fhSelectedMass->SetYTitle("mass (GeV/c^{2})");
   fhSelectedMass->SetXTitle("E (GeV)");
   outputContainer->Add(fhSelectedMass) ; 
-  
+
+  fhMassPt  = new TH2F
+  ("hMassPt","all pairs mass: p_{T} vs mass",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
+  fhMassPt->SetYTitle("mass (GeV/c^{2})");
+  fhMassPt->SetXTitle("p_{T} (GeV/c)");
+  outputContainer->Add(fhMassPt) ;
+  
+  fhSelectedMassPt  = new TH2F
+  ("hSelectedMassPt","Selected #pi^{0} (#eta) pairs mass: p_{T} vs mass",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
+  fhSelectedMassPt->SetYTitle("mass (GeV/c^{2})");
+  fhSelectedMassPt->SetXTitle("p_{T} (GeV/c)");
+  outputContainer->Add(fhSelectedMassPt) ;
+
   if(fAnaType != kSSCalo)
   {
     fhPtDecay  = new TH1F("hPtDecay","Number of identified  #pi^{0} (#eta) decay photons",nptbins,ptmin,ptmax); 
@@ -845,11 +945,20 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
       }
     }    
     
-    fhNLocMax = new TH2F("hNLocMax","Number of local maxima in cluster",
-                         nptbins,ptmin,ptmax,10,0,10); 
-    fhNLocMax ->SetYTitle("N maxima");
-    fhNLocMax ->SetXTitle("E (GeV)");
-    outputContainer->Add(fhNLocMax) ;  
+    fhNLocMaxE = new TH2F("hNLocMaxE","Number of local maxima in cluster",
+                          nptbins,ptmin,ptmax,10,0,10);
+    fhNLocMaxE ->SetYTitle("N maxima");
+    fhNLocMaxE ->SetXTitle("E (GeV)");
+    outputContainer->Add(fhNLocMaxE) ;
+    
+    if(fAnaType == kSSCalo)
+    {
+      fhNLocMaxPt = new TH2F("hNLocMaxPt","Number of local maxima in cluster",
+                            nptbins,ptmin,ptmax,10,0,10);
+      fhNLocMaxPt ->SetYTitle("N maxima");
+      fhNLocMaxPt ->SetXTitle("p_{T} (GeV/c)");
+      outputContainer->Add(fhNLocMaxPt) ;
+    }
     
     for (Int_t i = 0; i < 3; i++) 
     {
@@ -1002,23 +1111,61 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
     
     if(IsDataMC() && fFillTMHisto)
     {
-      fhTrackMatchedMCParticle  = new TH2F
-      ("hTrackMatchedMCParticle",
+      fhTrackMatchedMCParticleE  = new TH2F
+      ("hTrackMatchedMCParticleE",
        "Origin of particle vs energy",
        nptbins,ptmin,ptmax,8,0,8); 
-      fhTrackMatchedMCParticle->SetXTitle("E (GeV)");   
-      //fhTrackMatchedMCParticle->SetYTitle("Particle type");
-      
-      fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(1 ,"Photon");
-      fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(2 ,"Electron");
-      fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
-      fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(4 ,"Rest");
-      fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
-      fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
-      fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
-      fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
-      
-      outputContainer->Add(fhTrackMatchedMCParticle);   
+      fhTrackMatchedMCParticleE->SetXTitle("E (GeV)");   
+      //fhTrackMatchedMCParticleE->SetYTitle("Particle type");
+      
+      fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(1 ,"Photon");
+      fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(2 ,"Electron");
+      fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
+      fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(4 ,"Rest");
+      fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
+      fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
+      fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
+      fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
+      
+      outputContainer->Add(fhTrackMatchedMCParticleE);
+      
+      fhTrackMatchedMCParticleDEta  = new TH2F
+      ("hTrackMatchedMCParticleDEta",
+       "Origin of particle vs #eta residual",
+       nresetabins,resetamin,resetamax,8,0,8);
+      fhTrackMatchedMCParticleDEta->SetXTitle("#Delta #eta");
+      //fhTrackMatchedMCParticleDEta->SetYTitle("Particle type");
+      
+      fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(1 ,"Photon");
+      fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(2 ,"Electron");
+      fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
+      fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(4 ,"Rest");
+      fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
+      fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
+      fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
+      fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
+      
+      outputContainer->Add(fhTrackMatchedMCParticleDEta);
+
+      fhTrackMatchedMCParticleDPhi  = new TH2F
+      ("hTrackMatchedMCParticleDPhi",
+       "Origin of particle vs #phi residual",
+       nresphibins,resphimin,resphimax,8,0,8);
+      fhTrackMatchedMCParticleDPhi->SetXTitle("#Delta #phi");
+      //fhTrackMatchedMCParticleDPhi->SetYTitle("Particle type");
+      
+      fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(1 ,"Photon");
+      fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(2 ,"Electron");
+      fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
+      fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(4 ,"Rest");
+      fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
+      fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
+      fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
+      fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
+      
+      outputContainer->Add(fhTrackMatchedMCParticleDPhi);
+
+      
     }
   }  
   
@@ -1177,6 +1324,15 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
         
         if(fAnaType == kSSCalo)
         {
+          
+          fhMCNLocMaxPt[i] = new TH2F
+          (Form("hNLocMaxPt_MC%s",pname[i].Data()),
+           Form("cluster from %s, pT of cluster, for NLM",ptype[i].Data()),
+           nptbins,ptmin,ptmax,10,0,10);
+          fhMCNLocMaxPt[i] ->SetYTitle("N maxima");
+          fhMCNLocMaxPt[i] ->SetXTitle("p_{T} (GeV/c)");
+          outputContainer->Add(fhMCNLocMaxPt[i]) ;
+
           fhMCEReject[i]  = new TH1F
           (Form("hEReject_MC%s",pname[i].Data()),
            Form("Rejected as #pi^{0} (#eta), cluster from %s",
@@ -1211,7 +1367,23 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
         fhMCEta[i]->SetYTitle("#eta");
         fhMCEta[i]->SetXTitle("p_{T} (GeV/c)");
         outputContainer->Add(fhMCEta[i]) ;
+
+        fhMCMassPt[i]  = new TH2F
+        (Form("hMassPt_MC%s",pname[i].Data()),
+         Form("all pairs mass: p_{T} vs massfrom %s",ptype[i].Data()),
+         nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
+        fhMCMassPt[i]->SetYTitle("mass (GeV/c^{2})");
+        fhMCMassPt[i]->SetXTitle("p_{T} (GeV/c)");
+        outputContainer->Add(fhMCMassPt[i]) ;
         
+        fhMCSelectedMassPt[i]  = new TH2F
+        (Form("hSelectedMassPt_MC%s",pname[i].Data()),
+         Form("Selected #pi^{0} (#eta) pairs mass: p_{T} vs massfrom %s",ptype[i].Data()),
+         nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
+        fhMCSelectedMassPt[i]->SetYTitle("mass (GeV/c^{2})");
+        fhMCSelectedMassPt[i]->SetXTitle("p_{T} (GeV/c)");
+        outputContainer->Add(fhMCSelectedMassPt[i]) ;
+
         
         if( fFillSelectClHisto )
         {
@@ -1355,6 +1527,41 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
     fhSplitPt->SetXTitle("p_{T} (GeV/c)");
     outputContainer->Add(fhSplitPt) ;
     
+    
+    fhSplitPtPhi  = new TH2F
+    ("hSplitPtPhi","Selected #pi^{0} (#eta) pairs: sum split sub-cluster p_{T} vs #phi",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
+    fhSplitPtPhi->SetYTitle("#phi (rad)");
+    fhSplitPtPhi->SetXTitle("p_{T} (GeV/c)");
+    outputContainer->Add(fhSplitPtPhi) ;
+    
+    fhSplitPtEta  = new TH2F
+    ("hSplitPtEta","Selected #pi^{0} (#eta) pairs: sum split sub-cluster p_{T} vs #eta",nptbins,ptmin,ptmax,netabins,etamin,etamax);
+    fhSplitPtEta->SetYTitle("#eta");
+    fhSplitPtEta->SetXTitle("p_{T} (GeV/c)");
+    outputContainer->Add(fhSplitPtEta) ;
+
+    
+    fhNLocMaxSplitPt = new TH2F("hNLocMaxSplitPt","Number of local maxima in cluster",
+                         nptbins,ptmin,ptmax,10,0,10);
+    fhNLocMaxSplitPt ->SetYTitle("N maxima");
+    fhNLocMaxSplitPt ->SetXTitle("p_{T} (GeV/c)");
+    outputContainer->Add(fhNLocMaxSplitPt) ;
+
+    
+    fhMassSplitPt  = new TH2F
+    ("hMassSplitPt","all pairs mass: sum split sub-cluster p_{T} vs mass",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
+    fhMassSplitPt->SetYTitle("mass (GeV/c^{2})");
+    fhMassSplitPt->SetXTitle("p_{T} (GeV/c)");
+    outputContainer->Add(fhMassSplitPt) ;
+    
+    fhSelectedMassSplitPt  = new TH2F
+    ("hSelectedMassSplitPt","Selected #pi^{0} (#eta) pairs mass: sum split sub-cluster p_{T} vs mass",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
+    fhSelectedMassSplitPt->SetYTitle("mass (GeV/c^{2})");
+    fhSelectedMassSplitPt->SetXTitle("p_{T} (GeV/c)");
+    outputContainer->Add(fhSelectedMassSplitPt) ;
+    
+
+    
     if(IsDataMC())
     {
       for(Int_t i = 0; i< 6; i++)
@@ -1382,6 +1589,48 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
         fhMCSplitPt[i]->SetXTitle("p_{T} (GeV/c)");
         outputContainer->Add(fhMCSplitPt[i]) ;
         
+        
+        fhMCSplitPtPhi[i]  = new TH2F
+        (Form("hSplitPtPhi_MC%s",pname[i].Data()),
+         Form("Identified as #pi^{0} (#eta), cluster from %s",ptype[i].Data()),
+         nptbins,ptmin,ptmax,nphibins,phimin,phimax);
+        fhMCSplitPtPhi[i]->SetYTitle("#phi");
+        fhMCSplitPtPhi[i]->SetXTitle("p_{T} (GeV/c)");
+        outputContainer->Add(fhMCSplitPtPhi[i]) ;
+        
+        fhMCSplitPtEta[i]  = new TH2F
+        (Form("hSplitPtEta_MC%s",pname[i].Data()),
+         Form("Identified as #pi^{0} (#eta), cluster from %s",
+              ptype[i].Data()),nptbins,ptmin,ptmax,netabins,etamin,etamax);
+        fhMCSplitPtEta[i]->SetYTitle("#eta");
+        fhMCSplitPtEta[i]->SetXTitle("p_{T} (GeV/c)");
+        outputContainer->Add(fhMCSplitPtEta[i]) ;
+
+        
+        fhMCNLocMaxSplitPt[i] = new TH2F
+        (Form("hNLocMaxSplitPt_MC%s",pname[i].Data()),
+         Form("cluster from %s, pT sum of split sub-clusters, for NLM",ptype[i].Data()),
+         nptbins,ptmin,ptmax,10,0,10);
+        fhMCNLocMaxSplitPt[i] ->SetYTitle("N maxima");
+        fhMCNLocMaxSplitPt[i] ->SetXTitle("p_{T} (GeV/c)");
+        outputContainer->Add(fhMCNLocMaxSplitPt[i]) ;
+        
+        fhMCMassSplitPt[i]  = new TH2F
+        (Form("hMassSplitPt_MC%s",pname[i].Data()),
+         Form("all pairs mass: split p_{T} vs mass from %s",ptype[i].Data()),
+         nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
+        fhMCMassSplitPt[i]->SetYTitle("mass (GeV/c^{2})");
+        fhMCMassSplitPt[i]->SetXTitle("p_{T} (GeV/c)");
+        outputContainer->Add(fhMCMassSplitPt[i]) ;
+        
+        fhMCSelectedMassSplitPt[i]  = new TH2F
+        (Form("hSelectedMassSplitPt_MC%s",pname[i].Data()),
+         Form("Selected #pi^{0} (#eta) pairs mass: split p_{T} vs mass from %s",ptype[i].Data()),
+         nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
+        fhMCSelectedMassSplitPt[i]->SetYTitle("mass (GeV/c^{2})");
+        fhMCSelectedMassSplitPt[i]->SetXTitle("p_{T} (GeV/c)");
+        outputContainer->Add(fhMCSelectedMassSplitPt[i]) ;
+        
       } 
     }
   }
@@ -2116,12 +2365,11 @@ void  AliAnaPi0EbE::MakeShowerShapeIdentification()
     }      
     
     //Skip matched clusters with tracks
-    if(IsTrackMatched(calo, GetReader()->GetInputEvent())) 
+    if(fRejectTrackMatch && IsTrackMatched(calo, GetReader()->GetInputEvent()))
     {
       FillRejectedClusterHistograms(mom,tag);
       continue ;
     }
-        
     
     //Check PID
     //PID selection or bit setting
@@ -2151,19 +2399,33 @@ void  AliAnaPi0EbE::MakeShowerShapeIdentification()
     if(GetDebug() > 1)
       printf("AliAnaPi0EbE::MakeShowerShapeIdentification() - NLM %d accepted \n",nMaxima);
     
+    Float_t e1 = l1.Energy();
+    Float_t e2 = l2.Energy();
+    TLorentzVector l12 = l1+l2;
+    Float_t ptSplit = l12.Pt();
+    Float_t  eSplit = e1+e2;
+    Int_t mcIndex = GetMCIndex(tag);
+
     //mass of all clusters
-    fhMass->Fill(mom.E(),mass);
+    fhMass       ->Fill(mom.E(),mass);
+    fhMassPt     ->Fill(mom.Pt(),mass);
+    fhMassSplitPt->Fill(ptSplit,mass);
+
+    if(IsDataMC())
+    {
+      fhMCMassPt[mcIndex]     ->Fill(mom.Pt(),mass);
+      fhMCMassSplitPt[mcIndex]->Fill(ptSplit,mass);
+    }
 
     // Asymmetry of all clusters
     Float_t asy =-10;
-    Float_t e1 = l1.Energy();
-    Float_t e2 = l2.Energy();
+
     if(e1+e2 > 0) asy = (e1-e2) / (e1+e2);
     fhAsymmetry->Fill(mom.E(),asy);
 
+
     if(IsDataMC())
     {
-      Int_t mcIndex = GetMCIndex(tag);
       fhMCEAsymmetry[mcIndex]->Fill(mom.E(),asy);
     }
     
@@ -2187,14 +2449,19 @@ void  AliAnaPi0EbE::MakeShowerShapeIdentification()
                               mom.Pt(), idPartType);
     
     //Mass and asymmetry of selected pairs
-    fhSelectedAsymmetry->Fill(mom.E(),asy);
-    fhSelectedMass     ->Fill(mom.E(),mass);
+    fhSelectedAsymmetry  ->Fill(mom.E() ,asy );
+    fhSelectedMass       ->Fill(mom.E() ,mass);
+    fhSelectedMassPt     ->Fill(mom.Pt(),mass);
+    fhSelectedMassSplitPt->Fill(ptSplit ,mass);
 
-    TLorentzVector l12 = l1+l2;
-    Float_t ptSplit = l12.Pt();
-    Float_t  eSplit = e1+e2;
-    fhSplitE   ->Fill( eSplit);
-    fhSplitPt  ->Fill(ptSplit);
+    fhSplitE        ->Fill( eSplit);
+    fhSplitPt       ->Fill(ptSplit);
+    Float_t phi = mom.Phi();
+    if(phi<0) phi+=TMath::TwoPi();
+    fhSplitPtPhi    ->Fill(ptSplit,phi);
+    fhSplitPtEta    ->Fill(ptSplit,mom.Eta());
+    fhNLocMaxSplitPt->Fill(ptSplit ,nMaxima);
+    fhNLocMaxPt     ->Fill(mom.Pt(),nMaxima);
 
     //Check split-clusters with good time window difference
     Double_t tof1  = cells->GetCellTime(absId1);
@@ -2210,11 +2477,17 @@ void  AliAnaPi0EbE::MakeShowerShapeIdentification()
     
     if(IsDataMC())
     {
-      Int_t mcIndex = GetMCIndex(tag);
-      fhMCSplitE    [mcIndex]->Fill( eSplit);
-      fhMCSplitPt   [mcIndex]->Fill(ptSplit);
-    }
+      fhMCSplitE        [mcIndex]->Fill( eSplit);
+      fhMCSplitPt       [mcIndex]->Fill(ptSplit);
+      fhMCSplitPtPhi    [mcIndex]->Fill(ptSplit,phi);
+      fhMCSplitPtEta    [mcIndex]->Fill(ptSplit,mom.Eta());
+      fhMCNLocMaxSplitPt[mcIndex]->Fill(ptSplit ,nMaxima);
+      fhMCNLocMaxPt     [mcIndex]->Fill(mom.Pt(),nMaxima);
+      
+      fhMCSelectedMassPt     [mcIndex]->Fill(mom.Pt(),mass);
+      fhMCSelectedMassSplitPt[mcIndex]->Fill(ptSplit,mass);
 
+    }
     
     //-----------------------
     //Create AOD for analysis
@@ -2246,7 +2519,32 @@ void  AliAnaPi0EbE::MakeShowerShapeIdentification()
     
     // Fill histograms to undertand pile-up before other cuts applied
     // Remember to relax time cuts in the reader
-    FillPileUpHistograms(calo->E(),calo->GetTOF()*1e9);
+    Double_t tofcluster   = calo->GetTOF()*1e9;
+    Double_t tofclusterUS = TMath::Abs(tofcluster);
+
+    FillPileUpHistograms(calo->E(),tofcluster);
+    if(fFillEMCALBCHistograms && fCalorimeter=="EMCAL")
+    {
+      Float_t phicluster = aodpi0.Phi();
+      if(phicluster < 0) phicluster+=TMath::TwoPi();
+      
+      if(calo->E() > 2)
+      {
+        if      (tofclusterUS < 25) fhEtaPhiEMCALBC0->Fill(aodpi0.Eta(), phicluster);
+        else if (tofclusterUS < 75) fhEtaPhiEMCALBC1->Fill(aodpi0.Eta(), phicluster);
+        else                        fhEtaPhiEMCALBCN->Fill(aodpi0.Eta(), phicluster);
+      }
+      
+      Int_t bc = GetReader()->IsPileUpClusterTriggeredEvent();
+      if(bc > -7 && bc < 8)
+      {
+        if(calo->E() > 2) fhEtaPhiTriggerEMCALBC[bc+5]->Fill(aodpi0.Eta(), phicluster);
+        fhTimeTriggerEMCALBC[bc+5]->Fill(calo->E(), tofcluster);
+        if(GetReader()->IsPileUpFromSPD()) fhTimeTriggerEMCALBCPileUpSPD[bc+5]->Fill(calo->E(), tofcluster);
+      }
+      else printf("AliAnaPi0EbE::MakeShowerShapeIdentification() - Trigger BC not expected = %d\n",bc);
+    }
     
     //Add AOD with pi0 object to aod branch
     AddAODParticle(aodpi0);
@@ -2293,6 +2591,8 @@ void  AliAnaPi0EbE::MakeAnalysisFillHistograms()
     
     fhEEta   ->Fill(ener,eta);
     fhEPhi   ->Fill(ener,phi);
+    fhPtEta  ->Fill(pt  ,eta);
+    fhPtPhi  ->Fill(pt  ,phi);
     fhEtaPhi ->Fill(eta ,phi);
 
     fhPtCentrality ->Fill(pt,cen) ;