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
8 //*-- Authors: Oystein Djuvsland (Bergen), David Silvermyr (ORNL)
9 //_________________________________________________________________________
11 #include "AliAnalysisEtCommon.h"
12 #include "THnSparse.h"
13 #include "AliESDCaloCluster.h"
14 #include "AliAnalysisEtCuts.h"
15 #include "AliAnalysisEtTrackMatchCorrections.h"
18 #include "AliAnalysisEtSelector.h"
19 #include "AliAnalysisEtSelectorEmcal.h"
20 #include "AliAnalysisEtSelectorPhos.h"
22 class AliAnalysisEtRecEffCorrection;
23 class AliAnalysisEtTrackMatchCorrections;
24 class AliAnalysisEtSelector;
34 class AliESDtrackCuts;
35 class AliAnalysisEtCuts;
36 class AliESDCaloCluster;
40 class AliAnalysisEt : public AliAnalysisEtCommon
45 virtual ~AliAnalysisEt();
49 /** Analyse the event! */
51 virtual Int_t AnalyseEvent(AliVEvent *event);
53 /** Fill the objects you want to output, classes which add new histograms should overload this. */
54 virtual void FillOutputList(TList* list);
56 /** Initialise the analysis, must be overloaded. */
60 * Creates the histograms, must be overloaded if you want to add your own.
61 * Uses the fHistogramNameSuffix to create proper histogram names
63 virtual void CreateHistograms();
64 virtual void CreateTrees();
65 TH2F* CreateEtaEHisto2D(TString name, TString title, TString ztitle);
66 TH2F* CreateEtaPtHisto2D(TString name, TString title, TString ztitle);
67 TH2F* CreateEtaEtHisto2D(TString name, TString title, TString ztitle);
68 TH2F* CreateResEHisto2D(TString name, TString title, TString ztitle);
69 TH2F* CreateResPtHisto2D(TString name, TString title, TString ztitle);
70 THnSparseF* CreateClusterHistoSparse(TString name, TString title);
71 THnSparseF* CreateNeutralPartHistoSparse(TString name, TString title);
72 THnSparseF* CreateChargedPartHistoSparse(TString name, TString title);
74 /** Fills the histograms, must be overloaded if you want to add your own */
75 virtual void FillHistograms();
77 /** Reset event specific values (Et etc.) */
78 virtual void ResetEventValues();
80 /** Total Et in the event (without acceptance cuts) */
81 Double_t GetTotEt() const {
85 /** Total neutral Et in the event (without acceptance cuts) */
86 Double_t GetTotNeutralEt() const {
90 /** Total charged Et in the event (without acceptance cuts) */
91 Double_t GetTotChargedEt() const {
95 void SetTPCOnlyTrackCuts(const AliESDtrackCuts *cuts) {
96 fEsdtrackCutsTPC = (AliESDtrackCuts *) cuts;
99 /** Set the centrality object */
100 void SetCentralityObject(AliCentrality *cent) {
104 /** Get contribution from non-removed charged particles */
105 Double_t GetChargedContribution(Int_t clusterMultiplicity) {
106 return fTmCorrections->ChargedContr(clusterMultiplicity);
109 /** Get contribution from non-removed neutral particles */
110 Double_t GetNeutralContribution(Int_t clusterMultiplicity) {
111 return fTmCorrections->NeutralContr(clusterMultiplicity);
114 /** Get contribution from removed gammas */
115 Double_t GetGammaContribution(Int_t clusterMultiplicity) {
116 return fTmCorrections->GammaContr(clusterMultiplicity);
119 /** Get contribution from secondaries */
120 Double_t GetSecondaryContribution(Int_t clusterMultiplicity) {
121 return fTmCorrections->SecondaryContr(clusterMultiplicity);
124 void MakeSparseHistograms() {
128 AliAnalysisEtCuts * GetCuts() const { return fCuts; }
131 // Read in corrections
132 Int_t ReadCorrections(TString filename); // Read in corrections
134 void SetFsub(Float_t val){fsub=val;};//function for setting fsub for EMCal/PHOS hadronic corrections
138 //AliAnalysisEtCuts *fCuts; // keeper of basic cuts
140 // Return corrected cluster E_T
141 Double_t CorrectForReconstructionEfficiency(const AliESDCaloCluster &cluster,Int_t cent = 0);
142 Double_t CorrectForReconstructionEfficiency(const AliESDCaloCluster &cluster, Float_t eReco,Int_t cent = 0);
144 // Track matching (hadrdonic contamination) corrections
145 AliAnalysisEtTrackMatchCorrections *fTmCorrections;
147 // Reconstruction efficiency corrections
148 AliAnalysisEtRecEffCorrection *fReCorrections;
150 TTree *fEventSummaryTree; //! Contains event level information
152 TTree *fAcceptedTree; //! Tree for information about accepted particles
154 TTree *fDepositTree; //! optional TTree for energy deposit measurements
156 Double_t fTotEt;/** Total Et in the event (without acceptance cuts) */
158 Double_t fTotEtAcc;/** Total Et in the event (without acceptance cuts) */
160 Double_t fTotNeutralEt;/** Total neutral Et in the event */
162 Double_t fTotNeutralEtAcc;/** Total neutral Et in the event */
164 Double_t fTotChargedEt;/** Total charged Et in the event */
166 Double_t fTotChargedEtAcc;/** Total charged Et in the event */
168 Int_t fMultiplicity;/** Multiplicity of particles in the event */
169 Int_t fChargedMultiplicity;/** Multiplicity of charged particles in the event */
170 Int_t fNeutralMultiplicity; /** Multiplicity of neutral particles in the event */
172 Double_t fProtonEt; /** Et of identified protons */
173 Double_t fAntiProtonEt; /** Et of identified protons */
175 Double_t fNeutronEt; /** Et of neutrons (MC only for now) */
176 Double_t fAntiNeutronEt; /** Et of anti-neutrons (MC only for now) */
178 Double_t fPi0Et; // Et of identified pi0
179 Double_t fPiPlusEt; // Et of identified pi+
180 Double_t fPiMinusEt; // Et of identified pi-
182 Double_t fKPlusEt; // Et of identified K+
183 Double_t fKMinusEt; // Et of identified K-
184 Double_t fK0sEt; // Et of identified K0 short
185 Double_t fK0lEt; // Et of identified K0 long
187 Double_t fMuMinusEt; // Et of identified mu-
188 Double_t fMuPlusEt; // Et of identified mu+
190 Double_t fEMinusEt; // Et of identified e-
191 Double_t fEPlusEt; // Et of identified e+
193 Double_t fGammaEt; /** Et of identified electrons (MC only for now) */
195 Double_t fProtonRemovedEt; /** Et of identified protons */
196 Double_t fAntiProtonRemovedEt; /** Et of identified protons */
198 Double_t fNeutronRemovedEt; /** Et of neutrons (MC only for now) */
199 Double_t fAntiNeutronRemovedEt; /** Et of anti-neutrons (MC only for now) */
201 Double_t fPi0RemovedEt; // Removed Et of identified pi0
202 Double_t fPiPlusRemovedEt; // Removed Et of identified pi+
203 Double_t fPiMinusRemovedEt; // Removed Et of identified pi-
205 Double_t fKPlusRemovedEt; // Removed Et of identified K+
206 Double_t fKMinusRemovedEt; // Removed Et of identified K-
207 Double_t fK0sRemovedEt; // Removed Et of identified K0 short
208 Double_t fK0lRemovedEt; // Removed Et of identified K0 long
210 Double_t fMuMinusRemovedEt; // Removed Et of identified mu-
211 Double_t fMuPlusRemovedEt; // Removed Et of identified mu+
213 Double_t fEMinusRemovedEt; // Removed Et of identified e-
214 Double_t fEPlusRemovedEt; // Removed Et of identified e+
216 Double_t fGammaRemovedEt; /** Removed Et of identified electrons (MC only for now) */
218 Double_t fProtonMult; /** Mult of identified protons */
219 Double_t fAntiProtonMult; /** Mult of identified protons */
221 Double_t fNeutronMult; /** Mult of neutrons (MC only for now) */
222 Double_t fAntiNeutronMult; /** Mult of anti-neutrons (MC only for now) */
224 Double_t fPi0Mult; // Mult of identified pi0
225 Double_t fPiPlusMult; // Mult of identified pi+
226 Double_t fPiMinusMult; // Mult of identified pi-
228 Double_t fKPlusMult; // Mult of identified K+
229 Double_t fKMinusMult; // Mult of identified K-
230 Double_t fK0sMult; // Mult of identified K0 short
231 Double_t fK0lMult; // Mult of identified K0 long
233 Double_t fMuMinusMult; // Mult of identified mu-
234 Double_t fMuPlusMult; // Mult of identified mu+
236 Double_t fEMinusMult; // Mult of identified e-
237 Double_t fEPlusMult; // Mult of identified e+
239 Double_t fGammaMult; /** Mult of identified electrons (MC only for now) */
241 Double_t fProtonRemovedMult; /** Mult of identified protons */
242 Double_t fAntiProtonRemovedMult; /** Mult of identified protons */
244 Double_t fNeutronRemovedMult; /** Mult of neutrons (MC only for now) */
245 Double_t fAntiNeutronRemovedMult; /** Mult of anti-neutrons (MC only for now) */
247 Double_t fPi0RemovedMult; // Removed Mult of identified pi0
248 Double_t fPiPlusRemovedMult; // Removed Mult of identified pi+
249 Double_t fPiMinusRemovedMult; // Removed Mult of identified pi-
251 Double_t fKPlusRemovedMult; // Removed Mult of identified K+
252 Double_t fKMinusRemovedMult; // Removed Mult of identified K-
253 Double_t fK0sRemovedMult; // Removed Mult of identified K0 short
254 Double_t fK0lRemovedMult; // Removed Mult of identified K0 long
256 Double_t fMuMinusRemovedMult; // Removed Mult of identified mu-
257 Double_t fMuPlusRemovedMult; // Removed Mult of identified mu+
259 Double_t fEMinusRemovedMult; // Removed Mult of identified e-
260 Double_t fEPlusRemovedMult; // Removed Mult of identified e+
262 Double_t fGammaRemovedMult; /** Removed Mult of identified electrons (MC only for now) */
264 Float_t fEnergyDeposited; /** Energy deposited in calorimeter */
265 Float_t fMomentumTPC; /** Momentum measured in TPC */
266 Short_t fCharge; /** Charge of the particle */
267 Short_t fParticlePid; /** Particle PID */
268 Float_t fPidProb; /** Probability of PID */
269 Bool_t fTrackPassedCut; /** The track is accepted by ESDTrackCuts */
271 Int_t fCentClass; // centrality class
273 /** Detector radius */
274 Double_t fDetectorRadius; // Detector radius
276 /** Minimum energy to cut on single cell cluster */
277 Double_t fSingleCellEnergyCut; // Minimum energy to cut on single cell cluster
279 Double_t fChargedEnergyRemoved; // Charged energy removed
280 Double_t fNeutralEnergyRemoved; // Neutral energy removed
281 Double_t fGammaEnergyAdded; // gamma energy added
283 // Declare the histograms
285 /** The EM Et spectrum measured */
286 TH1F *fHistEt; //!Et spectrum
288 /** Multiplicity of neutral particles in the events */
289 TH1F *fHistNeutralMult; //!Multiplicity
292 TH2F *fHistPhivsPtPos; //!phi vs pT plot for positive tracks
293 TH2F *fHistPhivsPtNeg; //!phi vs pT plot for negative tracks
295 /* Auxiliary Histogram variables */
296 static Float_t fgEtaAxis[17];//bins for eta axis of histograms
297 static Int_t fgnumOfEtaBins;//number of eta bins
298 static Float_t fgPtAxis[117];//bins for pt axis of histograms
299 static Int_t fgNumOfPtBins;//number of pt bins
300 static Float_t fgEAxis[79];//bins for pt axis of histograms
301 static Int_t fgNumOfEBins;//number of pt bins
302 static Float_t fgRAxis[48];//bins for R axis
303 static Int_t fgNumOfRBins;//number of R bins
305 /** Centrality object */
306 AliCentrality *fCentrality; //!Centrality object
308 Bool_t fMakeSparse;//Boolean for whether or not to make sparse histograms
310 TH1I *fCutFlow; //! Cut flow
312 AliAnalysisEtSelector *fSelector; // Selector class
314 AliPIDResponse *fPIDResponse;//
324 //Declare private to avoid compilation warning
325 AliAnalysisEt & operator = (const AliAnalysisEt & g) ;//cpy assignment
326 AliAnalysisEt(const AliAnalysisEt & g) ; // cpy ctor
328 ClassDef(AliAnalysisEt, 3);
331 #endif // ALIANALYSISET_H