]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/totEt/AliAnalysisEt.cxx
correct inputHistogramFileName (Prabhat Ranjan Pujahari <p.pujahari@cern.ch>)
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisEt.cxx
CommitLineData
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
31using namespace std;
2fbf38ac 32ClassImp(AliAnalysisEt);
33
0651f6b4 34/* Auxiliary Histogram variables */
35Int_t AliAnalysisEt::fgnumOfEtaBins = 16;
36Float_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 38Int_t AliAnalysisEt::fgNumOfPtBins = 111;
39Float_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 49Int_t AliAnalysisEt::fgNumOfEBins = 78;
50Float_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 55Int_t AliAnalysisEt::fgNumOfRBins = 47;
56Float_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 60AliAnalysisEt::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
162AliAnalysisEt::~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
189void 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
211void 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
222void 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 274TH2F* 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
288TH2F* 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
301TH2F* 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
314TH2F* 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
328TH2F* 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 341THnSparseF* 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 359THnSparseF* 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 379THnSparseF* 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 401void 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 534void 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 555Int_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
563void 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 672Int_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 704Double_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