]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/totEt/AliAnalysisEt.cxx
Reintroducing previously removed variables
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisEt.cxx
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
10 #include "AliAnalysisEt.h"
11 #include "TMath.h"
12 #include "TList.h"
13 #include "TH1F.h"
14 #include "TH2F.h"
15 #include "TH1I.h" 
16 #include "TTree.h"
17 #include <iostream>
18 #include "AliAnalysisEtCuts.h"
19 #include "AliESDtrackCuts.h"
20 #include "AliESDCaloCluster.h"
21 #include "AliVEvent.h"
22 #include "Rtypes.h"
23 #include "TString.h"
24 #include "AliCentrality.h"
25 #include "AliAnalysisEtSelector.h"
26
27                //#include "THnSparse.h"
28
29 using namespace std;
30 ClassImp(AliAnalysisEt);
31
32 /* Auxiliary Histogram variables */
33 Int_t AliAnalysisEt::fgnumOfEtaBins = 16;
34 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};
35
36 Int_t AliAnalysisEt::fgNumOfPtBins = 111;
37 Float_t AliAnalysisEt::fgPtAxis[117]=
38    {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,
39         0.2, .22, .24, .26, .28, 0.30, 0.32, .34, .36, .38, 0.40, .42, .44, .46, .48,
40         0.5, .52, .54, .56, .58, 0.60, 0.62, .64, .66, .68, 0.70, .72, .74, .76, .78,
41         .80, .82, .84, .86, .88, 0.90, 0.92, .94, .96, .98, 1.00,1.05, 1.1,1.15, 1.2,
42         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,
43         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,
44         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,
45         20.0,25.0,30.0,35.0,40.0, 45.0, 50.0}; 
46
47 Int_t AliAnalysisEt::fgNumOfEBins = 78;
48 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,
49                                                                         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.,
50                                                                         12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.,25.,26.,27.,28.,29.,30.,31.,
51                                                                         32.,33.,34.,35.,36.,37.,38.,39.,40.,41.,42.,43.,44.,45.,46.,47.,48.,49.,50.};
52
53 Int_t AliAnalysisEt::fgNumOfRBins = 47;
54 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,
55                                                                         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};
56
57
58 AliAnalysisEt::AliAnalysisEt() : AliAnalysisEtCommon()
59                                ,fEventSummaryTree(0)
60                                ,fAcceptedTree(0)
61                                ,fDepositTree(0)
62                                ,fTotEt(0)
63                                ,fTotEtAcc(0)
64                                ,fTotNeutralEt(0)
65                                ,fTotNeutralEtAcc(0)
66                                ,fTotChargedEt(0)
67                                ,fTotChargedEtAcc(0)
68                                ,fMultiplicity(0)
69                                ,fChargedMultiplicity(0)
70                                ,fNeutralMultiplicity(0)
71                                ,fProtonEt(0)
72                                ,fAntiProtonEt(0)
73                                ,fNeutronEt(0)
74                                ,fAntiNeutronEt(0)
75                                ,fPi0Et(0)
76                                ,fPiPlusEt(0)
77                                ,fPiMinusEt(0)
78                                ,fKPlusEt(0)
79                                ,fKMinusEt(0)
80                                ,fK0sEt(0)
81                                ,fK0lEt(0)
82                                ,fMuMinusEt(0)
83                                ,fMuPlusEt(0)
84                                ,fEMinusEt(0)
85                                ,fEPlusEt(0)
86                                ,fGammaEt(0)
87                                ,fProtonRemovedEt(0)
88                                ,fAntiProtonRemovedEt(0)
89                                ,fNeutronRemovedEt(0)
90                                ,fAntiNeutronRemovedEt(0)
91                                ,fPi0RemovedEt(0)
92                                ,fPiPlusRemovedEt(0)
93                                ,fPiMinusRemovedEt(0)
94                                ,fKPlusRemovedEt(0)
95                                ,fKMinusRemovedEt(0)
96                                ,fK0sRemovedEt(0)
97                                ,fK0lRemovedEt(0)
98                                ,fMuMinusRemovedEt(0)
99                                ,fMuPlusRemovedEt(0)
100                                ,fEMinusRemovedEt(0)
101                                ,fEPlusRemovedEt(0)
102                                ,fGammaRemovedEt(0)
103                                ,fProtonMult(0)
104                                ,fAntiProtonMult(0)
105                                ,fNeutronMult(0)
106                                ,fAntiNeutronMult(0)
107                                ,fPi0Mult(0)
108                                ,fPiPlusMult(0)
109                                ,fPiMinusMult(0)
110                                ,fKPlusMult(0)
111                                ,fKMinusMult(0)
112                                ,fK0sMult(0)
113                                ,fK0lMult(0)
114                                ,fMuMinusMult(0)
115                                ,fMuPlusMult(0)
116                                ,fEMinusMult(0)
117                                ,fEPlusMult(0)
118                                ,fGammaMult(0)
119                                ,fProtonRemovedMult(0)
120                                ,fAntiProtonRemovedMult(0)
121                                ,fNeutronRemovedMult(0)
122                                ,fAntiNeutronRemovedMult(0)
123                                ,fPi0RemovedMult(0)
124                                ,fPiPlusRemovedMult(0)
125                                ,fPiMinusRemovedMult(0)
126                                ,fKPlusRemovedMult(0)
127                                ,fKMinusRemovedMult(0)
128                                ,fK0sRemovedMult(0)
129                                ,fK0lRemovedMult(0)
130                                ,fMuMinusRemovedMult(0)
131                                ,fMuPlusRemovedMult(0)
132                                ,fEMinusRemovedMult(0)
133                                ,fEPlusRemovedMult(0)
134                                ,fGammaRemovedMult(0)
135                                ,fEnergyDeposited(0)
136                                ,fMomentumTPC(0)
137                                ,fCharge(0)
138                                ,fParticlePid(0)
139                                ,fPidProb(0)
140                                ,fTrackPassedCut(kFALSE)
141                                ,fCentClass(0)
142                                ,fDetectorRadius(0)
143                                ,fSingleCellEnergyCut(0)
144                                ,fChargedEnergyRemoved(0)
145                                ,fNeutralEnergyRemoved(0)
146                                ,fGammaEnergyAdded(0)
147                                ,fHistEt(0)
148                                ,fHistNeutralMult(0)
149                                ,fHistPhivsPtPos(0)
150                                ,fHistPhivsPtNeg(0)
151                                ,fCentrality(0)
152                                ,fMakeSparse(kFALSE)
153                                ,fCutFlow(0)
154                                ,fSelector(0)
155                
156 {}
157
158 AliAnalysisEt::~AliAnalysisEt()
159 {//Destructor
160   if(fDepositTree){
161     fDepositTree->Clear();
162     delete fDepositTree; // optional TTree
163   }
164   if(fEventSummaryTree)
165   {
166     fEventSummaryTree->Clear();
167     delete fEventSummaryTree;
168   }
169   if(fAcceptedTree)
170   {
171     fAcceptedTree->Clear();
172     delete fAcceptedTree;
173   }
174   delete fHistEt; //Et spectrum
175   delete fHistNeutralMult; //Neutral multiplicity
176   delete fHistPhivsPtPos; //phi vs pT plot for positive tracks
177   delete fHistPhivsPtNeg; //phi vs pT Moplot for negative tracks
178   //delete fCentrality;//this code does not actually own AliCentrality so we don't have to worry about deleting it...  we just borrow it...
179   delete fCutFlow;
180   delete fSelector;
181 }
182
183 void AliAnalysisEt::FillOutputList(TList *list)
184 { // histograms to be added to output
185     list->Add(fHistEt);
186     list->Add(fHistNeutralMult);
187
188     list->Add(fHistPhivsPtPos);
189     list->Add(fHistPhivsPtNeg);
190
191     if (fCuts) {
192       if (fCuts->GetHistMakeTree()) {
193         //list->Add(fTree);
194         list->Add(fEventSummaryTree);
195       }
196       if (fCuts->GetHistMakeTreeDeposit()) {
197         list->Add(fDepositTree);
198       }
199     }
200     
201     list->Add(fCutFlow);
202
203 }
204
205 void AliAnalysisEt::Init()
206 {// clear variables, set up cuts and PDG info
207   AliAnalysisEtCommon::Init();
208   ResetEventValues();
209 }
210
211 void AliAnalysisEt::CreateHistograms()
212 { // create histograms..
213   // histogram binning for E_T, p_T and Multiplicity: defaults for p+p
214   Int_t nbinsEt = 10000;
215   Double_t minEt = 0.0;
216   Double_t maxEt = 1000;
217   Int_t nbinsPt = 200;
218   Double_t minPt = 0;
219   Double_t maxPt = 20;
220   Int_t nbinsMult = 200;
221   Double_t minMult = -0.5; // offset -0.5 to have integer bins centered around 0
222   Double_t maxMult = nbinsMult + minMult; // 1 bin per integer value
223
224   // see if we should change histogram limits etc, and possibly create a tree
225   if (fCuts) {
226     if (fCuts->GetHistMakeTree()) {
227       CreateTrees();
228     }
229
230     nbinsMult = fCuts->GetHistNbinsMult();
231     minMult = fCuts->GetHistMinMult();
232     maxMult = fCuts->GetHistMaxMult();
233
234     nbinsEt = fCuts->GetHistNbinsTotEt();
235     minEt = fCuts->GetHistMinTotEt();
236     maxEt = fCuts->GetHistMaxTotEt();
237
238     nbinsPt = fCuts->GetHistNbinsParticlePt();
239     minPt = fCuts->GetHistMinParticlePt();
240     maxPt = fCuts->GetHistMaxParticlePt();
241   }
242
243     TString histname = "fHistEt" + fHistogramNameSuffix;
244     fHistEt = new TH1F(histname.Data(), "Total E_{T} Distribution", nbinsEt, minEt, maxEt);
245     fHistEt->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})");
246     fHistEt->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)");
247
248     histname = "fHistNeutralMult" + fHistogramNameSuffix;
249     fHistNeutralMult = new TH1F(histname.Data(), "Neutral Multiplicity", nbinsMult, minMult, maxMult);
250     fHistNeutralMult->GetXaxis()->SetTitle("N");
251     fHistNeutralMult->GetYaxis()->SetTitle("Multiplicity");
252
253     histname = "fHistPhivsPtPos" + fHistogramNameSuffix;
254     fHistPhivsPtPos = new TH2F(histname.Data(), "Phi vs pT of positively charged tracks hitting the calorimeter",       200, 0, 2*TMath::Pi(), nbinsPt, minPt, maxPt);
255
256     histname = "fHistPhivsPtNeg" + fHistogramNameSuffix;
257     fHistPhivsPtNeg = new TH2F(histname.Data(), "Phi vs pT of negatively charged tracks hitting the calorimeter",       200, 0, 2*TMath::Pi(), nbinsPt, minPt, maxPt);
258
259     histname = "fCutFlow" + fHistogramNameSuffix;
260     fCutFlow = new TH1I(histname, histname, 20, -0.5, 19.5);
261 }
262
263 TH2F* AliAnalysisEt::CreateEtaEHisto2D(TString name, TString title, TString ztitle)
264 {     //creates a 2-d histogram in eta and E and adds it to the list of histograms to be saved
265         TString histoname   = name + fHistogramNameSuffix;
266         
267         TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfEBins, fgEAxis, fgnumOfEtaBins, fgEtaAxis);
268         histo->SetYTitle("#eta");
269         histo->SetXTitle("E (GeV)");
270         histo->SetZTitle(ztitle.Data());
271         histo->Sumw2();
272         
273         return histo; 
274 }
275
276
277 TH2F* AliAnalysisEt::CreateEtaPtHisto2D(TString name, TString title, TString ztitle)
278 {     //creates a 2-d histogram in eta and phi and adds it to the list of histograms to be saved
279         TString histoname   = name + fHistogramNameSuffix;
280         
281         TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfPtBins, fgPtAxis, fgnumOfEtaBins, fgEtaAxis);
282         histo->SetYTitle("#eta");
283         histo->SetXTitle("p_{T}");
284         histo->SetZTitle(ztitle.Data());
285         histo->Sumw2();
286         
287         return histo; 
288 }
289
290 TH2F* AliAnalysisEt::CreateEtaEtHisto2D(TString name, TString title, TString ztitle)
291 {     //creates a 2-d histogram in eta and phi and adds it to the list of histograms to be saved
292         TString histoname   = name + fHistogramNameSuffix;
293         
294         TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfEBins, fgEAxis, fgnumOfEtaBins, fgEtaAxis);
295         histo->SetYTitle("#eta");
296         histo->SetXTitle("E_{T}");
297         histo->SetZTitle(ztitle.Data());
298         histo->Sumw2();
299         
300         return histo; 
301 }
302
303 TH2F* AliAnalysisEt::CreateResEHisto2D(TString name, TString title, TString ztitle)
304 {     //creates a 2-d histogram in eta and E and adds it to the list of histograms to be saved
305         TString histoname   = name + fHistogramNameSuffix;
306         
307         TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfEBins, fgEAxis, fgNumOfRBins, fgRAxis);
308         histo->SetYTitle("R");
309         histo->SetXTitle("E (GeV)");
310         histo->SetZTitle(ztitle.Data());
311         histo->Sumw2();
312         
313         return histo; 
314 }
315
316
317 TH2F* AliAnalysisEt::CreateResPtHisto2D(TString name, TString title, TString ztitle)
318 {     //creates a 2-d histogram in eta and phi and adds it to the list of histograms to be saved
319         TString histoname   = name + fHistogramNameSuffix;
320         
321         TH2F *histo = new TH2F(histoname.Data(),title.Data(),fgNumOfPtBins, fgPtAxis, fgNumOfRBins, fgRAxis);
322         histo->SetYTitle("R");
323         histo->SetXTitle("p_{T}");
324         histo->SetZTitle(ztitle.Data());
325         histo->Sumw2();
326         
327         return histo; 
328 }
329
330 THnSparseF* AliAnalysisEt::CreateClusterHistoSparse(TString name, TString title)
331 {     //creates a 2D sparse histogram
332         TString histoname   = name + fHistogramNameSuffix;
333         
334         Int_t nBins[4] = {200,200,240,20};
335         Double_t min[4] = {0.,-1.,70.,0.5};
336         Double_t max[4] = {50.,1.,190,20.5};
337         
338         THnSparseF *histo = new THnSparseF(histoname.Data(),title.Data(),4,nBins,min, max);
339     histo->GetAxis(0)->SetTitle("E");
340     histo->GetAxis(1)->SetTitle("#eta_{cluster}");
341     histo->GetAxis(2)->SetTitle("#phi_{cluster}");
342     histo->GetAxis(3)->SetTitle("n_{cells}");
343         histo->Sumw2();
344         
345         return histo; 
346 }
347
348 THnSparseF* AliAnalysisEt::CreateNeutralPartHistoSparse(TString name, TString title)
349 {     //creates a sparse neutral particle histogram
350         TString histoname   = name + fHistogramNameSuffix;
351         
352         Int_t nBins[6] = {20,200,200,200,240,20};
353         Double_t min[6] = {-1.,0.,0.,-1.,70.,0.5};
354         Double_t max[6] = {1.,50.,50.,1.,190,20.5};
355         
356         THnSparseF *histo = new THnSparseF(histoname.Data(),title.Data(),6,nBins,min, max);
357     histo->GetAxis(0)->SetTitle("#eta");
358     histo->GetAxis(1)->SetTitle("p_{T}");
359     histo->GetAxis(2)->SetTitle("E");
360     histo->GetAxis(3)->SetTitle("#eta_{cluster}");
361     histo->GetAxis(4)->SetTitle("#phi_{cluster}");
362     histo->GetAxis(5)->SetTitle("n_{cells}");
363         histo->Sumw2();
364         
365         return histo; 
366 }
367
368 THnSparseF* AliAnalysisEt::CreateChargedPartHistoSparse(TString name, TString title)
369 {     //creates a sparse charged particle histogram
370         TString histoname   = name + fHistogramNameSuffix;
371         
372         Int_t nBins[7] = {20,200,200,200,240,20,100};
373         Double_t min[7] = {-1.,0.,0.,-1.,70.,0.5,0.};
374         Double_t max[7] = {1.,50.,50.,1.,190,20.5,0.1};
375         
376         THnSparseF *histo = new THnSparseF(histoname.Data(),title.Data(),7,nBins,min, max);
377     histo->GetAxis(0)->SetTitle("#eta");
378     histo->GetAxis(1)->SetTitle("p_{T}");
379     histo->GetAxis(2)->SetTitle("E");
380     histo->GetAxis(3)->SetTitle("#eta_{cluster}");
381     histo->GetAxis(4)->SetTitle("#phi_{cluster}");
382     histo->GetAxis(5)->SetTitle("n_{cells}");
383     histo->GetAxis(6)->SetTitle("R_{match}");
384         histo->Sumw2();
385         
386         return histo; 
387 }
388
389
390 void AliAnalysisEt::CreateTrees()
391 { // create tree..
392   TString treename = "fEventSummaryTree" + fHistogramNameSuffix;
393   if(fCuts->GetHistMakeTree())
394   {
395   
396     fEventSummaryTree = new TTree(treename, treename);
397     fEventSummaryTree->Branch("fTotEt",&fTotEt,"fTotEt/D");
398     fEventSummaryTree->Branch("fTotEtAcc",&fTotEtAcc,"fTotEtAcc/D");
399     fEventSummaryTree->Branch("fTotNeutralEt",&fTotNeutralEt,"fTotNeutralEt/D");
400     fEventSummaryTree->Branch("fTotNeutralEtAcc",&fTotNeutralEtAcc,"fTotNeutralEtAcc/D");
401     fEventSummaryTree->Branch("fTotChargedEt",&fTotChargedEt,"fTotChargedEt/D");
402     fEventSummaryTree->Branch("fTotChargedEtAcc",&fTotChargedEtAcc,"fTotChargedEtAcc/D");
403     fEventSummaryTree->Branch("fMultiplicity",&fMultiplicity,"fMultiplicity/I");
404     fEventSummaryTree->Branch("fChargedMultiplicity",&fChargedMultiplicity,"fChargedMultiplicity/I");
405     fEventSummaryTree->Branch("fNeutralMultiplicity",&fNeutralMultiplicity,"fNeutralMultiplicity/I");
406     fEventSummaryTree->Branch("fCentClass",&fCentClass,"fCentClass/I");
407     fEventSummaryTree->Branch("fChargedEnergyRemoved", &fChargedEnergyRemoved, "fChargedEnergyRemoved/D");
408     fEventSummaryTree->Branch("fNeutralEnergyRemoved", &fNeutralEnergyRemoved, "fNeutralEnergyRemoved/D");
409     fEventSummaryTree->Branch("fGammaEnergyAdded", &fGammaEnergyAdded, "fGammaEnergyAdded/D");
410     
411
412     fEventSummaryTree->Branch("fProtonEt",&fProtonEt,"fProtonEt/D");
413     fEventSummaryTree->Branch("fAntiProtonEt",&fAntiProtonEt,"fAntiProtonEt/D");
414
415     fEventSummaryTree->Branch("fNeutronEt",&fNeutronEt,"fNeutronEt/D");
416     fEventSummaryTree->Branch("fAntiNeutronEt",&fAntiNeutronEt,"fAntiNeutronEt/D");
417
418     fEventSummaryTree->Branch("fPi0Et",&fPi0Et,"fPi0Et/D");
419     fEventSummaryTree->Branch("fPiPlusEt",&fPiPlusEt,"fPiPlusEt/D");
420     fEventSummaryTree->Branch("fPiMinusEt",&fPiMinusEt,"fPiMinusEt/D");
421
422     fEventSummaryTree->Branch("fKPlusEt",&fKPlusEt,"fKPlusEt/D");
423     fEventSummaryTree->Branch("fKMinusEt",&fKMinusEt,"fKMinusEt/D");
424     fEventSummaryTree->Branch("fK0sEt",&fK0sEt,"fK0sEt/D");
425     fEventSummaryTree->Branch("fK0lEt",&fK0lEt,"fK0lEt/D");
426
427     fEventSummaryTree->Branch("fMuMinusEt",&fMuMinusEt,"fMuMinusEt/D");
428     fEventSummaryTree->Branch("fMuPlusEt",&fMuPlusEt,"fMuPlusEt/D");
429     
430     fEventSummaryTree->Branch("fEMinusEt",&fEMinusEt,"fEMinusEt/D");
431     fEventSummaryTree->Branch("fEPlusEt",&fEPlusEt,"fEPlusEt/D");
432     
433     fEventSummaryTree->Branch("fGammaEt", &fGammaEt, "fGammaEt/D");
434     
435     fEventSummaryTree->Branch("fProtonRemovedEt",&fProtonRemovedEt,"fProtonRemovedEt/D");
436     fEventSummaryTree->Branch("fAntiProtonRemovedEt",&fAntiProtonRemovedEt,"fAntiProtonRemovedEt/D");
437
438     fEventSummaryTree->Branch("fNeutronRemovedEt",&fNeutronRemovedEt,"fNeutronRemovedEt/D");
439     fEventSummaryTree->Branch("fAntiNeutronRemovedEt",&fAntiNeutronRemovedEt,"fAntiNeutronRemovedEt/D");
440
441     fEventSummaryTree->Branch("fPi0RemovedEt",&fPi0RemovedEt,"fPi0RemovedEt/D");
442     fEventSummaryTree->Branch("fPiPlusRemovedEt",&fPiPlusRemovedEt,"fPiPlusRemovedEt/D");
443     fEventSummaryTree->Branch("fPiMinusRemovedEt",&fPiMinusRemovedEt,"fPiMinusRemovedEt/D");
444
445     fEventSummaryTree->Branch("fKPlusRemovedEt",&fKPlusRemovedEt,"fKPlusRemovedEt/D");
446     fEventSummaryTree->Branch("fKMinusRemovedEt",&fKMinusEt,"fKMinusRemovedEt/D");
447     fEventSummaryTree->Branch("fK0sRemovedEt",&fK0sEt,"fK0sRemovedEt/D");
448     fEventSummaryTree->Branch("fK0lRemovedEt",&fK0lRemovedEt,"fK0lRemovedEt/D");
449
450     fEventSummaryTree->Branch("fMuMinusRemovedEt",&fMuMinusRemovedEt,"fMuMinusRemovedEt/D");
451     fEventSummaryTree->Branch("fMuPlusRemovedEt",&fMuPlusRemovedEt,"fMuPlusRemovedEt/D");
452     
453     fEventSummaryTree->Branch("fEMinusRemovedEt",&fEMinusRemovedEt,"fEMinusRemovedEt/D");
454     fEventSummaryTree->Branch("fEPlusRemovedEt",&fEPlusRemovedEt,"fEPlusRemovedEt/D");
455     
456     fEventSummaryTree->Branch("fGammaRemovedEt", &fGammaRemovedEt, "fGammaEtRemoved/D");
457
458     fEventSummaryTree->Branch("fProtonMult",&fProtonMult,"fProtonMult/D");
459     fEventSummaryTree->Branch("fAntiProtonMult",&fAntiProtonMult,"fAntiProtonMult/D");
460
461     fEventSummaryTree->Branch("fNeutronMult",&fNeutronMult,"fNeutronMult/D");
462     fEventSummaryTree->Branch("fAntiNeutronMult",&fAntiNeutronMult,"fAntiNeutronMult/D");
463
464     fEventSummaryTree->Branch("fPi0Mult",&fPi0Mult,"fPi0Mult/D");
465     fEventSummaryTree->Branch("fPiPlusMult",&fPiPlusMult,"fPiPlusMult/D");
466     fEventSummaryTree->Branch("fPiMinusMult",&fPiMinusMult,"fPiMinusMult/D");
467
468     fEventSummaryTree->Branch("fKPlusMult",&fKPlusMult,"fKPlusMult/D");
469     fEventSummaryTree->Branch("fKMinusMult",&fKMinusMult,"fKMinusMult/D");
470     fEventSummaryTree->Branch("fK0sMult",&fK0sMult,"fK0sMult/D");
471     fEventSummaryTree->Branch("fK0lMult",&fK0lMult,"fK0lMult/D");
472
473     fEventSummaryTree->Branch("fMuMinusMult",&fMuMinusMult,"fMuMinusMult/D");
474     fEventSummaryTree->Branch("fMuPlusMult",&fMuPlusMult,"fMuPlusMult/D");
475     
476     fEventSummaryTree->Branch("fEMinusMult",&fEMinusMult,"fEMinusMult/D");
477     fEventSummaryTree->Branch("fEPlusMult",&fEPlusMult,"fEPlusMult/D");
478     
479     fEventSummaryTree->Branch("fGammaMult", &fGammaMult, "fGammaMult/D");
480     
481     fEventSummaryTree->Branch("fProtonRemovedMult",&fProtonRemovedMult,"fProtonRemovedMult/D");
482     fEventSummaryTree->Branch("fAntiProtonRemovedMult",&fAntiProtonRemovedMult,"fAntiProtonRemovedMult/D");
483
484     fEventSummaryTree->Branch("fNeutronRemovedMult",&fNeutronRemovedMult,"fNeutronRemovedMult/D");
485     fEventSummaryTree->Branch("fAntiNeutronRemovedMult",&fAntiNeutronRemovedMult,"fAntiNeutronRemovedMult/D");
486
487     fEventSummaryTree->Branch("fPi0RemovedMult",&fPi0RemovedMult,"fPi0RemovedMult/D");
488     fEventSummaryTree->Branch("fPiPlusRemovedMult",&fPiPlusRemovedMult,"fPiPlusRemovedMult/D");
489     fEventSummaryTree->Branch("fPiMinusRemovedMult",&fPiMinusRemovedMult,"fPiMinusRemovedMult/D");
490
491     fEventSummaryTree->Branch("fKPlusRemovedMult",&fKPlusRemovedMult,"fKPlusRemovedMult/D");
492     fEventSummaryTree->Branch("fKMinusRemovedMult",&fKMinusMult,"fKMinusRemovedMult/D");
493     fEventSummaryTree->Branch("fK0sRemovedMult",&fK0sMult,"fK0sRemovedMult/D");
494     fEventSummaryTree->Branch("fK0lRemovedMult",&fK0lRemovedMult,"fK0lRemovedMult/D");
495
496     fEventSummaryTree->Branch("fMuMinusRemovedMult",&fMuMinusRemovedMult,"fMuMinusRemovedMult/D");
497     fEventSummaryTree->Branch("fMuPlusRemovedMult",&fMuPlusRemovedMult,"fMuPlusRemovedMult/D");
498     
499     fEventSummaryTree->Branch("fEMinusRemovedMult",&fEMinusRemovedMult,"fEMinusRemovedMult/D");
500     fEventSummaryTree->Branch("fEPlusRemovedMult",&fEPlusRemovedMult,"fEPlusRemovedMult/D");
501     
502     fEventSummaryTree->Branch("fGammaRemovedMult", &fGammaRemovedMult, "fGammaMultRemoved/D");
503
504     
505     
506   }
507   
508   if(fCuts->GetHistMakeTreeDeposit())
509   {
510     treename = "fTreeDeposit" + fHistogramNameSuffix;
511     fDepositTree = new TTree(treename, treename);
512   
513     fDepositTree->Branch("fEnergyDeposited", &fEnergyDeposited, "fEnergyDeposited/F");
514     fDepositTree->Branch("fMomentumTPC", &fMomentumTPC, "fMomentumTPC/F");
515     fDepositTree->Branch("fCharge", &fCharge, "fCharge/S");
516     fDepositTree->Branch("fParticlePid", &fParticlePid, "fParticlePid/S");
517     fDepositTree->Branch("fPidProb", &fPidProb, "fPidProb/F");
518     fDepositTree->Branch("fTrackPassedCut", &fTrackPassedCut, "fTrackPassedCut/B");
519   }
520
521   return;
522 }
523 void AliAnalysisEt::FillHistograms()
524 { // fill histograms..
525     fHistEt->Fill(fTotEt);
526
527     fHistNeutralMult->Fill(fNeutralMultiplicity);
528
529     if (fCuts) {
530       if (fCuts->GetHistMakeTree()) {
531         fEventSummaryTree->Fill();
532       }
533     }
534     if(fCuts)
535     {
536       if(fCuts->GetHistMakeTreeDeposit())
537       {
538         fDepositTree->Fill();
539       }
540     }
541       
542 }
543
544 Int_t AliAnalysisEt::AnalyseEvent(AliVEvent *event)
545 { //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.
546   AliAnalysisEtCommon::AnalyseEvent(event);
547   //fSelector->SetEvent(event);
548   ResetEventValues();
549   return 0;
550 }
551
552 void AliAnalysisEt::ResetEventValues()
553 { // clear
554   AliAnalysisEtCommon::ResetEventValues();
555   fTotEt = 0;
556   fTotEtAcc = 0;
557   fTotNeutralEt = 0;
558   fTotChargedEt = 0;
559   fTotNeutralEtAcc = 0;
560   fTotChargedEtAcc  = 0;
561   fMultiplicity = 0;
562   fChargedMultiplicity = 0;
563   fNeutralMultiplicity = 0;
564   
565   fProtonEt = 0;
566   fAntiProtonEt = 0;
567   
568   fNeutronEt = 0;
569   fAntiNeutronEt = 0;
570   
571   fPi0Et = 0;
572   fPiPlusEt = 0;
573   fPiMinusEt = 0;
574   
575   fKPlusEt = 0;
576   fKMinusEt = 0;
577   fK0sEt = 0;
578   fK0lEt = 0;
579   
580   fMuMinusEt = 0;
581   fMuPlusEt = 0;
582   
583   fEMinusEt = 0;
584   fEPlusEt = 0;
585   
586   fGammaEt = 0;
587   
588   fProtonRemovedEt = 0;
589   fAntiProtonRemovedEt = 0;
590   
591   fNeutronRemovedEt = 0;
592   fAntiNeutronRemovedEt = 0;
593   
594   fPi0RemovedEt = 0;
595   fPiPlusRemovedEt = 0;
596   fPiMinusRemovedEt = 0;
597   
598   fKPlusRemovedEt = 0;
599   fKMinusRemovedEt = 0;
600   fK0sRemovedEt = 0;
601   fK0lRemovedEt = 0;
602   
603   fMuMinusRemovedEt = 0;
604   fMuPlusRemovedEt = 0;
605   
606   fEMinusRemovedEt = 0;
607   fEPlusRemovedEt = 0;
608   
609   fGammaRemovedEt = 0;
610   
611   
612   fProtonMult = 0;
613   fAntiProtonMult = 0;
614   
615   fNeutronMult = 0;
616   fAntiNeutronMult = 0;
617   
618   fPi0Mult = 0;
619   fPiPlusMult = 0;
620   fPiMinusMult = 0;
621   
622   fKPlusMult = 0;
623   fKMinusMult = 0;
624   fK0sMult = 0;
625   fK0lMult = 0;
626   
627   fMuMinusMult = 0;
628   fMuPlusMult = 0;
629   
630   fEMinusMult = 0;
631   fEPlusMult = 0;
632   
633   fGammaMult = 0;
634   
635   fProtonRemovedMult = 0;
636   fAntiProtonRemovedMult = 0;
637   
638   fNeutronRemovedMult = 0;
639   fAntiNeutronRemovedMult = 0;
640   
641   fPi0RemovedMult = 0;
642   fPiPlusRemovedMult = 0;
643   fPiMinusRemovedMult = 0;
644   
645   fKPlusRemovedMult = 0;
646   fKMinusRemovedMult = 0;
647   fK0sRemovedMult = 0;
648   fK0lRemovedMult = 0;
649   
650   fMuMinusRemovedMult = 0;
651   fMuPlusRemovedMult = 0;
652   
653   fEMinusRemovedMult = 0;
654   fEPlusRemovedMult = 0;
655   
656   fGammaRemovedMult = 0;
657   
658   return;
659 }
660
661 Double_t AliAnalysisEt::CalculateTransverseEnergy(AliESDCaloCluster* cluster)
662 { // based on cluster energy and cluster pos
663   
664   Float_t pos[3];
665   cluster->GetPosition(pos);
666   TVector3 cp(pos);
667   Double_t corrEnergy = 0;
668   
669   if(cluster->E() < 1.5)
670   {
671     corrEnergy =cluster->E()/(0.51 + 0.02*cluster->E());
672   }    
673   else
674   {
675     corrEnergy =cluster->E()/(0.51 + 0.02*1.5);
676   }
677   //std::cout << "Original energy: " << cluster->E() << ", corrected energy: " << corrEnergy << std::endl;
678   
679   return corrEnergy * TMath::Sin(cp.Theta());
680 }
681