]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/totEt/AliAnalysisEt.cxx
AliFlowEventSimple.cxx: in Get2QSub() use the center of the phi bins in the Q vector...
[u/mrichter/AliRoot.git] / PWG4 / 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"
15#include <iostream>
16#include "AliAnalysisEtCuts.h"
641e1e0c 17#include "AliVEvent.h"
cf6522d1 18#include "TDatabasePDG.h"
19#include "Rtypes.h"
641e1e0c 20
21using namespace std;
2fbf38ac 22ClassImp(AliAnalysisEt);
23
24
25AliAnalysisEt::AliAnalysisEt() :
26 fHistogramNameSuffix("")
4998becf 27 ,fCuts(0)
2fbf38ac 28 ,fPdgDB(0)
8985c506 29 ,fPiPlusCode(0)
30 ,fPiMinusCode(0)
31 ,fKPlusCode(0)
32 ,fKMinusCode(0)
33 ,fProtonCode(0)
34 ,fAntiProtonCode(0)
35 ,fLambdaCode(0)
36 ,fAntiLambdaCode(0)
37 ,fK0SCode(0)
38 ,fOmegaCode(0)
39 ,fAntiOmegaCode(0)
40 ,fXi0Code(0)
41 ,fAntiXi0Code(0)
42 ,fXiCode(0)
43 ,fAntiXiCode(0)
44 ,fSigmaCode(0)
45 ,fAntiSigmaCode(0)
46 ,fK0LCode(0)
47 ,fNeutronCode(0)
48 ,fAntiNeutronCode(0)
49 ,fEPlusCode(0)
50 ,fEMinusCode(0)
51 ,fPionMass(0)
2fbf38ac 52 ,fSumEt(0)
53 ,fSumEtAcc(0)
54 ,fTotEt(0)
55 ,fTotEtAcc(0)
56 ,fTotNeutralEt(0)
57 ,fTotNeutralEtAcc(0)
58 ,fTotChargedEt(0)
59 ,fTotChargedEtAcc(0)
60 ,fMultiplicity(0)
61 ,fChargedMultiplicity(0)
62 ,fNeutralMultiplicity(0)
4998becf 63 ,fEtaCutAcc(0)
64 ,fPhiCutAccMin(0)
65 ,fPhiCutAccMax(0)
66 ,fDetectorRadius(0)
67 ,fClusterEnergyCut(0)
68 ,fSingleCellEnergyCut(0)
2fbf38ac 69 ,fHistEt(0)
70 ,fHistChargedEt(0)
71 ,fHistNeutralEt(0)
72 ,fHistEtAcc(0)
73 ,fHistChargedEtAcc(0)
74 ,fHistNeutralEtAcc(0)
75 ,fHistMult(0)
76 ,fHistChargedMult(0)
77 ,fHistNeutralMult(0)
78 ,fHistPhivsPtPos(0)
79 ,fHistPhivsPtNeg(0)
80 ,fHistBaryonEt(0)
81 ,fHistAntiBaryonEt(0)
82 ,fHistMesonEt(0)
83 ,fHistBaryonEtAcc(0)
84 ,fHistAntiBaryonEtAcc(0)
85 ,fHistMesonEtAcc(0)
2fbf38ac 86 ,fHistTMDeltaR(0)
87{
88
89}
90
91AliAnalysisEt::~AliAnalysisEt()
92{
93
94}
95
96void AliAnalysisEt::FillOutputList(TList *list)
cf6522d1 97{ // histograms to be added to output
2fbf38ac 98 list->Add(fHistEt);
99 list->Add(fHistChargedEt);
100 list->Add(fHistNeutralEt);
101
102 list->Add(fHistEtAcc);
103 list->Add(fHistChargedEtAcc);
104 list->Add(fHistNeutralEtAcc);
105
106 list->Add(fHistMult);
107 list->Add(fHistChargedMult);
108 list->Add(fHistNeutralMult);
109
110 list->Add(fHistPhivsPtPos);
111 list->Add(fHistPhivsPtNeg);
112
113 list->Add(fHistBaryonEt);
114 list->Add(fHistAntiBaryonEt);
115 list->Add(fHistMesonEt);
116
117 list->Add(fHistBaryonEtAcc);
118 list->Add(fHistAntiBaryonEtAcc);
119 list->Add(fHistMesonEtAcc);
120
2fbf38ac 121 list->Add(fHistTMDeltaR);
122}
123
124void AliAnalysisEt::Init()
cf6522d1 125{// set up cuts and PDG info
4998becf 126 if (!fCuts) fCuts = new AliAnalysisEtCuts();
641e1e0c 127
128 if(!fPdgDB) fPdgDB = new TDatabasePDG();
99a6613d 129 SetParticleCodes();
2fbf38ac 130}
131
132void AliAnalysisEt::CreateHistograms()
cf6522d1 133{ // create histograms..
13b0d3c1 134 // histogram binning for E_T, p_T and Multiplicity: defaults for p+p
135 Int_t nbinsEt = 1000;
136 Double_t minEt = 0.0001;
137 Double_t maxEt = 100;
138 Int_t nbinsPt = 200;
139 Double_t minPt = 0;
140 Double_t maxPt = 20;
141 Int_t nbinsMult = 200;
142 Double_t minMult = -0.5; // offset -0.5 to have integer bins centered around 0
143 Double_t maxMult = nbinsMult + minMult; // 1 bin per integer value
2fbf38ac 144
145 TString histname = "fHistEt" + fHistogramNameSuffix;
13b0d3c1 146 fHistEt = new TH1F(histname.Data(), "Total E_{T} Distribution", nbinsEt, minEt, maxEt);
2fbf38ac 147 fHistEt->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})");
148 fHistEt->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)");
149
150 histname = "fHistChargedEt" + fHistogramNameSuffix;
13b0d3c1 151 fHistChargedEt = new TH1F(histname.Data(), "Total Charged E_{T} Distribution", nbinsEt, minEt, maxEt);
2fbf38ac 152 fHistChargedEt->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})");
153 fHistChargedEt->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)");
154
155 histname = "fHistNeutralEt" + fHistogramNameSuffix;
13b0d3c1 156 fHistNeutralEt = new TH1F(histname.Data(), "Total Neutral E_{T} Distribution", nbinsEt, minEt, maxEt);
2fbf38ac 157 fHistNeutralEt->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})");
158 fHistNeutralEt->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)");
159
160 histname = "fHistEtAcc" + fHistogramNameSuffix;
13b0d3c1 161 fHistEtAcc = new TH1F(histname.Data(), "Total E_{T} Distribution in Acceptance", nbinsEt, minEt, maxEt);
2fbf38ac 162 fHistEtAcc->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})");
163 fHistEtAcc->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)");
164
165 histname = "fHistChargedEtAcc" + fHistogramNameSuffix;
13b0d3c1 166 fHistChargedEtAcc = new TH1F(histname.Data(), "Total Charged E_{T} Distribution in Acceptance", nbinsEt, minEt, maxEt);
2fbf38ac 167 fHistChargedEtAcc->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})");
168 fHistChargedEtAcc->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)");
169
170 histname = "fHistNeutralEtAcc" + fHistogramNameSuffix;
13b0d3c1 171 fHistNeutralEtAcc = new TH1F(histname.Data(), "Total Neutral E_{T} Distribution in Acceptance", nbinsEt, minEt, maxEt);
2fbf38ac 172 fHistNeutralEtAcc->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})");
173 fHistNeutralEtAcc->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)");
174 std::cout << histname << std::endl;
175 histname = "fHistMult" + fHistogramNameSuffix;
13b0d3c1 176 fHistMult = new TH1F(histname.Data(), "Total Multiplicity", nbinsMult, minMult, maxMult);
2fbf38ac 177 fHistMult->GetXaxis()->SetTitle("N");
178 fHistMult->GetYaxis()->SetTitle("Multiplicity");
179
180 histname = "fHistChargedMult" + fHistogramNameSuffix;
13b0d3c1 181 fHistChargedMult = new TH1F(histname.Data(), "Charged Multiplicity", nbinsMult, minMult, maxMult);
2fbf38ac 182 fHistChargedMult->GetXaxis()->SetTitle("N");
183 fHistChargedMult->GetYaxis()->SetTitle("Multiplicity");
184
185 histname = "fHistNeutralMult" + fHistogramNameSuffix;
13b0d3c1 186 fHistNeutralMult = new TH1F(histname.Data(), "Neutral Multiplicity", nbinsMult, minMult, maxMult);
2fbf38ac 187 fHistNeutralMult->GetXaxis()->SetTitle("N");
188 fHistNeutralMult->GetYaxis()->SetTitle("Multiplicity");
189
190 histname = "fHistPhivsPtPos" + fHistogramNameSuffix;
13b0d3c1 191 fHistPhivsPtPos = new TH2F(histname.Data(), "Phi vs pT of positively charged tracks hitting the calorimeter", 200, 0, 2*TMath::Pi(), nbinsPt, minPt, maxPt);
2fbf38ac 192
193 histname = "fHistPhivsPtNeg" + fHistogramNameSuffix;
13b0d3c1 194 fHistPhivsPtNeg = new TH2F(histname.Data(), "Phi vs pT of negatively charged tracks hitting the calorimeter", 200, 0, 2*TMath::Pi(), nbinsPt, minPt, maxPt);
2fbf38ac 195
196 histname = "fHistBaryonEt" + fHistogramNameSuffix;
13b0d3c1 197 fHistBaryonEt = new TH1F(histname.Data(), "E_{T} for baryons", nbinsEt, minEt, maxEt);
2fbf38ac 198
199 histname = "fHistAntiBaryonEt" + fHistogramNameSuffix;
13b0d3c1 200 fHistAntiBaryonEt = new TH1F(histname.Data(), "E_{T} for anti baryons", nbinsEt, minEt, maxEt);
2fbf38ac 201
202 histname = "fHistMesonEt" + fHistogramNameSuffix;
13b0d3c1 203 fHistMesonEt = new TH1F(histname.Data(), "E_{T} for mesons", nbinsEt, minEt, maxEt);
2fbf38ac 204
205 histname = "fHistBaryonEtAcc" + fHistogramNameSuffix;
13b0d3c1 206 fHistBaryonEtAcc = new TH1F(histname.Data(), "E_{T} for baryons in calorimeter acceptance", nbinsEt, minEt, maxEt);
2fbf38ac 207
208 histname = "fHistAntiBaryonEtAcc" + fHistogramNameSuffix;
13b0d3c1 209 fHistAntiBaryonEtAcc = new TH1F(histname.Data(), "E_{T} for anti baryons in calorimeter acceptance", nbinsEt, minEt, maxEt);
2fbf38ac 210
211 histname = "fHistMesonEtAcc" + fHistogramNameSuffix;
13b0d3c1 212 fHistMesonEtAcc = new TH1F(histname.Data(), "E_{T} for mesons in calorimeter acceptance", nbinsEt, minEt, maxEt);
2fbf38ac 213
cf6522d1 214 //
2fbf38ac 215 histname = "fHistTMDeltaR" + fHistogramNameSuffix;
216 fHistTMDeltaR = new TH1F(histname.Data(), "#Delta R for calorimeter clusters", 200, 0, 50);
217
218}
219
220void AliAnalysisEt::FillHistograms()
cf6522d1 221{ // fill histograms..
2fbf38ac 222 fHistEt->Fill(fTotEt);
223 fHistChargedEt->Fill(fTotChargedEt);
224 fHistNeutralEt->Fill(fTotNeutralEt);
225
226 fHistEtAcc->Fill(fTotEtAcc);
227 fHistChargedEtAcc->Fill(fTotChargedEtAcc);
228 fHistNeutralEtAcc->Fill(fTotNeutralEtAcc);
229
230 fHistMult->Fill(fMultiplicity);
231 fHistChargedMult->Fill(fChargedMultiplicity);
232 fHistNeutralMult->Fill(fNeutralMultiplicity);
233
234 /* // DS commented out non-fills to prevent compilation warnings
235 fHistPhivsPtPos;
236 fHistPhivsPtNeg;
237
238 fHistBaryonEt;
239 fHistAntiBaryonEt;
240 fHistMesonEt;
241
242 fHistBaryonEtAcc;
243 fHistAntiBaryonEtAcc;
244 fHistMesonEtAcc;
245
246 fHistTMDeltaR;
247 */
248}
641e1e0c 249Int_t AliAnalysisEt::AnalyseEvent(AliVEvent *event)
250{
251 //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.
252 cout<<"This event has "<<event->GetNumberOfTracks()<<" tracks"<<endl;
253 return 0;
254}
2fbf38ac 255
256void AliAnalysisEt::ResetEventValues()
cf6522d1 257{ // clear
2fbf38ac 258 fTotEt = 0;
259 fTotEtAcc = 0;
260 fTotNeutralEt = 0;
261 fTotNeutralEtAcc = 0;
262 fTotChargedEt = 0;
263 fTotChargedEtAcc = 0;
264 fMultiplicity = 0;
265 fChargedMultiplicity = 0;
266 fNeutralMultiplicity = 0;
99a6613d 267
268 if(!fPdgDB) fPdgDB = new TDatabasePDG();
269
8985c506 270 if(fPiPlusCode==0){
99a6613d 271 SetParticleCodes();
272 }
2fbf38ac 273}
99a6613d 274
275void AliAnalysisEt::SetParticleCodes()
cf6522d1 276{ // set PDG info
8985c506 277 fPionMass = fPdgDB->GetParticle("pi+")->Mass();
278 fPiPlusCode = fPdgDB->GetParticle("pi+")->PdgCode();
279 fPiMinusCode = fPdgDB->GetParticle("pi-")->PdgCode();
280 fKPlusCode = fPdgDB->GetParticle("K+")->PdgCode();
281 fKMinusCode = fPdgDB->GetParticle("K-")->PdgCode();
282 fProtonCode = fPdgDB->GetParticle("proton")->PdgCode();
283 fAntiProtonCode = fPdgDB->GetParticle("antiproton")->PdgCode();
284 fLambdaCode = fPdgDB->GetParticle("Lambda0")->PdgCode();
285 fAntiLambdaCode = fPdgDB->GetParticle("Lambda0_bar")->PdgCode();
286 fK0SCode = fPdgDB->GetParticle("K_S0")->PdgCode();
287 fOmegaCode = fPdgDB->GetParticle("Omega-")->PdgCode();
288 fAntiOmegaCode = fPdgDB->GetParticle("Omega+")->PdgCode();
289 fXi0Code = fPdgDB->GetParticle("Xi0")->PdgCode();
290 fAntiXi0Code = fPdgDB->GetParticle("Xi0_bar")->PdgCode();
291 fXiCode = fPdgDB->GetParticle("Xi-")->PdgCode();
292 fAntiXiCode = fPdgDB->GetParticle("Xi-_bar")->PdgCode();
293 fSigmaCode = fPdgDB->GetParticle("Sigma-")->PdgCode();
294 fAntiSigmaCode = fPdgDB->GetParticle("Sigma+")->PdgCode();
295 fK0LCode = fPdgDB->GetParticle("K_L0")->PdgCode();
296 fNeutronCode = fPdgDB->GetParticle("neutron")->PdgCode();
297 fAntiNeutronCode = fPdgDB->GetParticle("antineutron")->PdgCode();
298 fEPlusCode = fPdgDB->GetParticle("e+")->PdgCode();
299 fEMinusCode = fPdgDB->GetParticle("e-")->PdgCode();
300 cout << "Resetting Codes: Pion " << fPiPlusCode
301 << "," << fPiMinusCode
302 << " Kaon " << fKPlusCode
303 << "," << fKMinusCode << endl;
99a6613d 304}
305