]>
Commit | Line | Data |
---|---|---|
cf6522d1 | 1 | //_________________________________________________________________________ |
2 | // Utility Class for transverse energy studies | |
3 | // Base class for MC analysis | |
4 | // - MC output | |
5 | // implementation file | |
6 | // | |
7 | //*-- Authors: Oystein Djuvsland (Bergen), David Silvermyr (ORNL) | |
e2ee5727 | 8 | //_________________________________________________________________________ |
cf6522d1 | 9 | |
2fbf38ac | 10 | #include "AliAnalysisEtMonteCarlo.h" |
11 | #include "AliAnalysisEtCuts.h" | |
13b0d3c1 | 12 | #include "AliESDtrack.h" |
2fbf38ac | 13 | #include "AliStack.h" |
0651f6b4 | 14 | #include "AliVEvent.h" |
2fbf38ac | 15 | #include "AliMCEvent.h" |
0651f6b4 | 16 | #include "AliESDEvent.h" |
13b0d3c1 | 17 | #include "TH2F.h" |
e2ee5727 | 18 | #include "TH3F.h" |
cf6522d1 | 19 | #include "TParticle.h" |
ce546038 | 20 | #include "AliGenHijingEventHeader.h" |
21 | #include "AliGenPythiaEventHeader.h" | |
0651f6b4 | 22 | #include "TList.h" |
23 | #include "AliESDCaloCluster.h" | |
0f6416f3 | 24 | #include "AliLog.h" |
e2ee5727 | 25 | #include <iostream> |
26 | #include <AliCentrality.h> | |
ce546038 | 27 | |
e2ee5727 | 28 | using namespace std; |
16abb579 | 29 | |
30 | ClassImp(AliAnalysisEtMonteCarlo); | |
31 | ||
32 | ||
ce546038 | 33 | // ctor |
0651f6b4 | 34 | AliAnalysisEtMonteCarlo::AliAnalysisEtMonteCarlo():AliAnalysisEt() |
e2ee5727 | 35 | ,fImpactParameter(0) |
36 | ,fNcoll(0) | |
37 | ,fNpart(0) | |
38 | ,fHistPrimElectronEtaEET(0) | |
39 | ,fHistSecElectronEtaEET(0) | |
40 | ,fHistConvElectronEtaEET(0) | |
41 | ,fHistPrimGammaEtaEET(0) | |
42 | ,fHistPion0GammaEtaEET(0) | |
43 | ,fHistEtaGammaEtaEET(0) | |
44 | ,fHistOmega0GammaEtaEET(0) | |
45 | ,fHistSecGammaEtaEET(0) | |
46 | ||
47 | ,fHistPrimElectronEtaE(0) | |
48 | ,fHistSecElectronEtaE(0) | |
49 | ,fHistConvElectronEtaE(0) | |
50 | ,fHistPrimGammaEtaE(0) | |
51 | ,fHistPion0GammaEtaE(0) | |
52 | ,fHistEtaGammaEtaE(0) | |
53 | ,fHistOmega0GammaEtaE(0) | |
54 | ,fHistSecGammaEtaE(0) | |
55 | ||
56 | ,fHistPrimElectronEtaERec(0) | |
57 | ,fHistSecElectronEtaERec(0) | |
58 | ,fHistConvElectronEtaERec(0) | |
59 | ,fHistPrimGammaEtaERec(0) | |
60 | ,fHistSecGammaEtaERec(0) | |
61 | ,fHistPion0GammaEtaERec(0) | |
62 | ,fHistEtaGammaEtaERec(0) | |
63 | ,fHistOmega0GammaEtaERec(0) | |
64 | ||
65 | ,fHistAllERecEMC(0) | |
66 | ,fHistGammaERecEMC(0) | |
67 | ,fHistElectronERecEMC(0) | |
68 | ||
69 | ,fHistElectronFirstMother(0) | |
70 | ,fHistElectronLastMother(0) | |
71 | ,fHistElectronFirstMotherEtaAcc(0) | |
72 | ,fHistElectronFirstMotherNPP(0) | |
73 | ,fHistElectronFirstMotherNPPAcc(0) | |
74 | ||
75 | ,fHistGammaFirstMother(0) | |
76 | ,fHistGammaLastMother(0) | |
77 | ,fHistGammaFirstMotherEtaAcc(0) | |
78 | ,fHistGammaFirstMotherNPP(0) | |
79 | ,fHistGammaFirstMotherNPPAcc(0) | |
80 | ||
81 | ,fHistDecayVertexNonRemovedCharged(0) | |
82 | ,fHistDecayVertexRemovedCharged(0) | |
83 | ,fHistDecayVertexNonRemovedNeutral(0) | |
84 | ,fHistDecayVertexRemovedNeutral(0) | |
85 | ||
86 | ,fHistRemovedOrNot(0) | |
476828ae | 87 | ,fHistEtNonRemovedProtons(0) |
88 | ,fHistEtNonRemovedAntiProtons(0) | |
89 | ,fHistEtNonRemovedPiPlus(0) | |
90 | ,fHistEtNonRemovedPiMinus(0) | |
91 | ,fHistEtNonRemovedKaonPlus(0) | |
92 | ,fHistEtNonRemovedKaonMinus(0) | |
93 | ,fHistEtNonRemovedK0s(0) | |
94 | ,fHistEtNonRemovedLambdas(0) | |
95 | ,fHistEtNonRemovedElectrons(0) | |
96 | ,fHistEtNonRemovedPositrons(0) | |
97 | ,fHistEtNonRemovedMuPlus(0) | |
98 | ,fHistEtNonRemovedMuMinus(0) | |
99 | ,fHistEtNonRemovedNeutrons(0) | |
100 | ,fHistEtNonRemovedAntiNeutrons(0) | |
101 | ,fHistEtNonRemovedGammas(0) | |
102 | ,fHistEtNonRemovedGammasFromPi0(0) | |
103 | ,fHistEtRemovedGammas(0) | |
104 | ,fHistEtRemovedNeutrons(0) | |
105 | ,fHistEtRemovedAntiNeutrons(0) | |
106 | ,fHistMultNonRemovedProtons(0) | |
107 | ,fHistMultNonRemovedAntiProtons(0) | |
108 | ,fHistMultNonRemovedPiPlus(0) | |
109 | ,fHistMultNonRemovedPiMinus(0) | |
110 | ,fHistMultNonRemovedKaonPlus(0) | |
111 | ,fHistMultNonRemovedKaonMinus(0) | |
112 | ,fHistMultNonRemovedK0s(0) | |
113 | ,fHistMultNonRemovedLambdas(0) | |
114 | ,fHistMultNonRemovedElectrons(0) | |
115 | ,fHistMultNonRemovedPositrons(0) | |
116 | ,fHistMultNonRemovedMuPlus(0) | |
117 | ,fHistMultNonRemovedMuMinus(0) | |
118 | ,fHistMultNonRemovedNeutrons(0) | |
119 | ,fHistMultNonRemovedAntiNeutrons(0) | |
120 | ,fHistMultNonRemovedGammas(0) | |
121 | ,fHistMultRemovedGammas(0) | |
122 | ,fHistMultRemovedNeutrons(0) | |
123 | ,fHistMultRemovedAntiNeutrons(0) | |
124 | ,fHistTrackMultvsNonRemovedCharged(0) | |
125 | ,fHistTrackMultvsNonRemovedNeutral(0) | |
126 | ,fHistTrackMultvsRemovedGamma(0) | |
127 | ,fHistClusterMultvsNonRemovedCharged(0) | |
128 | ,fHistClusterMultvsNonRemovedNeutral(0) | |
129 | ,fHistClusterMultvsRemovedGamma(0) | |
130 | ,fHistMultvsNonRemovedChargedE(0) | |
131 | ,fHistMultvsNonRemovedNeutralE(0) | |
132 | ,fHistMultvsRemovedGammaE(0) | |
133 | ,fEtNonRemovedProtons(0) | |
134 | ,fEtNonRemovedAntiProtons(0) | |
135 | ,fEtNonRemovedPiPlus(0) | |
136 | ,fEtNonRemovedPiMinus(0) | |
137 | ,fEtNonRemovedKaonPlus(0) | |
138 | ,fEtNonRemovedKaonMinus(0) | |
139 | ,fEtNonRemovedK0s(0) | |
140 | ,fEtNonRemovedLambdas(0) | |
141 | ,fEtNonRemovedElectrons(0) | |
142 | ,fEtNonRemovedPositrons(0) | |
143 | ,fEtNonRemovedMuMinus(0) | |
144 | ,fEtNonRemovedMuPlus(0) | |
145 | ,fEtNonRemovedGammas(0) | |
146 | ,fEtNonRemovedGammasFromPi0(0) | |
147 | ,fEtNonRemovedNeutrons(0) | |
148 | ,fEtNonRemovedAntiNeutrons(0) | |
149 | ,fEtRemovedGammas(0) | |
150 | ,fEtRemovedNeutrons(0) | |
151 | ,fEtRemovedAntiNeutrons(0) | |
152 | ,fMultNonRemovedProtons(0) | |
153 | ,fMultNonRemovedAntiProtons(0) | |
154 | ,fMultNonRemovedPiPlus(0) | |
155 | ,fMultNonRemovedPiMinus(0) | |
156 | ,fMultNonRemovedKaonPlus(0) | |
157 | ,fMultNonRemovedKaonMinus(0) | |
158 | ,fMultNonRemovedK0s(0) | |
159 | ,fMultNonRemovedLambdas(0) | |
160 | ,fMultNonRemovedElectrons(0) | |
161 | ,fMultNonRemovedPositrons(0) | |
162 | ,fMultNonRemovedMuMinus(0) | |
163 | ,fMultNonRemovedMuPlus(0) | |
164 | ,fMultNonRemovedGammas(0) | |
165 | ,fMultNonRemovedNeutrons(0) | |
166 | ,fMultNonRemovedAntiNeutrons(0) | |
167 | ,fMultRemovedGammas(0) | |
168 | ,fMultRemovedNeutrons(0) | |
169 | ,fMultRemovedAntiNeutrons(0) | |
170 | ,fTrackMultInAcc(0) | |
e2ee5727 | 171 | ,fHistDxDzNonRemovedCharged(0) |
476828ae | 172 | ,fHistDxDzRemovedCharged(0) |
e2ee5727 | 173 | ,fHistDxDzNonRemovedNeutral(0) |
476828ae | 174 | ,fHistDxDzRemovedNeutral(0) |
175 | ,fHistPiPlusMult(0) | |
176 | ,fHistPiMinusMult(0) | |
177 | ,fHistPiZeroMult(0) | |
178 | ,fHistPiPlusMultAcc(0) | |
179 | ,fHistPiMinusMultAcc(0) | |
180 | ,fHistPiZeroMultAcc(0) | |
181 | ,fPiPlusMult(0) | |
182 | ,fPiMinusMult(0) | |
183 | ,fPiZeroMult(0) | |
184 | ,fPiPlusMultAcc(0) | |
185 | ,fPiMinusMultAcc(0) | |
186 | ,fPiZeroMultAcc(0) | |
e2ee5727 | 187 | ,fNeutralRemoved(0) |
188 | ,fChargedRemoved(0) | |
189 | ,fChargedNotRemoved(0) | |
190 | ,fNeutralNotRemoved(0) | |
191 | ,fEnergyNeutralRemoved(0) | |
192 | ,fEnergyChargedRemoved(0) | |
193 | ,fEnergyChargedNotRemoved(0) | |
194 | ,fEnergyNeutralNotRemoved(0) | |
195 | ||
ce546038 | 196 | { |
e2ee5727 | 197 | fTrackDistanceCut = 7.0; |
ce546038 | 198 | } |
199 | ||
200 | // dtor | |
e2ee5727 | 201 | AliAnalysisEtMonteCarlo::~AliAnalysisEtMonteCarlo() |
ce546038 | 202 | { |
203 | } | |
2fbf38ac | 204 | |
205 | Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev) | |
cf6522d1 | 206 | { // analyse MC event |
e2ee5727 | 207 | ResetEventValues(); |
208 | ||
209 | fPiPlusMult = 0; | |
210 | fPiMinusMult = 0; | |
211 | fPiZeroMult = 0; | |
212 | if (fCentrality) | |
213 | { | |
214 | fCentClass = fCentrality->GetCentralityClass10(fCentralityMethod); | |
215 | ||
216 | } | |
217 | fSparseTracks[0] = 0; | |
218 | fSparseTracks[1] = 0; | |
219 | fSparseTracks[2] = 0; | |
220 | fSparseTracks[3] = 0; | |
221 | fSparseTracks[4] = 0; | |
222 | fSparseTracks[5] = 0; | |
223 | fSparseTracks[6] = fCentClass; | |
224 | ||
225 | ||
226 | // Get us an mc event | |
227 | if (!ev) { | |
228 | AliFatal("ERROR: Event does not exist"); | |
229 | return 0; | |
230 | } | |
231 | AliMCEvent *event = dynamic_cast<AliMCEvent*>(ev); | |
232 | if (!event) { | |
233 | AliFatal("ERROR: MC Event does not exist"); | |
234 | return 0; | |
235 | } | |
236 | ||
237 | Double_t protonMass =fgProtonMass; | |
238 | ||
239 | // Hijing header | |
240 | AliGenEventHeader* genHeader = event->GenEventHeader(); | |
241 | if (!genHeader) { | |
242 | Printf("ERROR: Event generation header does not exist"); | |
243 | return 0; | |
244 | } | |
245 | AliGenHijingEventHeader* hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader); | |
246 | if (hijingGenHeader) { | |
247 | fImpactParameter = hijingGenHeader->ImpactParameter(); | |
248 | fNcoll = hijingGenHeader->HardScatters(); // or should this be some combination of NN() NNw() NwN() NwNw() ? | |
249 | fNpart = hijingGenHeader->ProjectileParticipants() + hijingGenHeader->TargetParticipants(); | |
250 | /* | |
251 | printf("Hijing: ImpactParameter %g ReactionPlaneAngle %g \n", | |
252 | hijingGenHeader->ImpactParameter(), hijingGenHeader->ReactionPlaneAngle()); | |
253 | printf("HardScatters %d ProjecileParticipants %d TargetParticipants %d\n", | |
254 | hijingGenHeader->HardScatters(), hijingGenHeader->ProjectileParticipants(), hijingGenHeader->TargetParticipants()); | |
255 | printf("ProjSpectatorsn %d ProjSpectatorsp %d TargSpectatorsn %d TargSpectatorsp %d\n", | |
256 | hijingGenHeader->ProjSpectatorsn(), hijingGenHeader->ProjSpectatorsp(), hijingGenHeader->TargSpectatorsn(), hijingGenHeader->TargSpectatorsp()); | |
257 | printf("NN %d NNw %d NwN %d, NwNw %d\n", | |
258 | hijingGenHeader->NN(), hijingGenHeader->NNw(), hijingGenHeader->NwN(), hijingGenHeader->NwNw()); | |
259 | */ | |
260 | } | |
261 | ||
262 | /* // placeholder if we want to get some Pythia info later | |
263 | AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader); | |
264 | if (pythiaGenHeader) { // not Hijing; try with Pythia | |
265 | printf("Pythia: ProcessType %d GetPtHard %g \n", | |
266 | pythiaGenHeader->ProcessType(), pythiaGenHeader->GetPtHard()); | |
267 | } | |
ce546038 | 268 | */ |
e2ee5727 | 269 | |
270 | // Let's play with the stack! | |
271 | AliStack *stack = event->Stack(); | |
272 | ||
273 | Int_t nPrim = stack->GetNtrack(); | |
274 | ||
275 | Int_t partCount = 0; | |
276 | for (Int_t iPart = 0; iPart < nPrim; iPart++) | |
2fbf38ac | 277 | { |
e2ee5727 | 278 | |
279 | TParticle *part = stack->Particle(iPart); | |
280 | TParticle *partMom = 0; | |
281 | TParticle *partMomLast = 0; | |
282 | ||
283 | if (!part) | |
284 | { | |
285 | Printf("ERROR: Could not get particle %d", iPart); | |
286 | continue; | |
287 | } | |
288 | ||
289 | Int_t iPartMom = part->GetMother(0); | |
290 | Int_t iPartLastMom = part->GetMother(1); | |
291 | ||
292 | TParticlePDG *pdg = part->GetPDG(0); | |
293 | TParticlePDG *pdgMom = 0; | |
294 | TParticlePDG *pdgMomLast = 0; | |
295 | ||
296 | if (!pdg) | |
2fbf38ac | 297 | { |
e2ee5727 | 298 | //Printf("ERROR: Could not get particle PDG %d", iPart); |
299 | continue; | |
2fbf38ac | 300 | } |
301 | ||
e2ee5727 | 302 | if (iPartMom>0) |
303 | { | |
304 | partMom = stack->Particle(iPartMom); | |
305 | pdgMom = partMom->GetPDG(0); | |
306 | } | |
cf6522d1 | 307 | |
e2ee5727 | 308 | if (iPartLastMom>0) |
2fbf38ac | 309 | { |
e2ee5727 | 310 | partMomLast = stack->Particle(iPartLastMom); |
311 | pdgMomLast = partMomLast->GetPDG(0); | |
312 | } | |
313 | ||
314 | ||
315 | Double_t particleMassPart = 0; //The mass part in the Et calculation for this particle | |
316 | ||
317 | // Check if it is a primary particle | |
318 | //if (!stack->IsPhysicalPrimary(iPart)) continue; | |
319 | ||
320 | // it goes to the next particle in case it is not a physical primary or not a electron or gamma (want to check the contribution from secondary) | |
321 | if (!stack->IsPhysicalPrimary(iPart)) | |
0651f6b4 | 322 | { |
e2ee5727 | 323 | // this part is used only to check the origin of secondary electrons and gammas |
324 | if (iPartMom>0) | |
2fbf38ac | 325 | { |
e2ee5727 | 326 | //if (!stack->IsPhysicalPrimary(iPartMom)) continue; |
327 | ||
328 | if (pdgMom) | |
329 | { | |
330 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) | |
331 | { | |
332 | fHistElectronFirstMotherNPP->Fill(pdgMom->PdgCode()); | |
333 | // inside EMCal acceptance | |
334 | if (TMath::Abs(part->Eta()) < fEtaCutAcc && part->Phi() < fPhiCutAccMax && part->Phi() > fPhiCutAccMin) | |
335 | fHistElectronFirstMotherNPPAcc->Fill(pdgMom->PdgCode()); | |
336 | } | |
337 | else if (pdg->PdgCode() == fgGammaCode) | |
338 | { | |
339 | fHistGammaFirstMotherNPP->Fill(pdgMom->PdgCode()); | |
340 | if (TMath::Abs(part->Eta()) < fEtaCutAcc && part->Phi() < fPhiCutAccMax && part->Phi() > fPhiCutAccMin) | |
341 | fHistGammaFirstMotherNPPAcc->Fill(pdgMom->PdgCode()); | |
342 | } | |
343 | } | |
344 | else | |
345 | { | |
346 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) | |
347 | fHistElectronFirstMotherNPP->Fill(-598); | |
348 | else if (pdg->PdgCode() == fgGammaCode) | |
349 | fHistGammaFirstMotherNPP->Fill(-598); | |
350 | ||
351 | continue; | |
352 | } | |
353 | } | |
354 | else | |
2fbf38ac | 355 | { |
e2ee5727 | 356 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) |
357 | fHistElectronFirstMotherNPP->Fill(-599); | |
358 | else if (pdg->PdgCode() == fgGammaCode) | |
359 | fHistGammaFirstMotherNPP->Fill(-599); | |
360 | ||
361 | continue; | |
2fbf38ac | 362 | } |
e2ee5727 | 363 | |
364 | if (!((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode) || (pdg->PdgCode() == fgGammaCode))) | |
365 | continue; | |
366 | } | |
367 | // this part is used only to check the origin of physical primary electrons and gammas | |
368 | else | |
369 | { | |
370 | if (iPartMom>0) | |
371 | { | |
372 | if (pdgMom) | |
373 | { | |
374 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) | |
375 | fHistElectronFirstMother->Fill(pdgMom->PdgCode()); | |
376 | else if (pdg->PdgCode() == fgGammaCode) | |
377 | fHistGammaFirstMother->Fill(pdgMom->PdgCode()); | |
378 | ||
379 | if (TMath::Abs(part->Eta()) < fCuts->GetCommonEtaCut()) | |
380 | { | |
381 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) | |
382 | fHistElectronFirstMotherEtaAcc->Fill(pdgMom->PdgCode()); | |
383 | else if (pdg->PdgCode() == fgGammaCode) | |
384 | fHistGammaFirstMotherEtaAcc->Fill(pdgMom->PdgCode()); | |
385 | } | |
386 | } | |
387 | else | |
388 | { | |
389 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) | |
390 | fHistElectronFirstMother->Fill(-598); | |
391 | else if (pdg->PdgCode() == fgGammaCode) | |
392 | fHistGammaFirstMother->Fill(-598); | |
393 | } | |
394 | } | |
395 | else | |
396 | { | |
397 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) | |
398 | fHistElectronFirstMother->Fill(-599); | |
399 | else if (pdg->PdgCode() == fgGammaCode) | |
400 | fHistGammaFirstMother->Fill(-599); | |
401 | } | |
402 | ||
403 | if (iPartLastMom>0) | |
404 | { | |
405 | if (pdgMomLast) | |
406 | { | |
407 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) | |
408 | fHistElectronLastMother->Fill(pdgMomLast->PdgCode()); | |
409 | else if (pdg->PdgCode() == fgGammaCode) | |
410 | fHistGammaLastMother->Fill(pdgMomLast->PdgCode()); | |
411 | } | |
412 | else | |
413 | { | |
414 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) | |
415 | fHistElectronLastMother->Fill(-598); | |
416 | else if (pdg->PdgCode() == fgGammaCode) | |
417 | fHistGammaLastMother->Fill(-598); | |
418 | } | |
419 | } | |
420 | else | |
421 | { | |
422 | if ((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode)) | |
423 | fHistElectronLastMother->Fill(-599); | |
424 | else if (pdg->PdgCode() == fgGammaCode) | |
425 | fHistGammaLastMother->Fill(-599); | |
426 | } | |
427 | } | |
428 | ||
429 | //printf("MC: iPart %03d eta %4.3f phi %4.3f code %d charge %g \n", iPart, part->Eta(), part->Phi(), pdg->PdgCode(), pdg->Charge()); // tmp/debug printout | |
430 | ||
431 | // Check for reasonable (for now neutral and singly charged) charge on the particle | |
432 | //TODO:Maybe not only singly charged? | |
433 | if ((stack->IsPhysicalPrimary(iPart))&&( TMath::Abs(TMath::Abs(pdg->Charge()) - fCuts->GetMonteCarloSingleChargedParticle())<1e-3 || TMath::Abs(TMath::Abs(pdg->Charge()) - fCuts->GetMonteCarloNeutralParticle())<1e-3)) | |
434 | { | |
435 | ||
436 | fMultiplicity++; | |
437 | ||
438 | if (TMath::Abs(part->Eta()) < fCuts->GetCommonEtaCut()) | |
2fbf38ac | 439 | { |
e2ee5727 | 440 | // calculate E_T |
441 | if ( | |
442 | TMath::Abs(pdg->PdgCode()) == fgProtonCode || | |
443 | TMath::Abs(pdg->PdgCode()) == fgNeutronCode || | |
444 | TMath::Abs(pdg->PdgCode()) == fgLambdaCode || | |
445 | TMath::Abs(pdg->PdgCode()) == fgXiCode || | |
446 | TMath::Abs(pdg->PdgCode()) == fgXi0Code || | |
447 | TMath::Abs(pdg->PdgCode()) == fgOmegaCode | |
448 | ) | |
449 | { | |
450 | if (pdg->PdgCode() > 0) { | |
451 | particleMassPart = - protonMass; | |
452 | } | |
453 | if (pdg->PdgCode() < 0) { | |
454 | particleMassPart = protonMass; | |
455 | } | |
456 | } | |
457 | Double_t et = part->Energy() * TMath::Sin(part->Theta()) + particleMassPart; | |
458 | ||
459 | fSparseTracks[0] = pdg->PdgCode(); | |
460 | fSparseTracks[1] = pdg->Charge()*3; | |
461 | fSparseTracks[2] = pdg->Mass(); | |
462 | fSparseTracks[3] = et; | |
463 | fSparseTracks[4] = part->Pt(); | |
464 | fSparseTracks[5] = part->Eta(); | |
465 | fSparseHistTracks->Fill(fSparseTracks); | |
466 | ||
467 | // Fill up total E_T counters for each particle species | |
468 | if (pdg->PdgCode() == fgProtonCode || pdg->PdgCode() == fgAntiProtonCode) | |
469 | { | |
470 | fProtonEt += et; | |
471 | } | |
472 | if (pdg->PdgCode() == fgPiPlusCode || pdg->PdgCode() == fgPiMinusCode) | |
473 | { | |
474 | fPionEt += et; | |
475 | if (pdg->PdgCode() == fgPiPlusCode) | |
476 | { | |
477 | fPiPlusMult++; | |
478 | } | |
479 | else | |
480 | { | |
481 | fPiMinusMult++; | |
482 | } | |
483 | } | |
484 | if (pdg->PdgCode() == fgGammaCode) | |
485 | { | |
486 | fPiZeroMult++; | |
487 | } | |
488 | if (pdg->PdgCode() == fgKPlusCode || pdg->PdgCode() == fgKMinusCode) | |
489 | { | |
490 | fChargedKaonEt += et; | |
491 | } | |
492 | if (pdg->PdgCode() == fgMuPlusCode || pdg->PdgCode() == fgMuMinusCode) | |
493 | { | |
494 | fMuonEt += et; | |
495 | } | |
496 | if (pdg->PdgCode() == fgEPlusCode || pdg->PdgCode() == fgEMinusCode) | |
497 | { | |
498 | fElectronEt += et; | |
499 | } | |
500 | ||
501 | // some neutrals also | |
502 | if (pdg->PdgCode() == fgNeutronCode) | |
503 | { | |
504 | fNeutronEt += et; | |
505 | } | |
506 | if (pdg->PdgCode() == fgAntiNeutronCode) | |
507 | { | |
508 | fAntiNeutronEt += et; | |
509 | } | |
510 | if (pdg->PdgCode() == fgGammaCode) | |
511 | { | |
512 | fGammaEt += et; | |
513 | } | |
514 | ||
515 | // Neutral particles | |
516 | if (TMath::Abs(pdg->Charge() - fCuts->GetMonteCarloNeutralParticle()) <1e-3 ) | |
517 | { | |
518 | ||
519 | if (et > fCuts->GetCommonClusterEnergyCut()) fTotNeutralEt += et; | |
520 | ||
521 | // inside EMCal acceptance | |
522 | if (TMath::Abs(part->Eta()) < fEtaCutAcc && part->Phi() < fPhiCutAccMax && part->Phi() > fPhiCutAccMin) | |
523 | { | |
524 | fNeutralMultiplicity++; | |
525 | //std::cout << pdg->PdgCode() << ", " << iPart << ", " << part->GetMother(0) << ", " << stack->IsPhysicalPrimary(iPart) << ", " << part->GetNDaughters() << ", " << part->Energy() << ", " << part->Eta() << ", " << part->Phi() << std::endl; | |
526 | ||
527 | //if(part->GetDaughter(0) > 0) std::cout << stack->Particle(part->GetDaughter(0))->GetPdgCode() << " " << stack->Particle(part->GetDaughter(1))->GetPdgCode() << std::endl; | |
528 | if (et > fCuts->GetCommonClusterEnergyCut()) fTotNeutralEtAcc += et; | |
529 | if (et > fCuts->GetCommonClusterEnergyCut()) fTotEtAcc += et; | |
530 | if (part->Energy() > 0.05) partCount++; | |
531 | if (pdg->PdgCode() == fgGammaCode) | |
532 | { | |
533 | if (!stack->IsPhysicalPrimary(iPart)) | |
534 | { | |
535 | fHistSecGammaEtaE->Fill(part->Energy(),part->Eta()); | |
536 | fHistSecGammaEtaEET->Fill(part->Energy(),part->Eta(),et); | |
537 | } | |
538 | else | |
539 | { | |
540 | if (pdgMom) | |
541 | { | |
542 | if (pdgMom->PdgCode() == fgPi0Code) | |
543 | { | |
544 | fHistPion0GammaEtaE->Fill(part->Energy(),part->Eta()); | |
545 | fHistPion0GammaEtaEET->Fill(part->Energy(),part->Eta(),et); | |
546 | } | |
547 | else if (pdgMom->PdgCode() == fgOmega0Code) | |
548 | { | |
549 | fHistOmega0GammaEtaE->Fill(part->Energy(),part->Eta()); | |
550 | fHistOmega0GammaEtaEET->Fill(part->Energy(),part->Eta(),et); | |
551 | } | |
552 | else if (pdgMom->PdgCode() == fgEtaCode) | |
553 | { | |
554 | fHistEtaGammaEtaE->Fill(part->Energy(),part->Eta()); | |
555 | fHistEtaGammaEtaEET->Fill(part->Energy(),part->Eta(),et); | |
556 | } | |
557 | else | |
558 | { | |
559 | fHistPrimGammaEtaE->Fill(part->Energy(),part->Eta()); | |
560 | fHistPrimGammaEtaEET->Fill(part->Energy(),part->Eta(),et); | |
561 | } | |
562 | } | |
563 | else | |
564 | { | |
565 | fHistPrimGammaEtaE->Fill(part->Energy(),part->Eta()); | |
566 | fHistPrimGammaEtaEET->Fill(part->Energy(),part->Eta(),et); | |
567 | } | |
568 | } | |
569 | } | |
570 | } | |
571 | } | |
572 | //Charged particles | |
573 | else if (TMath::Abs( pdg->Charge() - fCuts->GetMonteCarloNeutralParticle())>1e-3 ) | |
574 | { | |
575 | fChargedMultiplicity++; | |
576 | fTotChargedEt += et; | |
577 | ||
578 | // inside EMCal acceptance | |
579 | if (TMath::Abs(part->Eta()) < fEtaCutAcc && part->Phi() < fPhiCutAccMax && part->Phi() > fPhiCutAccMin) | |
580 | { | |
581 | fTotChargedEtAcc += et; | |
582 | fTotEtAcc += et; | |
583 | ||
584 | if (pdg->PdgCode() == fgProtonCode || pdg->PdgCode() == fgAntiProtonCode) | |
585 | { | |
586 | fProtonEtAcc += et; | |
587 | } | |
588 | if (pdg->PdgCode() == fgPiPlusCode || pdg->PdgCode() == fgPiMinusCode) | |
589 | { | |
590 | fPionEtAcc += et; | |
591 | } | |
592 | if (pdg->PdgCode() == fgKPlusCode || pdg->PdgCode() == fgKMinusCode) | |
593 | { | |
594 | fChargedKaonEtAcc += et; | |
595 | } | |
596 | if (pdg->PdgCode() == fgMuPlusCode || pdg->PdgCode() == fgMuMinusCode) | |
597 | { | |
598 | fMuonEtAcc += et; | |
599 | } | |
600 | /* | |
601 | if (pdg->PdgCode() == fgEPlusCode || pdg->PdgCode() == fgEMinusCode) | |
602 | { | |
603 | fElectronEtAcc += et; | |
604 | } | |
605 | */ | |
606 | if (pdg->PdgCode() == fgEPlusCode || pdg->PdgCode() == fgEMinusCode) | |
607 | { | |
608 | if (!stack->IsPhysicalPrimary(iPart)) | |
609 | { | |
610 | if (pdgMom) | |
611 | { | |
612 | if ((pdgMom->PdgCode() == fgGammaCode) && (stack->IsPhysicalPrimary(iPartMom))) | |
613 | { | |
614 | fHistConvElectronEtaE->Fill(part->Energy(),part->Eta()); | |
615 | fHistConvElectronEtaEET->Fill(part->Energy(),part->Eta(),et); | |
616 | } | |
617 | else | |
618 | { | |
619 | fHistSecElectronEtaE->Fill(part->Energy(),part->Eta()); | |
620 | fHistSecElectronEtaEET->Fill(part->Energy(),part->Eta(),et); | |
621 | } | |
622 | } | |
623 | else | |
624 | { | |
625 | fHistSecElectronEtaE->Fill(part->Energy(),part->Eta()); | |
626 | fHistSecElectronEtaEET->Fill(part->Energy(),part->Eta(),et); | |
627 | } | |
628 | } | |
629 | else | |
630 | { | |
631 | fElectronEtAcc += et; | |
632 | fHistPrimElectronEtaE->Fill(part->Energy(),part->Eta()); | |
633 | fHistPrimElectronEtaEET->Fill(part->Energy(),part->Eta(),et); | |
634 | } | |
635 | } // electron | |
636 | } // inside EMCal acceptance | |
637 | ||
638 | // if (TrackHitsCalorimeter(part, event->GetMagneticField())) | |
639 | if (TrackHitsCalorimeter(part)) // magnetic field info not filled? | |
640 | { | |
641 | if (pdg->Charge() > 0) fHistPhivsPtPos->Fill(part->Phi(),part->Pt()); | |
642 | else fHistPhivsPtNeg->Fill(part->Phi(), part->Pt()); | |
643 | } | |
644 | } | |
645 | } | |
646 | ||
647 | } | |
2fbf38ac | 648 | } |
e2ee5727 | 649 | |
650 | fTotEt = fTotChargedEt + fTotNeutralEt; | |
651 | fTotEtAcc = fTotChargedEtAcc + fTotNeutralEtAcc; | |
652 | ||
653 | ||
654 | //std::cout << "Event done! # of particles: " << partCount << std::endl; | |
655 | return 0; | |
2fbf38ac | 656 | } |
0651f6b4 | 657 | //Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliMCEvent* mcEvent,AliESDEvent* realEvent) |
658 | Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2) | |
659 | { // analyse MC and real event info | |
e2ee5727 | 660 | //if(!mcEvent || !realEvent){ |
661 | if (!ev || !ev2) { | |
662 | AliFatal("ERROR: Event does not exist"); | |
663 | return 0; | |
664 | } | |
665 | ||
666 | fSparseClusters[0] = 0; | |
667 | fSparseClusters[1] = 0; | |
668 | fSparseClusters[2] = 0; | |
669 | fSparseClusters[3] = 0; | |
670 | fSparseClusters[4] = 0; | |
671 | fSparseClusters[5] = 0; | |
672 | fSparseClusters[6] = 0; | |
673 | fSparseClusters[7] = 0; | |
674 | fSparseClusters[8] = 0; | |
675 | fSparseClusters[9] = fCentClass; | |
676 | fSparseClusters[10] = 0; | |
677 | ||
678 | //AnalyseEvent(mcEvent); | |
679 | AnalyseEvent(ev); | |
680 | AliMCEvent *mcEvent = dynamic_cast<AliMCEvent*>(ev); | |
681 | AliESDEvent *realEvent = dynamic_cast<AliESDEvent*>(ev2); | |
682 | if (!mcEvent || !realEvent) { | |
683 | AliFatal("ERROR: mcEvent or realEvent does not exist"); | |
684 | return 0; | |
685 | } | |
686 | ||
687 | AliStack *stack = mcEvent->Stack(); | |
688 | ||
689 | // get all detector clusters | |
690 | TRefArray* caloClusters = new TRefArray(); | |
691 | if (fDetector == fCuts->GetDetectorEmcal()) realEvent->GetEMCALClusters( caloClusters ); | |
692 | else if (fDetector == fCuts->GetDetectorPhos()) realEvent->GetPHOSClusters( caloClusters ); | |
693 | else { | |
694 | AliFatal("Detector ID has not been specified"); | |
695 | return -1; | |
696 | } | |
697 | ||
698 | // Track loop to fill a pT spectrum | |
699 | for (Int_t iTracks = 0; iTracks < realEvent->GetNumberOfTracks(); iTracks++) | |
0651f6b4 | 700 | { |
e2ee5727 | 701 | AliESDtrack* track = realEvent->GetTrack(iTracks); |
702 | if (!track) | |
0651f6b4 | 703 | { |
e2ee5727 | 704 | Printf("ERROR: Could not receive track %d", iTracks); |
705 | continue; | |
0651f6b4 | 706 | } |
e2ee5727 | 707 | |
708 | if ( track->Phi() < fCuts->GetGeometryPhosPhiAccMaxCut() * TMath::Pi()/180. && track->Phi() > fCuts->GetGeometryPhosPhiAccMinCut() * TMath::Pi()/180. && TMath::Abs(track->Eta()) < fCuts->GetGeometryPhosEtaAccCut()) | |
709 | { | |
710 | fTrackMultInAcc++; | |
711 | } | |
712 | } | |
713 | ||
714 | Int_t nCluster = caloClusters->GetEntries(); | |
715 | ||
716 | // loop the clusters | |
717 | for (int iCluster = 0; iCluster < nCluster; iCluster++ ) | |
718 | { | |
719 | AliESDCaloCluster* caloCluster = ( AliESDCaloCluster* )caloClusters->At( iCluster ); | |
720 | Float_t caloE = caloCluster->E(); | |
721 | ||
722 | UInt_t iPart = (UInt_t)TMath::Abs(caloCluster->GetLabel()); | |
723 | TParticle *part = stack->Particle(iPart); | |
724 | TParticle *partMom = 0; | |
725 | ||
726 | if (!part) | |
0651f6b4 | 727 | { |
e2ee5727 | 728 | Printf("No MC particle %d", iCluster); |
729 | continue; | |
730 | } | |
731 | ||
732 | // compare MC and Rec energies for all particles | |
733 | fHistAllERecEMC->Fill(part->Energy(),caloE); | |
734 | ||
735 | TParticlePDG *pdg = part->GetPDG(0); | |
736 | TParticlePDG *pdgMom = 0; | |
737 | ||
738 | if (!pdg) | |
739 | { | |
740 | Printf("ERROR: Could not get particle PDG %d", iPart); | |
741 | continue; | |
742 | } | |
743 | ||
744 | Int_t iPartMom = part->GetMother(0); | |
745 | ||
746 | if (iPartMom>0) | |
747 | { | |
748 | partMom = stack->Particle(iPartMom); | |
749 | pdgMom = partMom->GetPDG(0); | |
750 | } | |
751 | ||
752 | // Check if it is a primary particle | |
753 | //if (!stack->IsPhysicalPrimary(iPart)) continue; | |
754 | if (!stack->IsPhysicalPrimary(iPart)) // check whether particle is primary. we keep secondary electron and gamma for testing. | |
755 | { | |
756 | if (!((pdg->PdgCode() == fgEPlusCode) || (pdg->PdgCode() == fgEMinusCode) || (pdg->PdgCode() == fgGammaCode))) | |
757 | continue; | |
758 | } // end of primary particle check | |
759 | ||
760 | if (TMath::Abs(TMath::Abs(pdg->Charge()) - fCuts->GetMonteCarloSingleChargedParticle())<1e-3 && TMath::Abs(TMath::Abs(pdg->Charge()) - fCuts->GetMonteCarloNeutralParticle())<1e-3) continue; | |
761 | ||
762 | if (pdg->PdgCode() == fgGammaCode) | |
763 | { | |
764 | // compare MC and Rec energies for gammas | |
765 | fHistGammaERecEMC->Fill(part->Energy(),caloE); | |
766 | ||
767 | if (!stack->IsPhysicalPrimary(iPart)) | |
768 | { | |
769 | fHistSecGammaEtaERec->Fill(part->Energy(),part->Eta()); | |
770 | } | |
771 | else | |
772 | { | |
773 | if (pdgMom) | |
774 | { | |
775 | if (pdgMom->PdgCode() == fgPi0Code) | |
776 | { | |
777 | fHistPion0GammaEtaERec->Fill(part->Energy(),part->Eta()); | |
778 | } | |
779 | else if (partMom->GetPDG(0)->PdgCode() == fgOmega0Code) | |
780 | { | |
781 | fHistOmega0GammaEtaERec->Fill(part->Energy(),part->Eta()); | |
782 | } | |
783 | else if (partMom->GetPDG(0)->PdgCode() == fgEtaCode) | |
784 | { | |
785 | fHistEtaGammaEtaERec->Fill(part->Energy(),part->Eta()); | |
786 | } | |
787 | else | |
788 | { | |
789 | fHistPrimGammaEtaERec->Fill(part->Energy(),part->Eta()); | |
790 | } | |
791 | } | |
792 | else | |
793 | { | |
794 | fHistPrimGammaEtaERec->Fill(part->Energy(),part->Eta()); | |
795 | } | |
796 | } | |
797 | } // gamma | |
798 | ||
799 | if (pdg->PdgCode() == fgEPlusCode || pdg->PdgCode() == fgEMinusCode) | |
800 | { | |
801 | // compare MC and Rec energies for electrons | |
802 | fHistElectronERecEMC->Fill(part->Energy(),caloE); | |
803 | ||
804 | if (!stack->IsPhysicalPrimary(iPart)) | |
805 | { | |
806 | if (pdgMom) | |
807 | { | |
808 | if ((pdgMom->PdgCode() == fgGammaCode) && (stack->IsPhysicalPrimary(iPartMom))) | |
809 | { | |
810 | fHistConvElectronEtaERec->Fill(part->Energy(),part->Eta()); | |
811 | } | |
812 | else | |
813 | { | |
814 | fHistSecElectronEtaERec->Fill(part->Energy(),part->Eta()); | |
815 | } | |
816 | } | |
817 | else | |
818 | { | |
819 | fHistSecElectronEtaERec->Fill(part->Energy(),part->Eta()); | |
820 | } | |
821 | } | |
822 | else | |
823 | { | |
824 | fHistPrimElectronEtaERec->Fill(part->Energy(),part->Eta()); | |
825 | } | |
826 | } | |
827 | ||
828 | ||
829 | Double_t clEt = CalculateTransverseEnergy(caloCluster); | |
830 | if (caloCluster->E() < fCuts->GetCommonClusterEnergyCut()) continue; | |
831 | Float_t pos[3]; | |
832 | ||
833 | caloCluster->GetPosition(pos); | |
834 | TVector3 cp(pos); | |
835 | ||
836 | fSparseClusters[0] = pdg->PdgCode(); | |
837 | fSparseClusters[1] = pdg->Charge()/3; | |
838 | fSparseClusters[2] = pdg->Mass(); | |
839 | fSparseClusters[3] = clEt; | |
840 | fSparseClusters[4] = caloCluster->E(); | |
841 | fSparseClusters[5] = cp.Eta(); | |
842 | fSparseClusters[6] = part->Energy() * TMath::Sin(part->Theta()); | |
843 | fSparseClusters[7] = part->Pt(); | |
844 | fSparseClusters[8] = part->Eta(); | |
845 | fSparseClusters[9] = fCentClass; | |
846 | fSparseClusters[10] = 0; | |
847 | fSparseHistClusters->Fill(fSparseClusters); | |
848 | ||
849 | //if(caloCluster->GetEmcCpvDistance() < fTrackDistanceCut) | |
850 | ||
851 | if (TMath::Abs(caloCluster->GetTrackDx()) < fTrackDxCut && TMath::Abs(caloCluster->GetTrackDz()) < fTrackDzCut) | |
852 | { | |
853 | ||
854 | if (pdg->Charge() != 0) | |
855 | { | |
856 | //std::cout << "Removing charged: " << pdg->PdgCode() << ", with energy: " << caloCluster->E() << ", dist matched: " << caloCluster->GetTrackDx() << " " << caloCluster->GetTrackDz() << std::endl; | |
857 | fChargedRemoved++; | |
858 | fEnergyChargedRemoved += caloCluster->E(); | |
859 | fHistRemovedOrNot->Fill(0.0, fCentClass); | |
860 | //std::cout << part->Vx() << " " << part->Vy() << " " << part->Vz() << " " << std::endl; | |
861 | //fHistDecayVertexRemovedCharged->Fill(part->Vy(), part->Vx(), part->Vz()); | |
862 | fHistDxDzRemovedCharged->Fill(caloCluster->GetTrackDx(), caloCluster->GetTrackDz()); | |
863 | ||
864 | ||
865 | } | |
866 | else | |
867 | { | |
868 | //std::cout << "Removing neutral: " << pdg->PdgCode() << ", with energy: " << caloCluster->E() << ", dist matched: " << caloCluster->GetTrackDx() << " " << caloCluster->GetTrackDz() << std::endl; | |
869 | //std::cout << "Mother is: " << stack->Particle(part->GetMother(0))->GetPdgCode() << std::endl; | |
870 | fNeutralRemoved++; | |
871 | fEnergyNeutralRemoved += caloCluster->E(); | |
872 | fHistRemovedOrNot->Fill(1.0, fCentClass); | |
873 | //std::cout << part->Vx() << " " << part->Vy() << " " << part->Vz() << " " << std::endl; | |
874 | //fHistDecayVertexRemovedNeutral->Fill(part->Vy(), part->Vx(), part->Vz()); | |
875 | fHistDxDzRemovedNeutral->Fill(caloCluster->GetTrackDx(), caloCluster->GetTrackDz()); | |
876 | ||
877 | if (pdg->PdgCode() == fgGammaCode) | |
878 | { | |
879 | fEtRemovedGammas += clEt; | |
880 | fMultRemovedGammas++; | |
881 | } | |
882 | else if (pdg->PdgCode() == fgNeutronCode) | |
883 | { | |
884 | fEtRemovedNeutrons += clEt; | |
885 | fMultRemovedNeutrons++; | |
886 | } | |
887 | else if (pdg->PdgCode() == fgAntiNeutronCode) | |
888 | { | |
889 | fEtRemovedAntiNeutrons += clEt; | |
890 | fMultRemovedAntiNeutrons++; | |
891 | } | |
892 | //else std::cout << "Hmm, what is this (neutral: " << pdg->PdgCode() << std::endl; | |
893 | } | |
894 | } | |
895 | else | |
896 | { | |
897 | ||
898 | if (pdg->Charge() != 0) | |
899 | { | |
900 | //std::cout << "Not removing charged: " << pdg->PdgCode() << ", with energy: " << caloCluster->E() << ", dist matched: " << caloCluster->GetTrackDx() << " " << caloCluster->GetTrackDz() << std::endl; | |
901 | //std::cout << "Mother is: " << stack->Particle(part->GetMother(0))->GetPdgCode() << std::endl; | |
902 | fChargedNotRemoved++; | |
903 | fEnergyChargedNotRemoved += caloCluster->E(); | |
904 | fHistRemovedOrNot->Fill(2.0, fCentClass); | |
905 | //std::cout << fHistDecayVertexNonRemovedCharged << std::endl; | |
906 | //std::cout << part->Vx() << " " << part->Vy() << " " << part->Vz() << " " << std::endl; | |
907 | //fHistDecayVertexNonRemovedCharged->Fill(part->Vy(), part->Vx(), part->Vz()); | |
908 | fHistDxDzNonRemovedCharged->Fill(caloCluster->GetTrackDx(), caloCluster->GetTrackDz()); | |
909 | if (pdg->PdgCode() == fgProtonCode) | |
910 | { | |
911 | //std::cout << clEt << std::endl; | |
912 | fEtNonRemovedProtons += clEt; | |
913 | fMultNonRemovedProtons++; | |
914 | } | |
915 | else if (pdg->PdgCode() == fgAntiProtonCode) | |
916 | { | |
917 | //std::cout << clEt << std::endl; | |
918 | fEtNonRemovedAntiProtons += clEt; | |
919 | fMultNonRemovedAntiProtons++; | |
920 | } | |
921 | else if (pdg->PdgCode() == fgPiPlusCode) | |
922 | { | |
923 | //std::cout << "PI+" << clEt << std::endl; | |
924 | fEtNonRemovedPiPlus += clEt; | |
925 | fMultNonRemovedPiPlus++; | |
926 | } | |
927 | else if (pdg->PdgCode() == fgPiMinusCode) | |
928 | { | |
929 | // std::cout << "PI-" << clEt << std::endl; | |
930 | fEtNonRemovedPiMinus += clEt; | |
931 | fMultNonRemovedPiMinus++; | |
932 | } | |
933 | else if (pdg->PdgCode() == fgKPlusCode) | |
934 | { | |
935 | //std::cout << clEt << std::endl; | |
936 | fEtNonRemovedKaonPlus += clEt; | |
937 | fMultNonRemovedKaonPlus++; | |
938 | } | |
939 | else if (pdg->PdgCode() == fgKMinusCode) | |
940 | { | |
941 | //std::cout << clEt << std::endl; | |
942 | fEtNonRemovedKaonMinus += clEt; | |
943 | fMultNonRemovedKaonMinus++; | |
944 | } | |
945 | else if (pdg->PdgCode() == fgEPlusCode) | |
946 | { | |
947 | //std::cout << clEt << std::endl; | |
948 | if (TMath::Sqrt(part->Vx()*part->Vx() + part->Vy()*part->Vy()) < 430) | |
949 | { | |
950 | fEtNonRemovedPositrons += clEt; | |
951 | fMultNonRemovedPositrons++; | |
952 | } | |
953 | } | |
954 | else if (pdg->PdgCode() == fgEMinusCode) | |
955 | { | |
956 | //std::cout << clEt << std::endl; | |
957 | if (TMath::Sqrt(part->Vx()*part->Vx() + part->Vy()*part->Vy()) < 430) | |
958 | { | |
959 | fEtNonRemovedElectrons += clEt; | |
960 | fMultNonRemovedElectrons++; | |
961 | } | |
962 | } | |
963 | else if (pdg->PdgCode() == fgMuPlusCode) | |
964 | { | |
965 | std::cout << clEt << std::endl; | |
966 | fEtNonRemovedMuPlus += clEt; | |
967 | fMultNonRemovedMuPlus++; | |
968 | } | |
969 | else if (pdg->PdgCode() == fgMuMinusCode) | |
970 | { | |
971 | std::cout << clEt << std::endl; | |
972 | fEtNonRemovedMuMinus += clEt; | |
973 | fMultNonRemovedMuMinus++; | |
974 | } | |
975 | ||
976 | } | |
977 | else | |
978 | { | |
979 | //std::cout << "Accepted: " << pdg->PdgCode() << ", with energy: " << caloCluster->E() << ", dist matched: " << caloCluster->GetTrackDx() << " " << caloCluster->GetTrackDz() << std::endl; | |
980 | //std::cout << "Not removing charged: " << pdg->PdgCode() << ", with energy: " << caloCluster->E() << ", dist matched: " << caloCluster->GetTrackDx() << " " << caloCluster->GetTrackDz() << std::endl; | |
476828ae | 981 | //std::cout << "Mother is: " << stack->Particle(part->GetMother(0))->GetPdgCode() << stack->Particle(part->GetMother(0))->GetPDG()->GetName() << ", E: " << part->Energy() << std::endl; |
e2ee5727 | 982 | fNeutralNotRemoved++; |
983 | fEnergyNeutralNotRemoved += caloCluster->E(); | |
984 | fHistRemovedOrNot->Fill(3.0, fCentClass); | |
985 | //std::cout << part->Vx() << " " << part->Vy() << " " << part->Vz() << " " << std::endl; | |
986 | //fHistDecayVertexNonRemovedNeutral->Fill(part->Vy(), part->Vx(), part->Vz()); | |
987 | fHistDxDzNonRemovedNeutral->Fill(caloCluster->GetTrackDx(), caloCluster->GetTrackDz()); | |
988 | if (pdg->PdgCode() == fgGammaCode) | |
989 | { | |
990 | fEtNonRemovedGammas += clEt; | |
991 | fMultNonRemovedGammas++; | |
992 | if (pdgMom) | |
993 | { | |
994 | if (TMath::Abs(pdgMom->PdgCode()) == fgPi0Code || TMath::Abs(pdgMom->PdgCode()) == fgEtaCode || TMath::Abs(pdgMom->PdgCode()) == 331) | |
995 | { | |
996 | // std::cout << "Mother of gamma: " << pdgMom->PdgCode() << " " << pdgMom->GetName() << ", E: " << part->Energy() << std::endl; | |
997 | fEtNonRemovedGammasFromPi0 += clEt; | |
998 | } | |
999 | } | |
1000 | } | |
1001 | else if (pdg->PdgCode() == fgNeutronCode) | |
1002 | { | |
1003 | fEtNonRemovedNeutrons += clEt; | |
1004 | fMultNonRemovedNeutrons++; | |
1005 | } | |
1006 | else if (pdg->PdgCode() == fgAntiNeutronCode) | |
1007 | { | |
1008 | fEtNonRemovedAntiNeutrons += clEt; | |
1009 | fMultNonRemovedAntiNeutrons++; | |
1010 | } | |
1011 | else if (pdg->PdgCode() == fgK0LCode || pdg->PdgCode() == fgK0SCode) | |
1012 | { | |
1013 | fEtNonRemovedK0s += clEt; | |
1014 | fMultNonRemovedK0s++; | |
1015 | ||
1016 | } | |
1017 | else if (TMath::Abs(pdg->PdgCode()) == fgLambdaCode) | |
1018 | { | |
1019 | fEtNonRemovedLambdas += clEt; | |
1020 | fMultNonRemovedLambdas++; | |
1021 | } | |
1022 | else std::cout << "Hmm, what is this (neutral not removed): " << pdg->PdgCode() << " " << pdg->GetName() << ", ET: " << clEt << std::endl; | |
1023 | } | |
1024 | } | |
1025 | } // end of loop over clusters | |
1026 | ||
1027 | delete caloClusters; | |
1028 | //std::cout << "Distance cut: " << fTrackDistanceCut << std::endl; | |
1029 | //std::cout << "Number of removed neutrals: " << fNeutralRemoved << std::endl; | |
1030 | //std::cout << "Number of removed charged: " << fChargedRemoved << std::endl; | |
1031 | //std::cout << "Number of non-removed charged: " << fChargedNotRemoved << std::endl; | |
1032 | //std::cout << "Number of non-removed neutral: " << fNeutralNotRemoved << std::endl; | |
1033 | ||
1034 | // std::cout << "Energy of removed neutrals: " << fEnergyNeutralRemoved << std::endl; | |
1035 | // std::cout << "Energy of removed charged: " << fEnergyChargedRemoved << std::endl; | |
1036 | // std::cout << "Energy of non-removed charged: " << fEnergyChargedNotRemoved << std::endl; | |
1037 | // std::cout << "Energy of non-removed neutral: " << fEnergyNeutralNotRemoved << std::endl; | |
1038 | ||
1039 | FillHistograms(); | |
1040 | return 0; | |
1041 | } | |
2fbf38ac | 1042 | |
1043 | void AliAnalysisEtMonteCarlo::Init() | |
ce546038 | 1044 | { // init |
e2ee5727 | 1045 | AliAnalysisEt::Init(); |
2fbf38ac | 1046 | } |
13b0d3c1 | 1047 | |
ce546038 | 1048 | void AliAnalysisEtMonteCarlo::ResetEventValues() |
1049 | { // reset event values | |
e2ee5727 | 1050 | AliAnalysisEt::ResetEventValues(); |
1051 | ||
1052 | // collision geometry defaults for p+p: | |
1053 | fImpactParameter = 0; | |
1054 | fNcoll = 1; | |
1055 | fNpart = 2; | |
1056 | ||
1057 | fEtNonRemovedProtons = 0; | |
1058 | fEtNonRemovedAntiProtons = 0; | |
1059 | fEtNonRemovedPiPlus = 0; | |
1060 | fEtNonRemovedPiMinus = 0; | |
1061 | fEtNonRemovedKaonPlus = 0; | |
1062 | fEtNonRemovedKaonMinus = 0; | |
1063 | fEtNonRemovedK0s = 0; | |
1064 | fEtNonRemovedLambdas = 0; | |
1065 | fEtNonRemovedElectrons = 0; | |
1066 | fEtNonRemovedPositrons = 0; | |
1067 | fEtNonRemovedMuPlus = 0; | |
1068 | fEtNonRemovedMuMinus = 0; | |
1069 | fEtNonRemovedNeutrons = 0; | |
1070 | fEtNonRemovedAntiNeutrons = 0; | |
1071 | fEtNonRemovedGammas = 0; | |
1072 | fEtNonRemovedGammasFromPi0 = 0; | |
1073 | ||
1074 | fEtRemovedGammas = 0; | |
1075 | fEtRemovedNeutrons = 0; | |
1076 | fEtRemovedAntiNeutrons = 0; | |
1077 | ||
1078 | fMultNonRemovedProtons = 0; | |
1079 | fMultNonRemovedAntiProtons = 0; | |
1080 | fMultNonRemovedPiPlus = 0; | |
1081 | fMultNonRemovedPiMinus = 0; | |
1082 | fMultNonRemovedKaonPlus = 0; | |
1083 | fMultNonRemovedKaonMinus = 0; | |
1084 | fMultNonRemovedK0s = 0; | |
1085 | fMultNonRemovedLambdas = 0; | |
1086 | fMultNonRemovedElectrons = 0; | |
1087 | fMultNonRemovedPositrons = 0; | |
1088 | fMultNonRemovedMuPlus = 0; | |
1089 | fMultNonRemovedMuMinus = 0; | |
1090 | fMultNonRemovedNeutrons = 0; | |
1091 | fMultNonRemovedAntiNeutrons = 0; | |
1092 | fMultNonRemovedGammas = 0; | |
1093 | ||
1094 | fMultRemovedGammas = 0; | |
1095 | fMultRemovedNeutrons = 0; | |
1096 | fMultRemovedAntiNeutrons = 0; | |
1097 | ||
1098 | fTrackMultInAcc = 0; | |
1099 | ||
ce546038 | 1100 | } |
1101 | ||
1102 | void AliAnalysisEtMonteCarlo::CreateHistograms() | |
1103 | { // histogram related additions | |
e2ee5727 | 1104 | AliAnalysisEt::CreateHistograms(); |
1105 | if (fTree) { | |
1106 | fTree->Branch("fImpactParameter",&fImpactParameter,"fImpactParameter/D"); | |
1107 | fTree->Branch("fNcoll",&fNcoll,"fNcoll/I"); | |
1108 | fTree->Branch("fNpart",&fNpart,"fNpart/I"); | |
1109 | } | |
1110 | fHistPrimElectronEtaEET = CreateEtaEHisto2D("fHistPrimElectronEtaEET","MC E_{T}, primary electrons","E_{T}(GeV)"); | |
1111 | fHistSecElectronEtaEET = CreateEtaEHisto2D("fHistSecElectronEtaEET","MC E_{T}, secondary (no conversion) electrons","E_{T}(GeV)"); | |
1112 | fHistConvElectronEtaEET = CreateEtaEHisto2D("fHistConvElectronEtaEET","MC E_{T}, electrons from conversion","E_{T}(GeV)"); | |
1113 | fHistPrimGammaEtaEET = CreateEtaEHisto2D("fHistPrimGammaEtaEET","MC E_{T}, primary gammas","E_{T}(GeV)"); | |
1114 | fHistPion0GammaEtaEET = CreateEtaEHisto2D("fHistPion0GammaEtaEET","MC E_{T}, #pi^{0}","E_{T}(GeV)"); | |
1115 | fHistOmega0GammaEtaEET = CreateEtaEHisto2D("fHistOmega0GammaEtaEET","MC E_{T}, #omega^{0}","E_{T}(GeV)"); | |
1116 | fHistEtaGammaEtaEET = CreateEtaEHisto2D("fHistEtaGammaEtaEET","MC E_{T}, #eta","E_{T}(GeV)"); | |
1117 | fHistSecGammaEtaEET = CreateEtaEHisto2D("fHistSecGammaEtaEET","MC E_{T}, secondary (no #pi^{0}, #eta or #omega) gammas","E_{T}(GeV)"); | |
1118 | ||
1119 | fHistPrimElectronEtaE = CreateEtaEHisto2D("fHistPrimElectronEtaE","MC E_{T}, primary electrons","#"); | |
1120 | fHistSecElectronEtaE = CreateEtaEHisto2D("fHistSecElectronEtaE","MC E_{T}, secondary (no conversion) electrons","#"); | |
1121 | fHistConvElectronEtaE = CreateEtaEHisto2D("fHistConvElectronEtaE","MC E_{T}, electrons from conversion","#"); | |
1122 | fHistPrimGammaEtaE = CreateEtaEHisto2D("fHistPrimGammaEtaE","MC E_{T}, primary gammas","#"); | |
1123 | fHistPion0GammaEtaE = CreateEtaEHisto2D("fHistPion0GammaEtaE","MC E_{T}, #pi^{0}","#"); | |
1124 | fHistOmega0GammaEtaE = CreateEtaEHisto2D("fHistOmega0GammaEtaE","MC E_{T}, #omega^{0}","#"); | |
1125 | fHistEtaGammaEtaE = CreateEtaEHisto2D("fHistEtaGammaEtaE","MC E_{T}, #eta","#"); | |
1126 | fHistSecGammaEtaE = CreateEtaEHisto2D("fHistSecGammaEtaE","MC E_{T}, secondary (no #pi^{0}, #eta or #omega) gammas","#"); | |
1127 | ||
1128 | fHistPrimElectronEtaERec = CreateEtaEHisto2D("fHistPrimElectronEtaERec","MC E_{T}, primary electrons","#"); | |
1129 | fHistSecElectronEtaERec = CreateEtaEHisto2D("fHistSecElectronEtaERec","MC E_{T}, secondary (no conversion) electrons","#"); | |
1130 | fHistConvElectronEtaERec = CreateEtaEHisto2D("fHistConvElectronEtaERec","MC E_{T}, electrons from conversion","#"); | |
1131 | fHistPrimGammaEtaERec = CreateEtaEHisto2D("fHistPrimGammaEtaERec","MC E_{T}, primary gammas","#"); | |
1132 | fHistPion0GammaEtaERec = CreateEtaEHisto2D("fHistPion0GammaEtaERec","MC E_{T}, #pi^{0}","#"); | |
1133 | fHistOmega0GammaEtaERec = CreateEtaEHisto2D("fHistOmega0GammaEtaERec","MC E_{T}, #omega","#"); | |
1134 | fHistEtaGammaEtaERec = CreateEtaEHisto2D("fHistEtaGammaEtaERec","MC E_{T}, #eta","#"); | |
1135 | fHistSecGammaEtaERec = CreateEtaEHisto2D("fHistSecGammaEtaERec","MC E_{T}, secondary (no #pi^{0}, #eta or #omega) gammas","#"); | |
1136 | ||
1137 | fHistAllERecEMC = new TH2F("fHistAllERecEMC","E cluster Rec vs MC, all particles",fgNumOfEBins, fgEAxis,fgNumOfEBins, fgEAxis); | |
1138 | fHistAllERecEMC->SetXTitle("E_{MC}(GeV)"); | |
1139 | fHistAllERecEMC->SetYTitle("E_{Rec}(GeV)"); | |
1140 | ||
1141 | fHistElectronERecEMC = new TH2F("fHistElectronERecEMC","E cluster Rec vs MC, Electrons",fgNumOfEBins, fgEAxis,fgNumOfEBins, fgEAxis); | |
1142 | fHistElectronERecEMC->SetXTitle("E_{MC}(GeV)"); | |
1143 | fHistElectronERecEMC->SetYTitle("E_{Rec}(GeV)"); | |
1144 | ||
1145 | fHistGammaERecEMC = new TH2F("fHistGammaERecEMC","E cluster Rec vs MC, Gammas",fgNumOfEBins, fgEAxis,fgNumOfEBins, fgEAxis); | |
1146 | fHistGammaERecEMC->SetXTitle("E_{MC}(GeV)"); | |
1147 | fHistGammaERecEMC->SetYTitle("E_{Rec}(GeV)"); | |
1148 | ||
1149 | fHistElectronFirstMother = new TH1F("fHistElectronFirstMother","Electron First Mother PDG Code Distribution",1201,-600.5,600.5); | |
1150 | fHistElectronLastMother = new TH1F("fHistElectronLastMother","Electron Last Mother PDG Code Distribution",1201,-600.5,600.5); | |
1151 | fHistElectronFirstMotherEtaAcc = new TH1F("fHistElectronFirstMotherEtaAcc","Electron First Mother PDG Code Distribution",1201,-600.5,600.5); | |
1152 | fHistElectronFirstMotherNPP = new TH1F("fHistElectronFirstMotherNPP","Electron First Mother PDG Code Distribution",1201,-600.5,600.5); | |
1153 | fHistElectronFirstMotherNPPAcc = new TH1F("fHistElectronFirstMotherNPPAcc","Electron First Mother PDG Code Distribution",1201,-600.5,600.5); | |
1154 | ||
1155 | fHistGammaFirstMother = new TH1F("fHistGammaFirstMother","Gamma First Mother PDG Code Distribution",1201,-600.5,600.5); | |
1156 | fHistGammaLastMother = new TH1F("fHistGammaLastMother","Gamma Last Mother PDG Code Distribution",1201,-600.5,600.5); | |
1157 | fHistGammaFirstMotherEtaAcc = new TH1F("fHistGammaFirstMotherEtaAcc","Gamma First Mother PDG Code Distribution",1201,-600.5,600.5); | |
1158 | fHistGammaFirstMotherNPP = new TH1F("fHistGammaFirstMotherNPP","Gamma First Mother PDG Code Distribution",1201,-600.5,600.5); | |
1159 | fHistGammaFirstMotherNPPAcc = new TH1F("fHistGammaFirstMotherNPP","Gamma First Mother PDG Code Distribution",1201,-600.5,600.5); | |
1160 | ||
1161 | //fHistDecayVertexNonRemovedCharged = new TH3F("fHistDecayVertexNonRemovedCharged","fHistDecayVertexNonRemovedCharged", 500, -470, 30, 500, -300, 300, 40, -20, 20); | |
1162 | //fHistDecayVertexRemovedCharged = new TH3F("fHistDecayVertexRemovedCharged","fHistDecayVertexRemovedCharged", 500, -470, 30, 500, -300, 300, 40, -20, 20); | |
1163 | //fHistDecayVertexNonRemovedNeutral = new TH3F("fHistDecayVertexNonRemovedNeutral","fHistDecayVertexNonRemovedNeutral", 500, -470, 30, 500, -300, 300, 40, -20, 20); | |
1164 | //fHistDecayVertexRemovedNeutral = new TH3F("fHistDecayVertexRemovedNeutral","fHistDecayVertexRemovedNeutral", 500, -470, 30, 500, -300, 300, 40, -20, 20); | |
1165 | ||
1166 | fHistRemovedOrNot = new TH2F("fHistRemovedOrNot", "fHistRemovedOrNot", 4, -0.5, 3.5, 10, -0.5, 9.5); | |
1167 | ||
1168 | fHistEtNonRemovedProtons = new TH2F("fHistEtNonRemovedProtons", "fHistEtNonRemovedProtons", 1500, 0, 30, 10, -0.5, 9.5); | |
1169 | fHistEtNonRemovedAntiProtons = new TH2F("fHistEtNonRemovedAntiProtons", "fHistEtNonRemovedAntiProtons", 1500, 0, 30, 10, -0.5, 9.5); | |
1170 | fHistEtNonRemovedPiPlus = new TH2F("fHistEtNonRemovedPiPlus", "fHistEtNonRemovedPiPlus", 1500, 0, 30, 10, -0.5, 9.5); | |
1171 | fHistEtNonRemovedPiMinus = new TH2F("fHistEtNonRemovedPiMinus", "fHistEtNonRemovedPiMinus", 1500, 0, 30, 10, -0.5, 9.5); | |
1172 | fHistEtNonRemovedKaonPlus = new TH2F("fHistEtNonRemovedKaonPlus", "fHistEtNonRemovedKaonPlus", 1500, 0, 30, 10, -0.5, 9.5); | |
1173 | fHistEtNonRemovedKaonMinus = new TH2F("fHistEtNonRemovedKaonMinus", "fHistEtNonRemovedKaonMinus", 1500, 0, 30, 10, -0.5, 9.5); | |
1174 | fHistEtNonRemovedK0s = new TH2F("fHistEtNonRemovedK0s", "fHistEtNonRemovedK0s", 1500, 0, 30, 10, -0.5, 9.5); | |
1175 | fHistEtNonRemovedLambdas = new TH2F("fHistEtNonRemovedLambdas", "fHistEtNonRemovedLambdas", 1500, 0, 30, 10, -0.5, 9.5); | |
1176 | fHistEtNonRemovedElectrons = new TH2F("fHistEtNonRemovedElectrons", "fHistEtNonRemovedElectrons", 1500, 0, 30, 10, -0.5, 9.5); | |
1177 | fHistEtNonRemovedPositrons = new TH2F("fHistEtNonRemovedPositrons", "fHistEtNonRemovedPositrons", 1500, 0, 30, 10, -0.5, 9.5); | |
1178 | fHistEtNonRemovedMuPlus = new TH2F("fHistEtNonRemovedMuPlus", "fHistEtNonRemovedMuPlus", 1500, 0, 30, 10, -0.5, 9.5); | |
1179 | fHistEtNonRemovedMuMinus = new TH2F("fHistEtNonRemovedMuMinus", "fHistEtNonRemovedMuMinus", 1500, 0, 30, 10, -0.5, 9.5); | |
1180 | fHistEtNonRemovedNeutrons = new TH2F("fHistEtNonRemovedNeutrons", "fHistEtNonRemovedNeutrons", 1500, 0, 30, 10, -0.5, 9.5); | |
1181 | fHistEtNonRemovedAntiNeutrons = new TH2F("fHistEtNonRemovedAntiNeutrons", "fHistEtNonRemovedAntiNeutrons", 1500, 0, 30, 10, -0.5, 9.5); | |
1182 | ||
1183 | fHistEtNonRemovedGammas = new TH2F("fHistEtNonRemovedGammas", "fHistEtNonRemovedGammas", 1500, 0, 30, 10, -0.5, 9.5); | |
1184 | fHistEtNonRemovedGammasFromPi0 = new TH2F("fHistEtNonRemovedGammasFromPi0", "fHistEtNonRemovedGammasFromPi0", 1500, 0, 30, 10, -0.5, 9.5); | |
1185 | ||
1186 | fHistEtRemovedGammas = new TH2F("fHistEtRemovedGammas", "fHistEtRemovedGammas", 1500, 0, 30, 10, -0.5, 9.5); | |
1187 | fHistEtRemovedNeutrons = new TH2F("fHistEtRemovedNeutrons", "fHistEtRemovedNeutrons", 1500, 0, 30, 10, -0.5, 9.5); | |
1188 | fHistEtRemovedAntiNeutrons = new TH2F("fHistEtRemovedAntiNeutrons", "fHistEtRemovedAntiNeutrons", 1500, 0, 30, 10, -0.5, 9.5); | |
1189 | ||
1190 | fHistMultNonRemovedProtons = new TH2F("fHistMultNonRemovedProtons", "fHistMultNonRemovedProtons", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1191 | fHistMultNonRemovedAntiProtons = new TH2F("fHistMultNonRemovedAntiProtons", "fHistMultNonRemovedAntiProtons", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1192 | fHistMultNonRemovedPiPlus = new TH2F("fHistMultNonRemovedPiPlus", "fHistMultNonRemovedPiPlus", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1193 | fHistMultNonRemovedPiMinus = new TH2F("fHistMultNonRemovedPiMinus", "fHistMultNonRemovedPiMinus", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1194 | fHistMultNonRemovedKaonPlus = new TH2F("fHistMultNonRemovedKaonPlus", "fHistMultNonRemovedKaonPlus", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1195 | fHistMultNonRemovedKaonMinus = new TH2F("fHistMultNonRemovedKaonMinus", "fHistMultNonRemovedKaonMinus", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1196 | fHistMultNonRemovedK0s = new TH2F("fHistMultNonRemovedK0s", "fHistMultNonRemovedK0s", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1197 | fHistMultNonRemovedLambdas = new TH2F("fHistMultNonRemovedLambdas", "fHistMultNonRemovedLambdas", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1198 | fHistMultNonRemovedElectrons = new TH2F("fHistMultNonRemovedElectrons", "fHistMultNonRemovedElectrons", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1199 | fHistMultNonRemovedPositrons = new TH2F("fHistMultNonRemovedPositrons", "fHistMultNonRemovedPositrons", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1200 | fHistMultNonRemovedMuPlus = new TH2F("fHistMultNonRemovedMuPlus", "fHistMultNonRemovedMuPlus", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1201 | fHistMultNonRemovedMuMinus = new TH2F("fHistMultNonRemovedMuMinus", "fHistMultNonRemovedMuMinus", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1202 | fHistMultNonRemovedNeutrons = new TH2F("fHistMultNonRemovedNeutrons", "fHistMultNonRemovedNeutrons", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1203 | fHistMultNonRemovedAntiNeutrons = new TH2F("fHistMultNonRemovedAntiNeutrons", "fHistMultNonRemovedAntiNeutrons", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1204 | ||
1205 | fHistMultNonRemovedGammas = new TH2F("fHistMultNonRemovedGammas", "fHistMultNonRemovedGammas", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1206 | ||
1207 | fHistMultRemovedGammas = new TH2F("fHistMultRemovedGammas", "fHistMultRemovedGammas", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1208 | fHistMultRemovedNeutrons = new TH2F("fHistMultRemovedNeutrons", "fHistMultRemovedNeutrons", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1209 | fHistMultRemovedAntiNeutrons = new TH2F("fHistMultRemovedAntiNeutrons", "fHistMultRemovedAntiNeutrons", 100, -0.5, 99.5, 10, -0.5, 9.5); | |
1210 | ||
1211 | fHistTrackMultvsNonRemovedCharged = new TH2F("fHistTrackMultvsNonRemovedCharged", "fHistTrackMultvsNonRemovedCharged", 1000, -0.5, 999.5, 100, -0.5, 99.5); | |
1212 | fHistTrackMultvsNonRemovedNeutral = new TH2F("fHistTrackMultvsNonRemovedNeutral", "fHistTrackMultvsNonRemovedNeutral", 1000, -0.5, 999.5, 100, -0.5, 99.5); | |
1213 | fHistTrackMultvsRemovedGamma = new TH2F("fHistTrackMultvsRemovedGamma", "fHistTrackMultvsRemovedGamma", 1000, -0.5, 999.5, 100, -0.5, 99.5); | |
1214 | ||
1215 | fHistClusterMultvsNonRemovedCharged = new TH2F("fHistClusterMultvsNonRemovedCharged", "fHistClusterMultvsNonRemovedCharged", 1000, -0.5, 999.5, 100, -0.5, 99.5); | |
1216 | fHistClusterMultvsNonRemovedNeutral = new TH2F("fHistClusterMultvsNonRemovedNeutral", "fHistClusterMultvsNonRemovedNeutral", 1000, -0.5, 999.5, 100, -0.5, 99.5); | |
1217 | fHistClusterMultvsRemovedGamma = new TH2F("fHistClusterMultvsRemovedGamma", "fHistClusterMultvsRemovedGamma", 1000, -0.5, 999.5, 100, -0.5, 99.5); | |
1218 | ||
1219 | fHistDxDzNonRemovedCharged = new TH2F("fHistDxDzNonRemovedCharged", "fHistDxDzNonRemovedCharged", 800, -200, 200, 800, -200, 200); | |
1220 | fHistDxDzRemovedCharged = new TH2F("fHistDxDzRemovedCharged", "fHistDxDzRemovedCharged", 800, -200, 200, 800, -200, 200); | |
1221 | fHistDxDzNonRemovedNeutral = new TH2F("fHistDxDzNonRemovedNeutral", "fHistDxDzNonRemovedNeutral", 800, -200, 200, 800, -200, 200); | |
1222 | fHistDxDzRemovedNeutral = new TH2F("fHistDxDzRemovedNeutral", "fHistDxDzRemovedNeutral", 800, -200, 200, 800, -200, 200); | |
1223 | ||
1224 | fHistPiPlusMult = new TH1F("fHistPiPlusMult", "fHistPiPlusMult", 2000, -0.5, 1999.5); | |
1225 | fHistPiMinusMult = new TH1F("fHistPiMinusMult", "fHistPiMinusMult", 2000, -0.5, 1999.5); | |
1226 | fHistPiZeroMult = new TH1F("fHistPiZeroMult", "fHistPiZeroMult", 2000, -0.5, 1999.5); | |
1227 | ||
1228 | fHistPiPlusMultAcc = new TH1F("fHistPiPlusMultAcc", "fHistPiPlusMultAcc", 2000, -0.5, 1999.5); | |
1229 | fHistPiMinusMultAcc = new TH1F("fHistPiMinusMultAcc", "fHistPiMinusMultAcc", 2000, -0.5, 1999.5); | |
1230 | fHistPiZeroMultAcc = new TH1F("fHistPiZeroMultAcc", "fHistPiZeroMultAcc", 2000, -0.5, 1999.5); | |
1231 | ||
ce546038 | 1232 | } |
1233 | ||
0651f6b4 | 1234 | void AliAnalysisEtMonteCarlo::FillOutputList(TList *list) |
1235 | {//fill the output list | |
e2ee5727 | 1236 | AliAnalysisEt::FillOutputList(list); |
1237 | ||
1238 | list->Add(fHistPrimElectronEtaEET); | |
1239 | list->Add(fHistSecElectronEtaEET); | |
1240 | list->Add(fHistConvElectronEtaEET); | |
1241 | list->Add(fHistPrimGammaEtaEET); | |
1242 | list->Add(fHistPion0GammaEtaEET); | |
1243 | list->Add(fHistOmega0GammaEtaEET); | |
1244 | list->Add(fHistEtaGammaEtaEET); | |
1245 | list->Add(fHistSecGammaEtaEET); | |
1246 | ||
1247 | list->Add(fHistPrimElectronEtaE); | |
1248 | list->Add(fHistSecElectronEtaE); | |
1249 | list->Add(fHistConvElectronEtaE); | |
1250 | list->Add(fHistPrimGammaEtaE); | |
1251 | list->Add(fHistPion0GammaEtaE); | |
1252 | list->Add(fHistOmega0GammaEtaE); | |
1253 | list->Add(fHistEtaGammaEtaE); | |
1254 | list->Add(fHistSecGammaEtaE); | |
1255 | ||
1256 | list->Add(fHistPrimElectronEtaERec); | |
1257 | list->Add(fHistSecElectronEtaERec); | |
1258 | list->Add(fHistConvElectronEtaERec); | |
1259 | list->Add(fHistPrimGammaEtaERec); | |
1260 | list->Add(fHistPion0GammaEtaERec); | |
1261 | list->Add(fHistOmega0GammaEtaERec); | |
1262 | list->Add(fHistEtaGammaEtaERec); | |
1263 | list->Add(fHistSecGammaEtaERec); | |
1264 | ||
1265 | list->Add(fHistAllERecEMC); | |
1266 | list->Add(fHistElectronERecEMC); | |
1267 | list->Add(fHistGammaERecEMC); | |
1268 | ||
1269 | list->Add(fHistElectronFirstMother); | |
1270 | list->Add(fHistElectronLastMother); | |
1271 | list->Add(fHistElectronFirstMotherEtaAcc); | |
1272 | list->Add(fHistElectronFirstMotherNPP); | |
1273 | list->Add(fHistElectronFirstMotherNPPAcc); | |
1274 | ||
1275 | list->Add(fHistGammaFirstMother); | |
1276 | list->Add(fHistGammaLastMother); | |
1277 | list->Add(fHistGammaFirstMotherEtaAcc); | |
1278 | list->Add(fHistGammaFirstMotherNPP); | |
1279 | list->Add(fHistGammaFirstMotherNPPAcc); | |
1280 | ||
1281 | list->Add(fHistRemovedOrNot); | |
1282 | ||
1283 | list->Add(fHistEtNonRemovedProtons); | |
1284 | list->Add(fHistEtNonRemovedAntiProtons); | |
1285 | list->Add(fHistEtNonRemovedPiPlus); | |
1286 | list->Add(fHistEtNonRemovedPiMinus); | |
1287 | list->Add(fHistEtNonRemovedKaonPlus); | |
1288 | list->Add(fHistEtNonRemovedKaonMinus); | |
1289 | list->Add(fHistEtNonRemovedK0s); | |
1290 | list->Add(fHistEtNonRemovedLambdas); | |
1291 | list->Add(fHistEtNonRemovedElectrons); | |
1292 | list->Add(fHistEtNonRemovedPositrons); | |
1293 | list->Add(fHistEtNonRemovedMuPlus); | |
1294 | list->Add(fHistEtNonRemovedMuMinus); | |
1295 | list->Add(fHistEtNonRemovedNeutrons); | |
1296 | list->Add(fHistEtNonRemovedAntiNeutrons); | |
1297 | list->Add(fHistEtNonRemovedGammas); | |
1298 | list->Add(fHistEtNonRemovedGammasFromPi0); | |
1299 | ||
1300 | list->Add(fHistEtRemovedGammas); | |
1301 | list->Add(fHistEtRemovedNeutrons); | |
1302 | list->Add(fHistEtRemovedAntiNeutrons); | |
1303 | ||
1304 | ||
1305 | list->Add(fHistMultNonRemovedProtons); | |
1306 | list->Add(fHistMultNonRemovedAntiProtons); | |
1307 | list->Add(fHistMultNonRemovedPiPlus); | |
1308 | list->Add(fHistMultNonRemovedPiMinus); | |
1309 | list->Add(fHistMultNonRemovedKaonPlus); | |
1310 | list->Add(fHistMultNonRemovedKaonMinus); | |
1311 | list->Add(fHistMultNonRemovedK0s); | |
1312 | list->Add(fHistMultNonRemovedLambdas); | |
1313 | list->Add(fHistMultNonRemovedElectrons); | |
1314 | list->Add(fHistMultNonRemovedPositrons); | |
1315 | list->Add(fHistMultNonRemovedMuPlus); | |
1316 | list->Add(fHistMultNonRemovedMuMinus); | |
1317 | list->Add(fHistMultNonRemovedNeutrons); | |
1318 | list->Add(fHistMultNonRemovedAntiNeutrons); | |
1319 | list->Add(fHistMultNonRemovedGammas); | |
1320 | ||
1321 | list->Add(fHistMultRemovedGammas); | |
1322 | list->Add(fHistMultRemovedNeutrons); | |
1323 | list->Add(fHistMultRemovedAntiNeutrons); | |
1324 | ||
1325 | list->Add(fHistTrackMultvsNonRemovedCharged); | |
1326 | list->Add(fHistTrackMultvsNonRemovedNeutral); | |
1327 | list->Add(fHistTrackMultvsRemovedGamma); | |
1328 | ||
1329 | list->Add(fHistClusterMultvsNonRemovedCharged); | |
1330 | list->Add(fHistClusterMultvsNonRemovedNeutral); | |
1331 | list->Add(fHistClusterMultvsRemovedGamma); | |
1332 | ||
1333 | //list->Add(fHistDecayVertexNonRemovedCharged); | |
1334 | //list->Add(fHistDecayVertexNonRemovedNeutral); | |
1335 | //list->Add(fHistDecayVertexRemovedCharged); | |
1336 | //list->Add(fHistDecayVertexRemovedNeutral); | |
1337 | ||
1338 | list->Add(fHistDxDzNonRemovedCharged); | |
1339 | list->Add(fHistDxDzRemovedCharged); | |
1340 | list->Add(fHistDxDzNonRemovedNeutral); | |
1341 | list->Add(fHistDxDzRemovedNeutral); | |
1342 | ||
1343 | list->Add(fHistPiPlusMult); | |
1344 | list->Add(fHistPiMinusMult); | |
1345 | list->Add(fHistPiZeroMult); | |
1346 | list->Add(fHistPiPlusMultAcc); | |
1347 | list->Add(fHistPiMinusMultAcc); | |
1348 | list->Add(fHistPiZeroMultAcc); | |
1349 | ||
0651f6b4 | 1350 | } |
1351 | ||
1352 | ||
13b0d3c1 | 1353 | bool AliAnalysisEtMonteCarlo::TrackHitsCalorimeter(TParticle* part, Double_t magField) |
1354 | { | |
e2ee5727 | 1355 | // printf(" TrackHitsCalorimeter - magField %f\n", magField); |
1356 | AliESDtrack *esdTrack = new AliESDtrack(part); | |
1357 | // Printf("MC Propagating track: eta: %f, phi: %f, pt: %f", esdTrack->Eta(), esdTrack->Phi(), esdTrack->Pt()); | |
1358 | ||
1359 | Bool_t prop = esdTrack->PropagateTo(fDetectorRadius, magField); | |
1360 | ||
1361 | // if(prop) Printf("Track propagated, eta: %f, phi: %f, pt: %f", esdTrack->Eta(), esdTrack->Phi(), esdTrack->Pt()); | |
1362 | ||
1363 | bool status = prop && | |
1364 | TMath::Abs(esdTrack->Eta()) < fEtaCutAcc && | |
1365 | esdTrack->Phi() > fPhiCutAccMin*TMath::Pi()/180. && | |
1366 | esdTrack->Phi() < fPhiCutAccMax*TMath::Pi()/180.; | |
1367 | delete esdTrack; | |
1368 | ||
1369 | return status; | |
1370 | } | |
1371 | ||
1372 | void AliAnalysisEtMonteCarlo::FillHistograms() | |
537e541d | 1373 | { // let base class fill its histograms, and us fill the local ones |
e2ee5727 | 1374 | AliAnalysisEt::FillHistograms(); |
1375 | //std::cout << fEtNonRemovedPiPlus << " " << fCentClass << std::endl; | |
1376 | ||
1377 | fHistEtNonRemovedProtons->Fill(fEtNonRemovedProtons, fCentClass); | |
1378 | fHistEtNonRemovedAntiProtons->Fill(fEtNonRemovedAntiProtons, fCentClass); | |
1379 | fHistEtNonRemovedKaonPlus->Fill(fEtNonRemovedKaonPlus, fCentClass); | |
1380 | fHistEtNonRemovedKaonMinus->Fill(fEtNonRemovedKaonMinus, fCentClass); | |
1381 | fHistEtNonRemovedK0s->Fill(fEtNonRemovedK0s, fCentClass); | |
1382 | fHistEtNonRemovedLambdas->Fill(fEtNonRemovedLambdas, fCentClass); | |
1383 | fHistEtNonRemovedPiPlus->Fill(fEtNonRemovedPiPlus, fCentClass); | |
1384 | fHistEtNonRemovedPiMinus->Fill(fEtNonRemovedPiMinus, fCentClass); | |
1385 | fHistEtNonRemovedElectrons->Fill(fEtNonRemovedElectrons, fCentClass); | |
1386 | fHistEtNonRemovedPositrons->Fill(fEtNonRemovedPositrons, fCentClass); | |
1387 | fHistEtNonRemovedMuPlus->Fill(fEtNonRemovedMuPlus, fCentClass); | |
1388 | fHistEtNonRemovedMuMinus->Fill(fEtNonRemovedMuMinus, fCentClass); | |
1389 | fHistEtNonRemovedNeutrons->Fill(fEtNonRemovedNeutrons, fCentClass); | |
1390 | fHistEtNonRemovedAntiNeutrons->Fill(fEtNonRemovedAntiNeutrons, fCentClass); | |
1391 | fHistEtNonRemovedGammas->Fill(fEtNonRemovedGammas, fCentClass); | |
1392 | fHistEtNonRemovedGammasFromPi0->Fill(fEtNonRemovedGammasFromPi0, fCentClass); | |
1393 | ||
1394 | fHistEtRemovedGammas->Fill(fEtRemovedGammas, fCentClass); | |
1395 | fHistEtRemovedNeutrons->Fill(fEtRemovedNeutrons, fCentClass); | |
1396 | fHistEtRemovedAntiNeutrons->Fill(fEtRemovedAntiNeutrons, fCentClass); | |
1397 | ||
1398 | fHistMultNonRemovedProtons->Fill(fMultNonRemovedProtons, fCentClass); | |
1399 | fHistMultNonRemovedAntiProtons->Fill(fMultNonRemovedAntiProtons, fCentClass); | |
1400 | fHistMultNonRemovedKaonPlus->Fill(fMultNonRemovedKaonPlus, fCentClass); | |
1401 | fHistMultNonRemovedKaonMinus->Fill(fMultNonRemovedKaonMinus, fCentClass); | |
1402 | fHistMultNonRemovedK0s->Fill(fMultNonRemovedK0s, fCentClass); | |
1403 | fHistMultNonRemovedLambdas->Fill(fMultNonRemovedLambdas, fCentClass); | |
1404 | fHistMultNonRemovedPiPlus->Fill(fMultNonRemovedPiPlus, fCentClass); | |
1405 | fHistMultNonRemovedPiMinus->Fill(fMultNonRemovedPiMinus, fCentClass); | |
1406 | fHistMultNonRemovedElectrons->Fill(fMultNonRemovedElectrons, fCentClass); | |
1407 | fHistMultNonRemovedPositrons->Fill(fMultNonRemovedPositrons, fCentClass); | |
1408 | fHistMultNonRemovedMuPlus->Fill(fMultNonRemovedMuPlus, fCentClass); | |
1409 | fHistMultNonRemovedMuMinus->Fill(fMultNonRemovedMuMinus, fCentClass); | |
1410 | fHistMultNonRemovedNeutrons->Fill(fMultNonRemovedNeutrons, fCentClass); | |
1411 | fHistMultNonRemovedAntiNeutrons->Fill(fMultNonRemovedAntiNeutrons, fCentClass); | |
1412 | fHistMultNonRemovedGammas->Fill(fMultNonRemovedGammas, fCentClass); | |
1413 | ||
1414 | fHistMultRemovedGammas->Fill(fMultRemovedGammas, fCentClass); | |
1415 | fHistMultRemovedNeutrons->Fill(fMultRemovedNeutrons, fCentClass); | |
1416 | fHistMultRemovedAntiNeutrons->Fill(fMultRemovedAntiNeutrons, fCentClass); | |
1417 | ||
1418 | fHistTrackMultvsNonRemovedCharged->Fill(fTrackMultInAcc, | |
1419 | fMultNonRemovedAntiProtons+fMultNonRemovedElectrons+fMultNonRemovedKaonMinus+fMultNonRemovedKaonPlus | |
1420 | +fMultNonRemovedMuMinus+fMultNonRemovedMuPlus+fMultNonRemovedPiMinus+fMultNonRemovedPiPlus+fMultNonRemovedPositrons | |
1421 | +fMultNonRemovedProtons); | |
1422 | ||
1423 | fHistTrackMultvsNonRemovedNeutral->Fill(fTrackMultInAcc, | |
1424 | fMultNonRemovedNeutrons+fMultNonRemovedAntiNeutrons+fMultNonRemovedK0s+fMultNonRemovedLambdas); | |
1425 | ||
1426 | fHistTrackMultvsRemovedGamma->Fill(fTrackMultInAcc, | |
1427 | fMultRemovedGammas); | |
1428 | ||
1429 | fHistClusterMultvsNonRemovedCharged->Fill(fNeutralMultiplicity, | |
1430 | fMultNonRemovedAntiProtons+fMultNonRemovedElectrons+fMultNonRemovedKaonMinus | |
1431 | +fMultNonRemovedKaonPlus+fMultNonRemovedMuMinus+fMultNonRemovedMuPlus | |
1432 | +fMultNonRemovedPiMinus+fMultNonRemovedPiPlus+fMultNonRemovedPositrons+fMultNonRemovedProtons); | |
1433 | ||
1434 | fHistClusterMultvsNonRemovedNeutral->Fill(fTrackMultInAcc, | |
1435 | fMultNonRemovedNeutrons+fMultNonRemovedAntiNeutrons+fMultNonRemovedK0s+fMultNonRemovedLambdas); | |
1436 | ||
1437 | fHistClusterMultvsRemovedGamma->Fill(fTrackMultInAcc, | |
1438 | fMultRemovedGammas); | |
1439 | ||
13b0d3c1 | 1440 | } |
1441 | ||
e2ee5727 | 1442 | |
1443 | ||
1444 | ||
1445 | ||
1446 | ||
1447 | ||
1448 | ||
1449 | ||
1450 | ||
1451 | ||
1452 | ||
1453 | ||
1454 | ||
1455 | ||
1456 |