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