]>
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" | |
15 | #include <iostream> | |
16 | #include "AliAnalysisEtCuts.h" | |
641e1e0c | 17 | #include "AliVEvent.h" |
cf6522d1 | 18 | #include "TDatabasePDG.h" |
19 | #include "Rtypes.h" | |
641e1e0c | 20 | |
21 | using namespace std; | |
2fbf38ac | 22 | ClassImp(AliAnalysisEt); |
23 | ||
24 | ||
25 | AliAnalysisEt::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 | ||
91 | AliAnalysisEt::~AliAnalysisEt() | |
92 | { | |
93 | ||
94 | } | |
95 | ||
96 | void 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 | ||
124 | void 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 | ||
132 | void 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 | ||
220 | void 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 | 249 | Int_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 | |
256 | void 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 | |
275 | void 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 |