]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/totEt/AliAnalysisEt.h
Fixing issues with the reconstruction efficiency, adding histograms to do a simultane...
[u/mrichter/AliRoot.git] / PWGLF / 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 "AliAnalysisEtCommon.h"
12 #include "THnSparse.h"
13 #include "AliESDCaloCluster.h"
14 #include "AliAnalysisEtCuts.h"
15 #include "AliAnalysisEtTrackMatchCorrections.h"
16 #include <vector>
17 #include "Rtypes.h"
18 #include "AliAnalysisEtSelector.h"
19 #include "AliAnalysisEtSelectorEmcal.h"
20 #include "AliAnalysisEtSelectorPhos.h"
21
22 class AliAnalysisEtRecEffCorrection;
23 class AliAnalysisEtTrackMatchCorrections;
24 class AliAnalysisEtSelector;
25 class AliCentrality;
26 class TString;
27 class TTree;
28 class TH2F;
29 class TH1F;
30 class TH1I;
31 class AliVEvent;
32 class TList;
33 class TString;
34 class AliESDtrackCuts;
35 class AliAnalysisEtCuts;
36 class AliESDCaloCluster;
37 //class THnSparseD;
38
39 class AliAnalysisEt : public AliAnalysisEtCommon
40 {
41 public:
42
43     AliAnalysisEt();
44     virtual ~AliAnalysisEt();
45
46 public:
47
48     /** Analyse the event! */
49
50     virtual Int_t AnalyseEvent(AliVEvent *event);
51
52     /** Fill the objects you want to output, classes which add new histograms should overload this. */
53     virtual void FillOutputList(TList* list);
54
55     /** Initialise the analysis, must be overloaded. */
56     virtual void Init();
57
58     /**
59     * Creates the histograms, must be overloaded if you want to add your own.
60     * Uses the fHistogramNameSuffix to create proper histogram names
61     */
62     virtual void CreateHistograms();
63     virtual void CreateTrees();
64     TH2F* CreateEtaEHisto2D(TString name, TString title, TString ztitle);
65     TH2F* CreateEtaPtHisto2D(TString name, TString title, TString ztitle);
66     TH2F* CreateEtaEtHisto2D(TString name, TString title, TString ztitle);
67     TH2F* CreateResEHisto2D(TString name, TString title, TString ztitle);
68     TH2F* CreateResPtHisto2D(TString name, TString title, TString ztitle);
69     THnSparseF* CreateClusterHistoSparse(TString name, TString title);
70     THnSparseF* CreateNeutralPartHistoSparse(TString name, TString title);
71     THnSparseF* CreateChargedPartHistoSparse(TString name, TString title);
72
73     /** Fills the histograms, must be overloaded if you want to add your own */
74     virtual void FillHistograms();
75
76     /** Reset event specific values (Et etc.) */
77     virtual void ResetEventValues();
78
79     /** Total Et in the event (without acceptance cuts) */
80     Double_t GetTotEt() const {
81         return fTotEt;
82     }
83
84     /** Total neutral Et in the event (without acceptance cuts) */
85     Double_t GetTotNeutralEt() const {
86         return fTotNeutralEt;
87     }
88
89     /** Total charged Et in the event (without acceptance cuts) */
90     Double_t GetTotChargedEt() const {
91         return fTotChargedEt;
92     }
93
94     void SetTPCOnlyTrackCuts(const AliESDtrackCuts *cuts) {
95         fEsdtrackCutsTPC = (AliESDtrackCuts *) cuts;
96     }
97
98     /** Set the centrality object */
99     void SetCentralityObject(AliCentrality *cent) {
100         fCentrality = cent;
101     }
102
103     /** Get contribution from non-removed charged particles */
104     Double_t GetChargedContribution(Int_t clusterMultiplicity) {
105         return fTmCorrections->ChargedContr(clusterMultiplicity);
106     }
107
108     /** Get contribution from non-removed neutral particles */
109     Double_t GetNeutralContribution(Int_t clusterMultiplicity) {
110         return fTmCorrections->NeutralContr(clusterMultiplicity);
111     }
112
113     /** Get contribution from removed gammas */
114     Double_t GetGammaContribution(Int_t clusterMultiplicity) {
115         return fTmCorrections->GammaContr(clusterMultiplicity);
116     }
117
118     /** Get contribution from secondaries */
119     Double_t GetSecondaryContribution(Int_t clusterMultiplicity) {
120         return fTmCorrections->SecondaryContr(clusterMultiplicity);
121     }
122
123     void MakeSparseHistograms() {
124         fMakeSparse=kTRUE;
125     }
126     
127     AliAnalysisEtCuts * GetCuts() const { return fCuts; }
128     
129
130     // Read in corrections
131     Int_t ReadCorrections(TString filename);  // Read in corrections
132     
133
134 protected:
135
136     //AliAnalysisEtCuts *fCuts; // keeper of basic cuts
137     
138     // Return corrected cluster E_T
139     Double_t CorrectForReconstructionEfficiency(const AliESDCaloCluster &cluster,Int_t cent = 0);
140     
141     // Track matching (hadrdonic contamination) corrections
142     AliAnalysisEtTrackMatchCorrections *fTmCorrections;
143     
144     // Reconstruction efficiency corrections
145     AliAnalysisEtRecEffCorrection *fReCorrections;
146     
147     TTree *fEventSummaryTree; // Contains event level information
148
149     TTree *fAcceptedTree; // Tree for information about accepted particles
150     
151     TTree *fDepositTree; // optional TTree for energy deposit measurements
152     
153     Double_t fTotEt;/** Total Et in the event (without acceptance cuts) */
154
155     Double_t fTotEtAcc;/** Total Et in the event (without acceptance cuts) */
156
157     Double_t fTotNeutralEt;/** Total neutral Et in the event */
158
159     Double_t fTotNeutralEtAcc;/** Total neutral Et in the event */
160
161     Double_t fTotChargedEt;/** Total charged Et in the event */
162
163     Double_t fTotChargedEtAcc;/** Total charged Et in the event */
164
165     Int_t fMultiplicity;/** Multiplicity of particles in the event */
166     Int_t fChargedMultiplicity;/** Multiplicity of charged particles in the event */
167     Int_t fNeutralMultiplicity; /** Multiplicity of neutral particles in the event */
168
169     Double_t fProtonEt; /** Et of identified protons */
170     Double_t fAntiProtonEt; /** Et of identified protons */
171
172     Double_t fNeutronEt; /** Et of neutrons (MC only for now) */
173     Double_t fAntiNeutronEt; /** Et of anti-neutrons (MC only for now) */
174     
175     Double_t fPi0Et; // Et of identified pi0
176     Double_t fPiPlusEt; // Et of identified pi+
177     Double_t fPiMinusEt; // Et of identified pi-
178     
179     Double_t fKPlusEt; // Et of identified K+ 
180     Double_t fKMinusEt; // Et of identified K- 
181     Double_t fK0sEt; // Et of identified K0 short
182     Double_t fK0lEt; // Et of identified K0 long
183     
184     Double_t fMuMinusEt; // Et of identified mu- 
185     Double_t fMuPlusEt; // Et of identified mu+ 
186
187     Double_t fEMinusEt; // Et of identified e-
188     Double_t fEPlusEt; // Et of identified e+
189     
190     Double_t fGammaEt; /** Et of identified electrons (MC only for now) */
191
192     Double_t fProtonRemovedEt; /** Et of identified protons */
193     Double_t fAntiProtonRemovedEt; /** Et of identified protons */
194
195     Double_t fNeutronRemovedEt; /** Et of neutrons (MC only for now) */
196     Double_t fAntiNeutronRemovedEt; /** Et of anti-neutrons (MC only for now) */
197     
198     Double_t fPi0RemovedEt; // Removed Et of identified pi0
199     Double_t fPiPlusRemovedEt; // Removed Et of identified pi+
200     Double_t fPiMinusRemovedEt; // Removed Et of identified pi-
201
202     Double_t fKPlusRemovedEt; // Removed Et of identified K+ 
203     Double_t fKMinusRemovedEt; // Removed Et of identified K- 
204     Double_t fK0sRemovedEt; // Removed Et of identified K0 short
205     Double_t fK0lRemovedEt; // Removed Et of identified K0 long
206     
207     Double_t fMuMinusRemovedEt; // Removed Et of identified mu- 
208     Double_t fMuPlusRemovedEt; // Removed Et of identified mu+ 
209     
210     Double_t fEMinusRemovedEt; // Removed Et of identified e-
211     Double_t fEPlusRemovedEt; // Removed Et of identified e+
212     
213     Double_t fGammaRemovedEt; /** Removed Et of identified electrons (MC only for now) */
214
215     Double_t fProtonMult; /** Mult of identified protons */
216     Double_t fAntiProtonMult; /** Mult of identified protons */
217
218     Double_t fNeutronMult; /** Mult of neutrons (MC only for now) */
219     Double_t fAntiNeutronMult; /** Mult of anti-neutrons (MC only for now) */
220     
221     Double_t fPi0Mult; // Mult of identified pi0
222     Double_t fPiPlusMult; // Mult of identified pi+
223     Double_t fPiMinusMult; // Mult of identified pi-
224     
225     Double_t fKPlusMult; // Mult of identified K+ 
226     Double_t fKMinusMult; // Mult of identified K- 
227     Double_t fK0sMult; // Mult of identified K0 short
228     Double_t fK0lMult; // Mult of identified K0 long
229     
230     Double_t fMuMinusMult; // Mult of identified mu- 
231     Double_t fMuPlusMult; // Mult of identified mu+ 
232
233     Double_t fEMinusMult; // Mult of identified e-
234     Double_t fEPlusMult; // Mult of identified e+
235     
236     Double_t fGammaMult; /** Mult of identified electrons (MC only for now) */
237
238     Double_t fProtonRemovedMult; /** Mult of identified protons */
239     Double_t fAntiProtonRemovedMult; /** Mult of identified protons */
240
241     Double_t fNeutronRemovedMult; /** Mult of neutrons (MC only for now) */
242     Double_t fAntiNeutronRemovedMult; /** Mult of anti-neutrons (MC only for now) */
243     
244     Double_t fPi0RemovedMult; // Removed Mult of identified pi0
245     Double_t fPiPlusRemovedMult; // Removed Mult of identified pi+
246     Double_t fPiMinusRemovedMult; // Removed Mult of identified pi-
247
248     Double_t fKPlusRemovedMult; // Removed Mult of identified K+ 
249     Double_t fKMinusRemovedMult; // Removed Mult of identified K- 
250     Double_t fK0sRemovedMult; // Removed Mult of identified K0 short
251     Double_t fK0lRemovedMult; // Removed Mult of identified K0 long
252     
253     Double_t fMuMinusRemovedMult; // Removed Mult of identified mu- 
254     Double_t fMuPlusRemovedMult; // Removed Mult of identified mu+ 
255     
256     Double_t fEMinusRemovedMult; // Removed Mult of identified e-
257     Double_t fEPlusRemovedMult; // Removed Mult of identified e+
258     
259     Double_t fGammaRemovedMult; /** Removed Mult of identified electrons (MC only for now) */
260
261     Float_t fEnergyDeposited; /** Energy deposited in calorimeter */
262     Float_t fMomentumTPC; /** Momentum measured in TPC */
263     Short_t fCharge; /** Charge of the particle */
264     Short_t fParticlePid; /** Particle PID */
265     Float_t fPidProb; /** Probability of PID */
266     Bool_t fTrackPassedCut; /** The track is accepted by ESDTrackCuts */
267
268     Int_t fCentClass; // centrality class
269
270     /** Detector radius */
271     Double_t fDetectorRadius; // Detector radius
272
273     /** Minimum energy to cut on single cell cluster */
274     Double_t fSingleCellEnergyCut;  // Minimum energy to cut on single cell cluster
275
276     Double_t fChargedEnergyRemoved; // Charged energy removed
277     Double_t fNeutralEnergyRemoved; // Neutral energy removed
278     Double_t fGammaEnergyAdded; // gamma energy added
279
280     // Declare the histograms
281
282     /** The EM Et spectrum measured */
283     TH1F *fHistEt; //Et spectrum
284
285     /** Multiplicity of neutral particles in the events */
286     TH1F *fHistNeutralMult; //Multiplicity
287
288     // Acceptance plots 
289     TH2F *fHistPhivsPtPos; //phi vs pT plot for positive tracks
290     TH2F *fHistPhivsPtNeg; //phi vs pT plot for negative tracks
291
292     /* Auxiliary Histogram variables */
293     static Float_t fgEtaAxis[17];//bins for eta axis of histograms
294     static Int_t fgnumOfEtaBins;//number of eta bins
295     static Float_t fgPtAxis[117];//bins for pt axis of histograms
296     static Int_t fgNumOfPtBins;//number of pt bins
297     static Float_t fgEAxis[79];//bins for pt axis of histograms
298     static Int_t fgNumOfEBins;//number of pt bins
299     static Float_t fgRAxis[48];//bins for R axis
300     static Int_t fgNumOfRBins;//number of R bins
301
302     /** Centrality object */
303     AliCentrality *fCentrality; //Centrality object
304
305     Bool_t fMakeSparse;//Boolean for whether or not to make sparse histograms
306
307     TH1I *fCutFlow; // Cut flow
308     
309     AliAnalysisEtSelector *fSelector; // Selector class
310
311 private:
312    
313   
314     
315     //Declare private to avoid compilation warning
316     AliAnalysisEt & operator = (const AliAnalysisEt & g) ;//cpy assignment
317     AliAnalysisEt(const AliAnalysisEt & g) ; // cpy ctor
318
319     ClassDef(AliAnalysisEt, 3);
320 };
321
322 #endif // ALIANALYSISET_H