]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/AliAnaCalorimeterQA.h
Add histograms with shower shape for different bins of lead pt particle in cone or...
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaCalorimeterQA.h
1 #ifndef ALIANACALORIMETERQA_H
2 #define ALIANACALORIMETERQA_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 //_________________________________________________________________________
7 // Class to check results from simulations or reconstructed real data. 
8 // Fill few histograms and do some checking plots
9 //
10 //-- Author: Gustavo Conesa (INFN-LNF)
11
12 // --- Root system ---
13 class TH3F;
14 class TH2F;
15 class TH1F;
16 class TObjString;
17 class TObjArray;
18
19 // --- Analysis system --- 
20 class AliVCaloCells;
21 class AliVCaloCluster;
22 class AliVTrack;
23
24 #include "AliAnaCaloTrackCorrBaseClass.h"
25  
26 class AliAnaCalorimeterQA : public AliAnaCaloTrackCorrBaseClass {
27   
28 public: 
29   AliAnaCalorimeterQA() ; // default ctor       
30   virtual ~AliAnaCalorimeterQA() {;} //virtual dtor
31     
32   // General methods
33   
34   TObjString * GetAnalysisCuts();
35
36   TList      * GetCreateOutputObjects();
37   
38   void         Init();
39   
40   void         InitParameters();
41     
42   void         MakeAnalysisFillHistograms() ;
43   
44   void         Print(const Option_t * opt) const;
45     
46   // Main methods
47   
48   void         BadClusterHistograms(AliVCluster* clus, const TObjArray *caloClusters,  AliVCaloCells * cells,
49                                     Int_t absIdMax,    Double_t maxCellFraction, Float_t eCrossFrac, Double_t tmax);
50     
51   void         CalculateAverageTime(AliVCluster *clus, AliVCaloCells *cells, Double_t timeAverages[2]);
52   
53   void         CellHistograms(AliVCaloCells * cells);
54
55   void         CellInClusterPositionHistograms(AliVCluster* cluster);
56     
57   void         ClusterAsymmetryHistograms(AliVCluster* clus, Int_t absIdMax, Bool_t goodCluster );
58   
59   void         ClusterHistograms(AliVCluster* cluster, const TObjArray *caloClusters,  AliVCaloCells * cells, 
60                                  Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac, Double_t tmax);
61   
62   void         ClusterLoopHistograms(const TObjArray * clusters, AliVCaloCells * cells);
63   
64   Bool_t       ClusterMCHistograms(TLorentzVector mom, Bool_t matched,
65                                    const Int_t * labels, Int_t nLabels, Int_t & pdg );
66
67   void         ClusterMatchedWithTrackHistograms(AliVCluster* clus, TLorentzVector mom, 
68                                                  Bool_t mcOK, Int_t pdg);
69
70   void         Correlate();
71   
72   void         ExoticHistograms(Int_t absIdMax, Float_t ampMax,
73                                 AliVCluster *clus, AliVCaloCells* cells);
74   
75   Float_t      GetECross(Int_t absId, AliVCaloCells* cells,Float_t dtcut = 10000);
76   
77   void         InvariantMassHistograms(Int_t iclus, TLorentzVector mom, Int_t nModule,
78                                        const TObjArray* caloClusters, AliVCaloCells * cells);
79
80   Bool_t       IsGoodCluster(Int_t absIdMax, AliVCaloCells *cells);
81   
82   void         MCHistograms();  
83   
84   void         WeightHistograms(AliVCluster *clus, AliVCaloCells* cells);
85
86   // Setters and Getters
87
88   
89   Float_t      GetEMCALCellAmpMin()      const  { return fEMCALCellAmpMin    ; }
90   void         SetEMCALCellAmpMin(Float_t amp)  { fEMCALCellAmpMin = amp     ; }
91   
92   Float_t      GetPHOSCellAmpMin()       const  { return fPHOSCellAmpMin     ; }
93   void         SetPHOSCellAmpMin (Float_t amp)  { fPHOSCellAmpMin  = amp     ; }
94   
95   Float_t      GetInvMassMinECut()       const  { return fMinInvMassECut     ; }
96   void         SetInvMassMinECut(Float_t cut)   { fMinInvMassECut = cut      ; }
97
98   TString      GetCalorimeter()          const  { return fCalorimeter        ; }
99   void         SetCalorimeter(TString calo)     { fCalorimeter = calo        ; }
100   
101   Double_t     GetTimeCutMin()           const  { return fTimeCutMin         ; }
102   Double_t     GetTimeCutMax()           const  { return fTimeCutMax         ; }
103   void         SetTimeCut(Double_t min, Double_t max) {
104                           fTimeCutMin = min ; fTimeCutMax = max              ; }
105     
106   // Histogram Switchs
107   
108   void SwitchOnFillAllCellTimeHisto()           { fFillAllCellTimeHisto = kTRUE  ; }
109   void SwitchOffFillAllCellTimeHisto()          { fFillAllCellTimeHisto = kFALSE ; }
110   
111   void SwitchOnFillAllPositionHistogram()       { fFillAllPosHisto  = kTRUE  ; }
112   void SwitchOffFillAllPositionHistogram()      { fFillAllPosHisto  = kFALSE ; }
113   
114   void SwitchOnFillAllPositionHistogram2()      { fFillAllPosHisto2 = kTRUE  ; }
115   void SwitchOffFillAllPositionHistogram2()     { fFillAllPosHisto2 = kFALSE ; }
116   
117   void SwitchOnFillAllTH3Histogram()            { fFillAllTH3       = kTRUE  ; }
118   void SwitchOffFillAllTH3Histogram()           { fFillAllTH3       = kFALSE ; }
119   
120   void SwitchOnFillAllTrackMatchingHistogram()  { fFillAllTMHisto   = kTRUE  ; }
121   void SwitchOffFillAllTrackMatchingHistogram() { fFillAllTMHisto   = kFALSE ; }
122   
123   void SwitchOnFillAllPi0Histogram()            { fFillAllPi0Histo  = kTRUE  ; }
124   void SwitchOffFillAllPi0Histogram()           { fFillAllPi0Histo  = kFALSE ; }
125
126   void SwitchOnCorrelation()                    { fCorrelate        = kTRUE  ; }
127   void SwitchOffCorrelation()                   { fCorrelate        = kFALSE ; }
128
129   void SwitchOnStudyBadClusters()               { fStudyBadClusters = kTRUE  ; }
130   void SwitchOffStudyBadClusters()              { fStudyBadClusters = kFALSE ; }
131   
132   void SwitchOnStudyClustersAsymmetry()         { fStudyClustersAsymmetry = kTRUE  ; }
133   void SwitchOffStudyClustersAsymmetry()        { fStudyClustersAsymmetry = kFALSE ; }
134
135   void SwitchOnStudyWeight()                    { fStudyWeight      = kTRUE  ; }
136   void SwitchOffStudyWeight()                   { fStudyWeight      = kFALSE ; }
137   
138   void SwitchOnStudyExotic()                    { fStudyExotic      = kTRUE  ; }
139   void SwitchOffStudyExotic()                   { fStudyExotic      = kFALSE ; }
140   
141   void SetNECrossCuts(Int_t n)                  { fExoNECrossCuts   = n      ; }
142   void SetNDTimeCuts (Int_t n)                  { fExoNDTimeCuts    = n      ; }
143   
144   void SetExoECrossCuts (Int_t i, Float_t c)    { if (i<fExoNECrossCuts) fExoECrossCuts[i] = c ; }
145   void SetExoDTimeCuts  (Int_t i, Float_t c)    { if (i<fExoNDTimeCuts ) fExoDTimeCuts [i] = c ; }
146   
147  private:
148   
149   TString  fCalorimeter ;                     // Calorimeter selection
150   
151   //Switches
152   Bool_t   fFillAllCellTimeHisto;             // Fill all cell time histo
153   Bool_t   fFillAllPosHisto;                  // Fill all the position related histograms 
154   Bool_t   fFillAllPosHisto2;                 // Fill all the position related histograms 2
155   Bool_t   fFillAllTH3 ;                      // Fill TH3 histograms
156   Bool_t   fFillAllTMHisto ;                  // Fill track matching histograms
157   Bool_t   fFillAllPi0Histo ;                 // Fill invariant mass histograms
158   Bool_t   fCorrelate   ;                     // Correlate PHOS/EMCAL cells/clusters, also with V0 and track multiplicity
159   Bool_t   fStudyBadClusters;                 // Study bad clusters
160   Bool_t   fStudyClustersAsymmetry;           // Study asymmetry of clusters
161   Bool_t   fStudyExotic;                      // Study the exotic cluster for different cuts
162   Bool_t   fStudyWeight;                      // Study the energy weight used in different cluster calculations
163   
164   // Parameters
165   Int_t    fNModules    ;                     // Number of EMCAL/PHOS modules
166   Int_t    fNRCU        ;                     // Number of EMCAL/PHOS RCU 
167   Int_t    fNMaxCols    ;                     // Number of EMCAL/PHOS rows 
168   Int_t    fNMaxRows    ;                     // Number of EMCAL/PHOS columns
169   
170   //Cuts
171   Double_t fTimeCutMin  ;                     // Remove clusters/cells with time smaller than this value, in ns
172   Double_t fTimeCutMax  ;                     // Remove clusters/cells with time larger than this value, in ns
173   Float_t  fCellAmpMin;                       // amplitude Threshold on calorimeter cells, set at execution time
174   Float_t  fEMCALCellAmpMin;                  // amplitude Threshold on emcal cells
175   Float_t  fPHOSCellAmpMin ;                  // amplitude Threshold on phos cells
176   
177   Float_t  fMinInvMassECut;                   // Minimum energy cut value for clusters entering the invariant mass calculation
178   
179   // Exotic studies
180   Float_t  fExoNECrossCuts   ;                // Number of ecross cuts
181   Float_t  fExoECrossCuts[10];                // List of ecross cuts
182   Float_t  fExoNDTimeCuts    ;                // Number of time cuts
183   Float_t  fExoDTimeCuts[5]  ;                // List of time cuts
184   
185   //CaloClusters 
186   TH1F *   fhE  ;                             //! E distribution, Reco
187   TH1F *   fhPt ;                             //! pT distribution, Reco
188   TH1F *   fhPhi;                             //! phi distribution, Reco 
189   TH1F *   fhEta;                             //! eta distribution, Reco 
190   TH3F *   fhEtaPhiE  ;                       //! eta vs phi vs E, Reco
191   TH1F *   fhECharged  ;                      //! E distribution, Reco, matched with track
192   TH1F *   fhPtCharged ;                      //! pT distribution, Reco, matched with track
193   TH1F *   fhPhiCharged;                      //! phi distribution, Reco, matched with track 
194   TH1F *   fhEtaCharged;                      //! eta distribution, Reco, matched with track 
195   TH3F *   fhEtaPhiECharged;                  //! eta vs phi vs E, Reco, matched with track 
196     
197   TH2F *   fhIM;                              //! cluster pairs invariant mass
198   TH2F *   fhAsym;                            //! cluster pairs invariant mass  
199   
200   TH2F *   fhNCellsPerCluster;                //! N cells per cluster vs cluster energy vs eta of cluster       
201   TH2F *   fhNCellsPerClusterNoCut;           //! N cells per cluster vs cluster energy vs eta of cluster       
202
203   TH1F *   fhNClusters;                       //! Number of clusters
204
205   TH2F *   fhClusterTimeEnergy;               //! Cluster Time vs Energy 
206   TH2F *   fhCellTimeSpreadRespectToCellMax;  //! Difference of the time of cell with maximum dep energy and the rest of cells
207   TH1F *   fhCellIdCellLargeTimeSpread;       //! Cells with large time respect to max (diff > 100 ns)
208   TH2F *   fhClusterPairDiffTimeE;            //! Pair of clusters time difference vs E
209   
210   TH2F *   fhClusterMaxCellCloseCellRatio;    //! Ratio between max cell energy and cell energy of the same cluster 
211   TH2F *   fhClusterMaxCellCloseCellDiff;     //! Difference between max cell energy and cell energy of the same cluster   
212   TH2F *   fhClusterMaxCellDiff;              //! Difference between cluster energy and energy of cell with more energy, good clusters only
213   TH2F *   fhClusterMaxCellDiffNoCut;         //! Difference between cluster energy and energy of cell with more energy, no bad cluster rejection
214   
215   TH2F *   fhClusterMaxCellDiffAverageTime;      //! Difference between cluster average time and time of cell with more energy
216   TH2F *   fhClusterMaxCellDiffWeightedTime;     //! Difference between cluster weighted time and time of cell with more energy
217   TH2F *   fhClusterMaxCellECross;               //! 1 - Energy in cross around max energy cell / max energy cell vs cluster energy, good clusters
218   
219   TH2F *   fhLambda0;                         //! cluster Lambda0    vs Energy
220   TH2F *   fhLambda1;                         //! cluster Lambda1    vs Energy
221   TH2F *   fhDispersion;                      //! cluster Dispersion vs Energy
222   
223   // Bad clusters histograms
224   TH1F *   fhBadClusterEnergy;                //! energy of bad cluster
225   TH2F *   fhBadClusterTimeEnergy;            //! Time Max cell of bad cluster
226   TH2F *   fhBadClusterPairDiffTimeE;         //! Pair of clusters time difference vs E, bad cluster
227   TH2F *   fhBadCellTimeSpreadRespectToCellMax; //! Difference of the time of cell with maximum dep energy and the rest of cells for bad clusters
228   
229   TH2F *   fhBadClusterMaxCellCloseCellRatio; //! Ratio between max cell energy and cell energy of the same cluster for bad clusters 
230   TH2F *   fhBadClusterMaxCellCloseCellDiff ; //! Difference between max cell energy and cell energy of the same cluster for bad clusters 
231   TH2F *   fhBadClusterMaxCellDiff;           //! Difference between cluster energy and energy of cell with more energy
232   
233   TH2F *   fhBadClusterMaxCellDiffAverageTime;      //! Difference between cluster average time and time of cell with more energy
234   TH2F *   fhBadClusterMaxCellDiffWeightedTime;     //! Difference between cluster weighted time and time of cell with more energy
235   TH2F *   fhBadClusterMaxCellECross;               //! 1 - Energy in cross around max energy cell / max energy cell vs cluster energy, bad clusters
236
237   // Cluster cell size
238   TH2F *   fhDeltaIEtaDeltaIPhiE0[2];         //! Difference between max cell index and farthest cell, eta vs phi, E < 2 GeV, with and without matching; 
239   TH2F *   fhDeltaIEtaDeltaIPhiE2[2];         //! Difference between max cell index and farthest cell, eta vs phi, 2 < E < 6 GeV, with and without matching; 
240   TH2F *   fhDeltaIEtaDeltaIPhiE6[2];         //! Difference between max cell index and farthest cell, eta vs phi, E > 6 GeV, with and without matching; 
241   TH2F *   fhDeltaIA[2];                      //! Cluster "asymmetry" in cell terms vs E, with and without matching
242   TH2F *   fhDeltaIAL0[2];                    //! Cluster "asymmetry" in cell units vs Lambda0    for E > 0.5 GeV, n cells in cluster > 3, with and without matching
243   TH2F *   fhDeltaIAL1[2];                    //! Cluster "asymmetry" in cell units vs Lambda1    for E > 0.5 GeV, n cells in cluster > 3, with and without matching
244   TH2F *   fhDeltaIANCells[2] ;               //! Cluster "asymmetry" in cell units vs number of cells in cluster for E > 0.5, with and without matching
245   TH2F *   fhDeltaIAMC[4];                    //! Cluster "asymmetry" in cell terms vs E, from MC photon, electron, conversion or hadron.
246   TH2F *   fhBadClusterDeltaIEtaDeltaIPhiE0;  //! Difference between max cell index and farthest cell, eta vs phi, E < 2 GeV, with and without matching; bad clusters. 
247   TH2F *   fhBadClusterDeltaIEtaDeltaIPhiE2;  //! Difference between max cell index and farthest cell, eta vs phi, 2 < E < 6 GeV, with and without matching; bad clusters.
248   TH2F *   fhBadClusterDeltaIEtaDeltaIPhiE6;  //! Difference between max cell index and farthest cell, eta vs phi, E > 6 GeV, with and without matching; bad clusters.
249   TH2F *   fhBadClusterDeltaIA;               //! Cluster "asymmetry" in cell terms vs E, with and without matching; bad clusters.
250   
251   //Cluster/cell Position
252   TH2F *   fhRNCells ;                        //! R=sqrt(x^2+y^2) (cm) cluster distribution vs N cells in cluster
253   TH2F *   fhXNCells ;                        //! X (cm) cluster distribution vs N cells in cluster
254   TH2F *   fhYNCells ;                        //! Y (cm) cluster distribution vs N cells in cluster
255   TH2F *   fhZNCells ;                        //! Z (cm) cluster distribution vs N cells in cluster
256         
257   TH2F *   fhRE ;                             //! R=sqrt(x^2+y^2) (cm) cluster distribution vs cluster energy
258   TH2F *   fhXE ;                             //! X (cm) cluster distribution vs cluster energy
259   TH2F *   fhYE ;                             //! Y (cm) cluster distribution vs cluster energy
260   TH2F *   fhZE ;                             //! Z (cm) cluster distribution vs cluster energy
261   TH3F *   fhXYZ;                             //! cluster X vs Y vs Z (cm)
262         
263   TH2F *   fhRCellE ;                         //! R=sqrt(x^2+y^2) (cm) cell distribution vs cell energy
264   TH2F *   fhXCellE ;                         //! X (cm) cell distribution vs cell energy
265   TH2F *   fhYCellE ;                         //! Y (cm) cell distribution vs cell energy
266   TH2F *   fhZCellE ;                         //! Z (cm) cell distribution vs cell energy
267   TH3F *   fhXYZCell;                         //! cell X vs Y vs Z (cm)
268   
269   TH2F *   fhDeltaCellClusterRNCells ;        //! R cluster - R cell distribution (cm) vs N cells in cluster
270   TH2F *   fhDeltaCellClusterXNCells ;        //! X cluster - X cell distribution (cm) vs N cells in cluster
271   TH2F *   fhDeltaCellClusterYNCells ;        //! Y cluster - Y cell distribution (cm) vs N cells in cluster
272   TH2F *   fhDeltaCellClusterZNCells ;        //! Z cluster - Z cell distribution (cm) vs N cells in cluster
273         
274   TH2F *   fhDeltaCellClusterRE ;             //! R cluster - R cell distribution (cm) vs cluster energy
275   TH2F *   fhDeltaCellClusterXE ;             //! X cluster - X cell distribution (cm) vs cluster energy
276   TH2F *   fhDeltaCellClusterYE ;             //! Y cluster - Y cell distribution (cm) vs cluster energy
277   TH2F *   fhDeltaCellClusterZE ;             //! Z cluster - Z cell distribution (cm) vs cluster energy
278         
279   //Calo Cells
280   TH1F *   fhNCells;                          //! Number of towers/crystals with signal
281   TH1F *   fhNCellsCutAmpMin;                 //! Number of towers/crystals with signal, with min amplitude
282   TH1F *   fhAmplitude;                       //! Amplitude measured in towers/crystals
283   TH2F *   fhAmpId;                           //! Amplitude measured in towers/crystals vs id of tower.
284   TH3F *   fhEtaPhiAmp;                       //! eta vs phi vs amplitude, cells
285    
286   TH1F *   fhTime;                            //! Time measured in towers/crystals
287   TH2F *   fhTimeVz;                          //! Time measured in towers/crystals vs vertex z component, for E > 0.5
288   TH2F *   fhTimeId;                          //! Time vs Absolute cell Id
289   TH2F *   fhTimeAmp;                         //! Time vs Amplitude
290   
291   TH2F *   fhAmpIdLowGain;                    //! Amplitude measured in towers/crystals vs id of tower, low gain towers
292   TH2F *   fhTimeIdLowGain;                   //! Time vs Absolute cell Id, low gain
293   TH2F *   fhTimeAmpLowGain;                  //! Time vs Amplitude, low gain
294
295   TH2F *   fhCellECross;                      //! 1 - Energy in cross around cell /  cell energy
296   
297   //Calorimeters Correlation
298   TH2F *   fhCaloCorrNClusters;               //! EMCAL vs PHOS, number of clusters     
299   TH2F *   fhCaloCorrEClusters;               //! EMCAL vs PHOS, total measured cluster energy
300   TH2F *   fhCaloCorrNCells;                  //! EMCAL vs PHOS, number of cells
301   TH2F *   fhCaloCorrECells;                  //! EMCAL vs PHOS,  total measured cell energy
302         
303   //V0 Correlation
304   TH2F *   fhCaloV0SCorrNClusters;            //! Calo vs V0 signal , number of clusters        
305   TH2F *   fhCaloV0SCorrEClusters;            //! Calo vs V0 signal, total measured cluster energy
306   TH2F *   fhCaloV0SCorrNCells;               //! Calo vs V0 signal, number of cells
307   TH2F *   fhCaloV0SCorrECells;               //! Calo vs V0 signal,  total measured cell energy
308   TH2F *   fhCaloV0MCorrNClusters;            //! Calo vs V0 multiplicity , number of clusters  
309   TH2F *   fhCaloV0MCorrEClusters;            //! Calo vs V0 multiplicity, total measured cluster energy
310   TH2F *   fhCaloV0MCorrNCells;               //! Calo vs V0 multiplicity, number of cells
311   TH2F *   fhCaloV0MCorrECells;               //! Calo vs V0 multiplicity,  total measured cell energy
312   
313   //Track Correlation
314   TH2F *   fhCaloTrackMCorrNClusters;         //! Calo vs Track Multiplicity, number of clusters        
315   TH2F *   fhCaloTrackMCorrEClusters;         //! Calo vs Track Multiplicity, total measured cluster energy
316   TH2F *   fhCaloTrackMCorrNCells;            //! Calo vs V0 Track Multiplicity, number of cells
317   TH2F *   fhCaloTrackMCorrECells;            //! Calo vs V0 Track Multipliticy,  total measured cell energy
318   
319   // Centrality
320   TH2F *   fhCaloCenNClusters;               //! Calo vs centrality, number of clusters
321   TH2F *   fhCaloCenEClusters;               //! Calo vs centrality, total measured cluster energy
322   TH2F *   fhCaloCenNCells;                  //! Calo vs centrality, number of cells
323   TH2F *   fhCaloCenECells;                  //! Calo vs centrality,  total measured cell energy
324
325   // Event plane
326   TH2F *   fhCaloEvPNClusters;               //! Calo vs event plane angle, number of clusters
327   TH2F *   fhCaloEvPEClusters;               //! Calo vs event plane angle, total measured cluster energy
328   TH2F *   fhCaloEvPNCells;                  //! Calo vs event plane angle, number of cells
329   TH2F *   fhCaloEvPECells;                  //! Calo vs event plane angle,  total measured cell energy
330   
331   //Module histograms
332   TH2F *   fhEMod  ;                          //! cluster E distribution for different module, Reco
333   TH2F *   fhAmpMod ;                         //! cell amplitude distribution for different module, Reco
334   TH2F *   fhTimeMod ;                        //! cell time distribution for different module, Reco
335   TH2F *   fhNClustersMod ;                   //! Number of clusters for different module, Reco
336   TH2F *   fhNCellsMod ;                      //! Number of towers/crystals with signal different module, Reco
337   TH2F **  fhNCellsPerClusterMod ;            //! N cells per clusters different module, Reco
338   TH2F **  fhNCellsPerClusterModNoCut ;       //! N cells per clusters different module, Reco, No cut
339   TH2F *   fhGridCells ;                      //! Cells ordered in column/row for different module, Reco
340   TH2F *   fhGridCellsE ;                     //! Cells ordered in column/row for different module, weighted with energy, Reco
341   TH2F *   fhGridCellsTime ;                  //! Cells ordered in column/row for different module, weighted with time, Reco
342   TH2F *   fhGridCellsLowGain ;               //! Cells ordered in column/row for different module, Reco, low gain
343   TH2F *   fhGridCellsELowGain ;              //! Cells ordered in column/row for different module, weighted with energy, Reco, low gain
344   TH2F *   fhGridCellsTimeLowGain ;           //! Cells ordered in column/row for different module, weighted with time, Reco, low gain
345   TH2F **  fhTimeAmpPerRCU;                   //! Time vs Amplitude measured in towers/crystals different RCU
346   TH2F **  fhIMMod;                           //! cluster pairs invariant mass, different module,
347         
348   // Weight studies
349   
350   TH2F *   fhECellClusterRatio;               //! e cell / e cluster vs e cluster
351   TH2F *   fhECellClusterLogRatio;            //! log (e cell / e cluster)  vs e cluster
352   TH2F *   fhEMaxCellClusterRatio;            //! e max cell / e cluster vs e cluster
353   TH2F *   fhEMaxCellClusterLogRatio;         //! log (e max cell / e cluster) vs e cluster
354   
355   TH2F *   fhLambda0ForW0[14];                //! L0 for 7 defined w0= 3, 3.5 ... 6
356   //TH2F * fhLambda1ForW0[7];                  //! L1 for 7 defined w0= 3, 3.5 ... 6
357
358   TH2F *   fhLambda0ForW0MC[14][5];            //! L0 for 7 defined w0= 3, 3.5 ... 6, depending on the particle of origin
359   //TH2F * fhLambda1ForW0MC[7][5];              //! L1 for 7 defined w0= 3, 3.5 ... 6, depending on the particle of origin
360   
361   TH2F *   fhECellTotalRatio;                 //! e cell / e total vs e total
362   TH2F *   fhECellTotalLogRatio;              //! log (e cell / e total)  vs e total
363   TH2F **  fhECellTotalRatioMod;              //! e cell / e total vs e total, per SM
364   TH2F **  fhECellTotalLogRatioMod;           //! log (e cell / e total)  vs e total, per SM
365
366   // Exotic studies
367   
368   TH2F *   fhExoNCell  [10][5] ;               //! Number of cells per cluster for different cuts
369   TH2F *   fhExoL0     [10][5] ;               //! Long shower shape axis for exotic
370   TH2F *   fhExoL1     [10][5] ;               //! Short shower shape axis for exotic
371   TH2F *   fhExoECross [10][5] ;               //! E cross for max cell in cluster, for different cuts
372   TH2F *   fhExoTime   [10][5] ;               //! Time of exotic cluster, for different cuts
373   TH2F *   fhExoDTime  [10]    ;               //! Difference in time between cell with max energy and rest of cells for exotic
374   TH2F *   fhExoL0NCell[10][5] ;               //! Lambda0 vs n cells in cluster for several E cross cuts and cluster with E > 5
375   TH2F *   fhExoL0ECross      ;                //! Lambda0 vs E cross fraction for clusters with E > 5 GeV
376   TH2F *   fhExoL1NCell[10][5] ;               //! Lambda1 vs n cells in cluster for several E cross cuts and cluster with E > 5
377   TH2F *   fhExoL1ECross      ;                //! Lambda1 vs E cross fraction for clusters with E > 5 GeV
378   
379   //Pure MC
380
381   enum mcTypes {kmcPhoton   = 0, kmcPi0        = 1, kmcEta = 2,
382                 kmcElectron = 3, kmcPhotonConv = 4,
383                 kmcNeHadron = 5, kmcChHadron   = 6             };
384   
385   TH2F *   fhRecoMCE[7][2]  ;                 //! E   generated particle vs reconstructed E
386   TH2F *   fhRecoMCPhi[7][2] ;                //! phi generated particle vs reconstructed phi
387   TH2F *   fhRecoMCEta[7][2] ;                //! eta generated particle vs reconstructed Eta
388   TH2F *   fhRecoMCDeltaE[7][2]  ;            //! Gen-Reco E    generated particle vs reconstructed E
389   TH2F *   fhRecoMCRatioE[7][2]  ;            //! Reco/Gen E    generated particle vs reconstructed E
390   TH2F *   fhRecoMCDeltaPhi[7][2];            //! Gen-Reco phi  generated particle vs reconstructed E
391   TH2F *   fhRecoMCDeltaEta[7][2];            //! Gen-Reco eta  generated particle vs reconstructed E
392   
393   TH1F *   fhGenMCE [4]     ;                 //! pt of primary particle
394   TH1F *   fhGenMCPt[4]     ;                 //! pt of primary particle
395   TH2F *   fhGenMCEtaPhi[4] ;                 //! eta vs phi of primary particle
396   TH1F *   fhGenMCAccE [4]     ;              //! pt of primary particle, in acceptance
397   TH1F *   fhGenMCAccPt[4]     ;              //! pt of primary particle, in acceptance
398   TH2F *   fhGenMCAccEtaPhi[4] ;              //! eta vs phi of primary particle, in acceptance
399   
400   TH2F *   fhEMVxyz    ;                      //! Electromagnetic particle production vertex
401   TH2F *   fhEMR       ;                      //! Electromagnetic distance to vertex vs rec energy  
402   TH2F *   fhHaVxyz    ;                      //! Hadron production vertex
403   TH2F *   fhHaR       ;                      //! Hadron distance to vertex vs rec energy  
404         
405   //Histograms for MC track-matching
406   TH2F *   fh1EOverP;                         //! p/E for track-cluster matches
407   TH2F *   fh2dR;                             //! distance between projected track and cluster (eta-phi units)
408   TH2F *   fh2EledEdx;                        //! dE/dx vs. momentum for electron candidates
409   TH2F *   fh2MatchdEdx;                      //! dE/dx vs. momentum for all matches
410         
411   TH2F *   fhMCEle1EOverP;                    //! p/E for track-cluster matches, MC electrons
412   TH1F *   fhMCEle1dR;                        //! distance between projected track and cluster, MC electrons
413   TH2F *   fhMCEle2MatchdEdx;                 //! dE/dx vs. momentum for all matches, MC electrons      
414         
415   TH2F *   fhMCChHad1EOverP;                  //! p/E for track-cluster matches, MC charged hadrons
416   TH1F *   fhMCChHad1dR;                      //! distance between projected track and cluster, MC charged hadrons
417   TH2F *   fhMCChHad2MatchdEdx;               //! dE/dx vs. momentum for all matches, MC charged
418         
419   TH2F *   fhMCNeutral1EOverP;                //! p/E for track-cluster matches, MC neutral
420   TH1F *   fhMCNeutral1dR;                    //! distance between projected track and cluster, MC neutral
421   TH2F *   fhMCNeutral2MatchdEdx;             //! dE/dx vs. momentum for all matches, MC neutral        
422         
423   TH2F *   fh1EOverPR02;                      //! p/E for track-cluster matches, dR < 0.2
424   TH2F *   fhMCEle1EOverPR02;                 //! p/E for track-cluster matches, dR < 0.2, MC electrons
425   TH2F *   fhMCChHad1EOverPR02;               //! p/E for track-cluster matches, dR < 0.2, MC charged hadrons
426   TH2F *   fhMCNeutral1EOverPR02;             //! p/E for track-cluster matches, dR < 0.2, MC neutral
427
428   TH2F *   fh1EleEOverP;                      //! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100
429   TH2F *   fhMCEle1EleEOverP;                 //! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC electrons
430   TH2F *   fhMCChHad1EleEOverP;               //! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC charged hadrons
431   TH2F *   fhMCNeutral1EleEOverP;             //! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC neutral
432
433   TH2F *   fhTrackMatchedDEta    ;            //! Eta distance between track and cluster vs cluster E, after and before photon cuts
434   TH2F *   fhTrackMatchedDPhi    ;            //! Phi distance between track and cluster vs cluster E, after and before photon cuts
435   TH2F *   fhTrackMatchedDEtaDPhi;            //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before
436   
437   TH2F *   fhTrackMatchedDEtaPos;             //! Eta distance between track and cluster vs cluster E, after and before photon cuts
438   TH2F *   fhTrackMatchedDPhiPos;             //! Phi distance between track and cluster vs cluster E, after and before photon cuts
439   TH2F *   fhTrackMatchedDEtaDPhiPos;         //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before
440
441   AliAnaCalorimeterQA & operator = (const AliAnaCalorimeterQA & qa) ;//cpy assignment
442   AliAnaCalorimeterQA(              const AliAnaCalorimeterQA & qa) ; // cpy ctor
443   
444   ClassDef(AliAnaCalorimeterQA,29)
445 } ;
446
447
448 #endif //ALIANACALORIMETERQA_H
449
450
451