- adding histograms for energy deposited by identified charged particles
[u/mrichter/AliRoot.git] / PWG4 / totEt / AliAnalysisEt.h
1 #ifndef ALIANALYSISET_H
2 #define ALIANALYSISET_H
3 //_________________________________________________________________________
4 //  Utility Class for transverse energy studies
5 //  Base class for ESD & MC analysis
6 //  - reconstruction and MonteCarlo output
7 //
8 //*-- Authors: Oystein Djuvsland (Bergen), David Silvermyr (ORNL)
9 //_________________________________________________________________________
10
11 #include "TString.h"
12
13 class TH2F;
14 class TH1F;
15 class AliVEvent;
16 class TList;
17 class Rtypes;
18 class TDatabasePDG;
19 class AliAnalysisEtCuts;
20
21 class AliAnalysisEt
22 {
23 public:
24    
25     AliAnalysisEt();
26     virtual ~AliAnalysisEt();
27   
28 public:
29   
30     /** Analyse the event! */
31     virtual Int_t AnalyseEvent(AliVEvent *event);
32
33     /** Fill the objects you want to output, classes which add new histograms should overload this. */
34     virtual void FillOutputList(TList* list);
35
36     /** Initialise the analysis, must be overloaded. */
37     virtual void Init();
38
39     /** 
40     * Creates the histograms, must be overloaded if you want to add your own. 
41     * Uses the fHistogramNameSuffix to create proper histogram names
42     */
43     virtual void CreateHistograms();
44     
45     /** Fills the histograms, must be overloaded if you want to add your own */
46     virtual void FillHistograms();
47
48     /** Reset event specific values (Et etc.) */
49     virtual void ResetEventValues();
50
51     /** Set Particle codes/mass */
52     virtual void SetParticleCodes();
53     
54     /** Cuts info */
55     AliAnalysisEtCuts * GetCuts() const { return fCuts; } 
56     virtual void SetCuts(const AliAnalysisEtCuts *cuts) 
57     { fCuts = (AliAnalysisEtCuts *) cuts; } 
58
59     /** Sum of the total Et for all events */
60     Double_t GetSumEt() const { return fSumEt; }
61
62     /** Sum of the total Et within our acceptance for all events */
63     Double_t GetSumEtAcc() const { return fSumEtAcc; }
64
65     /** Total Et in the event (without acceptance cuts) */
66     Double_t GetTotEt() const { return fTotEt; }
67
68     /** Total Et in the event within the acceptance cuts */
69     Double_t GetTotEtAcc() const { return fTotEtAcc; }
70
71    /** Total neutral Et in the event (without acceptance cuts) */
72     Double_t GetTotNeutralEt() const { return fTotNeutralEt; }
73
74     /** Total neutral Et in the event within the acceptance cuts */
75     Double_t GetTotNeutralEtAcc() const { return fTotNeutralEtAcc; }
76     
77     /** Total charged Et in the event (without acceptance cuts) */
78     Double_t GetTotChargedEt() const { return fTotChargedEt; }
79
80     /** Total charged Et in the event within the acceptance cuts */
81     Double_t GetTotChargedEtAcc() const { return fTotChargedEtAcc; }
82
83
84 protected:
85        
86     TString fHistogramNameSuffix; /** The suffix for the histogram names */
87
88     AliAnalysisEtCuts *fCuts; // keeper of basic cuts
89
90     /** PDG Database */
91     TDatabasePDG *fPdgDB;//data base used for looking up pdg codes
92     //these codes are stored as variables because otherwise there were issues using this with the plugin
93     Int_t fPiPlusCode;//pdg pi plus code
94     Int_t fPiMinusCode;//pdg pi minus code
95     Int_t fKPlusCode;// pdg k plus code
96     Int_t fKMinusCode;//pdg k minus code
97     Int_t fProtonCode;//pdg proton code
98     Int_t fAntiProtonCode;//pdg antiproton code
99     Int_t fLambdaCode;// pdg lambda code
100     Int_t fAntiLambdaCode;//pdg antilambda code
101     Int_t fK0SCode;//pdg k0 short code
102     Int_t fOmegaCode;//pdg omega code
103     Int_t fAntiOmegaCode;//pdg anti-omega code
104     Int_t fXi0Code;//pdg xi-0 code
105     Int_t fAntiXi0Code;//pdg anti-xi0 code
106     Int_t fXiCode;//pdg xi code
107     Int_t fAntiXiCode;//pdg anti-xi code
108     Int_t fSigmaCode;//pdg sigma code
109     Int_t fAntiSigmaCode;//pdg anti-sigma code
110     Int_t fK0LCode;//pdg k0 long code
111     Int_t fNeutronCode;//pdg neutron code
112     Int_t fAntiNeutronCode;//pdg anti-neutron code
113     Int_t fEPlusCode;//pdg positron code
114     Int_t fEMinusCode;//pdg electron code
115     Float_t fPionMass;//pdg pion mass
116
117     Double_t fSumEt;/** Sum of the total Et for all events */
118     Double_t fSumEtAcc;/** Sum of the total Et within our acceptance for all events */    
119     Double_t fTotEt;/** Total Et in the event (without acceptance cuts) */    
120     Double_t fTotEtAcc;/** Total Et in the event within the acceptance cuts */
121     
122     Double_t fTotNeutralEt;/** Total neutral Et in the event */    
123     Double_t fTotNeutralEtAcc;/** Total neutral Et in the event within the acceptance cuts */    
124     Double_t fTotChargedEt;/** Total charged Et in the event */    
125     Double_t fTotChargedEtAcc;/** Total charged Et in the event within the acceptance cuts */
126
127     Int_t fMultiplicity;/** Multiplicity of particles in the event */    
128     Int_t fChargedMultiplicity;/** Multiplicity of charged particles in the event */    
129     Int_t fNeutralMultiplicity; /** Multiplicity of neutral particles in the event */
130     
131     /** Et of identified baryons */
132     Double_t fBaryonEt;
133     
134     /** Et of identified anti-baryons */
135     Double_t fAntiBaryonEt;
136     
137     /** Et of identified mesons */
138     Double_t fMesonEt;
139
140     /** Et of identified baryons in calorimeter acceptance */
141     Double_t fBaryonEtAcc;
142
143     /** Et of identified anti-baryons in calorimeter acceptance */
144     Double_t fAntiBaryonEtAcc;
145     
146     /** Et of identified mesons in calorimeter acceptance */
147     Double_t fMesonEtAcc;
148
149     /** Et of identified protons */
150     Double_t fProtonEt;
151     
152     /** Et of identified charged kaons */
153     Double_t fChargedKaonEt;
154     
155     /** Et of identified muons */
156     Double_t fMuonEt;
157     
158     /** Et of identified electrons */
159     Double_t fElectronEt;
160     
161     /** Et of identified protons in calorimeter acceptance */
162     Double_t fProtonEtAcc;
163
164     /** Et of identified charged kaons in calorimeter acceptance */
165     Double_t fChargedKaonEtAcc;
166
167     /** Et of identified muons in calorimeter acceptance */
168     Double_t fMuonEtAcc;
169
170     /** Et of identified electrons in calorimeter acceptance */
171     Double_t fElectronEtAcc;
172     
173     /** Cut in eta (standard |eta| < 0.5 )*/
174     Double_t fEtaCut;
175
176     Double_t fEtaCutAcc;/** Eta cut for our acceptance */
177     Double_t fPhiCutAccMin; /** Min phi cut for our acceptance in radians */    
178     Double_t fPhiCutAccMax; /** Max phi cut for our acceptance in radians */
179     Double_t fDetectorRadius; /** Detector radius */
180     
181     Double_t fClusterEnergyCut; /** Cut on the cluster energy */    
182     Double_t fSingleCellEnergyCut;  /** Minimum energy to cut on single cell cluster */
183
184     // Declare the histograms
185
186     /** The full Et spectrum measured */
187     TH1F *fHistEt; //Et spectrum
188
189     /** The full charged Et spectrum measured */
190     TH1F *fHistChargedEt; //Charged Et spectrum
191
192     /** The full neutral Et spectrum measured */
193     TH1F *fHistNeutralEt; //Neutral Et spectrum
194
195     /** The Et spectrum within the calorimeter acceptance */
196     TH1F *fHistEtAcc; //Et in acceptance
197
198     /** The charged Et spectrum within the calorimeter acceptance */
199     TH1F *fHistChargedEtAcc; //Charged Et in acceptance
200
201     /** The neutral Et spectrum within the calorimeter acceptance */
202     TH1F *fHistNeutralEtAcc; //Et in acceptance
203
204     /** Multiplicity of particles in the events */
205     TH1F *fHistMult; //Multiplicity
206
207     /** Charged multiplicity of particles in the events */
208     TH1F *fHistChargedMult; //Charged multiplicity
209
210     /** Neutral multiplicity of particles in the events */
211     TH1F *fHistNeutralMult; //Neutral multiplicity
212
213     /* Acceptance plots */
214     TH2F *fHistPhivsPtPos; //phi vs pT plot for positive tracks
215     TH2F *fHistPhivsPtNeg; //phi vs pT plot for negative tracks
216
217     /* PID plots */
218     TH1F *fHistBaryonEt;
219     TH1F *fHistAntiBaryonEt;
220     TH1F *fHistMesonEt;
221
222     TH1F *fHistBaryonEtAcc;
223     TH1F *fHistAntiBaryonEtAcc;
224     TH1F *fHistMesonEtAcc;
225
226     TH1F *fHistProtonEt;
227     TH1F *fHistChargedKaonEt;
228     TH1F *fHistMuonEt;
229     TH1F *fHistElectronEt;
230     
231     TH1F *fHistProtonEtAcc;
232     TH1F *fHistChargedKaonEtAcc;
233     TH1F *fHistMuonEtAcc;
234     TH1F *fHistElectronEtAcc;
235     
236     /* Correction plots */
237     TH2F *fHistEtRecvsEtMC; //Reconstructed Et versus MC Et
238
239     /* Track matching plots */
240     TH1F *fHistTMDeltaR;
241     
242 private:
243     //Declare private to avoid compilation warning
244     AliAnalysisEt & operator = (const AliAnalysisEt & g) ;//cpy assignment
245     AliAnalysisEt(const AliAnalysisEt & g) ; // cpy ctor
246
247     ClassDef(AliAnalysisEt, 0);
248 };
249
250 #endif // ALIANALYSISET_H