]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/CaloTrackCorrelations/AliAnaPi0EbE.cxx
neutral meson mass-angle histograms should not be created in splitting analysis
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaPi0EbE.cxx
index 24924b60f5bb91721036d89a97d0544aa57676ee..944e7ec0f37b8885ae1a307e1e7082406b56874b 100755 (executable)
@@ -63,7 +63,7 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
     fhENCells(0),                  fhETime(0),                   fhEPairDiffTime(0),
     fhDispEtaE(0),                 fhDispPhiE(0),
     fhSumEtaE(0),                  fhSumPhiE(0),                 fhSumEtaPhiE(0),
-    fhDispEtaPhiDiffE(0),          fhSphericityE(0),
+    fhDispEtaPhiDiffE(0),          fhSphericityE(0),             fhAsymmetryE(0), 
 
     // MC histos
     fhPtMCNo(0),                   fhPhiMCNo(0),                 fhEtaMCNo(0), 
@@ -90,14 +90,34 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
     fhEMCLambda1       [i] = 0;
     fhEMCDispersion    [i] = 0;
     
-    fhMCEDispEta       [i]  = 0;
-    fhMCEDispPhi       [i]  = 0;
-    fhMCESumEtaPhi     [i]  = 0;
-    fhMCEDispEtaPhiDiff[i]  = 0;
-    fhMCESphericity    [i]  = 0;    
-  
+    fhMCEDispEta       [i] = 0;
+    fhMCEDispPhi       [i] = 0;
+    fhMCESumEtaPhi     [i] = 0;
+    fhMCEDispEtaPhiDiff[i] = 0;
+    fhMCESphericity    [i] = 0;    
+    fhMCEAsymmetry     [i] = 0;          
+
+    for(Int_t j = 0; j < 7; j++)
+    {    
+      fhMCLambda0DispEta    [j][i] = 0;
+      fhMCLambda0DispPhi    [j][i] = 0;
+      fhMCDispEtaDispPhi    [j][i] = 0; 
+      fhMCAsymmetryLambda0  [j][i] = 0;    
+      fhMCAsymmetryDispEta  [j][i] = 0; 
+      fhMCAsymmetryDispPhi  [j][i] = 0;
+    }
   }
   
+  for(Int_t j = 0; j < 7; j++)
+  {  
+    fhLambda0DispEta    [j] = 0;
+    fhLambda0DispPhi    [j] = 0;
+    fhDispEtaDispPhi    [j] = 0; 
+    fhAsymmetryLambda0  [j] = 0;    
+    fhAsymmetryDispEta  [j] = 0; 
+    fhAsymmetryDispPhi  [j] = 0;
+  }  
+  
   for(Int_t i = 0; i < 3; i++)
   {
     fhELambda0LocMax       [i] = 0;
@@ -108,6 +128,7 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
     fhESumEtaPhiLocMax     [i] = 0;
     fhEDispEtaPhiDiffLocMax[i] = 0;
     fhESphericityLocMax    [i] = 0;
+    fhEAsymmetryLocMax     [i] = 0;
   }
   
   //Weight studies
@@ -125,7 +146,8 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
 //_____________________________________________________________________________________
 void AliAnaPi0EbE::FillSelectedClusterHistograms(AliVCluster* cluster, 
                                                  const Int_t nMaxima,
-                                                 const Int_t tag)
+                                                 const Int_t tag, 
+                                                 const Float_t asy)
 {
   // Fill shower shape, timing and other histograms for selected clusters from decay
   
@@ -135,6 +157,21 @@ void AliAnaPi0EbE::FillSelectedClusterHistograms(AliVCluster* cluster,
   Float_t l1   = cluster->GetM20(); 
   Int_t   nSM  = GetModuleNumber(cluster);
 
+  Int_t ebin = -1;
+  if      (e < 2 ) ebin = 0;
+  else if (e < 4 ) ebin = 1;
+  else if (e < 6 ) ebin = 2;
+  else if (e < 10) ebin = 3;
+  else if (e < 15) ebin = 4;  
+  else if (e < 20) ebin = 5;  
+  else             ebin = 6;  
+
+  Int_t indexMax = -1;
+  if     (nMaxima==1) indexMax = 0 ;
+  else if(nMaxima==2) indexMax = 1 ; 
+  else                indexMax = 2 ; 
+  
+  
   AliVCaloCells * cell = 0x0; 
   if(fCalorimeter == "PHOS") 
     cell = GetPHOSCells();
@@ -167,20 +204,21 @@ void AliAnaPi0EbE::FillSelectedClusterHistograms(AliVCluster* cluster,
     fhDispEtaPhiDiffE -> Fill(e,dPhi-dEta);
     if(dEta+dPhi>0)fhSphericityE -> Fill(e,(dPhi-dEta)/(dEta+dPhi));
     
-    if      (e < 2 ) fhDispEtaDispPhiEBin[0]->Fill(dEta,dPhi);
-    else if (e < 4 ) fhDispEtaDispPhiEBin[1]->Fill(dEta,dPhi);
-    else if (e < 6 ) fhDispEtaDispPhiEBin[2]->Fill(dEta,dPhi);
-    else if (e < 10) fhDispEtaDispPhiEBin[3]->Fill(dEta,dPhi);
-    else             fhDispEtaDispPhiEBin[4]->Fill(dEta,dPhi);
+    fhDispEtaDispPhi[ebin]->Fill(dEta,dPhi);
+    fhLambda0DispEta[ebin]->Fill(l0  ,dEta);
+    fhLambda0DispPhi[ebin]->Fill(l0  ,dPhi);
     
+    if (fAnaType==kSSCalo)
+    {
+      // Asymmetry histograms
+      fhAsymmetryE            ->Fill(e  ,asy);
+      fhAsymmetryLambda0[ebin]->Fill(l0 ,asy);
+      fhAsymmetryDispEta[ebin]->Fill(dEta,asy);
+      fhAsymmetryDispPhi[ebin]->Fill(dPhi,asy);
+    }
   }  
   
   fhNLocMax->Fill(e,nMaxima);
-  Int_t indexMax = -1;
-  
-  if     (nMaxima==1) indexMax = 0 ;
-  else if(nMaxima==2) indexMax = 1 ; 
-  else                indexMax = 2 ; 
 
   fhELambda0LocMax   [indexMax]->Fill(e,l0); 
   fhELambda1LocMax   [indexMax]->Fill(e,l1);
@@ -191,7 +229,9 @@ void AliAnaPi0EbE::FillSelectedClusterHistograms(AliVCluster* cluster,
     fhEDispPhiLocMax       [indexMax]-> Fill(e,dPhi);
     fhESumEtaPhiLocMax     [indexMax]-> Fill(e,sEtaPhi);
     fhEDispEtaPhiDiffLocMax[indexMax]-> Fill(e,dPhi-dEta);
-    if(dEta+dPhi>0)fhESphericityLocMax    [indexMax]-> Fill(e,(dPhi-dEta)/(dEta+dPhi));
+    if(dEta+dPhi>0)       fhESphericityLocMax[indexMax]->Fill(e,(dPhi-dEta)/(dEta+dPhi));
+    if(fAnaType==kSSCalo) fhEAsymmetryLocMax [indexMax]->Fill(e  ,asy);
+    
   }
   
   if(fCalorimeter=="EMCAL" && nSM < 6) 
@@ -319,15 +359,22 @@ void AliAnaPi0EbE::FillSelectedClusterHistograms(AliVCluster* cluster,
       fhMCEDispEtaPhiDiff [mcIndex]-> Fill(e,dPhi-dEta);
       if(dEta+dPhi>0)fhMCESphericity[mcIndex]-> Fill(e,(dPhi-dEta)/(dEta+dPhi));  
 
-      if      (e < 2 ) fhMCDispEtaDispPhiEBin[0][mcIndex]->Fill(dEta,dPhi);
-      else if (e < 4 ) fhMCDispEtaDispPhiEBin[1][mcIndex]->Fill(dEta,dPhi);
-      else if (e < 6 ) fhMCDispEtaDispPhiEBin[2][mcIndex]->Fill(dEta,dPhi);
-      else if (e < 10) fhMCDispEtaDispPhiEBin[3][mcIndex]->Fill(dEta,dPhi);
-      else             fhMCDispEtaDispPhiEBin[4][mcIndex]->Fill(dEta,dPhi);
+      if (fAnaType==kSSCalo)
+      {
+        fhMCEAsymmetry            [mcIndex]->Fill(e  ,asy);
+        fhMCAsymmetryLambda0[ebin][mcIndex]->Fill(l0 ,asy);
+        fhMCAsymmetryDispEta[ebin][mcIndex]->Fill(dEta,asy);
+        fhMCAsymmetryDispPhi[ebin][mcIndex]->Fill(dPhi,asy);
+      }
+      
+      fhMCDispEtaDispPhi[ebin][mcIndex]->Fill(dEta,dPhi);
+      fhMCLambda0DispEta[ebin][mcIndex]->Fill(l0  ,dEta);
+      fhMCLambda0DispPhi[ebin][mcIndex]->Fill(l0  ,dPhi);
       
     }
     
   }//MC
+  
 }
 
 //________________________________________________________
@@ -564,7 +611,11 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
   Float_t pOverEmax   = GetHistogramRanges()->GetHistoPOverEMax();       
   Float_t pOverEmin   = GetHistogramRanges()->GetHistoPOverEMin();
   
-  
+  TString nlm[]   ={"1 Local Maxima","2 Local Maxima", "NLM > 2"};
+  TString ptype[] ={"#gamma","#gamma->e^{#pm}","#pi^{0}","#eta","e^{#pm}", "hadron"}; 
+  TString pname[] ={"Photon","Conversion",     "Pi0",    "Eta", "Electron","Hadron"};  
+  Int_t   bin[]   = {0,2,4,6,10,15,20,100}; // energy bins
+
   fhPt  = new TH1F("hPt","Number of identified  #pi^{0} (#eta) decay",nptbins,ptmin,ptmax); 
   fhPt->SetYTitle("N");
   fhPt->SetXTitle("p_{T} (GeV/c)");
@@ -668,19 +719,19 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
       
       fhSumEtaE  = new TH2F ("hSumEtaE","#sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i})^{2} / #Sigma w_{i} - <#eta>^{2} vs E",  nptbins,ptmin,ptmax, ssbins,ssmin,ssmax); 
       fhSumEtaE->SetXTitle("E (GeV)");
-      fhSumEtaE->SetYTitle("#sigma'^{2}_{#eta #eta}");
+      fhSumEtaE->SetYTitle("#delta^{2}_{#eta #eta}");
       outputContainer->Add(fhSumEtaE);     
       
       fhSumPhiE  = new TH2F ("hSumPhiE","#sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i})^{2}/ #Sigma w_{i} - <#phi>^{2} vs E",  
                              nptbins,ptmin,ptmax, ssbins,ssmin,ssmax); 
       fhSumPhiE->SetXTitle("E (GeV)");
-      fhSumPhiE->SetYTitle("#sigma'^{2}_{#phi #phi}");
+      fhSumPhiE->SetYTitle("#delta^{2}_{#phi #phi}");
       outputContainer->Add(fhSumPhiE);  
       
-      fhSumEtaPhiE  = new TH2F ("hSumEtaPhiE","#sigma'^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs E",  
+      fhSumEtaPhiE  = new TH2F ("hSumEtaPhiE","#delta^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs E",  
                                 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax); 
       fhSumEtaPhiE->SetXTitle("E (GeV)");
-      fhSumEtaPhiE->SetYTitle("#sigma'^{2}_{#eta #phi}");
+      fhSumEtaPhiE->SetYTitle("#delta^{2}_{#eta #phi}");
       outputContainer->Add(fhSumEtaPhiE);
       
       fhDispEtaPhiDiffE  = new TH2F ("hDispEtaPhiDiffE","#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E", 
@@ -695,14 +746,26 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
       fhSphericityE->SetYTitle("s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
       outputContainer->Add(fhSphericityE);
       
-      Int_t bin[] = {0,2,4,6,10,1000};
-      for(Int_t i = 0; i < 5; i++)
+      for(Int_t i = 0; i < 7; i++)
       {
-        fhDispEtaDispPhiEBin[i] = new TH2F (Form("hDispEtaDispPhi_EBin%d",i),Form("#sigma^{2}_{#phi #phi} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",bin[i],bin[i+1]), 
+        fhDispEtaDispPhi[i] = new TH2F (Form("hDispEtaDispPhi_EBin%d",i),Form("#sigma^{2}_{#phi #phi} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",bin[i],bin[i+1]), 
                                             ssbins,ssmin,ssmax , ssbins,ssmin,ssmax); 
-        fhDispEtaDispPhiEBin[i]->SetXTitle("#sigma^{2}_{#eta #eta}");
-        fhDispEtaDispPhiEBin[i]->SetYTitle("#sigma^{2}_{#phi #phi}");
-        outputContainer->Add(fhDispEtaDispPhiEBin[i]); 
+        fhDispEtaDispPhi[i]->SetXTitle("#sigma^{2}_{#eta #eta}");
+        fhDispEtaDispPhi[i]->SetYTitle("#sigma^{2}_{#phi #phi}");
+        outputContainer->Add(fhDispEtaDispPhi[i]); 
+        
+        fhLambda0DispEta[i] = new TH2F (Form("hLambda0DispEta_EBin%d",i),Form("#lambda^{2}_{0} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",bin[i],bin[i+1]), 
+                                         ssbins,ssmin,ssmax , ssbins,ssmin,ssmax); 
+        fhLambda0DispEta[i]->SetXTitle("#lambda^{2}_{0}");
+        fhLambda0DispEta[i]->SetYTitle("#sigma^{2}_{#eta #eta}");
+        outputContainer->Add(fhLambda0DispEta[i]);       
+        
+        fhLambda0DispPhi[i] = new TH2F (Form("hLambda0DispPhi_EBin%d",i),Form("#lambda^{2}_{0}} vs #sigma^{2}_{#phi #phi} for %d < E < %d GeV",bin[i],bin[i+1]), 
+                                            ssbins,ssmin,ssmax , ssbins,ssmin,ssmax); 
+        fhLambda0DispPhi[i]->SetXTitle("#lambda^{2}_{0}");
+        fhLambda0DispPhi[i]->SetYTitle("#sigma^{2}_{#phi #phi}");
+        outputContainer->Add(fhLambda0DispPhi[i]); 
+        
       }
     }    
     
@@ -712,7 +775,6 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
     fhNLocMax ->SetXTitle("E (GeV)");
     outputContainer->Add(fhNLocMax) ;  
     
-    TString nlm[] ={"1 Local Maxima","2 Local Maxima", "NLM > 2"};
     for (Int_t i = 0; i < 3; i++) 
     {
       fhELambda0LocMax[i]  = new TH2F(Form("hELambda0LocMax%d",i+1),
@@ -974,138 +1036,241 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
       fhAnglePairMCPi0->SetXTitle("E_{pair} (GeV)");
       outputContainer->Add(fhAnglePairMCPi0) ; 
 
-      fhAnglePairMCEta  = new TH2F
-      ("AnglePairMCEta",
-       "Angle between decay #gamma pair vs E_{pair}, origin #eta",nptbins,ptmin,ptmax,250,0,0.5); 
-      fhAnglePairMCEta->SetYTitle("#alpha (rad)");
-      fhAnglePairMCEta->SetXTitle("E_{pair} (GeV)");
-      outputContainer->Add(fhAnglePairMCEta) ; 
-
-      fhMassPairMCPi0  = new TH2F
-      ("MassPairMCPi0",
-       "Mass for decay #gamma pair vs E_{pair}, origin #pi^{0}",nptbins,ptmin,ptmax,nmassbins,massmin,massmax); 
-      fhMassPairMCPi0->SetYTitle("Mass (MeV/c^{2})");
-      fhMassPairMCPi0->SetXTitle("E_{pair} (GeV)");
-      outputContainer->Add(fhMassPairMCPi0) ; 
-
-      fhMassPairMCEta  = new TH2F
-      ("MassPairMCEta",
-       "Mass for decay #gamma pair vs E_{pair}, origin #eta",nptbins,ptmin,ptmax,nmassbins,massmin,massmax); 
-      fhMassPairMCEta->SetYTitle("Mass (MeV/c^{2})");
-      fhMassPairMCEta->SetXTitle("E_{pair} (GeV)");
-      outputContainer->Add(fhMassPairMCEta) ; 
-
-      TString ptype[] ={"#gamma","#gamma->e^{#pm}","#pi^{0}","#eta","e^{#pm}", "hadron"}; 
-      TString pname[] ={"Photon","Conversion",     "Pi0",    "Eta", "Electron","Hadron"};
-      for(Int_t i = 0; i < 6; i++)
-      { 
-        fhEMCLambda0[i]  = new TH2F(Form("hELambda0_MC%s",pname[i].Data()),
-                                    Form("Selected pair, cluster from %s : E vs #lambda_{0}^{2}",ptype[i].Data()),
-                                    nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-        fhEMCLambda0[i]->SetYTitle("#lambda_{0}^{2}");
-        fhEMCLambda0[i]->SetXTitle("E (GeV)");
-        outputContainer->Add(fhEMCLambda0[i]) ; 
+      if (fAnaType!= kSSCalo)
+      {
+        fhAnglePairMCEta  = new TH2F
+        ("AnglePairMCEta",
+         "Angle between decay #gamma pair vs E_{pair}, origin #eta",nptbins,ptmin,ptmax,250,0,0.5); 
+        fhAnglePairMCEta->SetYTitle("#alpha (rad)");
+        fhAnglePairMCEta->SetXTitle("E_{pair} (GeV)");
+        outputContainer->Add(fhAnglePairMCEta) ; 
         
-        fhEMCLambda1[i]  = new TH2F(Form("hELambda1_MC%s",pname[i].Data()),
-                                    Form("Selected pair, cluster from %s : E vs #lambda_{1}^{2}",ptype[i].Data()),
-                                    nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-        fhEMCLambda1[i]->SetYTitle("#lambda_{1}^{2}");
-        fhEMCLambda1[i]->SetXTitle("E (GeV)");
-        outputContainer->Add(fhEMCLambda1[i]) ; 
+        fhMassPairMCPi0  = new TH2F
+        ("MassPairMCPi0",
+         "Mass for decay #gamma pair vs E_{pair}, origin #pi^{0}",nptbins,ptmin,ptmax,nmassbins,massmin,massmax); 
+        fhMassPairMCPi0->SetYTitle("Mass (MeV/c^{2})");
+        fhMassPairMCPi0->SetXTitle("E_{pair} (GeV)");
+        outputContainer->Add(fhMassPairMCPi0) ; 
         
-        fhEMCDispersion[i]  = new TH2F(Form("hEDispersion_MC%s",pname[i].Data()),
-                                       Form("Selected pair, cluster from %s : E vs dispersion^{2}",ptype[i].Data()),
-                                       nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-        fhEMCDispersion[i]->SetYTitle("D^{2}");
-        fhEMCDispersion[i]->SetXTitle("E (GeV)");
-        outputContainer->Add(fhEMCDispersion[i]) ; 
-                
-        if(fCalorimeter=="EMCAL"){
-          fhEMCLambda0NoTRD[i]  = new TH2F(Form("hELambda0NoTRD_MC%s",pname[i].Data()),
-                                           Form("Selected pair, cluster from %s : E vs #lambda_{0}^{2}, NoTRD",ptype[i].Data()),
-                                           nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-          fhEMCLambda0NoTRD[i]->SetYTitle("#lambda_{0}^{2}");
-          fhEMCLambda0NoTRD[i]->SetXTitle("E (GeV)");
-          outputContainer->Add(fhEMCLambda0NoTRD[i]) ; 
-          
+        fhMassPairMCEta  = new TH2F
+        ("MassPairMCEta",
+         "Mass for decay #gamma pair vs E_{pair}, origin #eta",nptbins,ptmin,ptmax,nmassbins,massmin,massmax); 
+        fhMassPairMCEta->SetYTitle("Mass (MeV/c^{2})");
+        fhMassPairMCEta->SetXTitle("E_{pair} (GeV)");
+        outputContainer->Add(fhMassPairMCEta) ; 
+      }
+      
+      if( fFillSelectClHisto )
+      {
+        for(Int_t i = 0; i < 6; i++)
+        { 
+          fhEMCLambda0[i]  = new TH2F(Form("hELambda0_MC%s",pname[i].Data()),
+                                      Form("Selected pair, cluster from %s : E vs #lambda_{0}^{2}",ptype[i].Data()),
+                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
+          fhEMCLambda0[i]->SetYTitle("#lambda_{0}^{2}");
+          fhEMCLambda0[i]->SetXTitle("E (GeV)");
+          outputContainer->Add(fhEMCLambda0[i]) ; 
           
-          fhMCEDispEta[i]  = new TH2F (Form("hEDispEtaE_MC%s",pname[i].Data()),
-                                       Form("cluster from %s : #sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i} - <#eta>)^{2}/ #Sigma w_{i} vs E",ptype[i].Data()),
-                                       nptbins,ptmin,ptmax, ssbins,ssmin,ssmax); 
-          fhMCEDispEta[i]->SetXTitle("E (GeV)");
-          fhMCEDispEta[i]->SetYTitle("#sigma^{2}_{#eta #eta}");
-          outputContainer->Add(fhMCEDispEta[i]);     
+          fhEMCLambda1[i]  = new TH2F(Form("hELambda1_MC%s",pname[i].Data()),
+                                      Form("Selected pair, cluster from %s : E vs #lambda_{1}^{2}",ptype[i].Data()),
+                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
+          fhEMCLambda1[i]->SetYTitle("#lambda_{1}^{2}");
+          fhEMCLambda1[i]->SetXTitle("E (GeV)");
+          outputContainer->Add(fhEMCLambda1[i]) ; 
           
-          fhMCEDispPhi[i]  = new TH2F (Form("hEDispPhiE_MC%s",pname[i].Data()),
-                                       Form("cluster from %s : #sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i} - <#phi>)^{2} / #Sigma w_{i} vs E",ptype[i].Data()),
-                                       nptbins,ptmin,ptmax, ssbins,ssmin,ssmax); 
-          fhMCEDispPhi[i]->SetXTitle("E (GeV)");
-          fhMCEDispPhi[i]->SetYTitle("#sigma^{2}_{#phi #phi}");
-          outputContainer->Add(fhMCEDispPhi[i]);  
+          fhEMCDispersion[i]  = new TH2F(Form("hEDispersion_MC%s",pname[i].Data()),
+                                         Form("Selected pair, cluster from %s : E vs dispersion^{2}",ptype[i].Data()),
+                                         nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
+          fhEMCDispersion[i]->SetYTitle("D^{2}");
+          fhEMCDispersion[i]->SetXTitle("E (GeV)");
+          outputContainer->Add(fhEMCDispersion[i]) ; 
           
-          fhMCESumEtaPhi[i]  = new TH2F (Form("hESumEtaPhiE_MC%s",pname[i].Data()),
-                                         Form("cluster from %s : #sigma'^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs E",ptype[i].Data()),  
-                                         nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax); 
-          fhMCESumEtaPhi[i]->SetXTitle("E (GeV)");
-          fhMCESumEtaPhi[i]->SetYTitle("#sigma'^{2}_{#eta #phi}");
-          outputContainer->Add(fhMCESumEtaPhi[i]);
+          if(fCalorimeter=="EMCAL")
+          {
+            fhEMCLambda0NoTRD[i]  = new TH2F(Form("hELambda0NoTRD_MC%s",pname[i].Data()),
+                                             Form("Selected pair, cluster from %s : E vs #lambda_{0}^{2}, NoTRD",ptype[i].Data()),
+                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
+            fhEMCLambda0NoTRD[i]->SetYTitle("#lambda_{0}^{2}");
+            fhEMCLambda0NoTRD[i]->SetXTitle("E (GeV)");
+            outputContainer->Add(fhEMCLambda0NoTRD[i]) ; 
+            
+            
+            fhMCEDispEta[i]  = new TH2F (Form("hEDispEtaE_MC%s",pname[i].Data()),
+                                         Form("cluster from %s : #sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i} - <#eta>)^{2}/ #Sigma w_{i} vs E",ptype[i].Data()),
+                                         nptbins,ptmin,ptmax, ssbins,ssmin,ssmax); 
+            fhMCEDispEta[i]->SetXTitle("E (GeV)");
+            fhMCEDispEta[i]->SetYTitle("#sigma^{2}_{#eta #eta}");
+            outputContainer->Add(fhMCEDispEta[i]);     
+            
+            fhMCEDispPhi[i]  = new TH2F (Form("hEDispPhiE_MC%s",pname[i].Data()),
+                                         Form("cluster from %s : #sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i} - <#phi>)^{2} / #Sigma w_{i} vs E",ptype[i].Data()),
+                                         nptbins,ptmin,ptmax, ssbins,ssmin,ssmax); 
+            fhMCEDispPhi[i]->SetXTitle("E (GeV)");
+            fhMCEDispPhi[i]->SetYTitle("#sigma^{2}_{#phi #phi}");
+            outputContainer->Add(fhMCEDispPhi[i]);  
+            
+            fhMCESumEtaPhi[i]  = new TH2F (Form("hESumEtaPhiE_MC%s",pname[i].Data()),
+                                           Form("cluster from %s : #delta^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs E",ptype[i].Data()),  
+                                           nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax); 
+            fhMCESumEtaPhi[i]->SetXTitle("E (GeV)");
+            fhMCESumEtaPhi[i]->SetYTitle("#delta^{2}_{#eta #phi}");
+            outputContainer->Add(fhMCESumEtaPhi[i]);
+            
+            fhMCEDispEtaPhiDiff[i]  = new TH2F (Form("hEDispEtaPhiDiffE_MC%s",pname[i].Data()),
+                                                Form("cluster from %s : #sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",ptype[i].Data()),  
+                                                nptbins,ptmin,ptmax,200,-10,10); 
+            fhMCEDispEtaPhiDiff[i]->SetXTitle("E (GeV)");
+            fhMCEDispEtaPhiDiff[i]->SetYTitle("#sigma^{2}_{#phi #phi}-#sigma^{2}_{#eta #eta}");
+            outputContainer->Add(fhMCEDispEtaPhiDiff[i]);    
+            
+            fhMCESphericity[i]  = new TH2F (Form("hESphericity_MC%s",pname[i].Data()),
+                                            Form("cluster from %s : (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi}) vs E",ptype[i].Data()),  
+                                            nptbins,ptmin,ptmax, 200,-1,1); 
+            fhMCESphericity[i]->SetXTitle("E (GeV)");
+            fhMCESphericity[i]->SetYTitle("s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
+            outputContainer->Add(fhMCESphericity[i]);
+            
+            for(Int_t ie = 0; ie < 7; ie++)
+            {
+              fhMCDispEtaDispPhi[ie][i] = new TH2F (Form("hMCDispEtaDispPhi_EBin%d_MC%s",ie,pname[i].Data()),
+                                                    Form("cluster from %s : #sigma^{2}_{#phi #phi} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",pname[i].Data(),bin[ie],bin[ie+1]), 
+                                                    ssbins,ssmin,ssmax , ssbins,ssmin,ssmax); 
+              fhMCDispEtaDispPhi[ie][i]->SetXTitle("#sigma^{2}_{#eta #eta}");
+              fhMCDispEtaDispPhi[ie][i]->SetYTitle("#sigma^{2}_{#phi #phi}");
+              outputContainer->Add(fhMCDispEtaDispPhi[ie][i]); 
+              
+              fhMCLambda0DispEta[ie][i] = new TH2F (Form("hMCLambda0DispEta_EBin%d_MC%s",ie,pname[i].Data()),
+                                                    Form("cluster from %s : #lambda^{2}_{0} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",pname[i].Data(),bin[ie],bin[ie+1]), 
+                                                    ssbins,ssmin,ssmax , ssbins,ssmin,ssmax); 
+              fhMCLambda0DispEta[ie][i]->SetXTitle("#lambda^{2}_{0}");
+              fhMCLambda0DispEta[ie][i]->SetYTitle("#sigma^{2}_{#phi #phi}");
+              outputContainer->Add(fhMCLambda0DispEta[ie][i]);       
+              
+              fhMCLambda0DispPhi[ie][i] = new TH2F (Form("hMCLambda0DispPhi_EBin%d_MC%s",ie,pname[i].Data()),
+                                                    Form("cluster from %s :#lambda^{2}_{0} vs #sigma^{2}_{#phi #phi} for %d < E < %d GeV",pname[i].Data(),bin[ie],bin[ie+1]), 
+                                                    ssbins,ssmin,ssmax , ssbins,ssmin,ssmax); 
+              fhMCLambda0DispPhi[ie][i]->SetXTitle("#lambda^{2}_{0}");
+              fhMCLambda0DispPhi[ie][i]->SetYTitle("#sigma^{2}_{#phi #phi}");
+              outputContainer->Add(fhMCLambda0DispPhi[ie][i]); 
+              
+            }            
+          }
           
-          fhMCEDispEtaPhiDiff[i]  = new TH2F (Form("hEDispEtaPhiDiffE_MC%s",pname[i].Data()),
-                                              Form("cluster from %s : #sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs E",ptype[i].Data()),  
-                                              nptbins,ptmin,ptmax,200,-10,10); 
-          fhMCEDispEtaPhiDiff[i]->SetXTitle("E (GeV)");
-          fhMCEDispEtaPhiDiff[i]->SetYTitle("#sigma^{2}_{#phi #phi}-#sigma^{2}_{#eta #eta}");
-          outputContainer->Add(fhMCEDispEtaPhiDiff[i]);    
+          fhEMCLambda0FracMaxCellCut[i]  = new TH2F(Form("hELambda0FracMaxCellCut_MC%s",pname[i].Data()),
+                                                    Form("Selected pair, cluster from %s : E vs #lambda_{0}^{2}, Max cell fraction of energy < 0.5 ",ptype[i].Data()),
+                                                    nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
+          fhEMCLambda0FracMaxCellCut[i]->SetYTitle("#lambda_{0}^{2}");
+          fhEMCLambda0FracMaxCellCut[i]->SetXTitle("E (GeV)");
+          outputContainer->Add(fhEMCLambda0FracMaxCellCut[i]) ; 
           
-          fhMCESphericity[i]  = new TH2F (Form("hESphericity_MC%s",pname[i].Data()),
-                                          Form("cluster from %s : (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi}) vs E",ptype[i].Data()),  
-                                          nptbins,ptmin,ptmax, 200,-1,1); 
-          fhMCESphericity[i]->SetXTitle("E (GeV)");
-          fhMCESphericity[i]->SetYTitle("s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
-          outputContainer->Add(fhMCESphericity[i]);
+          fhEMCFracMaxCell[i]  = new TH2F(Form("hEFracMaxCell_MC%s",pname[i].Data()),
+                                          Form("Selected pair, cluster from %s : E vs Max cell fraction of energy",ptype[i].Data()),
+                                          nptbins,ptmin,ptmax,100,0,1); 
+          fhEMCFracMaxCell[i]->SetYTitle("Fraction");
+          fhEMCFracMaxCell[i]->SetXTitle("E (GeV)");
+          outputContainer->Add(fhEMCFracMaxCell[i]) ;           
           
-          Int_t bin[] = {0,2,4,6,10,1000};
-          for(Int_t ie = 0; ie < 5; ie++)
-          {
-            fhMCDispEtaDispPhiEBin[ie][i] = new TH2F (Form("hMCDispEtaDispPhi_EBin%d_MC%s",ie,pname[i].Data()),
-                                                      Form("cluster from %s : #sigma^{2}_{#phi #phi} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",pname[i].Data(),bin[ie],bin[ie+1]), 
-                                                      ssbins,ssmin,ssmax , ssbins,ssmin,ssmax); 
-            fhMCDispEtaDispPhiEBin[ie][i]->SetXTitle("#sigma^{2}_{#eta #eta}");
-            fhMCDispEtaDispPhiEBin[ie][i]->SetYTitle("#sigma^{2}_{#phi #phi}");
-            outputContainer->Add(fhMCDispEtaDispPhiEBin[ie][i]); 
-          }            
-        }
-        
-        fhEMCLambda0FracMaxCellCut[i]  = new TH2F(Form("hELambda0FracMaxCellCut_MC%s",pname[i].Data()),
-                                                  Form("Selected pair, cluster from %s : E vs #lambda_{0}^{2}, Max cell fraction of energy < 0.5 ",ptype[i].Data()),
-                                                  nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
-        fhEMCLambda0FracMaxCellCut[i]->SetYTitle("#lambda_{0}^{2}");
-        fhEMCLambda0FracMaxCellCut[i]->SetXTitle("E (GeV)");
-        outputContainer->Add(fhEMCLambda0FracMaxCellCut[i]) ; 
-        
-        fhEMCFracMaxCell[i]  = new TH2F(Form("hEFracMaxCell_MC%s",pname[i].Data()),
-                                        Form("Selected pair, cluster from %s : E vs Max cell fraction of energy",ptype[i].Data()),
-                                        nptbins,ptmin,ptmax,100,0,1); 
-        fhEMCFracMaxCell[i]->SetYTitle("Fraction");
-        fhEMCFracMaxCell[i]->SetXTitle("E (GeV)");
-        outputContainer->Add(fhEMCFracMaxCell[i]) ;           
-                
-      }//
+        }//
+      } // shower shape histo
       
     } //Not MC reader
   }//Histos with MC
   
   
+  if(fAnaType==kSSCalo && fFillSelectClHisto )
+  {
+    
+    fhAsymmetryE  = new TH2F ("hAsymmetryE","A = ( E1 - E2 ) / ( E1 + E2 ) vs E",  
+                               nptbins,ptmin,ptmax, 200, -1,1); 
+    fhAsymmetryE->SetXTitle("E (GeV)");
+    fhAsymmetryE->SetYTitle("A = ( E1 - E2 ) / ( E1 + E2 )");
+    outputContainer->Add(fhAsymmetryE);
+    
+    for(Int_t i = 0; i< 3; i++)
+    {
+      fhEAsymmetryLocMax[i]  = new TH2F(Form("hEAsymmetryLocMax%d",i+1),
+                                        Form("Selected #pi^{0} (#eta) pairs: E vs A = ( E1 - E2 ) / ( E1 + E2 ), %s",nlm[i].Data()),
+                                        nptbins,ptmin,ptmax,200, -1,1); 
+      fhEAsymmetryLocMax[i]->SetYTitle("A = ( E1 - E2 ) / ( E1 + E2 )");
+      fhEAsymmetryLocMax[i]->SetXTitle("E (GeV)");
+      outputContainer->Add(fhEAsymmetryLocMax[i]) ;
+    }
+    
+    for(Int_t ie = 0; ie< 7; ie++)
+    {
+      
+      fhAsymmetryLambda0[ie] = new TH2F (Form("hAsymmetryLambda0_EBin%d",ie),
+                                         Form("#lambda_{0}^{2} vs A for %d < E < %d GeV",bin[ie],bin[ie+1]), 
+                                         ssbins,ssmin,ssmax , 200,-1,1); 
+      fhAsymmetryLambda0[ie]->SetXTitle("#lambda_{0}^{2}");
+      fhAsymmetryLambda0[ie]->SetYTitle("A = ( E1 - E2 ) / ( E1 + E2 )");
+      outputContainer->Add(fhAsymmetryLambda0[ie]); 
+      
+      fhAsymmetryDispEta[ie] = new TH2F (Form("hAsymmetryDispEta_EBin%d",ie),
+                                         Form("#sigma^{2}_{#eta #eta} vs A for %d < E < %d GeV",bin[ie],bin[ie+1]), 
+                                         ssbins,ssmin,ssmax , 200,-1,1); 
+      fhAsymmetryDispEta[ie]->SetXTitle("#sigma^{2}_{#eta #eta}");
+      fhAsymmetryDispEta[ie]->SetYTitle("A = ( E1 - E2 ) / ( E1 + E2 )");
+      outputContainer->Add(fhAsymmetryDispEta[ie]); 
+      
+      fhAsymmetryDispPhi[ie] = new TH2F (Form("hAsymmetryDispPhi_EBin%d",ie),
+                                         Form("#sigma^{2}_{#phi #phi} vs A for %d < E < %d GeV",bin[ie],bin[ie+1]), 
+                                         ssbins,ssmin,ssmax , 200,-1,1); 
+      fhAsymmetryDispPhi[ie]->SetXTitle("#sigma^{2}_{#phi #phi}");
+      fhAsymmetryDispPhi[ie]->SetYTitle("A = ( E1 - E2 ) / ( E1 + E2 )");
+      outputContainer->Add(fhAsymmetryDispPhi[ie]);           
+    }        
+    
+    
+    if(IsDataMC()) 
+    {
+      for(Int_t i = 0; i< 6; i++)
+      {
+        fhMCEAsymmetry[i]  = new TH2F (Form("hEAsymmetry_MC%s",pname[i].Data()),
+                                       Form("cluster from %s : A = ( E1 - E2 ) / ( E1 + E2 ) vs E",ptype[i].Data()),  
+                                       nptbins,ptmin,ptmax, 200,-1,1); 
+        fhMCEAsymmetry[i]->SetXTitle("E (GeV)");
+        fhMCEAsymmetry[i]->SetYTitle("A = ( E1 - E2 ) / ( E1 + E2 )");
+        outputContainer->Add(fhMCEAsymmetry[i]);
+        
+        for(Int_t ie = 0; ie < 7; ie++)
+        {
+          fhMCAsymmetryLambda0[ie][i] = new TH2F (Form("hMCAsymmetryLambda0_EBin%d_MC%s",ie,pname[i].Data()),
+                                                  Form("cluster from %s : #lambda_{0}^{2} vs A for %d < E < %d GeV",pname[i].Data(),bin[ie],bin[ie+1]), 
+                                                  ssbins,ssmin,ssmax , 200,-1,1); 
+          fhMCAsymmetryLambda0[ie][i]->SetXTitle("#lambda_{0}^{2}");
+          fhMCAsymmetryLambda0[ie][i]->SetYTitle("A = ( E1 - E2 ) / ( E1 + E2 )");
+          outputContainer->Add(fhMCAsymmetryLambda0[ie][i]); 
+          
+          fhMCAsymmetryDispEta[ie][i] = new TH2F (Form("hMCAsymmetryDispEta_EBin%d_MC%s",ie,pname[i].Data()),
+                                                  Form("cluster from %s : #sigma^{2}_{#eta #eta} vs A for %d < E < %d GeV",pname[i].Data(),bin[ie],bin[ie+1]), 
+                                                  ssbins,ssmin,ssmax , 200,-1,1); 
+          fhMCAsymmetryDispEta[ie][i]->SetXTitle("#sigma^{2}_{#eta #eta}");
+          fhMCAsymmetryDispEta[ie][i]->SetYTitle("A = ( E1 - E2 ) / ( E1 + E2 )");
+          outputContainer->Add(fhMCAsymmetryDispEta[ie][i]); 
+          
+          fhMCAsymmetryDispPhi[ie][i] = new TH2F (Form("hMCAsymmetryDispPhi_EBin%d_MC%s",ie,pname[i].Data()),
+                                                  Form("cluster from %s : #sigma^{2}_{#phi #phi} vs A for %d < E < %d GeV",pname[i].Data(),bin[ie],bin[ie+1]), 
+                                                  ssbins,ssmin,ssmax , 200,-1,1); 
+          fhMCAsymmetryDispPhi[ie][i]->SetXTitle("#sigma^{2}_{#phi #phi}");
+          fhMCAsymmetryDispPhi[ie][i]->SetYTitle("A = ( E1 - E2 ) / ( E1 + E2 )");
+          outputContainer->Add(fhMCAsymmetryDispPhi[ie][i]);     
+        }        
+      }
+    }
+  }
+  
   //Keep neutral meson selection histograms if requiered
   //Setting done in AliNeutralMesonSelection
   
-  if(fAnaType!=kSSCalo && GetNeutralMesonSelection()){
-    
+  if(fAnaType!=kSSCalo && GetNeutralMesonSelection())
+  {
     TList * nmsHistos = GetNeutralMesonSelection()->GetCreateOutputObjects() ;
+    
     if(GetNeutralMesonSelection()->AreNeutralMesonSelectionHistosKept())
       for(Int_t i = 0; i < nmsHistos->GetEntries(); i++) outputContainer->Add(nmsHistos->At(i)) ;
+    
     delete nmsHistos;
-         
   }
   
   return outputContainer ;
@@ -1507,7 +1672,7 @@ void  AliAnaPi0EbE::MakeShowerShapeIdentification()
     }
          
     //If too small or big pt, skip it
-    if(mom.Pt() < GetMinPt() || mom.Pt() > GetMaxPt() ) continue ; 
+    if(mom.E() < GetMinEnergy() || mom.E() > GetMaxEnergy() ) continue ; 
     
     //Check acceptance selection
     if(IsFiducialCutOn())
@@ -1548,14 +1713,14 @@ void  AliAnaPi0EbE::MakeShowerShapeIdentification()
     //PID selection or bit setting
     Int_t    nMaxima = 0 ; 
     Double_t mass    = 0 , angle = 0;
-
+    Double_t e1      = 0 , e2    = 0;
     //Skip matched clusters with tracks
     if(IsTrackMatched(calo, GetReader()->GetInputEvent())) continue ;
       
     // Check if cluster is pi0 via cluster splitting
     aodpi0.SetIdentifiedParticleType(GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(calo,cells,GetCaloUtils(),
-                                                                                                 GetVertex(evtIndex),
-                                                                                                 nMaxima,mass,angle)); 
+                                                                                                 GetVertex(evtIndex),nMaxima,
+                                                                                                 mass,angle,e1,e2)); 
     
     if(GetDebug() > 1) printf("AliAnaPi0EbE::MakeShowerShapeIdentification() - PDG of identified particle %d\n",aodpi0.GetIdentifiedParticleType());
     
@@ -1585,7 +1750,9 @@ void  AliAnaPi0EbE::MakeShowerShapeIdentification()
     //Fill some histograms about shower shape
     if(fFillSelectClHisto && GetReader()->GetDataType()!=AliCaloTrackReader::kMC)
     {
-      FillSelectedClusterHistograms(calo, nMaxima, tag);
+      Float_t asy =-10;      
+      if(e1+e2 > 0 ) asy = (e1-e2) / (e1+e2);
+      FillSelectedClusterHistograms(calo, nMaxima, tag, asy);
     }         
     
     //Add AOD with pi0 object to aod branch
@@ -1634,20 +1801,18 @@ void  AliAnaPi0EbE::MakeAnalysisFillHistograms()
 
     if(IsDataMC())
     {
-      if((GetReader()->GetDataType() == AliCaloTrackReader::kMC && fAnaType!=kSSCalo) || 
-         GetReader()->GetDataType() != AliCaloTrackReader::kMC){
-        if(GetMCAnalysisUtils()->CheckTagBit(pi0->GetTag(), AliMCAnalysisUtils::kMCPi0))
-        {
-          fhPtMC  ->Fill(pt);
-          fhPhiMC ->Fill(pt,phi);
-          fhEtaMC ->Fill(pt,eta);
-        }
-        else
-        {
-          fhPtMCNo  ->Fill(pt);
-          fhPhiMCNo ->Fill(pt,phi);
-          fhEtaMCNo ->Fill(pt,eta);
-        }
+      if(GetMCAnalysisUtils()->CheckTagBit(pi0->GetTag(), AliMCAnalysisUtils::kMCPi0))
+      {
+        fhPtMC  ->Fill(pt);
+        fhPhiMC ->Fill(pt,phi);
+        fhEtaMC ->Fill(pt,eta);
+      }
+      else
+      {
+        fhPtMCNo  ->Fill(pt);
+        fhPhiMCNo ->Fill(pt,phi);
+        fhEtaMCNo ->Fill(pt,eta);
+        
       }
     }//Histograms with MC