AliAnaPi0: By default, only invariant mass histograms filled and created, extra histo...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 30 Nov 2011 18:10:58 +0000 (18:10 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 30 Nov 2011 18:10:58 +0000 (18:10 +0000)
AliAnaPi0EbE: Move TH3 histogram to 3 TH2
AliAnaCalorimeterQA: Create ECross histogram only in EMCAL analysis, PHOS not possible for the moment.

PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx
PWG4/PartCorrDep/AliAnaPi0.cxx
PWG4/PartCorrDep/AliAnaPi0.h
PWG4/PartCorrDep/AliAnaPi0EbE.cxx
PWG4/PartCorrDep/AliAnaPi0EbE.h

index 4208097..90e20b8 100755 (executable)
@@ -395,17 +395,17 @@ void AliAnaCalorimeterQA::CellHistograms(AliVCaloCells *cells)
       }      
 
       // Remove exotic cells
-      fhCellECross->Fill(amp,1-GetECross(id,cells)/amp);
-      
-      if(fCalorimeter=="EMCAL" && GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(id, cells, bc)) continue;
+      if(fCalorimeter=="EMCAL") {
+        fhCellECross->Fill(amp,1-GetECross(id,cells)/amp);
+        if(GetCaloUtils()->GetEMCALRecoUtils()->IsExoticCell(id, cells, bc)) continue;
+      }
       
       fhAmplitude->Fill(amp);
       fhAmpId    ->Fill(amp,id);
       fhAmpMod   ->Fill(amp,nModule);
       
-      
       if ((fCalorimeter=="EMCAL" && amp > fEMCALCellAmpMin) ||
-          (fCalorimeter=="PHOS"  && amp > fPHOSCellAmpMin))   {
+          (fCalorimeter=="PHOS"  && amp > fPHOSCellAmpMin )   ) {
         
         nCellsInModule[nModule]++ ;
         
@@ -2074,12 +2074,13 @@ TList * AliAnaCalorimeterQA::GetCreateOutputObjects()
     outputContainer->Add(fhTimeAmp);
     
   }
-  
-  fhCellECross  = new TH2F ("hCellECross","1 - Energy in cross around cell /  cell energy",
-                                      nptbins,ptmin,ptmax, 400,-1,1.); 
-  fhCellECross->SetXTitle("E_{cell} (GeV) ");
-  fhCellECross->SetYTitle("1- E_{cross}/E_{cell}");
-  outputContainer->Add(fhCellECross);    
+  if(fCalorimeter=="EMCAL"){
+    fhCellECross  = new TH2F ("hCellECross","1 - Energy in cross around cell /  cell energy",
+                              nptbins,ptmin,ptmax, 400,-1,1.); 
+    fhCellECross->SetXTitle("E_{cell} (GeV) ");
+    fhCellECross->SetYTitle("1- E_{cross}/E_{cell}");
+    outputContainer->Add(fhCellECross);    
+  }
   
   if(fCorrelate){
     //PHOS vs EMCAL
index dbc6e44..ae4c254 100755 (executable)
@@ -67,10 +67,11 @@ fMultiCutAna(kFALSE),        fMultiCutAnaSim(kFALSE),
 fNPtCuts(0),                 fNAsymCuts(0),                fNCellNCuts(0),               fNPIDBits(0),  
 fMakeInvPtPlots(kFALSE),     fSameSM(kFALSE),              fFillSMCombinations(kFALSE),  fCheckConversion(kFALSE),
 fUseTrackMultBins(kFALSE),   fUsePhotonMultBins(kFALSE),   fUseAverCellEBins(kFALSE),    fUseAverClusterEBins(kFALSE),
-fUseAverClusterEDenBins(0),  fFillBadDistHisto(kFALSE),
+fUseAverClusterEDenBins(0),  fFillBadDistHisto(kFALSE),    fFillSSCombinations(kFALSE),  
+fFillAngleHisto(kFALSE),     fFillAsymmetryHisto(kFALSE),
+//Histograms
 fhAverTotECluster(0),        fhAverTotECell(0),            fhAverTotECellvsCluster(0),
 fhEDensityCluster(0),        fhEDensityCell(0),            fhEDensityCellvsCluster(0),
-//Histograms
 fhReMod(0x0),                fhReSameSideEMCALMod(0x0),    fhReSameSectorEMCALMod(0x0),  fhReDiffPHOSMod(0x0), 
 fhMiMod(0x0),                fhMiSameSideEMCALMod(0x0),    fhMiSameSectorEMCALMod(0x0),  fhMiDiffPHOSMod(0x0),
 fhReConv(0x0),               fhMiConv(0x0),                fhReConv2(0x0),  fhMiConv2(0x0),
@@ -464,20 +465,22 @@ TList * AliAnaPi0::GetCreateOutputObjects()
     }
   }
   
-  fhRePtAsym = new TH2F("hRePtAsym","Asymmetry vs pt, for pairs",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
-  fhRePtAsym->SetXTitle("p_{T} (GeV/c)");
-  fhRePtAsym->SetYTitle("Asymmetry");
-  outputContainer->Add(fhRePtAsym);
-  
-  fhRePtAsymPi0 = new TH2F("hRePtAsymPi0","Asymmetry vs pt, for pairs close to #pi^{0} mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
-  fhRePtAsymPi0->SetXTitle("p_{T} (GeV/c)");
-  fhRePtAsymPi0->SetYTitle("Asymmetry");
-  outputContainer->Add(fhRePtAsymPi0);
-  
-  fhRePtAsymEta = new TH2F("hRePtAsymEta","Asymmetry vs pt, for pairs close to #eta mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
-  fhRePtAsymEta->SetXTitle("p_{T} (GeV/c)");
-  fhRePtAsymEta->SetYTitle("Asymmetry");
-  outputContainer->Add(fhRePtAsymEta);
+  if(fFillAsymmetryHisto){
+    fhRePtAsym = new TH2F("hRePtAsym","Asymmetry vs pt, for pairs",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
+    fhRePtAsym->SetXTitle("p_{T} (GeV/c)");
+    fhRePtAsym->SetYTitle("Asymmetry");
+    outputContainer->Add(fhRePtAsym);
+    
+    fhRePtAsymPi0 = new TH2F("hRePtAsymPi0","Asymmetry vs pt, for pairs close to #pi^{0} mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
+    fhRePtAsymPi0->SetXTitle("p_{T} (GeV/c)");
+    fhRePtAsymPi0->SetYTitle("Asymmetry");
+    outputContainer->Add(fhRePtAsymPi0);
+    
+    fhRePtAsymEta = new TH2F("hRePtAsymEta","Asymmetry vs pt, for pairs close to #eta mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
+    fhRePtAsymEta->SetXTitle("p_{T} (GeV/c)");
+    fhRePtAsymEta->SetYTitle("Asymmetry");
+    outputContainer->Add(fhRePtAsymEta);
+  }
   
   if(fMultiCutAna){
     
@@ -547,25 +550,29 @@ TList * AliAnaPi0::GetCreateOutputObjects()
     }
   }// multi cuts analysis
   
-  fhReSS[0] = new TH2F("hRe_SS_Tight"," 0.01 < #lambda_{0}^{2} < 0.4",
-                       nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
-  fhReSS[0]->SetXTitle("p_{T} (GeV/c)");
-  fhReSS[0]->SetYTitle("m_{#gamma,#gamma} (GeV/c^{2})");
-  outputContainer->Add(fhReSS[0]) ;
-  
-  
-  fhReSS[1] = new TH2F("hRe_SS_Loose"," #lambda_{0}^{2} > 0.4",
-                       nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
-  fhReSS[1]->SetXTitle("p_{T} (GeV/c)");
-  fhReSS[1]->SetYTitle("m_{#gamma,#gamma} (GeV/c^{2})");
-  outputContainer->Add(fhReSS[1]) ;
-  
-  
-  fhReSS[2] = new TH2F("hRe_SS_Both"," cluster_{1} #lambda_{0}^{2} > 0.4; cluster_{2} 0.01 < #lambda_{0}^{2} < 0.4",
-                       nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
-  fhReSS[2]->SetXTitle("p_{T} (GeV/c)");
-  fhReSS[2]->SetYTitle("m_{#gamma,#gamma} (GeV/c^{2})");
-  outputContainer->Add(fhReSS[2]) ;
+  if(fFillSSCombinations)
+  {
+    
+    fhReSS[0] = new TH2F("hRe_SS_Tight"," 0.01 < #lambda_{0}^{2} < 0.4",
+                         nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
+    fhReSS[0]->SetXTitle("p_{T} (GeV/c)");
+    fhReSS[0]->SetYTitle("m_{#gamma,#gamma} (GeV/c^{2})");
+    outputContainer->Add(fhReSS[0]) ;
+    
+    
+    fhReSS[1] = new TH2F("hRe_SS_Loose"," #lambda_{0}^{2} > 0.4",
+                         nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
+    fhReSS[1]->SetXTitle("p_{T} (GeV/c)");
+    fhReSS[1]->SetYTitle("m_{#gamma,#gamma} (GeV/c^{2})");
+    outputContainer->Add(fhReSS[1]) ;
+    
+    
+    fhReSS[2] = new TH2F("hRe_SS_Both"," cluster_{1} #lambda_{0}^{2} > 0.4; cluster_{2} 0.01 < #lambda_{0}^{2} < 0.4",
+                         nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
+    fhReSS[2]->SetXTitle("p_{T} (GeV/c)");
+    fhReSS[2]->SetYTitle("m_{#gamma,#gamma} (GeV/c^{2})");
+    outputContainer->Add(fhReSS[2]) ;
+  }
   
   fhEvents=new TH3F("hEvents","Number of events",GetNCentrBin(),0.,1.*GetNCentrBin(),
                     GetNZvertBin(),0.,1.*GetNZvertBin(),GetNRPBin(),0.,1.*GetNRPBin()) ;
@@ -599,33 +606,35 @@ TList * AliAnaPi0::GetCreateOutputObjects()
     }
   }
   
-  fhRealOpeningAngle  = new TH2F
-  ("hRealOpeningAngle","Angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,300,0,TMath::Pi()); 
-  fhRealOpeningAngle->SetYTitle("#theta(rad)");
-  fhRealOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
-  outputContainer->Add(fhRealOpeningAngle) ;
-  
-  fhRealCosOpeningAngle  = new TH2F
-  ("hRealCosOpeningAngle","Cosinus of angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,1); 
-  fhRealCosOpeningAngle->SetYTitle("cos (#theta) ");
-  fhRealCosOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
-  outputContainer->Add(fhRealCosOpeningAngle) ;
-       
-  if(fDoOwnMix){
-    
-    fhMixedOpeningAngle  = new TH2F
-    ("hMixedOpeningAngle","Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,300,0,TMath::Pi()); 
-    fhMixedOpeningAngle->SetYTitle("#theta(rad)");
-    fhMixedOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
-    outputContainer->Add(fhMixedOpeningAngle) ;
+  if(fFillAngleHisto){
+    fhRealOpeningAngle  = new TH2F
+    ("hRealOpeningAngle","Angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,300,0,TMath::Pi()); 
+    fhRealOpeningAngle->SetYTitle("#theta(rad)");
+    fhRealOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
+    outputContainer->Add(fhRealOpeningAngle) ;
+    
+    fhRealCosOpeningAngle  = new TH2F
+    ("hRealCosOpeningAngle","Cosinus of angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,1); 
+    fhRealCosOpeningAngle->SetYTitle("cos (#theta) ");
+    fhRealCosOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
+    outputContainer->Add(fhRealCosOpeningAngle) ;
     
-    fhMixedCosOpeningAngle  = new TH2F
-    ("hMixedCosOpeningAngle","Cosinus of angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,100,0,1); 
-    fhMixedCosOpeningAngle->SetYTitle("cos (#theta) ");
-    fhMixedCosOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
-    outputContainer->Add(fhMixedCosOpeningAngle) ;
-    
-  }
+    if(fDoOwnMix){
+      
+      fhMixedOpeningAngle  = new TH2F
+      ("hMixedOpeningAngle","Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,300,0,TMath::Pi()); 
+      fhMixedOpeningAngle->SetYTitle("#theta(rad)");
+      fhMixedOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
+      outputContainer->Add(fhMixedOpeningAngle) ;
+      
+      fhMixedCosOpeningAngle  = new TH2F
+      ("hMixedCosOpeningAngle","Cosinus of angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,100,0,1); 
+      fhMixedCosOpeningAngle->SetYTitle("cos (#theta) ");
+      fhMixedCosOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
+      outputContainer->Add(fhMixedCosOpeningAngle) ;
+      
+    }
+  } 
   
   //Histograms filled only if MC data is requested     
   if(IsDataMC()){
@@ -765,18 +774,19 @@ TList * AliAnaPi0::GetCreateOutputObjects()
     
     outputContainer->Add(fhMCEtaPtOrigin) ;
     
-    
-    fhPrimPi0OpeningAngle  = new TH2F
-    ("hPrimPi0OpeningAngle","Angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,0.5); 
-    fhPrimPi0OpeningAngle->SetYTitle("#theta(rad)");
-    fhPrimPi0OpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
-    outputContainer->Add(fhPrimPi0OpeningAngle) ;
-    
-    fhPrimPi0CosOpeningAngle  = new TH2F
-    ("hPrimPi0CosOpeningAngle","Cosinus of angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,-1,1); 
-    fhPrimPi0CosOpeningAngle->SetYTitle("cos (#theta) ");
-    fhPrimPi0CosOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
-    outputContainer->Add(fhPrimPi0CosOpeningAngle) ;
+    if(fFillAngleHisto){
+      fhPrimPi0OpeningAngle  = new TH2F
+      ("hPrimPi0OpeningAngle","Angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,0.5); 
+      fhPrimPi0OpeningAngle->SetYTitle("#theta(rad)");
+      fhPrimPi0OpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
+      outputContainer->Add(fhPrimPi0OpeningAngle) ;
+      
+      fhPrimPi0CosOpeningAngle  = new TH2F
+      ("hPrimPi0CosOpeningAngle","Cosinus of angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,-1,1); 
+      fhPrimPi0CosOpeningAngle->SetYTitle("cos (#theta) ");
+      fhPrimPi0CosOpeningAngle->SetXTitle("E_{ #pi^{0}} (GeV)");
+      outputContainer->Add(fhPrimPi0CosOpeningAngle) ;
+    }
     
     for(Int_t i = 0; i<13; i++){
       fhMCOrgMass[i] = new TH2F(Form("hMCOrgMass_%d",i),Form("mass vs pt, origin %d",i),nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
@@ -1133,9 +1143,11 @@ void AliAnaPi0::FillAcceptanceHistograms(){
                   fhPrimPi0AccPt ->Fill(pi0Pt) ;
                   fhPrimPi0AccPhi->Fill(pi0Pt, phi) ;
                   fhPrimPi0AccY  ->Fill(pi0Pt, pi0Y) ;
-                  Double_t angle  = lv1.Angle(lv2.Vect());
-                  fhPrimPi0OpeningAngle   ->Fill(pi0Pt,angle);
-                  fhPrimPi0CosOpeningAngle->Fill(pi0Pt,TMath::Cos(angle));
+                  if(fFillAngleHisto){
+                    Double_t angle  = lv1.Angle(lv2.Vect());
+                    fhPrimPi0OpeningAngle   ->Fill(pi0Pt,angle);
+                    fhPrimPi0CosOpeningAngle->Fill(pi0Pt,TMath::Cos(angle));
+                  }
                 }
                 else if(pdg==221){
                   fhPrimEtaAccPt ->Fill(pi0Pt) ;
@@ -1274,9 +1286,11 @@ void AliAnaPi0::FillAcceptanceHistograms(){
                   fhPrimPi0AccPt ->Fill(pi0Pt) ;
                   fhPrimPi0AccPhi->Fill(pi0Pt, phi) ;
                   fhPrimPi0AccY  ->Fill(pi0Pt, pi0Y) ;
-                  Double_t angle  = lv1.Angle(lv2.Vect());
-                  fhPrimPi0OpeningAngle   ->Fill(pi0Pt,angle);
-                  fhPrimPi0CosOpeningAngle->Fill(pi0Pt,TMath::Cos(angle));
+                  if(fFillAngleHisto){
+                    Double_t angle  = lv1.Angle(lv2.Vect());
+                    fhPrimPi0OpeningAngle   ->Fill(pi0Pt,angle);
+                    fhPrimPi0CosOpeningAngle->Fill(pi0Pt,TMath::Cos(angle));
+                  }
                 }
                 else if(pdg==221){
                   fhPrimEtaAccPt ->Fill(pi0Pt) ;
@@ -1872,12 +1886,15 @@ void AliAnaPi0::MakeAnalysisFillHistograms()
         }
         
         // Fill shower shape cut histograms
-        if     ( l01 > 0.01 && l01 < 0.4  && 
-                 l02 > 0.01 && l02 < 0.4 )               fhReSS[0]->Fill(pt,m); // Tight
-        else if( l01 > 0.4  && l02 > 0.4 )               fhReSS[1]->Fill(pt,m); // Loose
-        else if( l01 > 0.01 && l01 < 0.4  && l02 > 0.4 ) fhReSS[2]->Fill(pt,m); // Both
-        else if( l02 > 0.01 && l02 < 0.4  && l01 > 0.4 ) fhReSS[2]->Fill(pt,m); // Both
-
+        if(fFillSSCombinations)
+        {
+          if     ( l01 > 0.01 && l01 < 0.4  && 
+                   l02 > 0.01 && l02 < 0.4 )               fhReSS[0]->Fill(pt,m); // Tight
+          else if( l01 > 0.4  && l02 > 0.4 )               fhReSS[1]->Fill(pt,m); // Loose
+          else if( l01 > 0.01 && l01 < 0.4  && l02 > 0.4 ) fhReSS[2]->Fill(pt,m); // Both
+          else if( l02 > 0.01 && l02 < 0.4  && l01 > 0.4 ) fhReSS[2]->Fill(pt,m); // Both
+        }
+        
         //Fill histograms for different bad channel distance, centrality, assymmetry cut and pid bit
         for(Int_t ipid=0; ipid<fNPIDBits; ipid++){
           if((p1->IsPIDOK(fPIDBits[ipid],AliCaloPID::kPhoton)) && (p2->IsPIDOK(fPIDBits[ipid],AliCaloPID::kPhoton))){ 
@@ -1903,13 +1920,17 @@ void AliAnaPi0::MakeAnalysisFillHistograms()
         }// pid bit loop
         
         //Fill histograms with opening angle
-        fhRealOpeningAngle   ->Fill(pt,angle);
-        fhRealCosOpeningAngle->Fill(pt,TMath::Cos(angle));
+        if(fFillAngleHisto){
+          fhRealOpeningAngle   ->Fill(pt,angle);
+          fhRealCosOpeningAngle->Fill(pt,TMath::Cos(angle));
+        }
         
         //Fill histograms with pair assymmetry
-        fhRePtAsym->Fill(pt,a);
-        if(m > 0.10 && m < 0.17) fhRePtAsymPi0->Fill(pt,a);
-        if(m > 0.45 && m < 0.65) fhRePtAsymEta->Fill(pt,a);
+        if(fFillAsymmetryHisto){
+          fhRePtAsym->Fill(pt,a);
+          if(m > 0.10 && m < 0.17) fhRePtAsymPi0->Fill(pt,a);
+          if(m > 0.45 && m < 0.65) fhRePtAsymEta->Fill(pt,a);
+        }
         
         //-------------------------------------------------------
         //Get the number of cells needed for multi cut analysis.
@@ -2147,8 +2168,11 @@ void AliAnaPi0::MakeAnalysisFillHistograms()
             } // Multi cut ana
             
             //Fill histograms with opening angle
-            fhMixedOpeningAngle   ->Fill(pt,angle);
-            fhMixedCosOpeningAngle->Fill(pt,TMath::Cos(angle));          
+            if(fFillAngleHisto){
+              fhMixedOpeningAngle   ->Fill(pt,angle);
+              fhMixedCosOpeningAngle->Fill(pt,TMath::Cos(angle));
+            }
+            
           }//ok
         }// second cluster loop
       }//first cluster loop
index c44f5f2..ca2eaf6 100755 (executable)
@@ -88,6 +88,9 @@ class AliAnaPi0 : public AliAnaPartCorrBaseClass {
   void         SetAngleCut(Float_t a)           { fAngleCut            = a      ; }
   void         SetAngleMaxCut(Float_t a)        { fAngleMaxCut         = a      ; }
 
+  void         SwitchOnFillAngleHisto()         { fFillAngleHisto      = kTRUE  ; }
+  void         SwitchOffFillAngleHisto()        { fFillAngleHisto      = kFALSE ; }
+  
   //-------------------------------
   // Use mixing code of this class
   //-------------------------------
@@ -128,6 +131,13 @@ class AliAnaPi0 : public AliAnaPartCorrBaseClass {
   void         SetNCellCutsAt(Int_t p,Int_t v)  { if(p < 10)fCellNCuts[p]= v    ; }
   void         SetPIDBitsAt  (Int_t p,Int_t v)  { if(p < 10)fPIDBits[p]  = v    ; }
   
+  void         SwitchOnFillSSCombinations()     { fFillSSCombinations  = kTRUE  ; }
+  void         SwitchOffFillSSCombinations()    { fFillSSCombinations  = kFALSE ; }
+  
+  void         SwitchOnFillAsymmetryHisto()     { fFillAsymmetryHisto  = kTRUE  ; }
+  void         SwitchOffFillAsymmetryHisto()    { fFillAsymmetryHisto  = kFALSE ; }
+
+  
   //MC analysis related methods
     
   void         SwitchOnConversionChecker()      { fCheckConversion     = kTRUE  ; }
@@ -179,7 +189,10 @@ class AliAnaPi0 : public AliAnaPartCorrBaseClass {
   Bool_t   fUseAverClusterEBins;       // Use cluster average energy and not centrality bins
   Bool_t   fUseAverClusterEDenBins;    // Use cluster average energy density and not centrality bins
   Bool_t   fFillBadDistHisto;          // Do plots for different distances to bad channels
-  
+  Bool_t   fFillSSCombinations;        // Do invariant mass for different combination of shower shape clusters
+  Bool_t   fFillAngleHisto;            // Fill histograms with pair opening angle
+  Bool_t   fFillAsymmetryHisto;        // Fill histograms with asymmetry vs pt
+
   //Histograms
   
   //Event characterization
@@ -190,27 +203,27 @@ class AliAnaPi0 : public AliAnaPartCorrBaseClass {
   TH1F *   fhEDensityCell;             //! Deposited energy in event per cell vs cluster
   TH2F *   fhEDensityCellvsCluster;    //! Deposited energy in event per cell vs cluster
 
-  TH2F **  fhReMod ;                  //![fNModules]   REAL  two-photon invariant mass distribution for different calorimeter modules.
-  TH2F **  fhReSameSideEMCALMod ;     //![fNModules-2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
-  TH2F **  fhReSameSectorEMCALMod ;   //![fNModules/2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
-  TH2F **  fhReDiffPHOSMod ;          //![fNModules]   REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
-  TH2F **  fhMiMod ;                  //![fNModules]   MIXED two-photon invariant mass distribution for different calorimeter modules.
-  TH2F **  fhMiSameSideEMCALMod ;     //![fNModules-2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
-  TH2F **  fhMiSameSectorEMCALMod ;   //![fNModules/2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
-  TH2F **  fhMiDiffPHOSMod ;          //![fNModules-1] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
+  TH2F **  fhReMod ;                   //![fNModules]   REAL  two-photon invariant mass distribution for different calorimeter modules.
+  TH2F **  fhReSameSideEMCALMod ;      //![fNModules-2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
+  TH2F **  fhReSameSectorEMCALMod ;    //![fNModules/2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
+  TH2F **  fhReDiffPHOSMod ;           //![fNModules]   REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
+  TH2F **  fhMiMod ;                   //![fNModules]   MIXED two-photon invariant mass distribution for different calorimeter modules.
+  TH2F **  fhMiSameSideEMCALMod ;      //![fNModules-2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
+  TH2F **  fhMiSameSectorEMCALMod ;    //![fNModules/2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
+  TH2F **  fhMiDiffPHOSMod ;           //![fNModules-1] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
   
   // Pairs with at least one cluster tagged as conversion
-  TH2F *   fhReConv ;                 //! REAL  two-photon invariant mass distribution one of the pair was 2 clusters with small mass 
-  TH2F *   fhMiConv ;                 //! MIXED two-photon invariant mass distribution one of the pair was 2 clusters with small mass
-  TH2F *   fhReConv2 ;                //! REAL  two-photon invariant mass distribution both pair photons recombined from 2 clusters with small mass 
-  TH2F *   fhMiConv2 ;                //! MIXED two-photon invariant mass distribution both pair photons recombined from 2 clusters with small mass
+  TH2F *   fhReConv ;                  //! REAL  two-photon invariant mass distribution one of the pair was 2 clusters with small mass 
+  TH2F *   fhMiConv ;                  //! MIXED two-photon invariant mass distribution one of the pair was 2 clusters with small mass
+  TH2F *   fhReConv2 ;                 //! REAL  two-photon invariant mass distribution both pair photons recombined from 2 clusters with small mass 
+  TH2F *   fhMiConv2 ;                 //! MIXED two-photon invariant mass distribution both pair photons recombined from 2 clusters with small mass
 
-  TH2F **  fhRe1 ;                    //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
-  TH2F **  fhMi1 ;                    //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
-  TH2F **  fhRe2 ;                    //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
-  TH2F **  fhMi2 ;                    //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
-  TH2F **  fhRe3 ;                    //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
-  TH2F **  fhMi3 ;                    //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
+  TH2F **  fhRe1 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
+  TH2F **  fhMi1 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
+  TH2F **  fhRe2 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
+  TH2F **  fhMi2 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
+  TH2F **  fhRe3 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
+  TH2F **  fhMi3 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
 
   //Histograms weighted by inverse pT
   TH2F **  fhReInvPt1 ;                //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
@@ -296,7 +309,7 @@ class AliAnaPi0 : public AliAnaPartCorrBaseClass {
   AliAnaPi0(const AliAnaPi0 & g) ; // cpy ctor
   AliAnaPi0 & operator = (const AliAnaPi0 & api0) ;//cpy assignment
   
-  ClassDef(AliAnaPi0,21)
+  ClassDef(AliAnaPi0,22)
 } ;
 
 
index e8c3c2e..ec7836e 100755 (executable)
@@ -29,8 +29,6 @@
 #include <TList.h>
 #include <TClonesArray.h>
 #include <TObjString.h>
-#include <TH3F.h>
-//#include "Riostream.h"
 
 // --- Analysis system --- 
 #include "AliAnaPi0EbE.h" 
@@ -54,7 +52,8 @@ AliAnaPi0EbE::AliAnaPi0EbE() :
     fMinDist(0.),fMinDist2(0.),   fMinDist3(0.),                     fFillWeightHistograms(kFALSE),
     fInputAODGammaConvName(""),
     //Histograms
-    fhPtPi0(0),                   fhEPi0(0),                    fhEEtaPhiPi0(0),
+    fhPtPi0(0),                   fhEPi0(0),                    
+    fhEEtaPi0(0),                 fhEPhiPi0(0),                 fhEtaPhiPi0(0),
     //Shower shape histos
     fhEDispersion(0),             fhELambda0(0),                fhELambda1(0), 
     fhELambda0NoTRD(0),           fhELambda0FracMaxCellCut(0),  
@@ -327,12 +326,23 @@ TList *  AliAnaPi0EbE::GetCreateOutputObjects()
   fhEPi0->SetXTitle("E  #pi^{0}(GeV)");
   outputContainer->Add(fhEPi0) ; 
   
-  fhEEtaPhiPi0  = new TH3F
-  ("hEEtaPhiPi0","Selected #pi^{0} pairs: E vs #eta vs #phi",nptbins,ptmin,ptmax,netabins,etamin,etamax, nphibins,phimin,phimax); 
-  fhEEtaPhiPi0->SetZTitle("#phi");
-  fhEEtaPhiPi0->SetYTitle("#eta");
-  fhEEtaPhiPi0->SetXTitle("E (GeV)");
-  outputContainer->Add(fhEEtaPhiPi0) ; 
+  fhEPhiPi0  = new TH2F
+  ("hEPhiPi0","Selected #pi^{0} pairs: E vs  #phi",nptbins,ptmin,ptmax, nphibins,phimin,phimax); 
+  fhEPhiPi0->SetYTitle("#phi #pi^{0}(GeV)");
+  fhEPhiPi0->SetXTitle("E (GeV) #pi^{0}(GeV)");
+  outputContainer->Add(fhEPhiPi0) ; 
+  
+  fhEEtaPi0  = new TH2F
+  ("hEEtaPi0","Selected #pi^{0} pairs: E vs #eta",nptbins,ptmin,ptmax,netabins,etamin,etamax); 
+  fhEEtaPi0->SetYTitle("#eta #pi^{0}(GeV)");
+  fhEEtaPi0->SetXTitle("E (GeV) #pi^{0}(GeV)");
+  outputContainer->Add(fhEEtaPi0) ; 
+  
+  fhEtaPhiPi0  = new TH2F
+  ("hEtaPhiPi0","Selected #pi^{0} pairs: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax); 
+  fhEtaPhiPi0->SetYTitle("#phi #pi^{0}(GeV)");
+  fhEtaPhiPi0->SetXTitle("#eta #pi^{0}(GeV)");
+  outputContainer->Add(fhEtaPhiPi0) ; 
   
   ////////
   
@@ -1045,8 +1055,11 @@ void  AliAnaPi0EbE::MakeAnalysisFillHistograms()
     
     fhPtPi0      ->Fill(pt);
     fhEPi0       ->Fill(ener);
-    fhEEtaPhiPi0 ->Fill(ener,eta,phi);
     
+    fhEEtaPi0   ->Fill(ener,eta);
+    fhEPhiPi0   ->Fill(ener,phi);
+    fhEtaPhiPi0 ->Fill(eta,phi);
+
     if(IsDataMC()){
       if((GetReader()->GetDataType() == AliCaloTrackReader::kMC && fAnaType!=kSSCalo) || 
          GetReader()->GetDataType() != AliCaloTrackReader::kMC){
index 7455eab..d9f7ca8 100755 (executable)
@@ -17,7 +17,6 @@
 
 
 // --- ROOT system ---
-class TH3F ; 
 class TList ;
 class TObjString;
 
@@ -100,8 +99,10 @@ class AliAnaPi0EbE : public AliAnaPartCorrBaseClass {
   
   TH1F         * fhPtPi0  ;                //! Number of identified  pi0 vs pT
   TH1F         * fhEPi0   ;                //! Number of identified  pi0 vs E
-  TH3F         * fhEEtaPhiPi0  ;           //! E vs eta phi of identified  pi0 
-  
+  TH2F         * fhEEtaPi0  ;              //! E vs eta of identified  pi0 
+  TH2F         * fhEPhiPi0  ;              //! E vs phi of identified  pi0 
+  TH2F         * fhEtaPhiPi0  ;            //! eta vs phi of identified  pi0 
+
   TH2F         * fhEDispersion ;           //! E vs disp of selected cluster
   TH2F         * fhELambda0 ;              //! E vs lambda0 of selected cluster 
   TH2F         * fhELambda1 ;              //! E vs lambda1 of selected cluster 
@@ -141,7 +142,7 @@ class AliAnaPi0EbE : public AliAnaPartCorrBaseClass {
   AliAnaPi0EbE(const AliAnaPi0EbE & g) ;               // cpy ctor
   AliAnaPi0EbE & operator = (const AliAnaPi0EbE & g) ; // cpy assignment
   
-  ClassDef(AliAnaPi0EbE,10)
+  ClassDef(AliAnaPi0EbE,11)
 } ;