]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrDep/AliAnaPi0EbE.h
AliCalorimeterUtils: Fix to be able to use PHOS bad map and geometry matrices
[u/mrichter/AliRoot.git] / PWG4 / PartCorrDep / 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 /* $Id: AliAnaPi0EbE.h 27413 2008-07-18 13:28:12Z gconesab $ */
6
7 //_________________________________________________________________________
8 //
9 // Class for the analysis of high pT pi0 event by event
10 // Pi0 identified by one of the following:
11 //  -Invariant mass of 2 cluster in calorimeter
12 //  -Shower shape analysis in calorimeter
13 //  -Invariant mass of one cluster in calorimeter and one photon reconstructed in TPC (in near future)
14 //
15 //-- Author: Gustavo Conesa (INFN-LNF)  &  Raphaelle Ichou (SUBATECH)
16 //_________________________________________________________________________
17
18
19 // --- ROOT system ---
20 class TH3F ; 
21 class TList ;
22 class TObjString;
23
24 // --- ANALYSIS system ---
25 #include "AliAnaPartCorrBaseClass.h"
26
27 class AliAnaPi0EbE : public AliAnaPartCorrBaseClass {
28
29  public: 
30   AliAnaPi0EbE() ; // default ctor
31   virtual ~AliAnaPi0EbE() { ; } //virtual dtor
32           
33   TObjString *   GetAnalysisCuts();
34   
35   TList      *   GetCreateOutputObjects();
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           FillSelectedClusterHistograms(AliVCluster* cluster, const Int_t tag);
50     
51   void           FillWeightHistograms(AliVCluster *clus);
52     
53   void           MakeInvMassInCalorimeter() ;
54   
55   void           MakeInvMassInCalorimeterAndCTS() ;
56   
57   void           MakeShowerShapeIdentification() ;
58   
59   void           RecalibrateCellAmplitude(Float_t  & amp,  const Int_t absId);
60       
61   //Setters Getters
62   
63   //Analysis types
64   enum anaTypes  {kIMCalo, kSSCalo, kIMCaloTracks};  
65   anaTypes       GetAnalysisType()                     const { return fAnaType                ; }
66   void           SetAnalysisType(anaTypes ana)               { fAnaType = ana                 ; }
67   
68   TString        GetInputAODGammaConvName()            const { return fInputAODGammaConvName  ; }
69   void           SetInputAODGammaConvName(TString name)      { fInputAODGammaConvName = name  ; }       
70   
71   //Only for pi0 SS identification case
72   void           SetCalorimeter(TString & det)               { fCalorimeter = det             ; }
73   
74   void           SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3) {
75                   fMinDist = m1; fMinDist2 = m2; fMinDist3 = m3                               ; }
76
77   void           SwitchOnFillWeightHistograms()              { fFillWeightHistograms = kTRUE  ; }
78   void           SwitchOffFillWeightHistograms()             { fFillWeightHistograms = kFALSE ; }  
79   
80   //For histograms
81   enum mcTypes   { kmcPhoton = 0, kmcConversion = 1, kmcPi0    = 2,  
82                    kmcEta    = 3, kmcElectron   = 4, kmcHadron = 5 };
83
84  private:
85   
86   anaTypes       fAnaType;                 // Select analysis type
87   
88   //Only for pi0 SS identification case, kSSCalo
89   TString        fCalorimeter ;            // Calorimeter where the gamma is searched;
90   Float_t        fMinDist ;                // Minimal distance to bad channel to accept cluster
91   Float_t        fMinDist2;                // Cuts on Minimal distance to study acceptance evaluation
92   Float_t        fMinDist3;                // One more cut on distance used for acceptance-efficiency study
93   
94   Bool_t         fFillWeightHistograms ;   // Fill weigth histograms
95   
96   //Only for combination of calorimeter and conversion photons, kIMCaloTracks
97   TString        fInputAODGammaConvName;   //  Name of AOD branch with conversion photons
98   
99   //Histograms
100   
101   TH1F         * fhPtPi0  ;                //! Number of identified  pi0 vs pT
102   TH1F         * fhEPi0   ;                //! Number of identified  pi0 vs E
103   TH3F         * fhEEtaPhiPi0  ;           //! E vs eta phi of identified  pi0 
104   
105   TH2F         * fhEDispersion ;           //! E vs disp of selected cluster
106   TH2F         * fhELambda0 ;              //! E vs lambda0 of selected cluster 
107   TH2F         * fhELambda1 ;              //! E vs lambda1 of selected cluster 
108   TH2F         * fhELambda0NoTRD ;         //! E vs lambda0 of selected cluster, not behind TRD 
109   TH2F         * fhELambda0FracMaxCellCut ;//! E vs lambda0 of selected cluster, fraction of cluster energy in max cell cut 
110   TH2F         * fhEFracMaxCell ;          //! E vs frac max cell of selected cluster 
111   TH2F         * fhEFracMaxCellNoTRD ;     //! E vs frac max cell of selected cluster, not behind TRD  
112   TH2F         * fhENCells;                //! E vs N cells in selected cluster
113   TH2F         * fhETime;                  //! E vs Time of selected cluster 
114   TH2F         * fhEPairDiffTime;          //! E vs Pair of clusters time difference vs E
115
116   //MC histograms
117   
118   TH2F         * fhEMCLambda0[6] ;         //! E vs lambda0 of pi0 pairs but really from MC particle
119   TH2F         * fhEMCLambda1[6] ;         //! E vs lambda1 of pi0 pairs but really from MC particle
120   TH2F         * fhEMCDispersion[6] ;      //! E vs dispersion of pi0 pairs but really from MC particle
121   TH2F         * fhEMCLambda0NoTRD[6] ;         //! E vs lambda0 of pi0 pairs but really from MC particle, not behind TRD
122   TH2F         * fhEMCLambda0FracMaxCellCut[6] ;//! E vs lambda0 of pi0 pairs but really from MC particle, fraction of cluster energy in max cell cut
123   TH2F         * fhEMCFracMaxCell[6] ;     //! E vs fraction of max cell 
124   
125   TH1F         * fhPtMCNoPi0;              //! Number of identified pi0, not coming from pi0
126   TH2F         * fhPhiMCNoPi0;             //! Phi of identified pi0, not coming from pi0
127   TH2F         * fhEtaMCNoPi0;             //! eta of identified  pi0, not coming from pi0
128   TH1F         * fhPtMCPi0;                //! Number of identified pi0, coming from pi0
129   TH2F         * fhPhiMCPi0;               //! Phi of identified pi0, coming from pi0
130   TH2F         * fhEtaMCPi0;               //! eta of identified pi0, coming from pi0
131   
132   // Weight studies
133   
134   TH2F         * fhECellClusterRatio;      //! e cell / e cluster vs e cluster for selected photons
135   TH2F         * fhECellClusterLogRatio;   //! log (e cell / e cluster)  vs e cluster for selected photons
136   TH2F         * fhEMaxCellClusterRatio;   //! e max cell / e cluster vs e cluster for selected photons
137   TH2F         * fhEMaxCellClusterLogRatio;//! log (e max cell / e cluster) vs e cluster for selected photons
138   TH2F         * fhLambda0ForW0[14];       //! L0 for 7 defined w0= 3, 3.5 ... 6 for selected photons
139   //TH2F         * fhLambda1ForW0[7];        //! L1 for 7 defined w0= 3, 3.5 ... 6 for selected photons  
140   
141   AliAnaPi0EbE(const AliAnaPi0EbE & g) ;               // cpy ctor
142   AliAnaPi0EbE & operator = (const AliAnaPi0EbE & g) ; // cpy assignment
143   
144   ClassDef(AliAnaPi0EbE,10)
145 } ;
146
147
148 #endif //ALIANAPI0EBE_H
149
150
151