]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/AliAnaPi0EbE.h
change index for electrons in array of histograms; fix coverity 24446
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaPi0EbE.h
1 #ifndef ALIANAPI0EBE_H
2 #define ALIANAPI0EBE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 //_________________________________________________________________________
7 //
8 // Class for the analysis of high pT pi0 event by event
9 // Pi0/Eta identified by one of the following:
10 //  -Invariant mass of 2 cluster in calorimeter
11 //  -Shower shape analysis in calorimeter
12 //  -Invariant mass of one cluster in calorimeter and one photon reconstructed in TPC (in near future)
13 //
14 //-- Author: Gustavo Conesa (INFN-LNF)  &  Raphaelle Ichou (SUBATECH)
15 //_________________________________________________________________________
16
17
18 // --- ROOT system ---
19 class TList ;
20 class TObjString;
21
22 // --- ANALYSIS system ---
23 #include "AliAnaCaloTrackCorrBaseClass.h"
24
25 class AliAnaPi0EbE : public AliAnaCaloTrackCorrBaseClass {
26
27  public: 
28   AliAnaPi0EbE() ; // default ctor
29   virtual ~AliAnaPi0EbE() { ; } //virtual dtor
30           
31   TObjString *   GetAnalysisCuts();
32   
33   TList      *   GetCreateOutputObjects();
34   
35   Int_t          GetMCIndex(Int_t aodTag);
36   
37   void           Init();
38   
39   void           InitParameters();
40
41   void           MakeAnalysisFillAOD()  ;
42    
43   void           MakeAnalysisFillHistograms() ; 
44   
45   void           Print(const Option_t * opt) const;
46   
47   // Main
48   
49   void           FillEMCALBCHistograms(Float_t energy, Float_t eta, Float_t phi, Float_t time);
50   
51   void           FillPileUpHistograms(Float_t pt, Float_t time, AliVCluster * c) ;
52   
53   void           FillRejectedClusterHistograms(TLorentzVector mom, Int_t mctag, Int_t nMaxima);
54   
55   void           FillSelectedClusterHistograms(AliVCluster* cluster, Float_t pt,
56                                                Int_t nLocMax,        Int_t tag,
57                                                Float_t asy = 0);
58     
59   void           FillWeightHistograms(AliVCluster *clus);
60     
61   void           HasPairSameMCMother(AliAODPWG4Particle * photon1, 
62                                      AliAODPWG4Particle * photon2, 
63                                      Int_t & label, Int_t & tag);
64   
65   void           MakeInvMassInCalorimeter() ;
66   
67   void           MakeInvMassInCalorimeterAndCTS() ;
68   
69   void           MakeShowerShapeIdentification() ;
70           
71   //Setters Getters
72   
73   //Analysis types
74   enum anaTypes  {kIMCalo, kSSCalo, kIMCaloTracks};  
75   anaTypes       GetAnalysisType()                     const { return fAnaType                 ; }
76   void           SetAnalysisType(anaTypes ana)               { fAnaType = ana                  ; }
77   
78   TString        GetInputAODGammaConvName()            const { return fInputAODGammaConvName   ; }
79   void           SetInputAODGammaConvName(TString name)      { fInputAODGammaConvName = name   ; }      
80   
81   //Only for pi0 SS identification case
82   void           SetCalorimeter(TString & det)               { fCalorimeter = det              ; }
83   
84   void           SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3) {
85                   fMinDist = m1; fMinDist2 = m2; fMinDist3 = m3                                ; }
86   
87   void           SetNLMCut(Int_t min, Int_t max)             { fNLMCutMin = min; 
88                                                                fNLMCutMax = max                ; }
89   Int_t          GetNLMCutMin()                        const { return fNLMCutMin               ; }
90   Int_t          GetNLMCutMax()                        const { return fNLMCutMax               ; }      
91   
92   void           SetNLMMinEnergy(Int_t i, Float_t min)       { if (i < 3 && i >=0 ) fNLMECutMin[i]  = min   ; }
93   Float_t        GetNLMMinEnergy(Int_t i) const              { if( i < 3 && i >=0 ) return fNLMECutMin[i]   ;  else return 0 ; }
94
95   void           SetTimeCut(Double_t min, Double_t max)      { fTimeCutMin = min;
96                                                                fTimeCutMax = max               ; }
97   Double_t       GetTimeCutMin()                       const { return fTimeCutMin              ; }
98   Double_t       GetTimeCutMax()                       const { return fTimeCutMax              ; }
99  
100   Bool_t         IsTrackMatchRejectionOn()             const { return fRejectTrackMatch        ; }
101   void           SwitchOnTrackMatchRejection()               { fRejectTrackMatch      = kTRUE  ; }
102   void           SwitchOffTrackMatchRejection()              { fRejectTrackMatch      = kFALSE ; }
103   
104   void           SwitchOnFillPileUpHistograms()              { fFillPileUpHistograms  = kTRUE  ; }
105   void           SwitchOffFillPileUpHistograms()             { fFillPileUpHistograms  = kFALSE ; }    
106     
107   void           SwitchOnFillWeightHistograms()              { fFillWeightHistograms  = kTRUE  ; }
108   void           SwitchOffFillWeightHistograms()             { fFillWeightHistograms  = kFALSE ; }  
109   
110   void           SwitchOnTMHistoFill()                       { fFillTMHisto           = kTRUE  ; }
111   void           SwitchOffTMHistoFill()                      { fFillTMHisto           = kFALSE ; }
112
113   void           SwitchOnSelectedClusterHistoFill()          { fFillSelectClHisto     = kTRUE  ; }
114   void           SwitchOffSelectedClusterHistoFill()         { fFillSelectClHisto     = kFALSE ; }
115   
116   void           SwitchOnOnlySimpleSSHistoFill()             { fFillOnlySimpleSSHisto = kTRUE  ; }
117   void           SwitchOffOnlySimpleHistoFill()              { fFillOnlySimpleSSHisto = kFALSE ; }
118
119   void           SwitchOnFillEMCALBCHistograms()             { fFillEMCALBCHistograms = kTRUE  ; }
120   void           SwitchOffFillEMCALBCHistograms()            { fFillEMCALBCHistograms = kFALSE ; }
121   
122   void           SwitchOnSplitClusterDistToBad()             { fCheckSplitDistToBad   = kTRUE  ; }
123   void           SwitchOffSplitClusterDistToBad()            { fCheckSplitDistToBad   = kFALSE ; }
124   
125   //For histograms
126   enum mcTypes   { kmcPhoton = 0, kmcConversion = 1, kmcPi0    = 2,  
127                    kmcEta    = 3, kmcElectron   = 4, kmcHadron = 5 };
128
129  private:
130   
131   anaTypes       fAnaType;                 // Select analysis type
132   
133   //Only for pi0 SS identification case, kSSCalo
134   TString        fCalorimeter ;            // Calorimeter where the gamma is searched;
135   Float_t        fMinDist ;                // Minimal distance to bad channel to accept cluster
136   Float_t        fMinDist2;                // Cuts on Minimal distance to study acceptance evaluation
137   Float_t        fMinDist3;                // One more cut on distance used for acceptance-efficiency study
138   Int_t          fNLMCutMin  ;             // Remove clusters/cells with number of local maxima smaller than this value
139   Int_t          fNLMCutMax  ;             // Remove clusters/cells with number of local maxima larger than this value
140   Float_t        fNLMECutMin[3] ;          // Minimum energy of the cluster, depending on nlm.
141   Double_t       fTimeCutMin  ;            // Remove clusters/cells with time smaller than this value, in ns
142   Double_t       fTimeCutMax  ;            // Remove clusters/cells with time larger than this value, in ns
143   Bool_t         fRejectTrackMatch ;       // Remove clusters which have an associated TPC track
144
145   Bool_t         fFillPileUpHistograms;    // Fill pile-up related histograms
146   Bool_t         fFillWeightHistograms ;   // Fill weigth histograms
147   Bool_t         fFillTMHisto;             // Fill track matching plots
148   Bool_t         fFillSelectClHisto;       // Fill selected cluster histograms
149   Bool_t         fFillOnlySimpleSSHisto;   // Fill selected cluster histograms, selected SS histograms
150   Bool_t         fFillEMCALBCHistograms;   // Fill eta-phi BC dependent histograms
151
152   //Only for combination of calorimeter and conversion photons, kIMCaloTracks
153   TString        fInputAODGammaConvName;   //  Name of AOD branch with conversion photons
154
155   Bool_t         fCheckSplitDistToBad;     // Check the distance to bad channel and to EMCal borders of split clusters
156   
157   //Histograms
158   
159   TH1F         * fhPt  ;                   //! Number of identified  pi0/eta vs pT
160   TH1F         * fhE   ;                   //! Number of identified  pi0/eta vs E
161   TH2F         * fhPtEta  ;                //! Pt vs eta of identified  pi0/eta
162   TH2F         * fhPtPhi  ;                //! Pt vs phi of identified  pi0/eta
163   TH2F         * fhEtaPhi  ;               //! eta vs phi of identified  pi0/eta
164   TH2F         * fhEtaPhiEMCALBC0  ;       //! Pseudorapidity vs Phi of clusters 
165   TH2F         * fhEtaPhiEMCALBC1  ;       //! Pseudorapidity vs Phi of clusters 
166   TH2F         * fhEtaPhiEMCALBCN  ;       //! Pseudorapidity vs Phi of clusters 
167
168   TH2F         * fhEtaPhiTriggerEMCALBC[11]  ;    //! Pseudorapidity vs Phi of pi0 for E > 2
169   TH2F         * fhTimeTriggerEMCALBC  [11]  ;    //! Time distribution of pi0, when trigger is in a given BC
170   TH2F         * fhTimeTriggerEMCALBCPileUpSPD[11] ; //! Time distribution of pi0, when trigger is in a given BC, tagged as pile-up SPD
171   TH2F         * fhEtaPhiTriggerEMCALBCUM[11]  ;  //! Pseudorapidity vs Phi of pi0 for E > 2, not matched to trigger
172   TH2F         * fhTimeTriggerEMCALBCUM[11]  ;    //! Time distribution of pi0, when trigger is in a given BC, not matched to trigger
173
174   TH2F         * fhTimeTriggerEMCALBC0UMReMatchOpenTime   ; //! Time distribution of pi0s in event, when trigger is not found, rematched open time trigger
175   TH2F         * fhTimeTriggerEMCALBC0UMReMatchCheckNeigh ; //! Time distribution of pi0s in event, when trigger is not found, rematched with neigbour patchs
176   TH2F         * fhTimeTriggerEMCALBC0UMReMatchBoth       ; //! Time distribution of pi0s in event, when trigger is not found, rematched open both
177
178   TH2F         * fhPtCentrality ;          //! centrality  vs pi0/eta pT
179   TH2F         * fhPtEventPlane ;          //! event plane vs pi0/eta pT
180   
181   TH1F         * fhPtReject  ;             //! Number of rejected as  pi0/eta vs pT
182   TH1F         * fhEReject   ;             //! Number of rejected as  pi0/eta vs E
183   TH2F         * fhPtEtaReject  ;          //! pT vs eta of rejected as  pi0/eta
184   TH2F         * fhPtPhiReject  ;          //! pT vs phi of rejected as  pi0/eta
185   TH2F         * fhEtaPhiReject  ;         //! eta vs phi of rejected as  pi0/eta 
186   
187   TH2F         * fhMass  ;                 //! pair mass vs E, for all pairs
188   TH2F         * fhMassPt  ;               //! pair mass vs pT, for all pairs
189   TH2F         * fhMassSplitPt  ;          //! pair mass vs pT (split), for all pairs
190   TH2F         * fhSelectedMass  ;         //! pair mass vs E, for selected pairs
191   TH2F         * fhSelectedMassPt  ;       //! pair mass vs pT, for selected pairs
192   TH2F         * fhSelectedMassSplitPt  ;  //! pair mass vs pT (split), for selected pairs
193     
194   TH2F         * fhMassPtLocMax[3] ;             //! pair mass vs pT, for all pairs, for each NLM case
195   TH2F         * fhSelectedMassPtLocMax[3] ;     //! pair mass vs pT, for selected pairs, for each NLM case
196   TH2F         * fhSelectedMassPtLocMaxSM[3][22];//! pair mass vs pT, for selected pairs, for each NLM case, for each SM
197   TH2F         * fhMCSelectedMassPtLocMax[6][3] ;//! pair mass vs pT, for selected pairs, vs originating particle
198
199   TH2F         * fhSelectedLambda0PtLocMaxSM[3][22];//! pair mass vs pT, for selected pairs, for each NLM case, for each SM
200
201   TH2F         * fhMassNoOverlap  ;                 //! pair mass vs E, for all pairs, no overlap
202   TH2F         * fhMassPtNoOverlap  ;               //! pair mass vs pT, for all pairs, no overlap
203   TH2F         * fhMassSplitPtNoOverlap  ;          //! pair mass vs pT (split), for all pairs, no overlap
204   TH2F         * fhSelectedMassNoOverlap  ;         //! pair mass vs E, for selected pairs, no overlap
205   TH2F         * fhSelectedMassPtNoOverlap  ;       //! pair mass vs pT, for selected pairs, no overlap
206   TH2F         * fhSelectedMassSplitPtNoOverlap  ;  //! pair mass vs pT (split), for selected pairs, no overlap
207
208   TH2F         * fhMCPi0PtRecoPtPrim;                  //! pt reco vs pt prim for pi0 mother
209   TH2F         * fhMCEtaPtRecoPtPrim;                  //! pt reco vs pt prim for eta mother
210   TH2F         * fhMCPi0PtRecoPtPrimNoOverlap;         //! pt reco vs pt prim for pi0 mother
211   TH2F         * fhMCEtaPtRecoPtPrimNoOverlap;         //! pt reco vs pt prim for eta mother
212
213   TH2F         * fhMCPi0SplitPtRecoPtPrim;             //! pt split reco vs pt prim for pi0 mother
214   TH2F         * fhMCEtaSplitPtRecoPtPrim;             //! pt split reco vs pt prim for eta mother
215   TH2F         * fhMCPi0SplitPtRecoPtPrimNoOverlap;    //! pt split reco vs pt prim for pi0 mother
216   TH2F         * fhMCEtaSplitPtRecoPtPrimNoOverlap;    //! pt split reco vs pt prim for eta mother
217
218   TH2F         * fhMCPi0SelectedPtRecoPtPrim;          //! pt reco vs pt prim for pi0 mother
219   TH2F         * fhMCEtaSelectedPtRecoPtPrim;          //! pt reco vs pt prim for eta mother
220   TH2F         * fhMCPi0SelectedPtRecoPtPrimNoOverlap; //! pt reco vs pt prim for pi0 mother
221   TH2F         * fhMCEtaSelectedPtRecoPtPrimNoOverlap; //! pt reco vs pt prim for eta mother
222   
223   TH2F         * fhMCPi0SelectedSplitPtRecoPtPrim;          //! pt split reco vs pt prim for pi0 mother
224   TH2F         * fhMCEtaSelectedSplitPtRecoPtPrim;          //! pt split reco vs pt prim for eta mother
225   TH2F         * fhMCPi0SelectedSplitPtRecoPtPrimNoOverlap; //! pt split reco vs pt prim for pi0 mother
226   TH2F         * fhMCEtaSelectedSplitPtRecoPtPrimNoOverlap; //! pt split reco vs pt prim for eta mother
227   
228   TH2F         * fhMCPi0PtRecoPtPrimLocMax[3];              //! pt reco vs pt prim for pi0 mother, vs NLM
229   TH2F         * fhMCEtaPtRecoPtPrimLocMax[3];              //! pt reco vs pt prim for eta mother, vs NLM
230   TH2F         * fhMCPi0SplitPtRecoPtPrimLocMax[3];         //! pt split reco vs pt prim for pi0 mother, vs NLM
231   TH2F         * fhMCEtaSplitPtRecoPtPrimLocMax[3];         //! pt split reco vs pt prim for eta mother, vs NLM
232  
233   TH2F         * fhMCPi0SelectedPtRecoPtPrimLocMax[3];      //! pt reco vs pt prim for pi0 mother, vs NLM
234   TH2F         * fhMCEtaSelectedPtRecoPtPrimLocMax[3];      //! pt reco vs pt prim for eta mother, vs NLM
235   TH2F         * fhMCPi0SelectedSplitPtRecoPtPrimLocMax[3]; //! pt split reco vs pt prim for pi0 mother, vs NLM
236   TH2F         * fhMCEtaSelectedSplitPtRecoPtPrimLocMax[3]; //! pt split reco vs pt prim for eta mother, vs NLM
237
238   TH2F         * fhAsymmetry ;             //! cluster pT vs asymmetry of 2 splitted clusters
239   TH2F         * fhSelectedAsymmetry  ;    //! cluster pT vs asymmetry of 2 splitted clusters, for selected pairs
240   TH1F         * fhSplitE  ;               //! split sub-cluster pair energy sum
241   TH1F         * fhSplitPt  ;              //! split sub-cluster pair pT sum
242   TH2F         * fhSplitPtEta  ;           //! split sub-cluster pair pT sum vs eta
243   TH2F         * fhSplitPtPhi  ;           //! split sub-cluster pair pT sum vs phi
244   TH2F         * fhNLocMaxSplitPt  ;       //! split sub-cluster pair pT sum, as a function of n maxima
245   
246   TH1F         * fhPtDecay  ;              //! Number of identified  pi0/eta decay photons vs pT
247   TH1F         * fhEDecay   ;              //! Number of identified  pi0/eta decay photons vs E
248   
249   TH2F         * fhPtDispersion ;           //! pT vs disp of selected cluster
250   TH2F         * fhPtLambda0 ;              //! pT vs lambda0 of selected cluster
251   TH2F         * fhPtLambda0NoSplitCut ;    //! pT vs lambda0 of cluster before the split selection.
252   TH2F         * fhPtLambda1 ;              //! pT vs lambda1 of selected cluster
253   TH2F         * fhPtLambda0NoTRD ;         //! pT vs lambda0 of selected cluster, not behind TRD 
254   TH2F         * fhPtLambda0FracMaxCellCut ;//! pT vs lambda0 of selected cluster, fraction of cluster energy in max cell cut 
255   TH2F         * fhPtFracMaxCell ;          //! pT vs frac max cell of selected cluster 
256   TH2F         * fhPtFracMaxCellNoTRD ;     //! pT vs frac max cell of selected cluster, not behind TRD  
257   TH2F         * fhPtNCells;                //! pT vs N cells in selected cluster
258   TH2F         * fhPtTime;                  //! pT vs Time of selected cluster 
259   TH2F         * fhEPairDiffTime;           //! E pair vs Pair of clusters time difference vs E
260   
261   TH2F         * fhPtDispEta ;              //! shower dispersion in eta direction
262   TH2F         * fhPtDispPhi ;              //! shower dispersion in phi direction
263   TH2F         * fhLambda0DispEta[7] ;      //! shower shape correlation l0 vs disp eta
264   TH2F         * fhLambda0DispPhi[7] ;      //! shower shape correlation l0 vs disp phi
265   TH2F         * fhPtSumEta ;               //! shower dispersion in eta direction
266   TH2F         * fhPtSumPhi ;               //! shower dispersion in phi direction
267   TH2F         * fhPtSumEtaPhi ;            //! shower dispersion in eta and phi direction
268   TH2F         * fhPtDispEtaPhiDiff ;       //! shower dispersion eta - phi
269   TH2F         * fhPtSphericity ;           //! shower sphericity in eta vs phi
270   TH2F         * fhDispEtaDispPhi[7] ;      //! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
271   TH2F         * fhAsymmetryLambda0[7] ;    //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
272   TH2F         * fhAsymmetryDispEta[7] ;    //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
273   TH2F         * fhAsymmetryDispPhi[7] ;    //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
274
275   //MC histograms
276   
277   TH2F         * fhMCPtLambda0[6] ;              //! pT vs lambda0 of pi0 pairs but really from MC particle
278   TH2F         * fhMCPtLambda1[6] ;              //! pT vs lambda1 of pi0 pairs but really from MC particle
279   TH2F         * fhMCPtDispersion[6] ;           //! pT vs dispersion of pi0 pairs but really from MC particle
280   TH2F         * fhMCPtLambda0NoTRD[6] ;         //! pT vs lambda0 of pi0 pairs but really from MC particle, not behind TRD
281   TH2F         * fhMCPtLambda0FracMaxCellCut[6] ;//! pT vs lambda0 of pi0 pairs but really from MC particle, fraction of cluster energy in max cell cut
282   TH2F         * fhMCPtFracMaxCell[6] ;       //! pT vs fraction of max cell
283   
284   TH2F         * fhMCPtDispEta[6] ;           //! shower dispersion in eta direction
285   TH2F         * fhMCPtDispPhi[6] ;           //! shower dispersion in phi direction
286   TH2F         * fhMCLambda0DispEta[7][6] ;   //! shower shape correlation l0 vs disp eta
287   TH2F         * fhMCLambda0DispPhi[7][6] ;   //! shower shape correlation l0 vs disp phi
288   TH2F         * fhMCPtSumEtaPhi[6] ;         //! shower dispersion in eta vs phi direction
289   TH2F         * fhMCPtDispEtaPhiDiff[6] ;    //! shower dispersion in eta -phi direction
290   TH2F         * fhMCPtSphericity[6] ;        //! shower sphericity, eta vs phi
291   TH2F         * fhMCDispEtaDispPhi[7][6] ;   //! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
292   TH2F         * fhMCPtAsymmetry[6] ;         //! E asymmetry of 2 splitted clusters vs cluster pT
293   TH2F         * fhMCAsymmetryLambda0[7][6] ; //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
294   TH2F         * fhMCAsymmetryDispEta[7][6] ; //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
295   TH2F         * fhMCAsymmetryDispPhi[7][6] ; //! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
296   
297   TH1F         * fhMCE[6];                    //! Number of identified as pi0 vs E coming from X
298   TH1F         * fhMCPt[6];                   //! Number of identified as pi0 vs Pt coming from X
299   TH2F         * fhMCPtPhi[6];                //! pt vs phi of identified as pi0, coming from X
300   TH2F         * fhMCPtEta[6];                //! pt vs eta of identified as pi0, coming from X
301   TH1F         * fhMCEReject[6];              //! Number of rejected as pi0 vs E coming from X
302   TH1F         * fhMCPtReject[6];             //! Number of rejected as pi0 vs Pt coming from X
303
304   TH1F         * fhMCSplitE[6];               //! Number of identified as pi0 vs sum E  split coming from X
305   TH1F         * fhMCSplitPt[6];              //! Number of identified as pi0 vs sum Pt split coming from X
306   TH2F         * fhMCSplitPtPhi[6];           //! pt vs phi of identified as pi0, coming from X
307   TH2F         * fhMCSplitPtEta[6];           //! pt vs eta of identified as pi0, coming from X
308   TH2F         * fhMCNLocMaxSplitPt[6];       //! Number of identified as pi0 vs sum Pt split coming from X, for different NLM
309   
310   TH2F         * fhMCMassPt[6];               //! pair pT vs Mass coming from X
311   TH2F         * fhMCMassSplitPt[6];          //! pair pT (split) vs Mass coming from X
312   TH2F         * fhMCSelectedMassPt[6];       //! selected pair pT vs Mass coming from X
313   TH2F         * fhMCSelectedMassSplitPt[6];  //! selected pair pT (split) vs Mass coming from X
314
315   TH2F         * fhMCMassPtNoOverlap[6];               //! pair pT vs Mass coming from X, no random particles overlap
316   TH2F         * fhMCMassSplitPtNoOverlap[6];          //! pair pT (split) vs Mass coming from X, no random particles overlap
317   TH2F         * fhMCSelectedMassPtNoOverlap[6];       //! selected pair pT vs Mass coming from X, no random particles overlap
318   TH2F         * fhMCSelectedMassSplitPtNoOverlap[6];  //! selected pair pT (split) vs Mass coming from X, no random particles overlap
319   
320   TH2F         * fhMCPtCentrality[6] ;        //! centrality  vs pi0/eta pT  coming from X
321   
322   TH2F         * fhMCPi0PtGenRecoFraction;    //! SS id, clusters id as pi0 (eta), coming from 2 photon, pi0 primary, pt vs E prim pi0 / E reco
323   TH2F         * fhMCEtaPtGenRecoFraction;    //! SS id, clusters id as pi0 (eta), coming from 2 photon, eta primary, pt vs E prim eta / E reco  
324   TH1F         * fhMCPi0DecayPt;              //! SS id, clusters id as pi0 (eta), coming from 1 photon, pi0 decay primary, pt
325   TH2F         * fhMCPi0DecayPtFraction;      //! SS id, clusters id as pi0 (eta), coming from 1 photon, pi0 decay primary, pt vs pt decay / pt mother
326   TH1F         * fhMCEtaDecayPt;              //! SS id, clusters id as pi0 (eta), coming from 1 photon, eta decay primary, pt
327   TH2F         * fhMCEtaDecayPtFraction;      //! SS id, clusters id as pi0 (eta), coming from 1 photon, eta decay primary, pt vs pt decay / pt mother  
328   TH1F         * fhMCOtherDecayPt;            //! SS id, clusters id as pi0 (eta), coming from 1 photon, other decay primary, pt
329
330   TH2F         * fhMassPairMCPi0;             //! pair mass, origin is same pi0
331   TH2F         * fhMassPairMCEta;             //! pair mass, origin is same eta
332   TH2F         * fhAnglePairMCPi0;            //! pair opening angle, origin is same pi0
333   TH2F         * fhAnglePairMCEta;            //! pair opening angle, origin is same eta
334   
335   TH2F         * fhMCPi0PtOrigin ;           //! Mass of reoconstructed pi0 pairs  in calorimeter vs mother
336   TH2F         * fhMCEtaPtOrigin ;           //! Mass of reoconstructed pi0 pairs  in calorimeter vs mother
337   TH2F         * fhMCPi0ProdVertex;          //! Spectrum of selected pi0 vs production vertex
338   TH2F         * fhMCEtaProdVertex;          //! Spectrum of selected eta vs production vertex
339   
340   // Weight studies
341   
342   TH2F         * fhECellClusterRatio;      //! e cell / e cluster vs e cluster for selected photons
343   TH2F         * fhECellClusterLogRatio;   //! log (e cell / e cluster)  vs e cluster for selected photons
344   TH2F         * fhEMaxCellClusterRatio;   //! e max cell / e cluster vs e cluster for selected photons
345   TH2F         * fhEMaxCellClusterLogRatio;//! log (e max cell / e cluster) vs e cluster for selected photons
346   TH2F         * fhLambda0ForW0[14];       //! L0 for 7 defined w0= 3, 3.5 ... 6 for selected photons
347   //TH2F         * fhLambda1ForW0[7];        //! L1 for 7 defined w0= 3, 3.5 ... 6 for selected photons  
348   
349   // Track Matching
350   TH2F         * fhTrackMatchedDEta     ;  //! Eta distance between track and cluster vs cluster E
351   TH2F         * fhTrackMatchedDPhi     ;  //! Phi distance between track and cluster vs cluster E
352   TH2F         * fhTrackMatchedDEtaDPhi ;  //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV
353   TH2F         * fhTrackMatchedDEtaPos  ;  //! Eta distance between track and cluster vs cluster E
354   TH2F         * fhTrackMatchedDPhiPos  ;  //! Phi distance between track and cluster vs cluster E
355   TH2F         * fhTrackMatchedDEtaDPhiPos ; //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV
356   TH2F         * fhTrackMatchedDEtaNeg  ;  //! Eta distance between track and cluster vs cluster E
357   TH2F         * fhTrackMatchedDPhiNeg  ;  //! Phi distance between track and cluster vs cluster E
358   TH2F         * fhTrackMatchedDEtaDPhiNeg ; //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV
359   
360   TH2F         * fhTrackMatchedMCParticlePt;   //! Trace origin of matched particle, energy
361   TH2F         * fhTrackMatchedMCParticleDEta; //! Trace origin of matched particle, eta residual
362   TH2F         * fhTrackMatchedMCParticleDPhi; //! Trace origin of matched particle, phi residual
363   TH2F         * fhdEdx  ;                 //! matched track dEdx vs cluster E
364   TH2F         * fhEOverP;                 //! matched track E cluster over P track vs cluster E
365   TH2F         * fhEOverPNoTRD;                 //! matched track E cluster over P track vs cluster E, not behind TRD 
366
367   // Local maxima
368   TH2F         * fhNLocMaxPt;               //! number of maxima in selected clusters
369   TH2F         * fhNLocMaxPtSM[22] ;        //! number of maxima in selected clusters, per super module
370   TH2F         * fhMCNLocMaxPt[6];          //! number of maxima in selected clusters, vs originating particle
371   TH2F         * fhPtLambda0LocMax[3] ;     //! pT vs lambda0 of selected cluster, 1,2,>2 local maxima in cluster
372   TH2F         * fhMCPtLambda0LocMax[6][3] ;//! pT vs lambda0 of selected cluster, 1,2,>2 local maxima in cluster, vs originating particle
373   TH2F         * fhPtLambda1LocMax[3] ;     //! pT vs lambda1 of selected cluster, 1,2,>2 local maxima in cluster
374   TH2F         * fhPtDispersionLocMax[3] ;  //! pT vs lambda1 of selected cluster, 1,2,>2 local maxima in cluster 
375   TH2F         * fhPtDispEtaLocMax[3] ;     //! pT vs eta dispersion of selected cluster, 1,2,>2 local maxima in cluster 
376   TH2F         * fhPtDispPhiLocMax[3] ;     //! pT vs phi dispersion of selected cluster, 1,2,>2 local maxima in cluster 
377   TH2F         * fhPtSumEtaPhiLocMax[3] ;   //! pT vs dispersion in eta and phi direction
378   TH2F         * fhPtDispEtaPhiDiffLocMax[3] ; //! pT vs dispersion eta - phi
379   TH2F         * fhPtSphericityLocMax[3] ;  //! pT vs sphericity in eta vs phi  
380   TH2F         * fhPtAsymmetryLocMax[3] ;   //! E asymmetry of 2 splitted clusters vs cluster E for different NLM
381
382   TH2F         * fhMassPairLocMax[8];      //! pair mass, origin is same pi0, combine clusters depending on number of maxima
383   
384   TH2F         * fhNLocMaxPtReject;              //! number of maxima in selected clusters
385   TH2F         * fhMCNLocMaxPtReject[6];         //! number of maxima in selected clusters
386   
387   // Pile-up
388   TH1F         * fhPtPileUp[7];                   //! pT distribution of selected pi0/eta
389   TH2F         * fhPtCellTimePileUp[7];           //! pT vs Time inside cluster, before any selection, not max cell
390   TH2F         * fhPtTimeDiffPileUp[7];           //! pT vs Time difference inside cluster, before any selection
391   TH2F         * fhTimePtNoCut;                   //! time of cluster vs pT, no cut
392   TH2F         * fhTimePtSPD;                     //! time of cluster vs pT, IsSPDPileUp
393   TH2F         * fhTimePtSPDMulti;                //! time of cluster vs pT, IsSPDPileUpMulti
394   TH2F         * fhTimeNPileUpVertSPD;            //! time of cluster vs n pile-up vertices from SPD
395   TH2F         * fhTimeNPileUpVertTrack;          //! time of cluster vs n pile-up vertices from Tracks
396   TH2F         * fhTimeNPileUpVertContributors;   //! time of cluster vs n pile-up vertex from SPD contributors
397   TH2F         * fhTimePileUpMainVertexZDistance; //! time of cluster vs difference of z main vertex and pile-up vertex 
398   TH2F         * fhTimePileUpMainVertexZDiamond;  //! time of cluster vs difference of z diamond and pile-up vertex 
399   
400   TH2F         * fhPtNPileUpSPDVtx;                   //! cluster pt vs number of spd pile-up vertices
401   TH2F         * fhPtNPileUpTrkVtx;               //! cluster pt vs number of track pile-up vertices
402   TH2F         * fhPtNPileUpSPDVtxTimeCut;            //! cluster pt vs number of spd pile-up vertices, time cut +-25 ns
403   TH2F         * fhPtNPileUpTrkVtxTimeCut;        //! cluster pt vs number of track pile-up vertices, time cut +- 25 ns                 
404   TH2F         * fhPtNPileUpSPDVtxTimeCut2;           //! cluster pt vs number of spd pile-up vertices, time cut +-75 ns
405   TH2F         * fhPtNPileUpTrkVtxTimeCut2;       //! cluster pt vs number of track pile-up vertices, time cut +- 75 ns
406   
407   AliAnaPi0EbE(              const AliAnaPi0EbE & pi0ebe) ; // cpy ctor
408   AliAnaPi0EbE & operator = (const AliAnaPi0EbE & pi0ebe) ; // cpy assignment
409   
410   ClassDef(AliAnaPi0EbE,39)
411 } ;
412
413
414 #endif //ALIANAPI0EBE_H
415
416
417