]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/totEt/AliAnalysisEt.h
Fixing issues with the reconstruction efficiency, adding histograms to do a simultane...
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisEt.h
CommitLineData
4d376d01 1#ifndef ALIANALYSISET_H
2#define ALIANALYSISET_H
a7ae9b24 3//_________________________________________________________________________
cf6522d1 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//_________________________________________________________________________
2fbf38ac 10
7d2d1773 11#include "AliAnalysisEtCommon.h"
f9a4ed81 12#include "THnSparse.h"
ef647350 13#include "AliESDCaloCluster.h"
14#include "AliAnalysisEtCuts.h"
b2c10007 15#include "AliAnalysisEtTrackMatchCorrections.h"
ef647350 16#include <vector>
17#include "Rtypes.h"
2aab9269 18#include "AliAnalysisEtSelector.h"
19#include "AliAnalysisEtSelectorEmcal.h"
20#include "AliAnalysisEtSelectorPhos.h"
2fbf38ac 21
b2c10007 22class AliAnalysisEtRecEffCorrection;
23class AliAnalysisEtTrackMatchCorrections;
ef647350 24class AliAnalysisEtSelector;
25class AliCentrality;
0f97be4c 26class TString;
ce546038 27class TTree;
2fbf38ac 28class TH2F;
29class TH1F;
ef647350 30class TH1I;
2fbf38ac 31class AliVEvent;
32class TList;
0651f6b4 33class TString;
b5821c13 34class AliESDtrackCuts;
4998becf 35class AliAnalysisEtCuts;
f9a4ed81 36class AliESDCaloCluster;
37//class THnSparseD;
2fbf38ac 38
7d2d1773 39class AliAnalysisEt : public AliAnalysisEtCommon
2fbf38ac 40{
41public:
ef647350 42
2fbf38ac 43 AliAnalysisEt();
44 virtual ~AliAnalysisEt();
ef647350 45
2fbf38ac 46public:
ef647350 47
2fbf38ac 48 /** Analyse the event! */
f9a4ed81 49
641e1e0c 50 virtual Int_t AnalyseEvent(AliVEvent *event);
2fbf38ac 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. */
641e1e0c 56 virtual void Init();
2fbf38ac 57
ef647350 58 /**
59 * Creates the histograms, must be overloaded if you want to add your own.
2fbf38ac 60 * Uses the fHistogramNameSuffix to create proper histogram names
61 */
62 virtual void CreateHistograms();
8ea99ab0 63 virtual void CreateTrees();
f9a4ed81 64 TH2F* CreateEtaEHisto2D(TString name, TString title, TString ztitle);
ef647350 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);
01b73fb0 69 THnSparseF* CreateClusterHistoSparse(TString name, TString title);
70 THnSparseF* CreateNeutralPartHistoSparse(TString name, TString title);
71 THnSparseF* CreateChargedPartHistoSparse(TString name, TString title);
ef647350 72
2fbf38ac 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();
99a6613d 78
2fbf38ac 79 /** Total Et in the event (without acceptance cuts) */
ef647350 80 Double_t GetTotEt() const {
81 return fTotEt;
82 }
2fbf38ac 83
ef647350 84 /** Total neutral Et in the event (without acceptance cuts) */
85 Double_t GetTotNeutralEt() const {
86 return fTotNeutralEt;
87 }
2fbf38ac 88
2fbf38ac 89 /** Total charged Et in the event (without acceptance cuts) */
ef647350 90 Double_t GetTotChargedEt() const {
91 return fTotChargedEt;
92 }
2fbf38ac 93
ef647350 94 void SetTPCOnlyTrackCuts(const AliESDtrackCuts *cuts) {
95 fEsdtrackCutsTPC = (AliESDtrackCuts *) cuts;
96 }
2fbf38ac 97
5501aa9c 98 /** Set the centrality object */
ef647350 99 void SetCentralityObject(AliCentrality *cent) {
100 fCentrality = cent;
101 }
102
f9a4ed81 103 /** Get contribution from non-removed charged particles */
b2c10007 104 Double_t GetChargedContribution(Int_t clusterMultiplicity) {
105 return fTmCorrections->ChargedContr(clusterMultiplicity);
ef647350 106 }
f9a4ed81 107
108 /** Get contribution from non-removed neutral particles */
b2c10007 109 Double_t GetNeutralContribution(Int_t clusterMultiplicity) {
110 return fTmCorrections->NeutralContr(clusterMultiplicity);
ef647350 111 }
112
f9a4ed81 113 /** Get contribution from removed gammas */
b2c10007 114 Double_t GetGammaContribution(Int_t clusterMultiplicity) {
115 return fTmCorrections->GammaContr(clusterMultiplicity);
ef647350 116 }
2fbf38ac 117
f61cec2f 118 /** Get contribution from secondaries */
b2c10007 119 Double_t GetSecondaryContribution(Int_t clusterMultiplicity) {
120 return fTmCorrections->SecondaryContr(clusterMultiplicity);
f61cec2f 121 }
122
ef647350 123 void MakeSparseHistograms() {
124 fMakeSparse=kTRUE;
125 }
126
127 AliAnalysisEtCuts * GetCuts() const { return fCuts; }
b2c10007 128
129
130 // Read in corrections
131 Int_t ReadCorrections(TString filename); // Read in corrections
132
01b73fb0 133
2fbf38ac 134protected:
2fbf38ac 135
7d2d1773 136 //AliAnalysisEtCuts *fCuts; // keeper of basic cuts
b2c10007 137
138 // Return corrected cluster E_T
31c813d5 139 Double_t CorrectForReconstructionEfficiency(const AliESDCaloCluster &cluster,Int_t cent = 0);
b2c10007 140
141 // Track matching (hadrdonic contamination) corrections
142 AliAnalysisEtTrackMatchCorrections *fTmCorrections;
143
144 // Reconstruction efficiency corrections
145 AliAnalysisEtRecEffCorrection *fReCorrections;
f61cec2f 146
147 TTree *fEventSummaryTree; // Contains event level information
cf6522d1 148
f61cec2f 149 TTree *fAcceptedTree; // Tree for information about accepted particles
2fbf38ac 150
f61cec2f 151 TTree *fDepositTree; // optional TTree for energy deposit measurements
ef647350 152
153 Double_t fTotEt;/** Total Et in the event (without acceptance cuts) */
ef647350 154
d9f145e7 155 Double_t fTotEtAcc;/** Total Et in the event (without acceptance cuts) */
156
ef647350 157 Double_t fTotNeutralEt;/** Total neutral Et in the event */
f61cec2f 158
d9f145e7 159 Double_t fTotNeutralEtAcc;/** Total neutral Et in the event */
160
ef647350 161 Double_t fTotChargedEt;/** Total charged Et in the event */
cf6522d1 162
d9f145e7 163 Double_t fTotChargedEtAcc;/** Total charged Et in the event */
164
ef647350 165 Int_t fMultiplicity;/** Multiplicity of particles in the event */
166 Int_t fChargedMultiplicity;/** Multiplicity of charged particles in the event */
cf6522d1 167 Int_t fNeutralMultiplicity; /** Multiplicity of neutral particles in the event */
ef647350 168
ce546038 169 Double_t fProtonEt; /** Et of identified protons */
f61cec2f 170 Double_t fAntiProtonEt; /** Et of identified protons */
171
43056f1b 172 Double_t fNeutronEt; /** Et of neutrons (MC only for now) */
173 Double_t fAntiNeutronEt; /** Et of anti-neutrons (MC only for now) */
f61cec2f 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
43056f1b 190 Double_t fGammaEt; /** Et of identified electrons (MC only for now) */
ef647350 191
f61cec2f 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) */
ef647350 260
8ea99ab0 261 Float_t fEnergyDeposited; /** Energy deposited in calorimeter */
f61cec2f 262 Float_t fMomentumTPC; /** Momentum measured in TPC */
8ea99ab0 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 */
f9a4ed81 267
3825c7d6 268 Int_t fCentClass; // centrality class
ef647350 269
43056f1b 270 /** Detector radius */
ef647350 271 Double_t fDetectorRadius; // Detector radius
272
43056f1b 273 /** Minimum energy to cut on single cell cluster */
274 Double_t fSingleCellEnergyCut; // Minimum energy to cut on single cell cluster
ef647350 275
4d376d01 276 Double_t fChargedEnergyRemoved; // Charged energy removed
277 Double_t fNeutralEnergyRemoved; // Neutral energy removed
278 Double_t fGammaEnergyAdded; // gamma energy added
4998becf 279
2fbf38ac 280 // Declare the histograms
281
f61cec2f 282 /** The EM Et spectrum measured */
2fbf38ac 283 TH1F *fHistEt; //Et spectrum
284
f61cec2f 285 /** Multiplicity of neutral particles in the events */
286 TH1F *fHistNeutralMult; //Multiplicity
2fbf38ac 287
f61cec2f 288 // Acceptance plots
2fbf38ac 289 TH2F *fHistPhivsPtPos; //phi vs pT plot for positive tracks
290 TH2F *fHistPhivsPtNeg; //phi vs pT plot for negative tracks
291
f9a4ed81 292 /* Auxiliary Histogram variables */
293 static Float_t fgEtaAxis[17];//bins for eta axis of histograms
0651f6b4 294 static Int_t fgnumOfEtaBins;//number of eta bins
1423b942 295 static Float_t fgPtAxis[117];//bins for pt axis of histograms
296 static Int_t fgNumOfPtBins;//number of pt bins
0651f6b4 297 static Float_t fgEAxis[79];//bins for pt axis of histograms
298 static Int_t fgNumOfEBins;//number of pt bins
1423b942 299 static Float_t fgRAxis[48];//bins for R axis
300 static Int_t fgNumOfRBins;//number of R bins
ef647350 301
ef647350 302 /** Centrality object */
b6dd6ad2 303 AliCentrality *fCentrality; //Centrality object
ef647350 304
01b73fb0 305 Bool_t fMakeSparse;//Boolean for whether or not to make sparse histograms
ef647350 306
ef647350 307 TH1I *fCutFlow; // Cut flow
f9a4ed81 308
f61cec2f 309 AliAnalysisEtSelector *fSelector; // Selector class
b5821c13 310
4998becf 311private:
b2c10007 312
313
314
4998becf 315 //Declare private to avoid compilation warning
316 AliAnalysisEt & operator = (const AliAnalysisEt & g) ;//cpy assignment
317 AliAnalysisEt(const AliAnalysisEt & g) ; // cpy ctor
318
f61cec2f 319 ClassDef(AliAnalysisEt, 3);
2fbf38ac 320};
321
322#endif // ALIANALYSISET_H