]>
Commit | Line | Data |
---|---|---|
cf6522d1 | 1 | //_________________________________________________________________________ |
2 | // Utility Class for transverse energy studies | |
3 | // Base class for ESD & MC analysis | |
4 | // - reconstruction and MonteCarlo output | |
5 | // implementation file | |
6 | // | |
7 | //*-- Authors: Oystein Djuvsland (Bergen), David Silvermyr (ORNL) | |
8 | //_________________________________________________________________________ | |
9 | ||
2fbf38ac | 10 | #include "AliAnalysisEt.h" |
11 | #include "TMath.h" | |
12 | #include "TList.h" | |
13 | #include "TH1F.h" | |
14 | #include "TH2F.h" | |
ef647350 | 15 | #include "TH1I.h" |
ce546038 | 16 | #include "TTree.h" |
2fbf38ac | 17 | #include <iostream> |
18 | #include "AliAnalysisEtCuts.h" | |
951efd81 | 19 | #include "AliESDtrackCuts.h" |
f9a4ed81 | 20 | #include "AliESDCaloCluster.h" |
641e1e0c | 21 | #include "AliVEvent.h" |
cf6522d1 | 22 | #include "Rtypes.h" |
0f97be4c | 23 | #include "TString.h" |
d0c22dcc | 24 | #include "AliCentrality.h" |
ef647350 | 25 | #include "AliAnalysisEtSelector.h" |
b2c10007 | 26 | #include "AliAnalysisEtTrackMatchCorrections.h" |
27 | #include "AliAnalysisEtRecEffCorrection.h" | |
28 | #include "TFile.h" | |
29 | #include "TVector3.h" | |
641e1e0c | 30 | |
31 | using namespace std; | |
2fbf38ac | 32 | ClassImp(AliAnalysisEt); |
33 | ||
0651f6b4 | 34 | /* Auxiliary Histogram variables */ |
35 | Int_t AliAnalysisEt::fgnumOfEtaBins = 16; | |
36 | Float_t AliAnalysisEt::fgEtaAxis[17]={-0.78, -0.7, -0.58, -0.46, -0.34, -0.22, -0.12, -0.06, -0.0, 0.06, 0.12, 0.22, 0.34, 0.46, 0.58, 0.7, 0.78}; | |
37 | ||
1423b942 | 38 | Int_t AliAnalysisEt::fgNumOfPtBins = 111; |
39 | Float_t AliAnalysisEt::fgPtAxis[117]= | |
40 | {0.0,0.01,0.02,0.03,0.04, 0.05, 0.06,0.07,0.08,0.09, 0.10,0.11, .12,0.13, .14,0.15, .16,0.17, .18,0.19, | |
41 | 0.2, .22, .24, .26, .28, 0.30, 0.32, .34, .36, .38, 0.40, .42, .44, .46, .48, | |
42 | 0.5, .52, .54, .56, .58, 0.60, 0.62, .64, .66, .68, 0.70, .72, .74, .76, .78, | |
43 | .80, .82, .84, .86, .88, 0.90, 0.92, .94, .96, .98, 1.00,1.05, 1.1,1.15, 1.2, | |
44 | 1.25, 1.3,1.35,1.40,1.45, 1.50, 1.55, 1.6,1.65, 1.7, 1.75, 1.8,1.85, 1.9,1.95, | |
45 | 2.0, 2.2, 2.4, 2.6, 2.8, 3.00, 3.20, 3.4, 3.6, 3.8, 4.00, 4.2, 4.4, 4.6, 4.8, | |
46 | 5.0, 5.5, 6.0, 6.5, 7.0, 7.50, 8.00, 8.5, 9.0, 9.5, 10.0,12.0,14.0,16.0,18.0, | |
47 | 20.0,25.0,30.0,35.0,40.0, 45.0, 50.0}; | |
48 | ||
0651f6b4 | 49 | Int_t AliAnalysisEt::fgNumOfEBins = 78; |
50 | Float_t AliAnalysisEt::fgEAxis[79]={0., 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, | |
51 | 1.,1.5,2.,2.5,3.,3.5,4.,4.5,5.,5.5,6.,6.5,7.,7.5,8.,8.5,9.,9.5,10.,11., | |
52 | 12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.,25.,26.,27.,28.,29.,30.,31., | |
53 | 32.,33.,34.,35.,36.,37.,38.,39.,40.,41.,42.,43.,44.,45.,46.,47.,48.,49.,50.}; | |
54 | ||
1423b942 | 55 | Int_t AliAnalysisEt::fgNumOfRBins = 47; |
56 | Float_t AliAnalysisEt::fgRAxis[48]={-2.,-1.,0.,0.0005,0.001,0.0015,0.002,0.0025,0.003,0.0035,0.004,0.0045,0.005,0.0055,0.006,0.0065,0.007,0.0075,0.008,0.0085,0.009,0.0095,0.01, | |
57 | 0.011,0.012,0.013,0.014,0.015,0.016,0.017,0.018,0.019,0.020,0.022,0.024,0.026,0.028,0.03,0.032,0.034,0.036,0.038,0.04,0.042,0.044,0.046,0.048,0.05}; | |
58 | ||
2fbf38ac | 59 | |
7d2d1773 | 60 | AliAnalysisEt::AliAnalysisEt() : AliAnalysisEtCommon() |
b2c10007 | 61 | ,fTmCorrections(0) |
62 | ,fReCorrections(0) | |
f61cec2f | 63 | ,fEventSummaryTree(0) |
64 | ,fAcceptedTree(0) | |
65 | ,fDepositTree(0) | |
7d2d1773 | 66 | ,fTotEt(0) |
d9f145e7 | 67 | ,fTotEtAcc(0) |
7d2d1773 | 68 | ,fTotNeutralEt(0) |
d9f145e7 | 69 | ,fTotNeutralEtAcc(0) |
7d2d1773 | 70 | ,fTotChargedEt(0) |
d9f145e7 | 71 | ,fTotChargedEtAcc(0) |
7d2d1773 | 72 | ,fMultiplicity(0) |
73 | ,fChargedMultiplicity(0) | |
74 | ,fNeutralMultiplicity(0) | |
7d2d1773 | 75 | ,fProtonEt(0) |
f61cec2f | 76 | ,fAntiProtonEt(0) |
7d2d1773 | 77 | ,fNeutronEt(0) |
78 | ,fAntiNeutronEt(0) | |
f61cec2f | 79 | ,fPi0Et(0) |
80 | ,fPiPlusEt(0) | |
81 | ,fPiMinusEt(0) | |
82 | ,fKPlusEt(0) | |
83 | ,fKMinusEt(0) | |
84 | ,fK0sEt(0) | |
85 | ,fK0lEt(0) | |
86 | ,fMuMinusEt(0) | |
87 | ,fMuPlusEt(0) | |
88 | ,fEMinusEt(0) | |
89 | ,fEPlusEt(0) | |
7d2d1773 | 90 | ,fGammaEt(0) |
f61cec2f | 91 | ,fProtonRemovedEt(0) |
92 | ,fAntiProtonRemovedEt(0) | |
93 | ,fNeutronRemovedEt(0) | |
94 | ,fAntiNeutronRemovedEt(0) | |
95 | ,fPi0RemovedEt(0) | |
96 | ,fPiPlusRemovedEt(0) | |
97 | ,fPiMinusRemovedEt(0) | |
98 | ,fKPlusRemovedEt(0) | |
99 | ,fKMinusRemovedEt(0) | |
100 | ,fK0sRemovedEt(0) | |
101 | ,fK0lRemovedEt(0) | |
102 | ,fMuMinusRemovedEt(0) | |
103 | ,fMuPlusRemovedEt(0) | |
104 | ,fEMinusRemovedEt(0) | |
105 | ,fEPlusRemovedEt(0) | |
106 | ,fGammaRemovedEt(0) | |
107 | ,fProtonMult(0) | |
108 | ,fAntiProtonMult(0) | |
109 | ,fNeutronMult(0) | |
110 | ,fAntiNeutronMult(0) | |
111 | ,fPi0Mult(0) | |
112 | ,fPiPlusMult(0) | |
113 | ,fPiMinusMult(0) | |
114 | ,fKPlusMult(0) | |
115 | ,fKMinusMult(0) | |
116 | ,fK0sMult(0) | |
117 | ,fK0lMult(0) | |
118 | ,fMuMinusMult(0) | |
119 | ,fMuPlusMult(0) | |
120 | ,fEMinusMult(0) | |
121 | ,fEPlusMult(0) | |
122 | ,fGammaMult(0) | |
123 | ,fProtonRemovedMult(0) | |
124 | ,fAntiProtonRemovedMult(0) | |
125 | ,fNeutronRemovedMult(0) | |
126 | ,fAntiNeutronRemovedMult(0) | |
127 | ,fPi0RemovedMult(0) | |
128 | ,fPiPlusRemovedMult(0) | |
129 | ,fPiMinusRemovedMult(0) | |
130 | ,fKPlusRemovedMult(0) | |
131 | ,fKMinusRemovedMult(0) | |
132 | ,fK0sRemovedMult(0) | |
133 | ,fK0lRemovedMult(0) | |
134 | ,fMuMinusRemovedMult(0) | |
135 | ,fMuPlusRemovedMult(0) | |
136 | ,fEMinusRemovedMult(0) | |
137 | ,fEPlusRemovedMult(0) | |
138 | ,fGammaRemovedMult(0) | |
7d2d1773 | 139 | ,fEnergyDeposited(0) |
f61cec2f | 140 | ,fMomentumTPC(0) |
7d2d1773 | 141 | ,fCharge(0) |
142 | ,fParticlePid(0) | |
143 | ,fPidProb(0) | |
144 | ,fTrackPassedCut(kFALSE) | |
f9a4ed81 | 145 | ,fCentClass(0) |
7d2d1773 | 146 | ,fDetectorRadius(0) |
7d2d1773 | 147 | ,fSingleCellEnergyCut(0) |
ef647350 | 148 | ,fChargedEnergyRemoved(0) |
149 | ,fNeutralEnergyRemoved(0) | |
150 | ,fGammaEnergyAdded(0) | |
7d2d1773 | 151 | ,fHistEt(0) |
7d2d1773 | 152 | ,fHistNeutralMult(0) |
153 | ,fHistPhivsPtPos(0) | |
154 | ,fHistPhivsPtNeg(0) | |
5501aa9c | 155 | ,fCentrality(0) |
f61cec2f | 156 | ,fMakeSparse(kFALSE) |
ef647350 | 157 | ,fCutFlow(0) |
158 | ,fSelector(0) | |
f61cec2f | 159 | |
0651f6b4 | 160 | {} |
2fbf38ac | 161 | |
162 | AliAnalysisEt::~AliAnalysisEt() | |
464aa50c | 163 | {//Destructor |
4503e29d | 164 | delete fTmCorrections; |
165 | delete fReCorrections; | |
f61cec2f | 166 | if(fDepositTree){ |
167 | fDepositTree->Clear(); | |
168 | delete fDepositTree; // optional TTree | |
951efd81 | 169 | } |
f61cec2f | 170 | if(fEventSummaryTree) |
171 | { | |
172 | fEventSummaryTree->Clear(); | |
173 | delete fEventSummaryTree; | |
951efd81 | 174 | } |
311c6540 | 175 | if(fAcceptedTree) |
176 | { | |
177 | fAcceptedTree->Clear(); | |
178 | delete fAcceptedTree; | |
179 | } | |
7d2d1773 | 180 | delete fHistEt; //Et spectrum |
7d2d1773 | 181 | delete fHistNeutralMult; //Neutral multiplicity |
182 | delete fHistPhivsPtPos; //phi vs pT plot for positive tracks | |
311c6540 | 183 | delete fHistPhivsPtNeg; //phi vs pT Moplot for negative tracks |
d0c22dcc | 184 | //delete fCentrality;//this code does not actually own AliCentrality so we don't have to worry about deleting it... we just borrow it... |
311c6540 | 185 | delete fCutFlow; |
186 | delete fSelector; | |
2fbf38ac | 187 | } |
188 | ||
189 | void AliAnalysisEt::FillOutputList(TList *list) | |
cf6522d1 | 190 | { // histograms to be added to output |
2fbf38ac | 191 | list->Add(fHistEt); |
2fbf38ac | 192 | list->Add(fHistNeutralMult); |
193 | ||
194 | list->Add(fHistPhivsPtPos); | |
195 | list->Add(fHistPhivsPtNeg); | |
196 | ||
ce546038 | 197 | if (fCuts) { |
198 | if (fCuts->GetHistMakeTree()) { | |
f61cec2f | 199 | //list->Add(fTree); |
200 | list->Add(fEventSummaryTree); | |
ce546038 | 201 | } |
f9a4ed81 | 202 | if (fCuts->GetHistMakeTreeDeposit()) { |
f61cec2f | 203 | list->Add(fDepositTree); |
f9a4ed81 | 204 | } |
ce546038 | 205 | } |
f9a4ed81 | 206 | |
ef647350 | 207 | list->Add(fCutFlow); |
ce546038 | 208 | |
2fbf38ac | 209 | } |
210 | ||
211 | void AliAnalysisEt::Init() | |
0065531a | 212 | {// clear variables, set up cuts and PDG info |
7d2d1773 | 213 | AliAnalysisEtCommon::Init(); |
b2c10007 | 214 | if(ReadCorrections("calocorrections.root") != 0) |
215 | { | |
216 | // Shouldn't do this, why oh why are exceptions not allowed? | |
217 | exit(-1); | |
218 | } | |
0065531a | 219 | ResetEventValues(); |
2fbf38ac | 220 | } |
221 | ||
222 | void AliAnalysisEt::CreateHistograms() | |
cf6522d1 | 223 | { // create histograms.. |
13b0d3c1 | 224 | // histogram binning for E_T, p_T and Multiplicity: defaults for p+p |
f9a4ed81 | 225 | Int_t nbinsEt = 10000; |
226 | Double_t minEt = 0.0; | |
227 | Double_t maxEt = 1000; | |
13b0d3c1 | 228 | Int_t nbinsPt = 200; |
229 | Double_t minPt = 0; | |
230 | Double_t maxPt = 20; | |
231 | Int_t nbinsMult = 200; | |
232 | Double_t minMult = -0.5; // offset -0.5 to have integer bins centered around 0 | |
233 | Double_t maxMult = nbinsMult + minMult; // 1 bin per integer value | |
2fbf38ac | 234 | |
ce546038 | 235 | // see if we should change histogram limits etc, and possibly create a tree |
236 | if (fCuts) { | |
bf4eaf10 | 237 | if (fCuts->GetHistMakeTree()) { |
8ea99ab0 | 238 | CreateTrees(); |
bf4eaf10 | 239 | } |
0fa8c632 | 240 | |
241 | nbinsMult = fCuts->GetHistNbinsMult(); | |
242 | minMult = fCuts->GetHistMinMult(); | |
243 | maxMult = fCuts->GetHistMaxMult(); | |
244 | ||
245 | nbinsEt = fCuts->GetHistNbinsTotEt(); | |
246 | minEt = fCuts->GetHistMinTotEt(); | |
247 | maxEt = fCuts->GetHistMaxTotEt(); | |
248 | ||
249 | nbinsPt = fCuts->GetHistNbinsParticlePt(); | |
250 | minPt = fCuts->GetHistMinParticlePt(); | |
251 | maxPt = fCuts->GetHistMaxParticlePt(); | |
ce546038 | 252 | } |
253 | ||
2fbf38ac | 254 | TString histname = "fHistEt" + fHistogramNameSuffix; |
13b0d3c1 | 255 | fHistEt = new TH1F(histname.Data(), "Total E_{T} Distribution", nbinsEt, minEt, maxEt); |
2fbf38ac | 256 | fHistEt->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})"); |
257 | fHistEt->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)"); | |
258 | ||
2fbf38ac | 259 | histname = "fHistNeutralMult" + fHistogramNameSuffix; |
13b0d3c1 | 260 | fHistNeutralMult = new TH1F(histname.Data(), "Neutral Multiplicity", nbinsMult, minMult, maxMult); |
2fbf38ac | 261 | fHistNeutralMult->GetXaxis()->SetTitle("N"); |
262 | fHistNeutralMult->GetYaxis()->SetTitle("Multiplicity"); | |
263 | ||
264 | histname = "fHistPhivsPtPos" + fHistogramNameSuffix; | |
13b0d3c1 | 265 | fHistPhivsPtPos = new TH2F(histname.Data(), "Phi vs pT of positively charged tracks hitting the calorimeter", 200, 0, 2*TMath::Pi(), nbinsPt, minPt, maxPt); |
2fbf38ac | 266 | |
267 | histname = "fHistPhivsPtNeg" + fHistogramNameSuffix; | |
13b0d3c1 | 268 | fHistPhivsPtNeg = new TH2F(histname.Data(), "Phi vs pT of negatively charged tracks hitting the calorimeter", 200, 0, 2*TMath::Pi(), nbinsPt, minPt, maxPt); |
2fbf38ac | 269 | |
ef647350 | 270 | histname = "fCutFlow" + fHistogramNameSuffix; |
271 | fCutFlow = new TH1I(histname, histname, 20, -0.5, 19.5); | |
0651f6b4 | 272 | } |
2fbf38ac | 273 | |
0651f6b4 | 274 | TH2F* AliAnalysisEt::CreateEtaEHisto2D(TString name, TString title, TString ztitle) |
275 | { //creates a 2-d histogram in eta and E and adds it to the list of histograms to be saved | |
1423b942 | 276 | TString histoname = name + fHistogramNameSuffix; |
277 | ||
278 | TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfEBins, fgEAxis, fgnumOfEtaBins, fgEtaAxis); | |
279 | histo->SetYTitle("#eta"); | |
280 | histo->SetXTitle("E (GeV)"); | |
281 | histo->SetZTitle(ztitle.Data()); | |
282 | histo->Sumw2(); | |
283 | ||
284 | return histo; | |
285 | } | |
286 | ||
287 | ||
288 | TH2F* AliAnalysisEt::CreateEtaPtHisto2D(TString name, TString title, TString ztitle) | |
289 | { //creates a 2-d histogram in eta and phi and adds it to the list of histograms to be saved | |
290 | TString histoname = name + fHistogramNameSuffix; | |
291 | ||
292 | TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfPtBins, fgPtAxis, fgnumOfEtaBins, fgEtaAxis); | |
293 | histo->SetYTitle("#eta"); | |
294 | histo->SetXTitle("p_{T}"); | |
295 | histo->SetZTitle(ztitle.Data()); | |
296 | histo->Sumw2(); | |
0651f6b4 | 297 | |
1423b942 | 298 | return histo; |
299 | } | |
300 | ||
301 | TH2F* AliAnalysisEt::CreateEtaEtHisto2D(TString name, TString title, TString ztitle) | |
302 | { //creates a 2-d histogram in eta and phi and adds it to the list of histograms to be saved | |
303 | TString histoname = name + fHistogramNameSuffix; | |
0651f6b4 | 304 | |
1423b942 | 305 | TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfEBins, fgEAxis, fgnumOfEtaBins, fgEtaAxis); |
0651f6b4 | 306 | histo->SetYTitle("#eta"); |
1423b942 | 307 | histo->SetXTitle("E_{T}"); |
308 | histo->SetZTitle(ztitle.Data()); | |
309 | histo->Sumw2(); | |
310 | ||
311 | return histo; | |
312 | } | |
313 | ||
314 | TH2F* AliAnalysisEt::CreateResEHisto2D(TString name, TString title, TString ztitle) | |
315 | { //creates a 2-d histogram in eta and E and adds it to the list of histograms to be saved | |
316 | TString histoname = name + fHistogramNameSuffix; | |
317 | ||
318 | TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfEBins, fgEAxis, fgNumOfRBins, fgRAxis); | |
319 | histo->SetYTitle("R"); | |
0651f6b4 | 320 | histo->SetXTitle("E (GeV)"); |
1423b942 | 321 | histo->SetZTitle(ztitle.Data()); |
322 | histo->Sumw2(); | |
323 | ||
324 | return histo; | |
325 | } | |
326 | ||
327 | ||
328 | TH2F* AliAnalysisEt::CreateResPtHisto2D(TString name, TString title, TString ztitle) | |
329 | { //creates a 2-d histogram in eta and phi and adds it to the list of histograms to be saved | |
330 | TString histoname = name + fHistogramNameSuffix; | |
331 | ||
332 | TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfPtBins, fgPtAxis, fgNumOfRBins, fgRAxis); | |
333 | histo->SetYTitle("R"); | |
334 | histo->SetXTitle("p_{T}"); | |
335 | histo->SetZTitle(ztitle.Data()); | |
336 | histo->Sumw2(); | |
337 | ||
338 | return histo; | |
339 | } | |
340 | ||
01b73fb0 | 341 | THnSparseF* AliAnalysisEt::CreateClusterHistoSparse(TString name, TString title) |
1423b942 | 342 | { //creates a 2D sparse histogram |
343 | TString histoname = name + fHistogramNameSuffix; | |
344 | ||
345 | Int_t nBins[4] = {200,200,240,20}; | |
346 | Double_t min[4] = {0.,-1.,70.,0.5}; | |
347 | Double_t max[4] = {50.,1.,190,20.5}; | |
348 | ||
01b73fb0 | 349 | THnSparseF *histo = new THnSparseF(histoname.Data(),title.Data(),4,nBins,min, max); |
1423b942 | 350 | histo->GetAxis(0)->SetTitle("E"); |
351 | histo->GetAxis(1)->SetTitle("#eta_{cluster}"); | |
352 | histo->GetAxis(2)->SetTitle("#phi_{cluster}"); | |
353 | histo->GetAxis(3)->SetTitle("n_{cells}"); | |
354 | histo->Sumw2(); | |
355 | ||
356 | return histo; | |
357 | } | |
358 | ||
01b73fb0 | 359 | THnSparseF* AliAnalysisEt::CreateNeutralPartHistoSparse(TString name, TString title) |
1423b942 | 360 | { //creates a sparse neutral particle histogram |
361 | TString histoname = name + fHistogramNameSuffix; | |
362 | ||
363 | Int_t nBins[6] = {20,200,200,200,240,20}; | |
364 | Double_t min[6] = {-1.,0.,0.,-1.,70.,0.5}; | |
365 | Double_t max[6] = {1.,50.,50.,1.,190,20.5}; | |
366 | ||
01b73fb0 | 367 | THnSparseF *histo = new THnSparseF(histoname.Data(),title.Data(),6,nBins,min, max); |
1423b942 | 368 | histo->GetAxis(0)->SetTitle("#eta"); |
369 | histo->GetAxis(1)->SetTitle("p_{T}"); | |
370 | histo->GetAxis(2)->SetTitle("E"); | |
371 | histo->GetAxis(3)->SetTitle("#eta_{cluster}"); | |
372 | histo->GetAxis(4)->SetTitle("#phi_{cluster}"); | |
373 | histo->GetAxis(5)->SetTitle("n_{cells}"); | |
374 | histo->Sumw2(); | |
375 | ||
376 | return histo; | |
377 | } | |
378 | ||
01b73fb0 | 379 | THnSparseF* AliAnalysisEt::CreateChargedPartHistoSparse(TString name, TString title) |
1423b942 | 380 | { //creates a sparse charged particle histogram |
381 | TString histoname = name + fHistogramNameSuffix; | |
382 | ||
383 | Int_t nBins[7] = {20,200,200,200,240,20,100}; | |
384 | Double_t min[7] = {-1.,0.,0.,-1.,70.,0.5,0.}; | |
385 | Double_t max[7] = {1.,50.,50.,1.,190,20.5,0.1}; | |
386 | ||
01b73fb0 | 387 | THnSparseF *histo = new THnSparseF(histoname.Data(),title.Data(),7,nBins,min, max); |
1423b942 | 388 | histo->GetAxis(0)->SetTitle("#eta"); |
389 | histo->GetAxis(1)->SetTitle("p_{T}"); | |
390 | histo->GetAxis(2)->SetTitle("E"); | |
391 | histo->GetAxis(3)->SetTitle("#eta_{cluster}"); | |
392 | histo->GetAxis(4)->SetTitle("#phi_{cluster}"); | |
393 | histo->GetAxis(5)->SetTitle("n_{cells}"); | |
394 | histo->GetAxis(6)->SetTitle("R_{match}"); | |
0651f6b4 | 395 | histo->Sumw2(); |
0651f6b4 | 396 | |
397 | return histo; | |
2fbf38ac | 398 | } |
399 | ||
0651f6b4 | 400 | |
8ea99ab0 | 401 | void AliAnalysisEt::CreateTrees() |
ce546038 | 402 | { // create tree.. |
f61cec2f | 403 | TString treename = "fEventSummaryTree" + fHistogramNameSuffix; |
8ea99ab0 | 404 | if(fCuts->GetHistMakeTree()) |
405 | { | |
406 | ||
f61cec2f | 407 | fEventSummaryTree = new TTree(treename, treename); |
408 | fEventSummaryTree->Branch("fTotEt",&fTotEt,"fTotEt/D"); | |
d9f145e7 | 409 | fEventSummaryTree->Branch("fTotEtAcc",&fTotEtAcc,"fTotEtAcc/D"); |
f61cec2f | 410 | fEventSummaryTree->Branch("fTotNeutralEt",&fTotNeutralEt,"fTotNeutralEt/D"); |
d9f145e7 | 411 | fEventSummaryTree->Branch("fTotNeutralEtAcc",&fTotNeutralEtAcc,"fTotNeutralEtAcc/D"); |
f61cec2f | 412 | fEventSummaryTree->Branch("fTotChargedEt",&fTotChargedEt,"fTotChargedEt/D"); |
d9f145e7 | 413 | fEventSummaryTree->Branch("fTotChargedEtAcc",&fTotChargedEtAcc,"fTotChargedEtAcc/D"); |
f61cec2f | 414 | fEventSummaryTree->Branch("fMultiplicity",&fMultiplicity,"fMultiplicity/I"); |
415 | fEventSummaryTree->Branch("fChargedMultiplicity",&fChargedMultiplicity,"fChargedMultiplicity/I"); | |
416 | fEventSummaryTree->Branch("fNeutralMultiplicity",&fNeutralMultiplicity,"fNeutralMultiplicity/I"); | |
417 | fEventSummaryTree->Branch("fCentClass",&fCentClass,"fCentClass/I"); | |
418 | fEventSummaryTree->Branch("fChargedEnergyRemoved", &fChargedEnergyRemoved, "fChargedEnergyRemoved/D"); | |
419 | fEventSummaryTree->Branch("fNeutralEnergyRemoved", &fNeutralEnergyRemoved, "fNeutralEnergyRemoved/D"); | |
420 | fEventSummaryTree->Branch("fGammaEnergyAdded", &fGammaEnergyAdded, "fGammaEnergyAdded/D"); | |
421 | ||
422 | ||
423 | fEventSummaryTree->Branch("fProtonEt",&fProtonEt,"fProtonEt/D"); | |
424 | fEventSummaryTree->Branch("fAntiProtonEt",&fAntiProtonEt,"fAntiProtonEt/D"); | |
425 | ||
426 | fEventSummaryTree->Branch("fNeutronEt",&fNeutronEt,"fNeutronEt/D"); | |
427 | fEventSummaryTree->Branch("fAntiNeutronEt",&fAntiNeutronEt,"fAntiNeutronEt/D"); | |
428 | ||
429 | fEventSummaryTree->Branch("fPi0Et",&fPi0Et,"fPi0Et/D"); | |
430 | fEventSummaryTree->Branch("fPiPlusEt",&fPiPlusEt,"fPiPlusEt/D"); | |
431 | fEventSummaryTree->Branch("fPiMinusEt",&fPiMinusEt,"fPiMinusEt/D"); | |
432 | ||
433 | fEventSummaryTree->Branch("fKPlusEt",&fKPlusEt,"fKPlusEt/D"); | |
434 | fEventSummaryTree->Branch("fKMinusEt",&fKMinusEt,"fKMinusEt/D"); | |
435 | fEventSummaryTree->Branch("fK0sEt",&fK0sEt,"fK0sEt/D"); | |
436 | fEventSummaryTree->Branch("fK0lEt",&fK0lEt,"fK0lEt/D"); | |
437 | ||
438 | fEventSummaryTree->Branch("fMuMinusEt",&fMuMinusEt,"fMuMinusEt/D"); | |
439 | fEventSummaryTree->Branch("fMuPlusEt",&fMuPlusEt,"fMuPlusEt/D"); | |
440 | ||
441 | fEventSummaryTree->Branch("fEMinusEt",&fEMinusEt,"fEMinusEt/D"); | |
442 | fEventSummaryTree->Branch("fEPlusEt",&fEPlusEt,"fEPlusEt/D"); | |
443 | ||
444 | fEventSummaryTree->Branch("fGammaEt", &fGammaEt, "fGammaEt/D"); | |
445 | ||
446 | fEventSummaryTree->Branch("fProtonRemovedEt",&fProtonRemovedEt,"fProtonRemovedEt/D"); | |
447 | fEventSummaryTree->Branch("fAntiProtonRemovedEt",&fAntiProtonRemovedEt,"fAntiProtonRemovedEt/D"); | |
448 | ||
449 | fEventSummaryTree->Branch("fNeutronRemovedEt",&fNeutronRemovedEt,"fNeutronRemovedEt/D"); | |
450 | fEventSummaryTree->Branch("fAntiNeutronRemovedEt",&fAntiNeutronRemovedEt,"fAntiNeutronRemovedEt/D"); | |
451 | ||
452 | fEventSummaryTree->Branch("fPi0RemovedEt",&fPi0RemovedEt,"fPi0RemovedEt/D"); | |
453 | fEventSummaryTree->Branch("fPiPlusRemovedEt",&fPiPlusRemovedEt,"fPiPlusRemovedEt/D"); | |
454 | fEventSummaryTree->Branch("fPiMinusRemovedEt",&fPiMinusRemovedEt,"fPiMinusRemovedEt/D"); | |
455 | ||
456 | fEventSummaryTree->Branch("fKPlusRemovedEt",&fKPlusRemovedEt,"fKPlusRemovedEt/D"); | |
457 | fEventSummaryTree->Branch("fKMinusRemovedEt",&fKMinusEt,"fKMinusRemovedEt/D"); | |
458 | fEventSummaryTree->Branch("fK0sRemovedEt",&fK0sEt,"fK0sRemovedEt/D"); | |
459 | fEventSummaryTree->Branch("fK0lRemovedEt",&fK0lRemovedEt,"fK0lRemovedEt/D"); | |
460 | ||
461 | fEventSummaryTree->Branch("fMuMinusRemovedEt",&fMuMinusRemovedEt,"fMuMinusRemovedEt/D"); | |
462 | fEventSummaryTree->Branch("fMuPlusRemovedEt",&fMuPlusRemovedEt,"fMuPlusRemovedEt/D"); | |
463 | ||
464 | fEventSummaryTree->Branch("fEMinusRemovedEt",&fEMinusRemovedEt,"fEMinusRemovedEt/D"); | |
465 | fEventSummaryTree->Branch("fEPlusRemovedEt",&fEPlusRemovedEt,"fEPlusRemovedEt/D"); | |
466 | ||
467 | fEventSummaryTree->Branch("fGammaRemovedEt", &fGammaRemovedEt, "fGammaEtRemoved/D"); | |
468 | ||
469 | fEventSummaryTree->Branch("fProtonMult",&fProtonMult,"fProtonMult/D"); | |
470 | fEventSummaryTree->Branch("fAntiProtonMult",&fAntiProtonMult,"fAntiProtonMult/D"); | |
471 | ||
472 | fEventSummaryTree->Branch("fNeutronMult",&fNeutronMult,"fNeutronMult/D"); | |
473 | fEventSummaryTree->Branch("fAntiNeutronMult",&fAntiNeutronMult,"fAntiNeutronMult/D"); | |
474 | ||
475 | fEventSummaryTree->Branch("fPi0Mult",&fPi0Mult,"fPi0Mult/D"); | |
476 | fEventSummaryTree->Branch("fPiPlusMult",&fPiPlusMult,"fPiPlusMult/D"); | |
477 | fEventSummaryTree->Branch("fPiMinusMult",&fPiMinusMult,"fPiMinusMult/D"); | |
478 | ||
479 | fEventSummaryTree->Branch("fKPlusMult",&fKPlusMult,"fKPlusMult/D"); | |
480 | fEventSummaryTree->Branch("fKMinusMult",&fKMinusMult,"fKMinusMult/D"); | |
481 | fEventSummaryTree->Branch("fK0sMult",&fK0sMult,"fK0sMult/D"); | |
482 | fEventSummaryTree->Branch("fK0lMult",&fK0lMult,"fK0lMult/D"); | |
483 | ||
484 | fEventSummaryTree->Branch("fMuMinusMult",&fMuMinusMult,"fMuMinusMult/D"); | |
485 | fEventSummaryTree->Branch("fMuPlusMult",&fMuPlusMult,"fMuPlusMult/D"); | |
486 | ||
487 | fEventSummaryTree->Branch("fEMinusMult",&fEMinusMult,"fEMinusMult/D"); | |
488 | fEventSummaryTree->Branch("fEPlusMult",&fEPlusMult,"fEPlusMult/D"); | |
489 | ||
490 | fEventSummaryTree->Branch("fGammaMult", &fGammaMult, "fGammaMult/D"); | |
491 | ||
492 | fEventSummaryTree->Branch("fProtonRemovedMult",&fProtonRemovedMult,"fProtonRemovedMult/D"); | |
493 | fEventSummaryTree->Branch("fAntiProtonRemovedMult",&fAntiProtonRemovedMult,"fAntiProtonRemovedMult/D"); | |
494 | ||
495 | fEventSummaryTree->Branch("fNeutronRemovedMult",&fNeutronRemovedMult,"fNeutronRemovedMult/D"); | |
496 | fEventSummaryTree->Branch("fAntiNeutronRemovedMult",&fAntiNeutronRemovedMult,"fAntiNeutronRemovedMult/D"); | |
497 | ||
498 | fEventSummaryTree->Branch("fPi0RemovedMult",&fPi0RemovedMult,"fPi0RemovedMult/D"); | |
499 | fEventSummaryTree->Branch("fPiPlusRemovedMult",&fPiPlusRemovedMult,"fPiPlusRemovedMult/D"); | |
500 | fEventSummaryTree->Branch("fPiMinusRemovedMult",&fPiMinusRemovedMult,"fPiMinusRemovedMult/D"); | |
501 | ||
502 | fEventSummaryTree->Branch("fKPlusRemovedMult",&fKPlusRemovedMult,"fKPlusRemovedMult/D"); | |
503 | fEventSummaryTree->Branch("fKMinusRemovedMult",&fKMinusMult,"fKMinusRemovedMult/D"); | |
504 | fEventSummaryTree->Branch("fK0sRemovedMult",&fK0sMult,"fK0sRemovedMult/D"); | |
505 | fEventSummaryTree->Branch("fK0lRemovedMult",&fK0lRemovedMult,"fK0lRemovedMult/D"); | |
506 | ||
507 | fEventSummaryTree->Branch("fMuMinusRemovedMult",&fMuMinusRemovedMult,"fMuMinusRemovedMult/D"); | |
508 | fEventSummaryTree->Branch("fMuPlusRemovedMult",&fMuPlusRemovedMult,"fMuPlusRemovedMult/D"); | |
509 | ||
510 | fEventSummaryTree->Branch("fEMinusRemovedMult",&fEMinusRemovedMult,"fEMinusRemovedMult/D"); | |
511 | fEventSummaryTree->Branch("fEPlusRemovedMult",&fEPlusRemovedMult,"fEPlusRemovedMult/D"); | |
512 | ||
513 | fEventSummaryTree->Branch("fGammaRemovedMult", &fGammaRemovedMult, "fGammaMultRemoved/D"); | |
514 | ||
515 | ||
f9a4ed81 | 516 | |
8ea99ab0 | 517 | } |
518 | ||
519 | if(fCuts->GetHistMakeTreeDeposit()) | |
520 | { | |
521 | treename = "fTreeDeposit" + fHistogramNameSuffix; | |
f61cec2f | 522 | fDepositTree = new TTree(treename, treename); |
523 | ||
524 | fDepositTree->Branch("fEnergyDeposited", &fEnergyDeposited, "fEnergyDeposited/F"); | |
525 | fDepositTree->Branch("fMomentumTPC", &fMomentumTPC, "fMomentumTPC/F"); | |
526 | fDepositTree->Branch("fCharge", &fCharge, "fCharge/S"); | |
527 | fDepositTree->Branch("fParticlePid", &fParticlePid, "fParticlePid/S"); | |
528 | fDepositTree->Branch("fPidProb", &fPidProb, "fPidProb/F"); | |
529 | fDepositTree->Branch("fTrackPassedCut", &fTrackPassedCut, "fTrackPassedCut/B"); | |
8ea99ab0 | 530 | } |
7b873813 | 531 | |
ce546038 | 532 | return; |
533 | } | |
2fbf38ac | 534 | void AliAnalysisEt::FillHistograms() |
cf6522d1 | 535 | { // fill histograms.. |
2fbf38ac | 536 | fHistEt->Fill(fTotEt); |
2fbf38ac | 537 | |
2fbf38ac | 538 | fHistNeutralMult->Fill(fNeutralMultiplicity); |
539 | ||
ce546038 | 540 | if (fCuts) { |
541 | if (fCuts->GetHistMakeTree()) { | |
f61cec2f | 542 | fEventSummaryTree->Fill(); |
ce546038 | 543 | } |
544 | } | |
f61cec2f | 545 | if(fCuts) |
546 | { | |
547 | if(fCuts->GetHistMakeTreeDeposit()) | |
548 | { | |
549 | fDepositTree->Fill(); | |
550 | } | |
551 | } | |
552 | ||
2fbf38ac | 553 | } |
0065531a | 554 | |
641e1e0c | 555 | Int_t AliAnalysisEt::AnalyseEvent(AliVEvent *event) |
0065531a | 556 | { //this line is basically here to eliminate a compiler warning that event is not used. Making it a virtual function did not work with the plugin. |
7d2d1773 | 557 | AliAnalysisEtCommon::AnalyseEvent(event); |
f61cec2f | 558 | //fSelector->SetEvent(event); |
0065531a | 559 | ResetEventValues(); |
641e1e0c | 560 | return 0; |
561 | } | |
2fbf38ac | 562 | |
563 | void AliAnalysisEt::ResetEventValues() | |
cf6522d1 | 564 | { // clear |
7d2d1773 | 565 | AliAnalysisEtCommon::ResetEventValues(); |
0065531a | 566 | fTotEt = 0; |
d9f145e7 | 567 | fTotEtAcc = 0; |
0065531a | 568 | fTotNeutralEt = 0; |
d9f145e7 | 569 | fTotChargedEt = 0; |
570 | fTotNeutralEtAcc = 0; | |
571 | fTotChargedEtAcc = 0; | |
0065531a | 572 | fMultiplicity = 0; |
573 | fChargedMultiplicity = 0; | |
574 | fNeutralMultiplicity = 0; | |
f61cec2f | 575 | |
87efb15c | 576 | fProtonEt = 0; |
f61cec2f | 577 | fAntiProtonEt = 0; |
578 | ||
7b873813 | 579 | fNeutronEt = 0; |
580 | fAntiNeutronEt = 0; | |
f61cec2f | 581 | |
582 | fPi0Et = 0; | |
583 | fPiPlusEt = 0; | |
584 | fPiMinusEt = 0; | |
585 | ||
586 | fKPlusEt = 0; | |
587 | fKMinusEt = 0; | |
588 | fK0sEt = 0; | |
589 | fK0lEt = 0; | |
590 | ||
591 | fMuMinusEt = 0; | |
592 | fMuPlusEt = 0; | |
593 | ||
594 | fEMinusEt = 0; | |
595 | fEPlusEt = 0; | |
596 | ||
7b873813 | 597 | fGammaEt = 0; |
f61cec2f | 598 | |
599 | fProtonRemovedEt = 0; | |
600 | fAntiProtonRemovedEt = 0; | |
601 | ||
602 | fNeutronRemovedEt = 0; | |
603 | fAntiNeutronRemovedEt = 0; | |
604 | ||
605 | fPi0RemovedEt = 0; | |
606 | fPiPlusRemovedEt = 0; | |
607 | fPiMinusRemovedEt = 0; | |
608 | ||
609 | fKPlusRemovedEt = 0; | |
610 | fKMinusRemovedEt = 0; | |
611 | fK0sRemovedEt = 0; | |
612 | fK0lRemovedEt = 0; | |
613 | ||
614 | fMuMinusRemovedEt = 0; | |
615 | fMuPlusRemovedEt = 0; | |
616 | ||
617 | fEMinusRemovedEt = 0; | |
618 | fEPlusRemovedEt = 0; | |
619 | ||
620 | fGammaRemovedEt = 0; | |
621 | ||
622 | ||
623 | fProtonMult = 0; | |
624 | fAntiProtonMult = 0; | |
625 | ||
626 | fNeutronMult = 0; | |
627 | fAntiNeutronMult = 0; | |
628 | ||
629 | fPi0Mult = 0; | |
630 | fPiPlusMult = 0; | |
631 | fPiMinusMult = 0; | |
632 | ||
633 | fKPlusMult = 0; | |
634 | fKMinusMult = 0; | |
635 | fK0sMult = 0; | |
636 | fK0lMult = 0; | |
637 | ||
638 | fMuMinusMult = 0; | |
639 | fMuPlusMult = 0; | |
640 | ||
641 | fEMinusMult = 0; | |
642 | fEPlusMult = 0; | |
643 | ||
644 | fGammaMult = 0; | |
645 | ||
646 | fProtonRemovedMult = 0; | |
647 | fAntiProtonRemovedMult = 0; | |
648 | ||
649 | fNeutronRemovedMult = 0; | |
650 | fAntiNeutronRemovedMult = 0; | |
651 | ||
652 | fPi0RemovedMult = 0; | |
653 | fPiPlusRemovedMult = 0; | |
654 | fPiMinusRemovedMult = 0; | |
655 | ||
656 | fKPlusRemovedMult = 0; | |
657 | fKMinusRemovedMult = 0; | |
658 | fK0sRemovedMult = 0; | |
659 | fK0lRemovedMult = 0; | |
660 | ||
661 | fMuMinusRemovedMult = 0; | |
662 | fMuPlusRemovedMult = 0; | |
663 | ||
664 | fEMinusRemovedMult = 0; | |
665 | fEPlusRemovedMult = 0; | |
666 | ||
667 | fGammaRemovedMult = 0; | |
668 | ||
0065531a | 669 | return; |
2fbf38ac | 670 | } |
99a6613d | 671 | |
b2c10007 | 672 | Int_t AliAnalysisEt::ReadCorrections(TString filename) |
673 | { | |
674 | TFile *f = TFile::Open(filename, "READ"); | |
675 | if(f) | |
ef647350 | 676 | { |
b2c10007 | 677 | TString det = "Phos"; |
678 | if(fHistogramNameSuffix.Contains("Emcal")) | |
679 | { | |
680 | det = "Emcal"; | |
681 | } | |
2aab9269 | 682 | cout<<"Histo name suffix "<<fHistogramNameSuffix<<endl; |
b2c10007 | 683 | TString name = "TmCorrections" + det; |
684 | std::cout << name << std::endl; | |
685 | fTmCorrections = dynamic_cast<AliAnalysisEtTrackMatchCorrections*>(f->Get(name)); | |
686 | if(!fTmCorrections) | |
687 | { | |
4503e29d | 688 | cout<<"No corrections with name "<<name<<endl; |
b2c10007 | 689 | Printf("Could not load TM corrections"); |
690 | return -1; | |
691 | } | |
692 | name = "ReCorrections" + det; | |
693 | fReCorrections = dynamic_cast<AliAnalysisEtRecEffCorrection*>(f->Get(name)); | |
694 | if(!fReCorrections) | |
695 | { | |
696 | Printf("Could not load rec eff corrections"); | |
697 | return -1; | |
698 | } | |
699 | return 0; | |
ef647350 | 700 | } |
b2c10007 | 701 | return -1; |
702 | } | |
703 | ||
31c813d5 | 704 | Double_t AliAnalysisEt::CorrectForReconstructionEfficiency(const AliESDCaloCluster& cluster, Int_t cent) |
b2c10007 | 705 | { |
706 | Float_t pos[3]; | |
707 | cluster.GetPosition(pos); | |
708 | TVector3 cp(pos); | |
31c813d5 | 709 | Double_t corrEnergy = fReCorrections->CorrectedEnergy(cluster.E(), cent); |
f9a4ed81 | 710 | |
cfe23ff0 | 711 | //std::cout << "Original energy: " << cluster.E() << ", corrected energy: " << corrEnergy << std::endl; |
b2c10007 | 712 | return TMath::Sin(cp.Theta())*corrEnergy; |
ef647350 | 713 | } |
714 |