]>
Commit | Line | Data |
---|---|---|
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 | 22 | class AliAnalysisEtRecEffCorrection; |
23 | class AliAnalysisEtTrackMatchCorrections; | |
ef647350 | 24 | class AliAnalysisEtSelector; |
25 | class AliCentrality; | |
0f97be4c | 26 | class TString; |
ce546038 | 27 | class TTree; |
2fbf38ac | 28 | class TH2F; |
29 | class TH1F; | |
ef647350 | 30 | class TH1I; |
2fbf38ac | 31 | class AliVEvent; |
32 | class TList; | |
0651f6b4 | 33 | class TString; |
b5821c13 | 34 | class AliESDtrackCuts; |
4998becf | 35 | class AliAnalysisEtCuts; |
f9a4ed81 | 36 | class AliESDCaloCluster; |
37 | //class THnSparseD; | |
9a365626 | 38 | class AliPIDResponse; |
2fbf38ac | 39 | |
7d2d1773 | 40 | class AliAnalysisEt : public AliAnalysisEtCommon |
2fbf38ac | 41 | { |
42 | public: | |
ef647350 | 43 | |
2fbf38ac | 44 | AliAnalysisEt(); |
45 | virtual ~AliAnalysisEt(); | |
ef647350 | 46 | |
2fbf38ac | 47 | public: |
ef647350 | 48 | |
2fbf38ac | 49 | /** Analyse the event! */ |
f9a4ed81 | 50 | |
641e1e0c | 51 | virtual Int_t AnalyseEvent(AliVEvent *event); |
2fbf38ac | 52 | |
53 | /** Fill the objects you want to output, classes which add new histograms should overload this. */ | |
54 | virtual void FillOutputList(TList* list); | |
55 | ||
56 | /** Initialise the analysis, must be overloaded. */ | |
641e1e0c | 57 | virtual void Init(); |
2fbf38ac | 58 | |
ef647350 | 59 | /** |
60 | * Creates the histograms, must be overloaded if you want to add your own. | |
2fbf38ac | 61 | * Uses the fHistogramNameSuffix to create proper histogram names |
62 | */ | |
63 | virtual void CreateHistograms(); | |
8ea99ab0 | 64 | virtual void CreateTrees(); |
f9a4ed81 | 65 | TH2F* CreateEtaEHisto2D(TString name, TString title, TString ztitle); |
ef647350 | 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); | |
01b73fb0 | 70 | THnSparseF* CreateClusterHistoSparse(TString name, TString title); |
71 | THnSparseF* CreateNeutralPartHistoSparse(TString name, TString title); | |
72 | THnSparseF* CreateChargedPartHistoSparse(TString name, TString title); | |
ef647350 | 73 | |
2fbf38ac | 74 | /** Fills the histograms, must be overloaded if you want to add your own */ |
75 | virtual void FillHistograms(); | |
76 | ||
77 | /** Reset event specific values (Et etc.) */ | |
78 | virtual void ResetEventValues(); | |
99a6613d | 79 | |
2fbf38ac | 80 | /** Total Et in the event (without acceptance cuts) */ |
ef647350 | 81 | Double_t GetTotEt() const { |
82 | return fTotEt; | |
83 | } | |
2fbf38ac | 84 | |
ef647350 | 85 | /** Total neutral Et in the event (without acceptance cuts) */ |
86 | Double_t GetTotNeutralEt() const { | |
87 | return fTotNeutralEt; | |
88 | } | |
2fbf38ac | 89 | |
2fbf38ac | 90 | /** Total charged Et in the event (without acceptance cuts) */ |
ef647350 | 91 | Double_t GetTotChargedEt() const { |
92 | return fTotChargedEt; | |
93 | } | |
2fbf38ac | 94 | |
ef647350 | 95 | void SetTPCOnlyTrackCuts(const AliESDtrackCuts *cuts) { |
96 | fEsdtrackCutsTPC = (AliESDtrackCuts *) cuts; | |
97 | } | |
2fbf38ac | 98 | |
5501aa9c | 99 | /** Set the centrality object */ |
ef647350 | 100 | void SetCentralityObject(AliCentrality *cent) { |
101 | fCentrality = cent; | |
102 | } | |
103 | ||
f9a4ed81 | 104 | /** Get contribution from non-removed charged particles */ |
b2c10007 | 105 | Double_t GetChargedContribution(Int_t clusterMultiplicity) { |
106 | return fTmCorrections->ChargedContr(clusterMultiplicity); | |
ef647350 | 107 | } |
f9a4ed81 | 108 | |
109 | /** Get contribution from non-removed neutral particles */ | |
b2c10007 | 110 | Double_t GetNeutralContribution(Int_t clusterMultiplicity) { |
111 | return fTmCorrections->NeutralContr(clusterMultiplicity); | |
ef647350 | 112 | } |
113 | ||
f9a4ed81 | 114 | /** Get contribution from removed gammas */ |
b2c10007 | 115 | Double_t GetGammaContribution(Int_t clusterMultiplicity) { |
116 | return fTmCorrections->GammaContr(clusterMultiplicity); | |
ef647350 | 117 | } |
2fbf38ac | 118 | |
f61cec2f | 119 | /** Get contribution from secondaries */ |
b2c10007 | 120 | Double_t GetSecondaryContribution(Int_t clusterMultiplicity) { |
121 | return fTmCorrections->SecondaryContr(clusterMultiplicity); | |
f61cec2f | 122 | } |
123 | ||
ef647350 | 124 | void MakeSparseHistograms() { |
125 | fMakeSparse=kTRUE; | |
126 | } | |
127 | ||
128 | AliAnalysisEtCuts * GetCuts() const { return fCuts; } | |
b2c10007 | 129 | |
130 | ||
131 | // Read in corrections | |
132 | Int_t ReadCorrections(TString filename); // Read in corrections | |
133 | ||
02d47689 | 134 | void SetFsub(Float_t val){fsub=val;};//function for setting fsub for EMCal/PHOS hadronic corrections |
01b73fb0 | 135 | |
2fbf38ac | 136 | protected: |
2fbf38ac | 137 | |
7d2d1773 | 138 | //AliAnalysisEtCuts *fCuts; // keeper of basic cuts |
b2c10007 | 139 | |
140 | // Return corrected cluster E_T | |
31c813d5 | 141 | Double_t CorrectForReconstructionEfficiency(const AliESDCaloCluster &cluster,Int_t cent = 0); |
02d47689 | 142 | Double_t CorrectForReconstructionEfficiency(const AliESDCaloCluster &cluster, Float_t eReco,Int_t cent = 0); |
b2c10007 | 143 | |
144 | // Track matching (hadrdonic contamination) corrections | |
145 | AliAnalysisEtTrackMatchCorrections *fTmCorrections; | |
146 | ||
147 | // Reconstruction efficiency corrections | |
148 | AliAnalysisEtRecEffCorrection *fReCorrections; | |
f61cec2f | 149 | |
150 | TTree *fEventSummaryTree; // Contains event level information | |
cf6522d1 | 151 | |
f61cec2f | 152 | TTree *fAcceptedTree; // Tree for information about accepted particles |
2fbf38ac | 153 | |
f61cec2f | 154 | TTree *fDepositTree; // optional TTree for energy deposit measurements |
ef647350 | 155 | |
156 | Double_t fTotEt;/** Total Et in the event (without acceptance cuts) */ | |
ef647350 | 157 | |
d9f145e7 | 158 | Double_t fTotEtAcc;/** Total Et in the event (without acceptance cuts) */ |
159 | ||
ef647350 | 160 | Double_t fTotNeutralEt;/** Total neutral Et in the event */ |
f61cec2f | 161 | |
d9f145e7 | 162 | Double_t fTotNeutralEtAcc;/** Total neutral Et in the event */ |
163 | ||
ef647350 | 164 | Double_t fTotChargedEt;/** Total charged Et in the event */ |
cf6522d1 | 165 | |
d9f145e7 | 166 | Double_t fTotChargedEtAcc;/** Total charged Et in the event */ |
167 | ||
ef647350 | 168 | Int_t fMultiplicity;/** Multiplicity of particles in the event */ |
169 | Int_t fChargedMultiplicity;/** Multiplicity of charged particles in the event */ | |
cf6522d1 | 170 | Int_t fNeutralMultiplicity; /** Multiplicity of neutral particles in the event */ |
ef647350 | 171 | |
ce546038 | 172 | Double_t fProtonEt; /** Et of identified protons */ |
f61cec2f | 173 | Double_t fAntiProtonEt; /** Et of identified protons */ |
174 | ||
43056f1b | 175 | Double_t fNeutronEt; /** Et of neutrons (MC only for now) */ |
176 | Double_t fAntiNeutronEt; /** Et of anti-neutrons (MC only for now) */ | |
f61cec2f | 177 | |
178 | Double_t fPi0Et; // Et of identified pi0 | |
179 | Double_t fPiPlusEt; // Et of identified pi+ | |
180 | Double_t fPiMinusEt; // Et of identified pi- | |
181 | ||
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 | |
186 | ||
187 | Double_t fMuMinusEt; // Et of identified mu- | |
188 | Double_t fMuPlusEt; // Et of identified mu+ | |
189 | ||
190 | Double_t fEMinusEt; // Et of identified e- | |
191 | Double_t fEPlusEt; // Et of identified e+ | |
192 | ||
43056f1b | 193 | Double_t fGammaEt; /** Et of identified electrons (MC only for now) */ |
ef647350 | 194 | |
f61cec2f | 195 | Double_t fProtonRemovedEt; /** Et of identified protons */ |
196 | Double_t fAntiProtonRemovedEt; /** Et of identified protons */ | |
197 | ||
198 | Double_t fNeutronRemovedEt; /** Et of neutrons (MC only for now) */ | |
199 | Double_t fAntiNeutronRemovedEt; /** Et of anti-neutrons (MC only for now) */ | |
200 | ||
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- | |
204 | ||
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 | |
209 | ||
210 | Double_t fMuMinusRemovedEt; // Removed Et of identified mu- | |
211 | Double_t fMuPlusRemovedEt; // Removed Et of identified mu+ | |
212 | ||
213 | Double_t fEMinusRemovedEt; // Removed Et of identified e- | |
214 | Double_t fEPlusRemovedEt; // Removed Et of identified e+ | |
215 | ||
216 | Double_t fGammaRemovedEt; /** Removed Et of identified electrons (MC only for now) */ | |
217 | ||
218 | Double_t fProtonMult; /** Mult of identified protons */ | |
219 | Double_t fAntiProtonMult; /** Mult of identified protons */ | |
220 | ||
221 | Double_t fNeutronMult; /** Mult of neutrons (MC only for now) */ | |
222 | Double_t fAntiNeutronMult; /** Mult of anti-neutrons (MC only for now) */ | |
223 | ||
224 | Double_t fPi0Mult; // Mult of identified pi0 | |
225 | Double_t fPiPlusMult; // Mult of identified pi+ | |
226 | Double_t fPiMinusMult; // Mult of identified pi- | |
227 | ||
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 | |
232 | ||
233 | Double_t fMuMinusMult; // Mult of identified mu- | |
234 | Double_t fMuPlusMult; // Mult of identified mu+ | |
235 | ||
236 | Double_t fEMinusMult; // Mult of identified e- | |
237 | Double_t fEPlusMult; // Mult of identified e+ | |
238 | ||
239 | Double_t fGammaMult; /** Mult of identified electrons (MC only for now) */ | |
240 | ||
241 | Double_t fProtonRemovedMult; /** Mult of identified protons */ | |
242 | Double_t fAntiProtonRemovedMult; /** Mult of identified protons */ | |
243 | ||
244 | Double_t fNeutronRemovedMult; /** Mult of neutrons (MC only for now) */ | |
245 | Double_t fAntiNeutronRemovedMult; /** Mult of anti-neutrons (MC only for now) */ | |
246 | ||
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- | |
250 | ||
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 | |
255 | ||
256 | Double_t fMuMinusRemovedMult; // Removed Mult of identified mu- | |
257 | Double_t fMuPlusRemovedMult; // Removed Mult of identified mu+ | |
258 | ||
259 | Double_t fEMinusRemovedMult; // Removed Mult of identified e- | |
260 | Double_t fEPlusRemovedMult; // Removed Mult of identified e+ | |
261 | ||
262 | Double_t fGammaRemovedMult; /** Removed Mult of identified electrons (MC only for now) */ | |
ef647350 | 263 | |
8ea99ab0 | 264 | Float_t fEnergyDeposited; /** Energy deposited in calorimeter */ |
f61cec2f | 265 | Float_t fMomentumTPC; /** Momentum measured in TPC */ |
8ea99ab0 | 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 */ | |
f9a4ed81 | 270 | |
3825c7d6 | 271 | Int_t fCentClass; // centrality class |
ef647350 | 272 | |
43056f1b | 273 | /** Detector radius */ |
ef647350 | 274 | Double_t fDetectorRadius; // Detector radius |
275 | ||
43056f1b | 276 | /** Minimum energy to cut on single cell cluster */ |
277 | Double_t fSingleCellEnergyCut; // Minimum energy to cut on single cell cluster | |
ef647350 | 278 | |
4d376d01 | 279 | Double_t fChargedEnergyRemoved; // Charged energy removed |
280 | Double_t fNeutralEnergyRemoved; // Neutral energy removed | |
281 | Double_t fGammaEnergyAdded; // gamma energy added | |
4998becf | 282 | |
2fbf38ac | 283 | // Declare the histograms |
284 | ||
f61cec2f | 285 | /** The EM Et spectrum measured */ |
2fbf38ac | 286 | TH1F *fHistEt; //Et spectrum |
287 | ||
f61cec2f | 288 | /** Multiplicity of neutral particles in the events */ |
289 | TH1F *fHistNeutralMult; //Multiplicity | |
2fbf38ac | 290 | |
f61cec2f | 291 | // Acceptance plots |
2fbf38ac | 292 | TH2F *fHistPhivsPtPos; //phi vs pT plot for positive tracks |
293 | TH2F *fHistPhivsPtNeg; //phi vs pT plot for negative tracks | |
294 | ||
f9a4ed81 | 295 | /* Auxiliary Histogram variables */ |
296 | static Float_t fgEtaAxis[17];//bins for eta axis of histograms | |
0651f6b4 | 297 | static Int_t fgnumOfEtaBins;//number of eta bins |
1423b942 | 298 | static Float_t fgPtAxis[117];//bins for pt axis of histograms |
299 | static Int_t fgNumOfPtBins;//number of pt bins | |
0651f6b4 | 300 | static Float_t fgEAxis[79];//bins for pt axis of histograms |
301 | static Int_t fgNumOfEBins;//number of pt bins | |
1423b942 | 302 | static Float_t fgRAxis[48];//bins for R axis |
303 | static Int_t fgNumOfRBins;//number of R bins | |
ef647350 | 304 | |
ef647350 | 305 | /** Centrality object */ |
b6dd6ad2 | 306 | AliCentrality *fCentrality; //Centrality object |
ef647350 | 307 | |
01b73fb0 | 308 | Bool_t fMakeSparse;//Boolean for whether or not to make sparse histograms |
ef647350 | 309 | |
ef647350 | 310 | TH1I *fCutFlow; // Cut flow |
f9a4ed81 | 311 | |
f61cec2f | 312 | AliAnalysisEtSelector *fSelector; // Selector class |
b5821c13 | 313 | |
9a365626 | 314 | AliPIDResponse *fPIDResponse; |
315 | ||
02d47689 | 316 | Float_t fsub; |
317 | ||
318 | ||
9a365626 | 319 | |
4998becf | 320 | private: |
b2c10007 | 321 | |
322 | ||
323 | ||
4998becf | 324 | //Declare private to avoid compilation warning |
325 | AliAnalysisEt & operator = (const AliAnalysisEt & g) ;//cpy assignment | |
326 | AliAnalysisEt(const AliAnalysisEt & g) ; // cpy ctor | |
327 | ||
f61cec2f | 328 | ClassDef(AliAnalysisEt, 3); |
2fbf38ac | 329 | }; |
330 | ||
331 | #endif // ALIANALYSISET_H |