1 //_________________________________________________________________________
2 // Utility Class for transverse energy studies
3 // Base class for ESD & MC analysis
4 // - reconstruction and MonteCarlo output
7 //*-- Authors: Oystein Djuvsland (Bergen), David Silvermyr (ORNL)
8 //_________________________________________________________________________
10 #include "AliAnalysisEt.h"
18 #include "AliAnalysisEtCuts.h"
19 #include "AliESDtrackCuts.h"
20 #include "AliESDCaloCluster.h"
21 #include "AliVEvent.h"
24 #include "AliCentrality.h"
25 #include "AliAnalysisEtSelector.h"
26 #include "AliAnalysisEtTrackMatchCorrections.h"
27 #include "AliAnalysisEtRecEffCorrection.h"
32 ClassImp(AliAnalysisEt);
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};
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};
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.};
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};
60 AliAnalysisEt::AliAnalysisEt() : AliAnalysisEtCommon()
73 ,fChargedMultiplicity(0)
74 ,fNeutralMultiplicity(0)
92 ,fAntiProtonRemovedEt(0)
94 ,fAntiNeutronRemovedEt(0)
102 ,fMuMinusRemovedEt(0)
123 ,fProtonRemovedMult(0)
124 ,fAntiProtonRemovedMult(0)
125 ,fNeutronRemovedMult(0)
126 ,fAntiNeutronRemovedMult(0)
128 ,fPiPlusRemovedMult(0)
129 ,fPiMinusRemovedMult(0)
130 ,fKPlusRemovedMult(0)
131 ,fKMinusRemovedMult(0)
134 ,fMuMinusRemovedMult(0)
135 ,fMuPlusRemovedMult(0)
136 ,fEMinusRemovedMult(0)
137 ,fEPlusRemovedMult(0)
138 ,fGammaRemovedMult(0)
144 ,fTrackPassedCut(kFALSE)
147 ,fSingleCellEnergyCut(0)
148 ,fChargedEnergyRemoved(0)
149 ,fNeutralEnergyRemoved(0)
150 ,fGammaEnergyAdded(0)
162 AliAnalysisEt::~AliAnalysisEt()
164 delete fTmCorrections;
165 delete fReCorrections;
167 fDepositTree->Clear();
168 delete fDepositTree; // optional TTree
170 if(fEventSummaryTree)
172 fEventSummaryTree->Clear();
173 delete fEventSummaryTree;
177 fAcceptedTree->Clear();
178 delete fAcceptedTree;
180 delete fHistEt; //Et spectrum
181 delete fHistNeutralMult; //Neutral multiplicity
182 delete fHistPhivsPtPos; //phi vs pT plot for positive tracks
183 delete fHistPhivsPtNeg; //phi vs pT Moplot for negative tracks
184 //delete fCentrality;//this code does not actually own AliCentrality so we don't have to worry about deleting it... we just borrow it...
189 void AliAnalysisEt::FillOutputList(TList *list)
190 { // histograms to be added to output
192 list->Add(fHistNeutralMult);
194 list->Add(fHistPhivsPtPos);
195 list->Add(fHistPhivsPtNeg);
198 if (fCuts->GetHistMakeTree()) {
200 list->Add(fEventSummaryTree);
202 if (fCuts->GetHistMakeTreeDeposit()) {
203 list->Add(fDepositTree);
211 void AliAnalysisEt::Init()
212 {// clear variables, set up cuts and PDG info
213 AliAnalysisEtCommon::Init();
214 if(ReadCorrections("calocorrections.root") != 0)
216 // Shouldn't do this, why oh why are exceptions not allowed?
222 void AliAnalysisEt::CreateHistograms()
223 { // create histograms..
224 // histogram binning for E_T, p_T and Multiplicity: defaults for p+p
225 Int_t nbinsEt = 10000;
226 Double_t minEt = 0.0;
227 Double_t maxEt = 1000;
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
235 // see if we should change histogram limits etc, and possibly create a tree
237 if (fCuts->GetHistMakeTree()) {
241 nbinsMult = fCuts->GetHistNbinsMult();
242 minMult = fCuts->GetHistMinMult();
243 maxMult = fCuts->GetHistMaxMult();
245 nbinsEt = fCuts->GetHistNbinsTotEt();
246 minEt = fCuts->GetHistMinTotEt();
247 maxEt = fCuts->GetHistMaxTotEt();
249 nbinsPt = fCuts->GetHistNbinsParticlePt();
250 minPt = fCuts->GetHistMinParticlePt();
251 maxPt = fCuts->GetHistMaxParticlePt();
254 TString histname = "fHistEt" + fHistogramNameSuffix;
255 fHistEt = new TH1F(histname.Data(), "Total E_{T} Distribution", nbinsEt, minEt, maxEt);
256 fHistEt->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})");
257 fHistEt->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)");
259 histname = "fHistNeutralMult" + fHistogramNameSuffix;
260 fHistNeutralMult = new TH1F(histname.Data(), "Neutral Multiplicity", nbinsMult, minMult, maxMult);
261 fHistNeutralMult->GetXaxis()->SetTitle("N");
262 fHistNeutralMult->GetYaxis()->SetTitle("Multiplicity");
264 histname = "fHistPhivsPtPos" + fHistogramNameSuffix;
265 fHistPhivsPtPos = new TH2F(histname.Data(), "Phi vs pT of positively charged tracks hitting the calorimeter", 200, 0, 2*TMath::Pi(), nbinsPt, minPt, maxPt);
267 histname = "fHistPhivsPtNeg" + fHistogramNameSuffix;
268 fHistPhivsPtNeg = new TH2F(histname.Data(), "Phi vs pT of negatively charged tracks hitting the calorimeter", 200, 0, 2*TMath::Pi(), nbinsPt, minPt, maxPt);
270 histname = "fCutFlow" + fHistogramNameSuffix;
271 fCutFlow = new TH1I(histname, histname, 20, -0.5, 19.5);
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
276 TString histoname = name + fHistogramNameSuffix;
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());
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;
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());
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;
305 TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfEBins, fgEAxis, fgnumOfEtaBins, fgEtaAxis);
306 histo->SetYTitle("#eta");
307 histo->SetXTitle("E_{T}");
308 histo->SetZTitle(ztitle.Data());
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;
318 TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfEBins, fgEAxis, fgNumOfRBins, fgRAxis);
319 histo->SetYTitle("R");
320 histo->SetXTitle("E (GeV)");
321 histo->SetZTitle(ztitle.Data());
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;
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());
341 THnSparseF* AliAnalysisEt::CreateClusterHistoSparse(TString name, TString title)
342 { //creates a 2D sparse histogram
343 TString histoname = name + fHistogramNameSuffix;
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};
349 THnSparseF *histo = new THnSparseF(histoname.Data(),title.Data(),4,nBins,min, max);
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}");
359 THnSparseF* AliAnalysisEt::CreateNeutralPartHistoSparse(TString name, TString title)
360 { //creates a sparse neutral particle histogram
361 TString histoname = name + fHistogramNameSuffix;
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};
367 THnSparseF *histo = new THnSparseF(histoname.Data(),title.Data(),6,nBins,min, max);
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}");
379 THnSparseF* AliAnalysisEt::CreateChargedPartHistoSparse(TString name, TString title)
380 { //creates a sparse charged particle histogram
381 TString histoname = name + fHistogramNameSuffix;
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};
387 THnSparseF *histo = new THnSparseF(histoname.Data(),title.Data(),7,nBins,min, max);
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}");
401 void AliAnalysisEt::CreateTrees()
403 TString treename = "fEventSummaryTree" + fHistogramNameSuffix;
404 if(fCuts->GetHistMakeTree())
407 fEventSummaryTree = new TTree(treename, treename);
408 fEventSummaryTree->Branch("fTotEt",&fTotEt,"fTotEt/D");
409 fEventSummaryTree->Branch("fTotEtAcc",&fTotEtAcc,"fTotEtAcc/D");
410 fEventSummaryTree->Branch("fTotNeutralEt",&fTotNeutralEt,"fTotNeutralEt/D");
411 fEventSummaryTree->Branch("fTotNeutralEtAcc",&fTotNeutralEtAcc,"fTotNeutralEtAcc/D");
412 fEventSummaryTree->Branch("fTotChargedEt",&fTotChargedEt,"fTotChargedEt/D");
413 fEventSummaryTree->Branch("fTotChargedEtAcc",&fTotChargedEtAcc,"fTotChargedEtAcc/D");
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");
423 fEventSummaryTree->Branch("fProtonEt",&fProtonEt,"fProtonEt/D");
424 fEventSummaryTree->Branch("fAntiProtonEt",&fAntiProtonEt,"fAntiProtonEt/D");
426 fEventSummaryTree->Branch("fNeutronEt",&fNeutronEt,"fNeutronEt/D");
427 fEventSummaryTree->Branch("fAntiNeutronEt",&fAntiNeutronEt,"fAntiNeutronEt/D");
429 fEventSummaryTree->Branch("fPi0Et",&fPi0Et,"fPi0Et/D");
430 fEventSummaryTree->Branch("fPiPlusEt",&fPiPlusEt,"fPiPlusEt/D");
431 fEventSummaryTree->Branch("fPiMinusEt",&fPiMinusEt,"fPiMinusEt/D");
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");
438 fEventSummaryTree->Branch("fMuMinusEt",&fMuMinusEt,"fMuMinusEt/D");
439 fEventSummaryTree->Branch("fMuPlusEt",&fMuPlusEt,"fMuPlusEt/D");
441 fEventSummaryTree->Branch("fEMinusEt",&fEMinusEt,"fEMinusEt/D");
442 fEventSummaryTree->Branch("fEPlusEt",&fEPlusEt,"fEPlusEt/D");
444 fEventSummaryTree->Branch("fGammaEt", &fGammaEt, "fGammaEt/D");
446 fEventSummaryTree->Branch("fProtonRemovedEt",&fProtonRemovedEt,"fProtonRemovedEt/D");
447 fEventSummaryTree->Branch("fAntiProtonRemovedEt",&fAntiProtonRemovedEt,"fAntiProtonRemovedEt/D");
449 fEventSummaryTree->Branch("fNeutronRemovedEt",&fNeutronRemovedEt,"fNeutronRemovedEt/D");
450 fEventSummaryTree->Branch("fAntiNeutronRemovedEt",&fAntiNeutronRemovedEt,"fAntiNeutronRemovedEt/D");
452 fEventSummaryTree->Branch("fPi0RemovedEt",&fPi0RemovedEt,"fPi0RemovedEt/D");
453 fEventSummaryTree->Branch("fPiPlusRemovedEt",&fPiPlusRemovedEt,"fPiPlusRemovedEt/D");
454 fEventSummaryTree->Branch("fPiMinusRemovedEt",&fPiMinusRemovedEt,"fPiMinusRemovedEt/D");
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");
461 fEventSummaryTree->Branch("fMuMinusRemovedEt",&fMuMinusRemovedEt,"fMuMinusRemovedEt/D");
462 fEventSummaryTree->Branch("fMuPlusRemovedEt",&fMuPlusRemovedEt,"fMuPlusRemovedEt/D");
464 fEventSummaryTree->Branch("fEMinusRemovedEt",&fEMinusRemovedEt,"fEMinusRemovedEt/D");
465 fEventSummaryTree->Branch("fEPlusRemovedEt",&fEPlusRemovedEt,"fEPlusRemovedEt/D");
467 fEventSummaryTree->Branch("fGammaRemovedEt", &fGammaRemovedEt, "fGammaEtRemoved/D");
469 fEventSummaryTree->Branch("fProtonMult",&fProtonMult,"fProtonMult/D");
470 fEventSummaryTree->Branch("fAntiProtonMult",&fAntiProtonMult,"fAntiProtonMult/D");
472 fEventSummaryTree->Branch("fNeutronMult",&fNeutronMult,"fNeutronMult/D");
473 fEventSummaryTree->Branch("fAntiNeutronMult",&fAntiNeutronMult,"fAntiNeutronMult/D");
475 fEventSummaryTree->Branch("fPi0Mult",&fPi0Mult,"fPi0Mult/D");
476 fEventSummaryTree->Branch("fPiPlusMult",&fPiPlusMult,"fPiPlusMult/D");
477 fEventSummaryTree->Branch("fPiMinusMult",&fPiMinusMult,"fPiMinusMult/D");
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");
484 fEventSummaryTree->Branch("fMuMinusMult",&fMuMinusMult,"fMuMinusMult/D");
485 fEventSummaryTree->Branch("fMuPlusMult",&fMuPlusMult,"fMuPlusMult/D");
487 fEventSummaryTree->Branch("fEMinusMult",&fEMinusMult,"fEMinusMult/D");
488 fEventSummaryTree->Branch("fEPlusMult",&fEPlusMult,"fEPlusMult/D");
490 fEventSummaryTree->Branch("fGammaMult", &fGammaMult, "fGammaMult/D");
492 fEventSummaryTree->Branch("fProtonRemovedMult",&fProtonRemovedMult,"fProtonRemovedMult/D");
493 fEventSummaryTree->Branch("fAntiProtonRemovedMult",&fAntiProtonRemovedMult,"fAntiProtonRemovedMult/D");
495 fEventSummaryTree->Branch("fNeutronRemovedMult",&fNeutronRemovedMult,"fNeutronRemovedMult/D");
496 fEventSummaryTree->Branch("fAntiNeutronRemovedMult",&fAntiNeutronRemovedMult,"fAntiNeutronRemovedMult/D");
498 fEventSummaryTree->Branch("fPi0RemovedMult",&fPi0RemovedMult,"fPi0RemovedMult/D");
499 fEventSummaryTree->Branch("fPiPlusRemovedMult",&fPiPlusRemovedMult,"fPiPlusRemovedMult/D");
500 fEventSummaryTree->Branch("fPiMinusRemovedMult",&fPiMinusRemovedMult,"fPiMinusRemovedMult/D");
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");
507 fEventSummaryTree->Branch("fMuMinusRemovedMult",&fMuMinusRemovedMult,"fMuMinusRemovedMult/D");
508 fEventSummaryTree->Branch("fMuPlusRemovedMult",&fMuPlusRemovedMult,"fMuPlusRemovedMult/D");
510 fEventSummaryTree->Branch("fEMinusRemovedMult",&fEMinusRemovedMult,"fEMinusRemovedMult/D");
511 fEventSummaryTree->Branch("fEPlusRemovedMult",&fEPlusRemovedMult,"fEPlusRemovedMult/D");
513 fEventSummaryTree->Branch("fGammaRemovedMult", &fGammaRemovedMult, "fGammaMultRemoved/D");
519 if(fCuts->GetHistMakeTreeDeposit())
521 treename = "fTreeDeposit" + fHistogramNameSuffix;
522 fDepositTree = new TTree(treename, treename);
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");
534 void AliAnalysisEt::FillHistograms()
535 { // fill histograms..
536 fHistEt->Fill(fTotEt);
538 fHistNeutralMult->Fill(fNeutralMultiplicity);
541 if (fCuts->GetHistMakeTree()) {
542 fEventSummaryTree->Fill();
547 if(fCuts->GetHistMakeTreeDeposit())
549 fDepositTree->Fill();
555 Int_t AliAnalysisEt::AnalyseEvent(AliVEvent *event)
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.
557 AliAnalysisEtCommon::AnalyseEvent(event);
558 //fSelector->SetEvent(event);
563 void AliAnalysisEt::ResetEventValues()
565 AliAnalysisEtCommon::ResetEventValues();
570 fTotNeutralEtAcc = 0;
571 fTotChargedEtAcc = 0;
573 fChargedMultiplicity = 0;
574 fNeutralMultiplicity = 0;
599 fProtonRemovedEt = 0;
600 fAntiProtonRemovedEt = 0;
602 fNeutronRemovedEt = 0;
603 fAntiNeutronRemovedEt = 0;
606 fPiPlusRemovedEt = 0;
607 fPiMinusRemovedEt = 0;
610 fKMinusRemovedEt = 0;
614 fMuMinusRemovedEt = 0;
615 fMuPlusRemovedEt = 0;
617 fEMinusRemovedEt = 0;
627 fAntiNeutronMult = 0;
646 fProtonRemovedMult = 0;
647 fAntiProtonRemovedMult = 0;
649 fNeutronRemovedMult = 0;
650 fAntiNeutronRemovedMult = 0;
653 fPiPlusRemovedMult = 0;
654 fPiMinusRemovedMult = 0;
656 fKPlusRemovedMult = 0;
657 fKMinusRemovedMult = 0;
661 fMuMinusRemovedMult = 0;
662 fMuPlusRemovedMult = 0;
664 fEMinusRemovedMult = 0;
665 fEPlusRemovedMult = 0;
667 fGammaRemovedMult = 0;
672 Int_t AliAnalysisEt::ReadCorrections(TString filename)
674 TFile *f = TFile::Open(filename, "READ");
677 TString det = "Phos";
678 if(fHistogramNameSuffix.Contains("Emcal"))
682 cout<<"Histo name suffix "<<fHistogramNameSuffix<<endl;
683 TString name = "TmCorrections" + det;
684 std::cout << name << std::endl;
685 fTmCorrections = dynamic_cast<AliAnalysisEtTrackMatchCorrections*>(f->Get(name));
688 cout<<"No corrections with name "<<name<<endl;
689 Printf("Could not load TM corrections");
692 name = "ReCorrections" + det;
693 fReCorrections = dynamic_cast<AliAnalysisEtRecEffCorrection*>(f->Get(name));
696 Printf("Could not load rec eff corrections");
704 Double_t AliAnalysisEt::CorrectForReconstructionEfficiency(const AliESDCaloCluster& cluster)
707 cluster.GetPosition(pos);
709 Double_t corrEnergy = fReCorrections->CorrectedEnergy(cluster.E());
711 //std::cout << "Original energy: " << cluster.E() << ", corrected energy: " << corrEnergy << std::endl;
712 return TMath::Sin(cp.Theta())*corrEnergy;