1 /**************************************************************************
2 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //-----------------------------------------------------------------
17 // AliAnalysisTaskPerformanceSrange class
18 // This task is for a performance study of V0 identification.
19 // It works with MC info and ESD tree.
20 // Author: H.Ricaud, H.Ricaud@gsi.de
21 //-----------------------------------------------------------------
23 #include <Riostream.h>
36 #include "AliAnalysisManager.h"
38 #include "AliPhysicsSelection.h"
40 #include "AliESDVertex.h"
41 #include "AliESDEvent.h"
42 #include "AliESDInputHandler.h"
43 #include "AliESDtrack.h"
45 #include "AliESDtrackCuts.h"
47 #include "AliAODEvent.h"
48 #include "AliAODVertex.h"
49 #include "AliAODTrack.h"
51 #include "AliAODMCHeader.h"
52 #include "AliAODInputHandler.h"
53 //#include "AliV0vertexer.h"
55 #include "AliAODMCParticle.h"
57 #include "AliMCEventHandler.h"
58 #include "AliMCEvent.h"
60 #include "AliGenEventHeader.h"
64 #include "AliKFVertex.h"
65 #include "AliVertexerTracks.h"
67 #include "AliAnalysisTaskPerformanceStrange.h"
70 ClassImp(AliAnalysisTaskPerformanceStrange)
73 //________________________________________________________________________
74 AliAnalysisTaskPerformanceStrange::AliAnalysisTaskPerformanceStrange()
75 : AliAnalysisTaskSE(), fAnalysisMC(999), fAnalysisType("infoType"), fCollidingSystems(0), fUsePID("infoPID"), fUseCut("infoCut"), fPhysTrigSel(0), fListHist(0),
76 fHistMCPrimaryVertexX(0),
77 fHistMCPrimaryVertexY(0),
78 fHistMCPrimaryVertexZ(0),
79 fHistMCMultiplicityPrimary(0),
80 fHistMCMultiplicityTracks(0),
81 fHistMCtracksProdRadiusK0s(0),
82 fHistMCtracksProdRadiusLambda(0),
83 fHistMCtracksProdRadiusAntiLambda(0),
84 fHistMCtracksDecayRadiusK0s(0),
85 fHistMCtracksDecayRadiusLambda(0),
86 fHistMCtracksDecayRadiusAntiLambda(0),
88 fHistMCPtAllLambda(0),
89 fHistMCPtAllAntiLambda(0),
90 fHistMCProdRadiusK0s(0),
91 fHistMCProdRadiusLambda(0),
92 fHistMCProdRadiusAntiLambda(0),
95 fHistMCPtAntiLambda(0),
96 fHistMCPtLambdaFromSigma(0),
97 fHistMCPtAntiLambdaFromSigma(0),
99 fHistNTimesRecK0sMI(0),
100 fHistNTimesRecLambda(0),
101 fHistNTimesRecLambdaMI(0),
102 fHistNTimesRecAntiLambda(0),
103 fHistNTimesRecAntiLambdaMI(0),
104 fHistNTimesRecK0sVsPt(0),
105 fHistNTimesRecK0sVsPtMI(0),
106 fHistNTimesRecLambdaVsPt(0),
107 fHistNTimesRecLambdaVsPtMI(0),
108 fHistNTimesRecAntiLambdaVsPt(0),
109 fHistNTimesRecAntiLambdaVsPtMI(0),
110 fHistTrackPerEvent(0),
111 fHistMCDaughterTrack(0),
112 fHistPrimaryVertexX(0),
113 fHistPrimaryVertexY(0),
114 fHistPrimaryVertexZ(0),
115 fHistPrimaryVertexPosXV0events(0),
116 fHistPrimaryVertexPosYV0events(0),
117 fHistPrimaryVertexPosZV0events(0),
118 fHistDcaPosToPrimVertex(0),
119 fHistDcaNegToPrimVertex(0),
120 fHistDcaPosToPrimVertexZoom(0),
121 fHistDcaNegToPrimVertexZoom(0),
123 fHistDecayLengthV0(0),
124 fHistDcaV0Daughters(0),
126 fHistCosPointAngle(0),
127 fHistCosPointAngleZoom(0),
129 fHistProdRadiusMI(0),
130 fHistV0Multiplicity(0),
131 fHistV0MultiplicityMI(0),
132 fHistChi2KFBeforeCutK0s(0),
133 fHistChi2KFBeforeCutLambda(0),
134 fHistChi2KFBeforeCutAntiLambda(0),
135 fHistChi2KFAfterCutK0s(0),
136 fHistChi2KFAfterCutLambda(0),
137 fHistChi2KFAfterCutAntiLambda(0),
141 fHistMassLambdaMI(0),
142 fHistMassAntiLambda(0),
143 fHistMassAntiLambdaMI(0),
144 fHistMassVsRadiusK0(0),
145 fHistMassVsRadiusK0MI(0),
146 fHistMassVsRadiusLambda(0),
147 fHistMassVsRadiusLambdaMI(0),
148 fHistMassVsRadiusAntiLambda(0),
149 fHistMassVsRadiusAntiLambdaMI(0),
151 fHistPtVsMassK0MI(0),
152 fHistPtVsMassLambda(0),
153 fHistPtVsMassLambdaMI(0),
154 fHistPtVsMassAntiLambda(0),
155 fHistPtVsMassAntiLambdaMI(0),
156 fHistArmenterosPodolanski(0),
157 fHistArmenterosPodolanskiMI(0),
158 fHistNsigmaPosPionAntiLambda(0),
159 fHistNsigmaNegProtonAntiLambda(0),
160 fHistNsigmaPosProtonLambda(0),
161 fHistNsigmaNegPionLambda(0),
162 fHistNsigmaPosPionK0(0),
163 fHistNsigmaNegPionK0(0),
166 fHistAsMcRapLambda(0),
167 fHistAsMcRapLambdaMI(0),
168 fHistAsMcRapAntiLambda(0),
169 fHistAsMcRapAntiLambdaMI(0),
172 fHistAsMcPtLambda(0),
173 fHistAsMcPtLambdaMI(0),
174 fHistAsMcPtAntiLambda(0),
175 fHistAsMcPtAntiLambdaMI(0),
176 fHistAsMcPtZoomK0(0),
177 fHistAsMcPtZoomK0MI(0),
178 fHistAsMcPtZoomLambda(0),
179 fHistAsMcPtZoomLambdaMI(0),
180 fHistAsMcProdRadiusK0(0),
181 fHistAsMcProdRadiusK0MI(0),
182 fHistAsMcProdRadiusLambda(0),
183 fHistAsMcProdRadiusLambdaMI(0),
184 fHistAsMcProdRadiusAntiLambda(0),
185 fHistAsMcProdRadiusAntiLambdaMI(0),
186 fHistAsMcProdRadiusXvsYK0s(0),
187 fHistAsMcProdRadiusXvsYK0sMI(0),
188 fHistAsMcProdRadiusXvsYLambda(0),
189 fHistAsMcProdRadiusXvsYLambdaMI(0),
190 fHistAsMcProdRadiusXvsYAntiLambda(0),
191 fHistAsMcProdRadiusXvsYAntiLambdaMI(0),
193 fHistPidMcMassK0MI(0),
194 fHistPidMcMassLambda(0),
195 fHistPidMcMassLambdaMI(0),
196 fHistPidMcMassAntiLambda(0),
197 fHistPidMcMassAntiLambdaMI(0),
199 fHistAsMcMassK0MI(0),
200 fHistAsMcMassLambda(0),
201 fHistAsMcMassLambdaMI(0),
202 fHistAsMcMassAntiLambda(0),
203 fHistAsMcMassAntiLambdaMI(0),
204 fHistAsMcPtVsMassK0(0),
205 fHistAsMcPtVsMassK0MI(0),
206 fHistAsMcPtVsMassLambda(0),
207 fHistAsMcPtVsMassLambdaMI(0),
208 fHistAsMcPtVsMassAntiLambda(0),
209 fHistAsMcPtVsMassAntiLambdaMI(0),
210 fHistAsMcMassVsRadiusK0(0),
211 fHistAsMcMassVsRadiusK0MI(0),
212 fHistAsMcMassVsRadiusLambda(0),
213 fHistAsMcMassVsRadiusLambdaMI(0),
214 fHistAsMcMassVsRadiusAntiLambda(0),
215 fHistAsMcMassVsRadiusAntiLambdaMI(0),
219 fHistAsMcResrVsRadiusK0(0),
220 fHistAsMcReszVsRadiusK0(0),
221 fHistAsMcResxK0MI(0),
222 fHistAsMcResyK0MI(0),
223 fHistAsMcReszK0MI(0),
224 fHistAsMcResrVsRadiusK0MI(0),
225 fHistAsMcReszVsRadiusK0MI(0),
226 fHistAsMcResxLambda(0),
227 fHistAsMcResyLambda(0),
228 fHistAsMcReszLambda(0),
229 fHistAsMcResrVsRadiusLambda(0),
230 fHistAsMcReszVsRadiusLambda(0),
231 fHistAsMcResxLambdaMI(0),
232 fHistAsMcResyLambdaMI(0),
233 fHistAsMcReszLambdaMI(0),
234 fHistAsMcResrVsRadiusLambdaMI(0),
235 fHistAsMcReszVsRadiusLambdaMI(0),
236 fHistAsMcResxAntiLambda(0),
237 fHistAsMcResyAntiLambda(0),
238 fHistAsMcReszAntiLambda(0),
239 fHistAsMcResrVsRadiusAntiLambda(0),
240 fHistAsMcReszVsRadiusAntiLambda(0),
241 fHistAsMcResxAntiLambdaMI(0),
242 fHistAsMcResyAntiLambdaMI(0),
243 fHistAsMcReszAntiLambdaMI(0),
244 fHistAsMcResrVsRadiusAntiLambdaMI(0),
245 fHistAsMcReszVsRadiusAntiLambdaMI(0),
247 fHistAsMcResPtK0MI(0),
248 fHistAsMcResPtLambda(0),
249 fHistAsMcResPtLambdaMI(0),
250 fHistAsMcResPtAntiLambda(0),
251 fHistAsMcResPtAntiLambdaMI(0),
252 fHistAsMcResPtVsRapK0(0),
253 fHistAsMcResPtVsRapK0MI(0),
254 fHistAsMcResPtVsRapLambda(0),
255 fHistAsMcResPtVsRapLambdaMI(0),
256 fHistAsMcResPtVsRapAntiLambda(0),
257 fHistAsMcResPtVsRapAntiLambdaMI(0),
258 fHistAsMcResPtVsPtK0(0),
259 fHistAsMcResPtVsPtK0MI(0),
260 fHistAsMcResPtVsPtLambda(0),
261 fHistAsMcResPtVsPtLambdaMI(0),
262 fHistAsMcResPtVsPtAntiLambda(0),
263 fHistAsMcResPtVsPtAntiLambdaMI(0),
264 fHistAsMcMotherPdgCodeK0s(0),
265 fHistAsMcMotherPdgCodeK0sMI(0),
266 fHistAsMcMotherPdgCodeLambda(0),
267 fHistAsMcMotherPdgCodeLambdaMI(0),
268 fHistAsMcMotherPdgCodeAntiLambda(0),
269 fHistAsMcMotherPdgCodeAntiLambdaMI(0),
270 fHistAsMcPtLambdaFromSigma(0),
271 fHistAsMcPtLambdaFromSigmaMI(0),
272 fHistAsMcPtAntiLambdaFromSigma(0),
273 fHistAsMcPtAntiLambdaFromSigmaMI(0),
274 fHistAsMcSecondaryPtVsRapK0s(0),
275 fHistAsMcSecondaryPtVsRapK0sMI(0),
276 fHistAsMcSecondaryPtVsRapLambda(0),
277 fHistAsMcSecondaryPtVsRapLambdaMI(0),
278 fHistAsMcSecondaryPtVsRapAntiLambda(0),
279 fHistAsMcSecondaryPtVsRapAntiLambdaMI(0),
280 fHistAsMcSecondaryProdRadiusK0s(0),
281 fHistAsMcSecondaryProdRadiusK0sMI(0),
282 fHistAsMcSecondaryProdRadiusLambda(0),
283 fHistAsMcSecondaryProdRadiusLambdaMI(0),
284 fHistAsMcSecondaryProdRadiusAntiLambda(0),
285 fHistAsMcSecondaryProdRadiusAntiLambdaMI(0),
286 fHistAsMcSecondaryProdRadiusXvsYK0s(0),
287 fHistAsMcSecondaryProdRadiusXvsYK0sMI(0),
288 fHistAsMcSecondaryProdRadiusXvsYLambda(0),
289 fHistAsMcSecondaryProdRadiusXvsYLambdaMI(0),
290 fHistAsMcSecondaryProdRadiusXvsYAntiLambda(0),
291 fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI(0),
292 fHistAsMcSecondaryMotherPdgCodeK0s(0),
293 fHistAsMcSecondaryMotherPdgCodeK0sMI(0),
294 fHistAsMcSecondaryMotherPdgCodeLambda(0),
295 fHistAsMcSecondaryMotherPdgCodeLambdaMI(0),
296 fHistAsMcSecondaryMotherPdgCodeAntiLambda(0),
297 fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI(0),
298 fHistAsMcSecondaryPtLambdaFromSigma(0),
299 fHistAsMcSecondaryPtLambdaFromSigmaMI(0),
300 fHistAsMcSecondaryPtAntiLambdaFromSigma(0),
301 fHistAsMcSecondaryPtAntiLambdaFromSigmaMI(0)
311 //________________________________________________________________________
312 AliAnalysisTaskPerformanceStrange::AliAnalysisTaskPerformanceStrange(const char *name)
313 : AliAnalysisTaskSE(name), fAnalysisMC(999), fAnalysisType("infoType"), fCollidingSystems(0), fUsePID("infoPID"), fUseCut("infocut"), fPhysTrigSel(0), fListHist(0),
314 fHistMCPrimaryVertexX(0),
315 fHistMCPrimaryVertexY(0),
316 fHistMCPrimaryVertexZ(0),
317 fHistMCMultiplicityPrimary(0),
318 fHistMCMultiplicityTracks(0),
319 fHistMCtracksProdRadiusK0s(0),
320 fHistMCtracksProdRadiusLambda(0),
321 fHistMCtracksProdRadiusAntiLambda(0),
322 fHistMCtracksDecayRadiusK0s(0),
323 fHistMCtracksDecayRadiusLambda(0),
324 fHistMCtracksDecayRadiusAntiLambda(0),
326 fHistMCPtAllLambda(0),
327 fHistMCPtAllAntiLambda(0),
328 fHistMCProdRadiusK0s(0),
329 fHistMCProdRadiusLambda(0),
330 fHistMCProdRadiusAntiLambda(0),
333 fHistMCPtAntiLambda(0),
334 fHistMCPtLambdaFromSigma(0),
335 fHistMCPtAntiLambdaFromSigma(0),
336 fHistNTimesRecK0s(0),
337 fHistNTimesRecK0sMI(0),
338 fHistNTimesRecLambda(0),
339 fHistNTimesRecLambdaMI(0),
340 fHistNTimesRecAntiLambda(0),
341 fHistNTimesRecAntiLambdaMI(0),
342 fHistNTimesRecK0sVsPt(0),
343 fHistNTimesRecK0sVsPtMI(0),
344 fHistNTimesRecLambdaVsPt(0),
345 fHistNTimesRecLambdaVsPtMI(0),
346 fHistNTimesRecAntiLambdaVsPt(0),
347 fHistNTimesRecAntiLambdaVsPtMI(0),
348 fHistTrackPerEvent(0),
349 fHistMCDaughterTrack(0),
350 fHistPrimaryVertexX(0),
351 fHistPrimaryVertexY(0),
352 fHistPrimaryVertexZ(0),
353 fHistPrimaryVertexPosXV0events(0),
354 fHistPrimaryVertexPosYV0events(0),
355 fHistPrimaryVertexPosZV0events(0),
356 fHistDcaPosToPrimVertex(0),
357 fHistDcaNegToPrimVertex(0),
358 fHistDcaPosToPrimVertexZoom(0),
359 fHistDcaNegToPrimVertexZoom(0),
361 fHistDecayLengthV0(0),
362 fHistDcaV0Daughters(0),
364 fHistCosPointAngle(0),
365 fHistCosPointAngleZoom(0),
367 fHistProdRadiusMI(0),
368 fHistV0Multiplicity(0),
369 fHistV0MultiplicityMI(0),
370 fHistChi2KFBeforeCutK0s(0),
371 fHistChi2KFBeforeCutLambda(0),
372 fHistChi2KFBeforeCutAntiLambda(0),
373 fHistChi2KFAfterCutK0s(0),
374 fHistChi2KFAfterCutLambda(0),
375 fHistChi2KFAfterCutAntiLambda(0),
379 fHistMassLambdaMI(0),
380 fHistMassAntiLambda(0),
381 fHistMassAntiLambdaMI(0),
382 fHistMassVsRadiusK0(0),
383 fHistMassVsRadiusK0MI(0),
384 fHistMassVsRadiusLambda(0),
385 fHistMassVsRadiusLambdaMI(0),
386 fHistMassVsRadiusAntiLambda(0),
387 fHistMassVsRadiusAntiLambdaMI(0),
389 fHistPtVsMassK0MI(0),
390 fHistPtVsMassLambda(0),
391 fHistPtVsMassLambdaMI(0),
392 fHistPtVsMassAntiLambda(0),
393 fHistPtVsMassAntiLambdaMI(0),
394 fHistArmenterosPodolanski(0),
395 fHistArmenterosPodolanskiMI(0),
396 fHistNsigmaPosPionAntiLambda(0),
397 fHistNsigmaNegProtonAntiLambda(0),
398 fHistNsigmaPosProtonLambda(0),
399 fHistNsigmaNegPionLambda(0),
400 fHistNsigmaPosPionK0(0),
401 fHistNsigmaNegPionK0(0),
404 fHistAsMcRapLambda(0),
405 fHistAsMcRapLambdaMI(0),
406 fHistAsMcRapAntiLambda(0),
407 fHistAsMcRapAntiLambdaMI(0),
410 fHistAsMcPtLambda(0),
411 fHistAsMcPtLambdaMI(0),
412 fHistAsMcPtAntiLambda(0),
413 fHistAsMcPtAntiLambdaMI(0),
414 fHistAsMcPtZoomK0(0),
415 fHistAsMcPtZoomK0MI(0),
416 fHistAsMcPtZoomLambda(0),
417 fHistAsMcPtZoomLambdaMI(0),
418 fHistAsMcProdRadiusK0(0),
419 fHistAsMcProdRadiusK0MI(0),
420 fHistAsMcProdRadiusLambda(0),
421 fHistAsMcProdRadiusLambdaMI(0),
422 fHistAsMcProdRadiusAntiLambda(0),
423 fHistAsMcProdRadiusAntiLambdaMI(0),
424 fHistAsMcProdRadiusXvsYK0s(0),
425 fHistAsMcProdRadiusXvsYK0sMI(0),
426 fHistAsMcProdRadiusXvsYLambda(0),
427 fHistAsMcProdRadiusXvsYLambdaMI(0),
428 fHistAsMcProdRadiusXvsYAntiLambda(0),
429 fHistAsMcProdRadiusXvsYAntiLambdaMI(0),
431 fHistPidMcMassK0MI(0),
432 fHistPidMcMassLambda(0),
433 fHistPidMcMassLambdaMI(0),
434 fHistPidMcMassAntiLambda(0),
435 fHistPidMcMassAntiLambdaMI(0),
437 fHistAsMcMassK0MI(0),
438 fHistAsMcMassLambda(0),
439 fHistAsMcMassLambdaMI(0),
440 fHistAsMcMassAntiLambda(0),
441 fHistAsMcMassAntiLambdaMI(0),
442 fHistAsMcPtVsMassK0(0),
443 fHistAsMcPtVsMassK0MI(0),
444 fHistAsMcPtVsMassLambda(0),
445 fHistAsMcPtVsMassLambdaMI(0),
446 fHistAsMcPtVsMassAntiLambda(0),
447 fHistAsMcPtVsMassAntiLambdaMI(0),
448 fHistAsMcMassVsRadiusK0(0),
449 fHistAsMcMassVsRadiusK0MI(0),
450 fHistAsMcMassVsRadiusLambda(0),
451 fHistAsMcMassVsRadiusLambdaMI(0),
452 fHistAsMcMassVsRadiusAntiLambda(0),
453 fHistAsMcMassVsRadiusAntiLambdaMI(0),
457 fHistAsMcResrVsRadiusK0(0),
458 fHistAsMcReszVsRadiusK0(0),
459 fHistAsMcResxK0MI(0),
460 fHistAsMcResyK0MI(0),
461 fHistAsMcReszK0MI(0),
462 fHistAsMcResrVsRadiusK0MI(0),
463 fHistAsMcReszVsRadiusK0MI(0),
464 fHistAsMcResxLambda(0),
465 fHistAsMcResyLambda(0),
466 fHistAsMcReszLambda(0),
467 fHistAsMcResrVsRadiusLambda(0),
468 fHistAsMcReszVsRadiusLambda(0),
469 fHistAsMcResxLambdaMI(0),
470 fHistAsMcResyLambdaMI(0),
471 fHistAsMcReszLambdaMI(0),
472 fHistAsMcResrVsRadiusLambdaMI(0),
473 fHistAsMcReszVsRadiusLambdaMI(0),
474 fHistAsMcResxAntiLambda(0),
475 fHistAsMcResyAntiLambda(0),
476 fHistAsMcReszAntiLambda(0),
477 fHistAsMcResrVsRadiusAntiLambda(0),
478 fHistAsMcReszVsRadiusAntiLambda(0),
479 fHistAsMcResxAntiLambdaMI(0),
480 fHistAsMcResyAntiLambdaMI(0),
481 fHistAsMcReszAntiLambdaMI(0),
482 fHistAsMcResrVsRadiusAntiLambdaMI(0),
483 fHistAsMcReszVsRadiusAntiLambdaMI(0),
485 fHistAsMcResPtK0MI(0),
486 fHistAsMcResPtLambda(0),
487 fHistAsMcResPtLambdaMI(0),
488 fHistAsMcResPtAntiLambda(0),
489 fHistAsMcResPtAntiLambdaMI(0),
490 fHistAsMcResPtVsRapK0(0),
491 fHistAsMcResPtVsRapK0MI(0),
492 fHistAsMcResPtVsRapLambda(0),
493 fHistAsMcResPtVsRapLambdaMI(0),
494 fHistAsMcResPtVsRapAntiLambda(0),
495 fHistAsMcResPtVsRapAntiLambdaMI(0),
496 fHistAsMcResPtVsPtK0(0),
497 fHistAsMcResPtVsPtK0MI(0),
498 fHistAsMcResPtVsPtLambda(0),
499 fHistAsMcResPtVsPtLambdaMI(0),
500 fHistAsMcResPtVsPtAntiLambda(0),
501 fHistAsMcResPtVsPtAntiLambdaMI(0),
502 fHistAsMcMotherPdgCodeK0s(0),
503 fHistAsMcMotherPdgCodeK0sMI(0),
504 fHistAsMcMotherPdgCodeLambda(0),
505 fHistAsMcMotherPdgCodeLambdaMI(0),
506 fHistAsMcMotherPdgCodeAntiLambda(0),
507 fHistAsMcMotherPdgCodeAntiLambdaMI(0),
508 fHistAsMcPtLambdaFromSigma(0),
509 fHistAsMcPtLambdaFromSigmaMI(0),
510 fHistAsMcPtAntiLambdaFromSigma(0),
511 fHistAsMcPtAntiLambdaFromSigmaMI(0),
512 fHistAsMcSecondaryPtVsRapK0s(0),
513 fHistAsMcSecondaryPtVsRapK0sMI(0),
514 fHistAsMcSecondaryPtVsRapLambda(0),
515 fHistAsMcSecondaryPtVsRapLambdaMI(0),
516 fHistAsMcSecondaryPtVsRapAntiLambda(0),
517 fHistAsMcSecondaryPtVsRapAntiLambdaMI(0),
518 fHistAsMcSecondaryProdRadiusK0s(0),
519 fHistAsMcSecondaryProdRadiusK0sMI(0),
520 fHistAsMcSecondaryProdRadiusLambda(0),
521 fHistAsMcSecondaryProdRadiusLambdaMI(0),
522 fHistAsMcSecondaryProdRadiusAntiLambda(0),
523 fHistAsMcSecondaryProdRadiusAntiLambdaMI(0),
524 fHistAsMcSecondaryProdRadiusXvsYK0s(0),
525 fHistAsMcSecondaryProdRadiusXvsYK0sMI(0),
526 fHistAsMcSecondaryProdRadiusXvsYLambda(0),
527 fHistAsMcSecondaryProdRadiusXvsYLambdaMI(0),
528 fHistAsMcSecondaryProdRadiusXvsYAntiLambda(0),
529 fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI(0),
530 fHistAsMcSecondaryMotherPdgCodeK0s(0),
531 fHistAsMcSecondaryMotherPdgCodeK0sMI(0),
532 fHistAsMcSecondaryMotherPdgCodeLambda(0),
533 fHistAsMcSecondaryMotherPdgCodeLambdaMI(0),
534 fHistAsMcSecondaryMotherPdgCodeAntiLambda(0),
535 fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI(0),
536 fHistAsMcSecondaryPtLambdaFromSigma(0),
537 fHistAsMcSecondaryPtLambdaFromSigmaMI(0),
538 fHistAsMcSecondaryPtAntiLambdaFromSigma(0),
539 fHistAsMcSecondaryPtAntiLambdaFromSigmaMI(0)
543 // Define output slots only here
544 // Output slot #1 writes into a TList container
545 DefineOutput(1, TList::Class());
548 //________________________________________________________________________
549 void AliAnalysisTaskPerformanceStrange::UserCreateOutputObjects()
551 // Events selection and trigger
552 fPhysTrigSel = new AliPhysicsSelection();
555 fListHist = new TList();
556 //AliLog::SetGlobalLogLevel(AliLog::kError);
558 // Bo: tbd: condition before allocation (i.e. if (!fHistMCMultiplicityPrimary){...} for each histo...
567 fHistMCPrimaryVertexX = new TH1F("h1MCPrimaryVertexX", "MC Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
568 fListHist->Add(fHistMCPrimaryVertexX);
570 fHistMCPrimaryVertexY = new TH1F("h1MCPrimaryVertexY", "MC Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
571 fListHist->Add(fHistMCPrimaryVertexY);
573 fHistMCPrimaryVertexZ = new TH1F("h1MCPrimaryVertexZ", "MC Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
574 fListHist->Add(fHistMCPrimaryVertexZ);
577 fHistMCMultiplicityPrimary = new TH1F("h1MCMultiplicityPrimary", "MC Primary Particles;NPrimary;Count", 201, -0.5, 200.5);
578 fListHist->Add(fHistMCMultiplicityPrimary);
580 fHistMCMultiplicityTracks = new TH1F("h1MCMultiplicityTracks", "MC Tracks;Ntracks;Count", 201, -0.5, 200.5);
581 fListHist->Add(fHistMCMultiplicityTracks);
583 // Production Radius of non-primary particles:
584 fHistMCtracksProdRadiusK0s = new TH2F("h2MCtracksProdRadiusK0s","Non-primary MC K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
585 fListHist->Add(fHistMCtracksProdRadiusK0s);
587 fHistMCtracksProdRadiusLambda = new TH2F("h2MCtracksProdRadiusLambda","Non-primary MC #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
588 fListHist->Add(fHistMCtracksProdRadiusLambda);
590 fHistMCtracksProdRadiusAntiLambda = new TH2F("h2MCtracksProdRadiusAntiLambda","Non-primary MC #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
591 fListHist->Add(fHistMCtracksProdRadiusAntiLambda);
593 // Decay Radius of non-primary particles:
594 fHistMCtracksDecayRadiusK0s = new TH1F("h1MCtracksDecayRadiusK0s","Non-primary MC K^{0} Decay Radius;r (cm)",101,-1,100);
595 fListHist->Add(fHistMCtracksDecayRadiusK0s);
597 fHistMCtracksDecayRadiusLambda = new TH1F("h1MCtracksDecayRadiusLambda","Non-primary MC #Lambda^{0} Decay Radius;r (cm)",101,-1,100);
598 fListHist->Add(fHistMCtracksDecayRadiusLambda);
600 fHistMCtracksDecayRadiusAntiLambda = new TH1F("h1MCtracksDecayRadiusAntiLambda","Non-primary #bar{#Lambda}^{0} Decay Radius;r (cm)",100,1,101);
601 fListHist->Add(fHistMCtracksDecayRadiusAntiLambda);
603 // Pt Distribution of non-primary particles:
604 fHistMCPtAllK0s = new TH1F("h1MCPtAllK0s", "Non-primary MC K^{0};p_{t} (GeV/c);Counts",200,0,10);
605 fListHist->Add(fHistMCPtAllK0s);
607 fHistMCPtAllLambda = new TH1F("h1MCPtAllLambda", "Non-primary MC #Lambda^{0};p_{t} (GeV/c);Counts",200,0,10);
608 fListHist->Add(fHistMCPtAllLambda);
610 fHistMCPtAllAntiLambda = new TH1F("h1MCPtAllAntiLambda", "Non-primary MC #bar{#Lambda}^{0};p_{t} (GeV/c);Counts",200,0,10);
611 fListHist->Add(fHistMCPtAllAntiLambda);
614 fHistMCProdRadiusK0s = new TH1F("h1MCProdRadiusK0s", "MC K^{0} Production Radius;r (cm);Count", 400, -2, 2);
615 fListHist->Add(fHistMCProdRadiusK0s);
617 fHistMCProdRadiusLambda = new TH1F("h1MCProdRadiusLambda", "MC #Lambda^{0} Production Radius;r (cm);Count", 400, -2, 2);
618 fListHist->Add(fHistMCProdRadiusLambda);
620 fHistMCProdRadiusAntiLambda = new TH1F("h1MCProdRadiusAntiLambda", "MC #bar{#Lambda}^{0} Production Radius;r (cm);Count", 400, -2, 2);
621 fListHist->Add(fHistMCProdRadiusAntiLambda);
624 // Pt and rapidity distribution:
625 fHistMCPtK0s = new TH1F("h1MCPtK0s", "K^{0};p_{t} (GeV/c)",200,0,10);
626 fListHist->Add(fHistMCPtK0s);
628 fHistMCPtLambda = new TH1F("h1MCPtLambda", "#Lambda^{0};p_{t} (GeV/c)",200,0,10);
629 fListHist->Add(fHistMCPtLambda);
631 fHistMCPtAntiLambda = new TH1F("h1MCPtAntiLambda", "#bar{#Lambda}^{0};p_{t} (GeV/c)",200,0,10);
632 fListHist->Add(fHistMCPtAntiLambda);
634 // Pt distribution of Lambda coming from Sigma decay
635 fHistMCPtLambdaFromSigma = new TH1F("h1MCPtLambdaFromSigma", "#Lambda^{0};p_{t} (GeV/c)",200,0,10);
636 fListHist->Add(fHistMCPtLambdaFromSigma);
638 fHistMCPtAntiLambdaFromSigma = new TH1F("h1MCPtAntiLambdaFromSigma", "#Lambda^{0};p_{t} (GeV/c)",200,0,10);
639 fListHist->Add(fHistMCPtAntiLambdaFromSigma);
641 // Multiple reconstruction studies
642 fHistNTimesRecK0s = new TH1F("h1NTimesRecK0s","number of times a K0s is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
643 fListHist->Add(fHistNTimesRecK0s);
644 fHistNTimesRecK0sMI = new TH1F("h1NTimesRecK0sMI","number of times a K0s MI is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
645 fListHist->Add(fHistNTimesRecK0sMI);
647 fHistNTimesRecLambda = new TH1F("h1NTimesRecLambda","number of times a Lambda is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
648 fListHist->Add(fHistNTimesRecLambda);
649 fHistNTimesRecLambdaMI = new TH1F("h1NTimesRecLambdaMI","number of times a Lambda MI is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
650 fListHist->Add(fHistNTimesRecLambdaMI);
652 fHistNTimesRecAntiLambda = new TH1F("h1NTimesRecAntiLambda","number of times an AntiLambda is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
653 fListHist->Add(fHistNTimesRecAntiLambda);
654 fHistNTimesRecAntiLambdaMI = new TH1F("h1NTimesRecAntiLambdaMI","number of times an AntiLambda MI is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
655 fListHist->Add(fHistNTimesRecAntiLambdaMI);
657 fHistNTimesRecK0sVsPt = new TH2F("h2NTimesRecK0sVsPt","NTimes versus Pt, K^{0} in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
658 fListHist->Add(fHistNTimesRecK0sVsPt);
659 fHistNTimesRecK0sVsPtMI = new TH2F("h2NTimesRecK0sVsPtMI","NTimes versus Pt, K^{0}, on-the-fly finder, in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
660 fListHist->Add(fHistNTimesRecK0sVsPtMI);
662 fHistNTimesRecLambdaVsPt = new TH2F("h2NTimesRecLambdaVsPt","NTimes versus Pt, #Lambda^{0} in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
663 fListHist->Add(fHistNTimesRecLambdaVsPt);
664 fHistNTimesRecLambdaVsPtMI = new TH2F("h2NTimesRecLambdaVsPtMI","NTimes versus Pt, #Lambda^{0} on-the-fly finder in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
665 fListHist->Add(fHistNTimesRecLambdaVsPtMI);
667 fHistNTimesRecAntiLambdaVsPt = new TH2F("h2NTimesRecAntiLambdaVsPt","NTimes versus Pt, #bar{#Lambda}^{0} in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
668 fListHist->Add(fHistNTimesRecAntiLambdaVsPt);
669 fHistNTimesRecAntiLambdaVsPtMI= new TH2F("h2NTimesRecAntiLambdaVsPtMI","NTimes versus Pt, #bar{#Lambda}^{0}, on-the-fly finder in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
670 fListHist->Add(fHistNTimesRecAntiLambdaVsPtMI);
674 //***********************************
675 // Reconstructed particles histograms
676 //***********************************
679 fHistTrackPerEvent = new TH1F("h1TrackPerEvent", "Tracks per event;Number of Tracks;Number of Events",50,0,50);
680 fListHist->Add(fHistTrackPerEvent);
682 fHistMCDaughterTrack = new TH1F("h1MCDaughterTrack","Distribution of mc id for daughters;id tags;Counts",15,0,15);
683 fListHist->Add(fHistMCDaughterTrack);
686 fHistPrimaryVertexX = new TH1F("h1PrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
687 fListHist->Add(fHistPrimaryVertexX);
689 fHistPrimaryVertexY = new TH1F("h1PrimaryVertexY", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
690 fListHist->Add(fHistPrimaryVertexY);
692 fHistPrimaryVertexZ = new TH1F("h1PrimaryVertexZ", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
693 fListHist->Add(fHistPrimaryVertexZ);
695 // Primary Vertex in events with V0 candidates:
696 fHistPrimaryVertexPosXV0events = new TH1F("h1PrimaryVertexPosXV0events", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
697 fListHist->Add(fHistPrimaryVertexPosXV0events);
698 fHistPrimaryVertexPosYV0events = new TH1F("h1PrimaryVertexPosYV0events", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
699 fListHist->Add(fHistPrimaryVertexPosYV0events);
700 fHistPrimaryVertexPosZV0events = new TH1F("h1PrimaryVertexPosZV0events", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20.0,20.0);
701 fListHist->Add(fHistPrimaryVertexPosZV0events);
704 fHistDcaPosToPrimVertex = new TH2F("h2DcaPosToPrimVertex", "Positive V0 daughter;dca(cm);Status",500,0,5,2,-0.5,1.5);
705 fListHist->Add(fHistDcaPosToPrimVertex);
707 fHistDcaNegToPrimVertex = new TH2F("h2DcaNegToPrimVertex", "Negative V0 daughter;dca(cm);Status",500,0,5,2,-0.5,1.5);
708 fListHist->Add(fHistDcaNegToPrimVertex);
710 fHistDcaPosToPrimVertexZoom = new TH2F("h2DcaPosToPrimVertexZoom", "Positive V0 daughter;dca(cm);Status",100,0,0.1,2,-0.5,1.5);
711 fListHist->Add(fHistDcaPosToPrimVertexZoom);
713 fHistDcaNegToPrimVertexZoom = new TH2F("h2DcaNegToPrimVertexZoom", "Negative V0 daughter;dca(cm);Status",100,0,0.1,2,-0.5,1.5);
714 fListHist->Add(fHistDcaNegToPrimVertexZoom);
716 fHistRadiusV0 = new TH2F("h2RadiusV0", "Radius;Radius(cm);Status",1200,0,120,2,-0.5,1.5);
717 fListHist->Add(fHistRadiusV0);
719 fHistDecayLengthV0 = new TH2F("h2DecayLengthV0", "V0s decay Length;decay length(cm);Status", 240, 0, 120,2,-0.5,1.5);
720 fListHist->Add(fHistDecayLengthV0);
722 fHistDcaV0Daughters = new TH2F("h2DcaV0Daughters", "DCA between daughters;dca(cm);Status", 160, 0, 4,2,-0.5,1.5);
723 fListHist->Add(fHistDcaV0Daughters);
725 fHistChi2 = new TH2F("h2Chi2", "V0s chi2;chi2;Status", 33, 0, 33,2,-0.5,1.5);
726 fListHist->Add(fHistChi2);
728 fHistCosPointAngle = new TH2F("h2CosPointAngle", "Cosine of V0's pointing angle", 100,0,1,2,-0.5,1.5);
729 fListHist->Add(fHistCosPointAngle);
731 fHistCosPointAngleZoom = new TH2F("h2CosPointAngleZoom", "Cosine of V0's pointing angle", 100,0.9,1,2,-0.5,1.5);
732 fListHist->Add(fHistCosPointAngleZoom);
734 fHistProdRadius = new TH2F("h2ProdRadius", "Production position;x (cm);y (cm)", 100,-50,50,100,-50,50);
735 fListHist->Add(fHistProdRadius);
737 fHistProdRadiusMI = new TH2F("h2ProdRadiusMI", "Production position, V0s MI;x (cm);y (cm)", 100,-50,50,100,-50,50);
738 fListHist->Add(fHistProdRadiusMI);
741 if (!fHistV0Multiplicity) {
742 if (fCollidingSystems)
743 fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of Offline V0s;Events", 200, 0, 40000);
745 fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of Offline V0s;Events", 10, 0, 10);
746 fListHist->Add(fHistV0Multiplicity);
749 if (!fHistV0MultiplicityMI) {
750 if (fCollidingSystems)
751 fHistV0MultiplicityMI = new TH1F("fHistV0MultiplicityMI", "Multiplicity distribution;Number of On-the-fly V0s;Events", 200, 0, 40000);
753 fHistV0MultiplicityMI = new TH1F("fHistV0MultiplicityMI", "Multiplicity distribution;Number of On-the-fly V0s;Events", 10, 0, 10);
754 fListHist->Add(fHistV0MultiplicityMI);
758 fHistChi2KFBeforeCutK0s = new TH2F("h1Chi2KFBeforeCutK0s", "K^{0} candidates;#Chi^{2});Counts", 250, 0, 50, 2,-0.5,1.5);
759 fListHist->Add(fHistChi2KFBeforeCutK0s);
760 fHistChi2KFBeforeCutLambda = new TH2F("h1Chi2KFBeforeCutLambda", "#Lambda^{0} candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
761 fListHist->Add(fHistChi2KFBeforeCutLambda);
762 fHistChi2KFBeforeCutAntiLambda = new TH2F("h1Chi2KFBeforeCutAntiLambda", "#bar{#Lambda}^{0} candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
763 fListHist->Add(fHistChi2KFBeforeCutAntiLambda);
765 fHistChi2KFAfterCutK0s = new TH2F("h1Chi2KFAfterCutK0s", "K^{0} candidates;#Chi^{2});Counts", 250, 0, 50, 2,-0.5,1.5);
766 fListHist->Add(fHistChi2KFAfterCutK0s);
767 fHistChi2KFAfterCutLambda = new TH2F("h1Chi2KFAfterCutLambda", "#Lambda^{0} candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
768 fListHist->Add(fHistChi2KFAfterCutLambda);
769 fHistChi2KFAfterCutAntiLambda = new TH2F("h1Chi2KFAfterCutAntiLambda", "#bar{#Lambda}^{0} candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
770 fListHist->Add(fHistChi2KFAfterCutAntiLambda);
773 fHistMassK0 = new TH1F("h1MassK0", "K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
774 fListHist->Add(fHistMassK0);
775 fHistMassK0MI = new TH1F("h1MassK0MI", "K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
776 fListHist->Add(fHistMassK0MI);
778 fHistMassLambda = new TH1F("h1MassLambda", "#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
779 fListHist->Add(fHistMassLambda);
780 fHistMassLambdaMI = new TH1F("h1MassLambdaMI", "#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
781 fListHist->Add(fHistMassLambdaMI);
783 fHistMassAntiLambda = new TH1F("h1MassAntiLambda", "#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
784 fListHist->Add(fHistMassAntiLambda);
785 fHistMassAntiLambdaMI = new TH1F("h1MassAntiLambdaMI", "#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
786 fListHist->Add(fHistMassAntiLambdaMI);
788 // invariant mass vs radius
789 const Double_t radius[10] = {0.0,2.5,2.9,3.9,7.6,15.0,23.9,37.8,42.8,100.0};
790 Int_t lNbinRadius = 9;
791 Int_t lNbinInvMassLambda = 300;
793 fHistMassVsRadiusK0 = new TH2F("h2MassVsRadiusK0", "K^{0} candidates;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 200, 0.4, 0.6);
794 fListHist->Add(fHistMassVsRadiusK0);
796 fHistMassVsRadiusK0MI = new TH2F("h2MassVsRadiusK0MI", "K^{0} MI candidates;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 200, 0.4, 0.6);
797 fListHist->Add(fHistMassVsRadiusK0MI);
799 fHistMassVsRadiusLambda = new TH2F("h2MassVsRadiusLambda", "#Lambda candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
800 fListHist->Add(fHistMassVsRadiusLambda);
802 fHistMassVsRadiusLambdaMI = new TH2F("h2MassVsRadiusLambdaMI", "#Lambda MI candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
803 fListHist->Add(fHistMassVsRadiusLambdaMI);
805 fHistMassVsRadiusAntiLambda = new TH2F("h2MassVsRadiusAntiLambda", "#bar{#Lambda} candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
806 fListHist->Add(fHistMassVsRadiusAntiLambda);
808 fHistMassVsRadiusAntiLambdaMI = new TH2F("h2MassVsRadiusAntiLambdaMI", "#bar{#Lambda} candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
809 fListHist->Add(fHistMassVsRadiusAntiLambdaMI);
812 fHistPtVsMassK0 = new TH2F("h2PtVsMassK0","K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,200,0,10);
813 fListHist->Add(fHistPtVsMassK0);
814 fHistPtVsMassK0MI = new TH2F("h2PtVsMassK0MI","K^{0} MIcandidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,200,0,10);
815 fListHist->Add(fHistPtVsMassK0MI);
817 fHistPtVsMassLambda = new TH2F("h2PtVsMassLambda","#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,200,0,10);
818 fListHist->Add(fHistPtVsMassLambda);
819 fHistPtVsMassLambdaMI = new TH2F("h2PtVsMassLambdaMI","#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,200,0,10);
820 fListHist->Add(fHistPtVsMassLambdaMI);
822 fHistPtVsMassAntiLambda = new TH2F("h2PtVsMassAntiLambda","#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,200,0,10);
823 fListHist->Add(fHistPtVsMassAntiLambda);
824 fHistPtVsMassAntiLambdaMI = new TH2F("h2PtVsMassAntiLambdaMI","#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,200,0,10);
825 fListHist->Add(fHistPtVsMassAntiLambdaMI);
828 fHistArmenterosPodolanski = new TH2F("h2ArmenterosPodolanski","Armenteros-Podolanski phase space;#alpha;p_{t} arm",100,-1.0,1.0,50,0,0.5);
829 fHistArmenterosPodolanskiMI = new TH2F("h2ArmenterosPodolanskiMI","Armenteros-Podolanski phase space;#alpha;p_{t} arm",100,-1.0,1.0,50,0,0.5);
833 fHistNsigmaPosPionAntiLambda = new TH1F("h1NsigmaPosPionAntiLambda", "Positive daughter of Antilambda;NsigmaPion;Counts",25,0,5);
834 fListHist->Add(fHistNsigmaPosPionAntiLambda);
836 fHistNsigmaNegProtonAntiLambda = new TH1F("h1NsigmaNegProtonAntiLambda", "Negative daughter of Antilambda;NsigmaProton;Counts",25,0,5);
837 fListHist->Add(fHistNsigmaNegProtonAntiLambda);
839 fHistNsigmaPosProtonLambda = new TH1F("h1NsigmaPosProtonLambda", "Positive daughter of Lambda;NsigmaProton;Counts",25,0,5);
840 fListHist->Add(fHistNsigmaPosProtonLambda);
842 fHistNsigmaNegPionLambda = new TH1F("h1NsigmaNegPionLambda", "Negative daughter of Lambda;NsigmaPion;Counts",25,0,5);
843 fListHist->Add(fHistNsigmaNegPionLambda);
845 fHistNsigmaPosPionK0 = new TH1F("h1NsigmaPosPionK0", "Positive daughter of K0s;NsigmaPion;Counts",25,0,5);
846 fListHist->Add(fHistNsigmaPosPionK0);
848 fHistNsigmaNegPionK0 = new TH1F("h1NsigmaNegPionK0", "Negative daughter of K0s;NsigmaPion;Counts",25,0,5);
849 fListHist->Add(fHistNsigmaNegPionK0);
852 //********************************
853 // Associated particles histograms
854 //********************************
857 fHistAsMcRapK0 = new TH1F("h1AsMcRapK0", "K^{0} associated;eta;Counts", 60, -1.5, 1.5);
858 fListHist->Add(fHistAsMcRapK0);
859 fHistAsMcRapK0MI = new TH1F("h1AsMcRapK0MI", "K^{0} associated;eta;Counts", 60, -1.5, 1.5);
860 fListHist->Add(fHistAsMcRapK0MI);
862 fHistAsMcRapLambda = new TH1F("h1AsMcRapLambda", "#Lambda^{0} associated;eta;Counts", 60, -1.5, 1.5);
863 fListHist->Add(fHistAsMcRapLambda);
864 fHistAsMcRapLambdaMI = new TH1F("h1AsMcRapLambdaMI", "#Lambda^{0} associated;eta;Counts", 60, -1.5, 1.5);
865 fListHist->Add(fHistAsMcRapLambdaMI);
867 fHistAsMcRapAntiLambda = new TH1F("h1AsMcRapAntiLambda", "#bar{#Lambda}^{0} associated;eta;Counts", 60, -1.5, 1.5);
868 fListHist->Add(fHistAsMcRapAntiLambda);
869 fHistAsMcRapAntiLambdaMI = new TH1F("h1AsMcRapAntiLambdaMI", "#bar{#Lambda}^{0} associated;eta;Counts", 60, -1.5, 1.5);
870 fListHist->Add(fHistAsMcRapAntiLambdaMI);
874 fHistAsMcPtK0 = new TH1F("h1AsMcPtK0", "K^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
875 fListHist->Add(fHistAsMcPtK0);
876 fHistAsMcPtK0MI = new TH1F("h1AsMcPtK0MI", "K^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
877 fListHist->Add(fHistAsMcPtK0MI);
879 fHistAsMcPtLambda = new TH1F("h1AsMcPtLambda", "#Lambda^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
880 fListHist->Add(fHistAsMcPtLambda);
881 fHistAsMcPtLambdaMI = new TH1F("h1AsMcPtLambdaMI", "#Lambda^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
882 fListHist->Add(fHistAsMcPtLambdaMI);
884 fHistAsMcPtAntiLambda = new TH1F("h1AsMcPtAntiLambda", "#bar{#Lambda}^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
885 fListHist->Add(fHistAsMcPtAntiLambda);
886 fHistAsMcPtAntiLambdaMI = new TH1F("h1AsMcPtAntiLambdaMI", "#bar{#Lambda}^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
887 fListHist->Add(fHistAsMcPtAntiLambdaMI);
889 fHistAsMcPtZoomK0 = new TH1F("h1AsMcPtZoomK0", "K^{0} candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
890 fListHist->Add(fHistAsMcPtZoomK0);
891 fHistAsMcPtZoomK0MI = new TH1F("h1AsMcPtZoomK0MI", "K^{0} MI candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
892 fListHist->Add(fHistAsMcPtZoomK0MI);
894 fHistAsMcPtZoomLambda = new TH1F("h1AsMcPtZoomLambda", "#Lambda^{0} candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
895 fListHist->Add(fHistAsMcPtZoomLambda);
896 fHistAsMcPtZoomLambdaMI = new TH1F("h1AsMcPtZoomLambdaMI", "#Lambda^{0} MI candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
897 fListHist->Add(fHistAsMcPtZoomLambdaMI);
900 // Radius distribution
901 fHistAsMcProdRadiusK0 = new TH1F("h1AsMcProdRadiusK0", "K^{0} associated;r (cm);Counts", 500, 0, 100);
902 fListHist->Add(fHistAsMcProdRadiusK0);
903 fHistAsMcProdRadiusK0MI = new TH1F("h1AsMcProdRadiusK0MI", "K^{0} associated;r (cm);Counts", 500, 0, 100);
904 fListHist->Add(fHistAsMcProdRadiusK0MI);
906 fHistAsMcProdRadiusLambda = new TH1F("h1AsMcProdRadiusLambda", "#Lambda^{0} associated;r (cm);Counts", 500, 0, 100);
907 fListHist->Add(fHistAsMcProdRadiusLambda);
908 fHistAsMcProdRadiusLambdaMI = new TH1F("h1AsMcProdRadiusLambdaMI", "#Lambda^{0} associated;r (cm);Counts", 500, 0, 100);
909 fListHist->Add(fHistAsMcProdRadiusLambdaMI);
911 fHistAsMcProdRadiusAntiLambda = new TH1F("h1AsMcProdRadiusAntiLambda", "#bar{#Lambda}^{0} associated;r (cm);Counts", 500, 0, 100);
912 fListHist->Add(fHistAsMcProdRadiusAntiLambda);
913 fHistAsMcProdRadiusAntiLambdaMI = new TH1F("h1AsMcProdRadiusAntiLambdaMI", "#bar{#Lambda}^{0} associated;r (cm);Counts", 500, 0, 100);
914 fListHist->Add(fHistAsMcProdRadiusAntiLambdaMI);
916 fHistAsMcProdRadiusXvsYK0s = new TH2F("h2AsMcProdRadiusXvsYK0s","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
917 fListHist->Add(fHistAsMcProdRadiusXvsYK0s);
918 fHistAsMcProdRadiusXvsYK0sMI = new TH2F("h2AsMcProdRadiusXvsYK0sMI","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
919 fListHist->Add(fHistAsMcProdRadiusXvsYK0sMI);
921 fHistAsMcProdRadiusXvsYLambda = new TH2F("h2AsMcProdRadiusXvsYLambda","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
922 fListHist->Add(fHistAsMcProdRadiusXvsYLambda);
923 fHistAsMcProdRadiusXvsYLambdaMI = new TH2F("h2AsMcProdRadiusXvsYLambdaMI","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
924 fListHist->Add(fHistAsMcProdRadiusXvsYLambdaMI);
926 fHistAsMcProdRadiusXvsYAntiLambda = new TH2F("h2AsMcProdRadiusXvsYAntiLambda","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
927 fListHist->Add(fHistAsMcProdRadiusXvsYAntiLambda);
928 fHistAsMcProdRadiusXvsYAntiLambdaMI = new TH2F("h2AsMcProdRadiusXvsYAntiLambdaMI","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
929 fListHist->Add(fHistAsMcProdRadiusXvsYAntiLambdaMI);
934 fHistPidMcMassK0 = new TH1F("h1PidMcMassK0", "K^{0} MC PId checked;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
935 fListHist->Add(fHistPidMcMassK0);
936 fHistPidMcMassK0MI = new TH1F("h1PidMcMassK0MI", "K^{0} MC PId checked;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
937 fListHist->Add(fHistPidMcMassK0MI);
939 fHistPidMcMassLambda = new TH1F("h1PidMcMassLambda", "#Lambda^{0} MC PId checked;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
940 fListHist->Add(fHistPidMcMassLambda);
941 fHistPidMcMassLambdaMI = new TH1F("h1PidMcMassLambdaMI", "#Lambda^{0} MC PId checked;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
942 fListHist->Add(fHistPidMcMassLambdaMI);
944 fHistPidMcMassAntiLambda = new TH1F("h1PidMcMassAntiLambda", "#bar{#Lambda}^{0} MC PId checked;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
945 fListHist->Add(fHistPidMcMassAntiLambda);
946 fHistPidMcMassAntiLambdaMI = new TH1F("h1PidMcMassAntiLambdaMI", "#bar{#Lambda}^{0} MC PId checked;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
947 fListHist->Add(fHistPidMcMassAntiLambdaMI);
949 fHistAsMcMassK0 = new TH1F("h1AsMcMassK0", "K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
950 fListHist->Add(fHistAsMcMassK0);
951 fHistAsMcMassK0MI = new TH1F("h1AsMcMassK0MI", "K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
952 fListHist->Add(fHistAsMcMassK0MI);
954 fHistAsMcMassLambda = new TH1F("h1AsMcMassLambda", "#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
955 fListHist->Add(fHistAsMcMassLambda);
956 fHistAsMcMassLambdaMI = new TH1F("h1AsMcMassLambdaMI", "#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
957 fListHist->Add(fHistAsMcMassLambdaMI);
959 fHistAsMcMassAntiLambda = new TH1F("h1AsMcMassAntiLambda", "#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
960 fListHist->Add(fHistAsMcMassAntiLambda);
961 fHistAsMcMassAntiLambdaMI = new TH1F("h1AsMcMassAntiLambdaMI", "#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
962 fListHist->Add(fHistAsMcMassAntiLambdaMI);
965 fHistAsMcPtVsMassK0 = new TH2F("h2AsMcPtVsMassK0","K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,100,0,10);
966 fListHist->Add(fHistAsMcPtVsMassK0);
967 fHistAsMcPtVsMassK0MI = new TH2F("h2AsMcPtVsMassK0MI","K^{0} MIassociated;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,100,0,10);
968 fListHist->Add(fHistAsMcPtVsMassK0MI);
970 fHistAsMcPtVsMassLambda = new TH2F("h2AsMcPtVsMassLambda","#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
971 fListHist->Add(fHistAsMcPtVsMassLambda);
972 fHistAsMcPtVsMassLambdaMI = new TH2F("h2AsMcPtVsMassLambdaMI","#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
973 fListHist->Add(fHistAsMcPtVsMassLambdaMI);
975 fHistAsMcPtVsMassAntiLambda = new TH2F("h2AsMcPtVsMassAntiLambda","#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
976 fListHist->Add(fHistAsMcPtVsMassAntiLambda);
977 fHistAsMcPtVsMassAntiLambdaMI = new TH2F("h2AsMcPtVsMassAntiLambdaMI","#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
978 fListHist->Add(fHistAsMcPtVsMassAntiLambdaMI);
981 // invariant mass vs radius
982 fHistAsMcMassVsRadiusK0 = new TH2F("h2AsMcMassVsRadiusK0", "K^{0} associated;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 500, 0.47, 0.52);
983 fListHist->Add(fHistAsMcMassVsRadiusK0);
985 fHistAsMcMassVsRadiusK0MI = new TH2F("h2AsMcMassVsRadiusK0MI", "K^{0} MI associated;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 500, 0.47, 0.52);
986 fListHist->Add(fHistAsMcMassVsRadiusK0MI);
988 fHistAsMcMassVsRadiusLambda = new TH2F("h2AsMcMassVsRadiusLambda", "#Lambda associated;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, lNbinInvMassLambda, 1.10, 1.13);
989 fListHist->Add(fHistAsMcMassVsRadiusLambda);
991 fHistAsMcMassVsRadiusLambdaMI = new TH2F("h2AsMcMassVsRadiusLambdaMI", "#Lambda MI associated;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, lNbinInvMassLambda, 1.10, 1.13);
992 fListHist->Add(fHistAsMcMassVsRadiusLambdaMI);
994 fHistAsMcMassVsRadiusAntiLambda = new TH2F("h2AsMcMassVsRadiusAntiLambda", "#bar{#Lambda} associated;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius,lNbinInvMassLambda , 1.10, 1.13);
995 fListHist->Add(fHistAsMcMassVsRadiusAntiLambda);
997 fHistAsMcMassVsRadiusAntiLambdaMI = new TH2F("h2AsMcMassVsRadiusAntiLambdaMI", "#bar{#Lambda} MI associated;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius,lNbinInvMassLambda , 1.10, 1.13);
998 fListHist->Add(fHistAsMcMassVsRadiusAntiLambdaMI);
1001 // Position Resolution
1002 fHistAsMcResxK0 = new TH1F("h1AsMcResxK0", "K^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1003 fListHist->Add(fHistAsMcResxK0);
1004 fHistAsMcResyK0 = new TH1F("h1AsMcResyK0", "K^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1005 fListHist->Add(fHistAsMcResyK0);
1006 fHistAsMcReszK0 = new TH1F("h1AsMcReszK0", "K^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1007 fListHist->Add(fHistAsMcReszK0);
1008 fHistAsMcResrVsRadiusK0 = new TH2F("h2AsMcResrVsRadiusK0", "K^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50., 50, -0.25, 0.25);
1009 fListHist->Add(fHistAsMcResrVsRadiusK0);
1010 fHistAsMcReszVsRadiusK0 = new TH2F("h2AsMcReszVsRadiusK0", "K^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1011 fListHist->Add(fHistAsMcReszVsRadiusK0);
1013 fHistAsMcResxK0MI = new TH1F("h1AsMcResxK0MI", "K^{0} MI associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1014 fListHist->Add(fHistAsMcResxK0MI);
1015 fHistAsMcResyK0MI = new TH1F("h1AsMcResyK0MI", "K^{0} MI associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1016 fListHist->Add(fHistAsMcResyK0MI);
1017 fHistAsMcReszK0MI = new TH1F("h1AsMcReszK0MI", "K^{0} MI associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1018 fListHist->Add(fHistAsMcReszK0MI);
1019 fHistAsMcResrVsRadiusK0MI = new TH2F("h2AsMcResrVsRadiusK0MI", "K^{0} MI associated;Radius (cm);#Delta r (cm)",8,radius, 50, -0.25, 0.25);
1020 fListHist->Add(fHistAsMcResrVsRadiusK0MI);
1021 fHistAsMcReszVsRadiusK0MI = new TH2F("h2AsMcReszVsRadiusK0MI", "K^{0} MI associated;Radius (cm);#Delta z (cm)",8,radius, 50, -0.25, 0.25);
1022 fListHist->Add(fHistAsMcReszVsRadiusK0MI);
1024 fHistAsMcResxLambda = new TH1F("h1AsMcResxLambda", "#Lambda^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1025 fListHist->Add(fHistAsMcResxLambda);
1026 fHistAsMcResyLambda = new TH1F("h1AsMcResyLambda", "#Lambda^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1027 fListHist->Add(fHistAsMcResyLambda);
1028 fHistAsMcReszLambda = new TH1F("h1AsMcReszLambda", "#Lambda^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1029 fListHist->Add(fHistAsMcReszLambda);
1030 fHistAsMcResrVsRadiusLambda = new TH2F("h2AsMcResrVsRadiusLambda", "#Lambda^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1031 fListHist->Add(fHistAsMcResrVsRadiusLambda);
1032 fHistAsMcReszVsRadiusLambda = new TH2F("h2AsMcReszVsRadiusLambda", "#Lambda^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1033 fListHist->Add(fHistAsMcReszVsRadiusLambda);
1035 fHistAsMcResxLambdaMI = new TH1F("h1AsMcResxLambdaMI", "#Lambda^{0} MI associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1036 fListHist->Add(fHistAsMcResxLambdaMI);
1037 fHistAsMcResyLambdaMI = new TH1F("h1AsMcResyLambdaMI", "#Lambda^{0} MI associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1038 fListHist->Add(fHistAsMcResyLambdaMI);
1039 fHistAsMcReszLambdaMI = new TH1F("h1AsMcReszLambdaMI", "#Lambda^{0} MI associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1040 fListHist->Add(fHistAsMcReszLambdaMI);
1041 fHistAsMcResrVsRadiusLambdaMI = new TH2F("h2AsMcResrVsRadiusLambdaMI", "#Lambda^{0} MI associated;Radius (cm);#Delta r (cm)",8,radius, 50, -0.25, 0.25);
1042 fListHist->Add(fHistAsMcResrVsRadiusLambdaMI);
1043 fHistAsMcReszVsRadiusLambdaMI = new TH2F("h2AsMcReszVsRadiusLambdaMI", "#Lambda^{0} MI associated;Radius (cm);#Delta z (cm)",8,radius, 50, -0.25, 0.25);
1044 fListHist->Add(fHistAsMcReszVsRadiusLambdaMI);
1046 fHistAsMcResxAntiLambda = new TH1F("h1AsMcResxAntiLambda", "#bar{#Lambda}^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1047 fListHist->Add(fHistAsMcResxAntiLambda);
1048 fHistAsMcResyAntiLambda = new TH1F("h1AsMcResyAntiLambda", "#bar{#Lambda}^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1049 fListHist->Add(fHistAsMcResyAntiLambda);
1050 fHistAsMcReszAntiLambda = new TH1F("h1AsMcReszAntiLambda", "#bar{#Lambda}^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1051 fListHist->Add(fHistAsMcReszAntiLambda);
1052 fHistAsMcResrVsRadiusAntiLambda = new TH2F("h2AsMcResrVsRadiusAntiLambda", "#bar{#Lambda}^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1053 fListHist->Add(fHistAsMcResrVsRadiusAntiLambda);
1054 fHistAsMcReszVsRadiusAntiLambda = new TH2F("h2AsMcReszVsRadiusAntiLambda", "#bar{#Lambda}^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1055 fListHist->Add(fHistAsMcReszVsRadiusAntiLambda);
1057 fHistAsMcResxAntiLambdaMI = new TH1F("h1AsMcResxAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1058 fListHist->Add(fHistAsMcResxAntiLambdaMI);
1059 fHistAsMcResyAntiLambdaMI = new TH1F("h1AsMcResyAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1060 fListHist->Add(fHistAsMcResyAntiLambdaMI);
1061 fHistAsMcReszAntiLambdaMI = new TH1F("h1AsMcReszAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1062 fListHist->Add(fHistAsMcReszAntiLambdaMI);
1063 fHistAsMcResrVsRadiusAntiLambdaMI = new TH2F("h2AsMcResrVsRadiusAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;Radius (cm);#Delta r (cm)",8,radius, 50, -0.25, 0.25);
1064 fListHist->Add(fHistAsMcResrVsRadiusAntiLambdaMI);
1065 fHistAsMcReszVsRadiusAntiLambdaMI = new TH2F("h2AsMcReszVsRadiusAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;Radius (cm);#Delta z (cm)",8,radius, 50, -0.25, 0.25);
1066 fListHist->Add(fHistAsMcReszVsRadiusAntiLambdaMI);
1069 fHistAsMcResPtK0 = new TH1F("h1AsMcResPtK0","Pt Resolution K^{0};#Delta Pt;Counts",200,-1,1);
1070 fListHist->Add(fHistAsMcResPtK0);
1071 fHistAsMcResPtK0MI = new TH1F("h1AsMcResPtK0MI","Pt Resolution K^{0} MI;#Delta Pt;Counts",200,-1,1);
1072 fListHist->Add(fHistAsMcResPtK0MI);
1074 fHistAsMcResPtLambda = new TH1F("h1AsMcResPtLambda","Pt Resolution #Lambda^{0};#Delta Pt;Counts",200,-1,1);
1075 fListHist->Add(fHistAsMcResPtLambda);
1076 fHistAsMcResPtLambdaMI = new TH1F("h1AsMcResPtLambdaMI","Pt Resolution #Lambda^{0} MI;#Delta Pt;Counts",200,-1,1);
1077 fListHist->Add(fHistAsMcResPtLambdaMI);
1079 fHistAsMcResPtAntiLambda = new TH1F("h1AsMcResPtAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Counts",200,-1,1);
1080 fListHist->Add(fHistAsMcResPtAntiLambda);
1081 fHistAsMcResPtAntiLambdaMI = new TH1F("h1AsMcResPtAntiLambdaMI","Pt Resolution #bar{#Lambda}^{0} MI;#Delta Pt;Counts",200,-1,1);
1082 fListHist->Add(fHistAsMcResPtAntiLambdaMI);
1085 fHistAsMcResPtVsRapK0 = new TH2F("h2AsMcResPtVsRapK0","Pt Resolution K^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
1086 fListHist->Add(fHistAsMcResPtVsRapK0);
1087 fHistAsMcResPtVsRapK0MI = new TH2F("h2AsMcResPtVsRapK0MI","Pt Resolution K^{0} MI;#Delta Pt;Rap",200,-1,1,20,-1,1);
1088 fListHist->Add(fHistAsMcResPtVsRapK0MI);
1090 fHistAsMcResPtVsRapLambda = new TH2F("h2AsMcResPtVsRapLambda","Pt Resolution #Lambda^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
1091 fListHist->Add(fHistAsMcResPtVsRapLambda);
1092 fHistAsMcResPtVsRapLambdaMI = new TH2F("h2AsMcResPtVsRapLambdaMI","Pt Resolution #Lambda^{0} MI;#Delta Pt;Rap",200,-1,1,20,-1,1);
1093 fListHist->Add(fHistAsMcResPtVsRapLambdaMI);
1095 fHistAsMcResPtVsRapAntiLambda = new TH2F("h2AsMcResPtVsRapAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
1096 fListHist->Add(fHistAsMcResPtVsRapAntiLambda);
1097 fHistAsMcResPtVsRapAntiLambdaMI = new TH2F("h2AsMcResPtVsRapAntiLambdaMI","Pt Resolution #bar{#Lambda}^{0} MI;#Delta Pt;Rap",200,-1,1,20,-1,1);
1098 fListHist->Add(fHistAsMcResPtVsRapAntiLambdaMI);
1101 fHistAsMcResPtVsPtK0 = new TH2F("h2AsMcResPtVsPtK0","Pt Resolution K^{0};#Delta Pt;Pt",600,-0.15,0.15,200,0,10);
1102 fListHist->Add(fHistAsMcResPtVsPtK0);
1103 fHistAsMcResPtVsPtK0MI = new TH2F("h2AsMcResPtVsPtK0MI","Pt Resolution K^{0} MI;#Delta Pt;Pt",600,-0.15,0.15,200,0,10);
1104 fListHist->Add(fHistAsMcResPtVsPtK0MI);
1106 fHistAsMcResPtVsPtLambda = new TH2F("h2AsMcResPtVsPtLambda","Pt Resolution #Lambda^{0};#Delta Pt;Pt",600,-0.15,0.15,200,0,10);
1107 fListHist->Add(fHistAsMcResPtVsPtLambda);
1108 fHistAsMcResPtVsPtLambdaMI = new TH2F("h2AsMcResPtVsPtLambdaMI","Pt Resolution #Lambda^{0} MI;#Delta Pt;Pt",600,-0.15,0.15,200,0,10);
1109 fListHist->Add(fHistAsMcResPtVsPtLambdaMI);
1111 fHistAsMcResPtVsPtAntiLambda = new TH2F("h2AsMcResPtVsPtAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Pt",300,-0.15,0.15,200,0,10);
1112 fListHist->Add(fHistAsMcResPtVsPtAntiLambda);
1113 fHistAsMcResPtVsPtAntiLambdaMI = new TH2F("h2AsMcResPtVsPtAntiLambdaMI","Pt Resolution #bar{#Lambda}^{0} MI;#Delta Pt;Pt",300,-0.15,0.15,200,0,10);
1114 fListHist->Add(fHistAsMcResPtVsPtAntiLambdaMI);
1117 // pdgcode of mother
1118 fHistAsMcMotherPdgCodeK0s = new TH1F("h1AsMcMotherPdgCodeK0s","Mother of Associated K^{0};mother;counts",11,0,11);
1119 fListHist->Add(fHistAsMcMotherPdgCodeK0s);
1120 fHistAsMcMotherPdgCodeK0sMI = new TH1F("h1AsMcMotherPdgCodeK0sMI","Mother of Associated K^{0} MI;mother;counts",11,0,11);
1121 fListHist->Add(fHistAsMcMotherPdgCodeK0sMI);
1123 fHistAsMcMotherPdgCodeLambda = new TH1F("h1AsMcMotherPdgCodeLambda","Mother of Associated #Lambda^{0};mother;counts",11,0,11);
1124 fListHist->Add(fHistAsMcMotherPdgCodeLambda);
1125 fHistAsMcMotherPdgCodeLambdaMI = new TH1F("h1AsMcMotherPdgCodeLambdaMI","Mother of Associated #Lambda^{0} MI;mother;counts",11,0,11);
1126 fListHist->Add(fHistAsMcMotherPdgCodeLambdaMI);
1128 fHistAsMcMotherPdgCodeAntiLambda = new TH1F("h1AsMcMotherPdgCodeAntiLambda","Mother of Associated #bar{#Lambda}^{0};mother;counts",11,0,11);
1129 fListHist->Add(fHistAsMcMotherPdgCodeAntiLambda);
1130 fHistAsMcMotherPdgCodeAntiLambdaMI = new TH1F("h1AsMcMotherPdgCodeAntiLambdaMI","Mother of Associated #bar{Lambda}^{0} MI;mother;counts",11,0,11);
1131 fListHist->Add(fHistAsMcMotherPdgCodeAntiLambdaMI);
1134 // Pt distribution Lambda from Sigma
1135 fHistAsMcPtLambdaFromSigma = new TH1F("h1AsMcPtLambdaFromSigma","#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
1136 fListHist->Add(fHistAsMcPtLambdaFromSigma);
1137 fHistAsMcPtLambdaFromSigmaMI = new TH1F("h1AsMcPtLambdaFromSigmaMI","#Lambda^{0} MI associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
1138 fListHist->Add(fHistAsMcPtLambdaFromSigmaMI);
1140 fHistAsMcPtAntiLambdaFromSigma = new TH1F("h1AsMcPtAntiLambdaFromSigma","#bar{#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
1141 fListHist->Add(fHistAsMcPtAntiLambdaFromSigma);
1142 fHistAsMcPtAntiLambdaFromSigmaMI = new TH1F("h1AsMcPtAntiLambdaFromSigmaMI","#bar{#Lambda}^{0} MI associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
1143 fListHist->Add(fHistAsMcPtAntiLambdaFromSigmaMI);
1146 // Associated secondary particles:
1147 // Pt and rapidity distribution
1148 fHistAsMcSecondaryPtVsRapK0s = new TH2F("h2AsMcSecondaryPtVsRapK0s", "K^{0} associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
1149 fListHist->Add(fHistAsMcSecondaryPtVsRapK0s);
1150 fHistAsMcSecondaryPtVsRapK0sMI = new TH2F("h2AsMcSecondaryPtVsRapK0sMI", "K^{0} MI associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
1151 fListHist->Add(fHistAsMcSecondaryPtVsRapK0sMI);
1153 fHistAsMcSecondaryPtVsRapLambda = new TH2F("h2AsMcSecondaryPtVsRapLambda", "#Lambda^{0} associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
1154 fListHist->Add(fHistAsMcSecondaryPtVsRapLambda);
1155 fHistAsMcSecondaryPtVsRapLambdaMI = new TH2F("h2AsMcSecondaryPtVsRapLambdaMI", "#Lambda^{0} MI associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
1156 fListHist->Add(fHistAsMcSecondaryPtVsRapLambdaMI);
1158 fHistAsMcSecondaryPtVsRapAntiLambda = new TH2F("h2AsMcSecondaryPtVsRapAntiLambda", "#bar{#Lambda}^{0} associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
1159 fListHist->Add(fHistAsMcSecondaryPtVsRapAntiLambda);
1160 fHistAsMcSecondaryPtVsRapAntiLambdaMI = new TH2F("h2AsMcSecondaryPtVsRapAntiLambdaMI", "#bar{#Lambda}^{0} MI associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
1161 fListHist->Add(fHistAsMcSecondaryPtVsRapAntiLambdaMI);
1163 // Production radius
1164 fHistAsMcSecondaryProdRadiusK0s = new TH1F("h1AsMcSecondaryProdRadiusK0s", "K^{0} Production Radius;r (cm);Count", 170, -2, 15);
1165 fListHist->Add(fHistAsMcSecondaryProdRadiusK0s);
1166 fHistAsMcSecondaryProdRadiusK0sMI = new TH1F("h1AsMcSecondaryProdRadiusK0sMI", "K^{0} MI Production Radius;r (cm);Count", 170, -2, 15);
1167 fListHist->Add(fHistAsMcSecondaryProdRadiusK0sMI);
1169 fHistAsMcSecondaryProdRadiusLambda = new TH1F("h1AsMcSecondaryProdRadiusLambda", "#Lambda^{0} Production Radius;r (cm);Count", 170, -2, 15);
1170 fListHist->Add(fHistAsMcSecondaryProdRadiusLambda);
1171 fHistAsMcSecondaryProdRadiusLambdaMI = new TH1F("h1AsMcSecondaryProdRadiusLambdaMI", "#Lambda^{0} MI Production Radius;r (cm);Count", 170, -2, 15);
1172 fListHist->Add(fHistAsMcSecondaryProdRadiusLambdaMI);
1174 fHistAsMcSecondaryProdRadiusAntiLambda = new TH1F("h1AsMcSecondaryProdRadiusAntiLambda", "#bar{#Lambda}^{0} Production Radius;r (cm);Count", 170, -2, 15);
1175 fListHist->Add(fHistAsMcSecondaryProdRadiusAntiLambda);
1176 fHistAsMcSecondaryProdRadiusAntiLambdaMI = new TH1F("h1AsMcSecondaryProdRadiusAntiLambdaMI", "#bar{#Lambda}^{0} MI Production Radius;r (cm);Count", 170, -2, 15);
1177 fListHist->Add(fHistAsMcSecondaryProdRadiusAntiLambdaMI);
1179 fHistAsMcSecondaryProdRadiusXvsYK0s = new TH2F("h2AsMcSecondaryProdRadiusXvsYK0s","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1180 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYK0s);
1181 fHistAsMcSecondaryProdRadiusXvsYK0sMI = new TH2F("h2AsMcSecondaryProdRadiusXvsYK0sMI","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1182 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYK0sMI);
1184 fHistAsMcSecondaryProdRadiusXvsYLambda = new TH2F("h2AsMcSecondaryProdRadiusXvsYLambda","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1185 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYLambda);
1186 fHistAsMcSecondaryProdRadiusXvsYLambdaMI = new TH2F("h2AsMcSecondaryProdRadiusXvsYLambdaMI","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1187 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYLambdaMI);
1189 fHistAsMcSecondaryProdRadiusXvsYAntiLambda = new TH2F("h2AsMcSecondaryProdRadiusXvsYAntiLambda","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1190 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYAntiLambda);
1191 fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI = new TH2F("h2AsMcSecondaryProdRadiusXvsYAntiLambdaMI","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1192 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI);
1194 fHistAsMcSecondaryMotherPdgCodeK0s = new TH1F("h1AsMcSecondaryMotherPdgCodeK0s","Mother of Associated Secondary K^{0};mother;counts",11,0,11);
1195 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeK0s);
1196 fHistAsMcSecondaryMotherPdgCodeK0sMI = new TH1F("h1AsMcSecondaryMotherPdgCodeK0sMI","Mother of Associated Secondary K^{0} MI;mother;counts",11,0,11);
1197 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeK0sMI);
1199 fHistAsMcSecondaryMotherPdgCodeLambda = new TH1F("h1AsMcSecondaryMotherPdgCodeLambda","Mother of Associated Secondary #Lambda^{0};mother;counts",11,0,11);
1200 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeLambda);
1201 fHistAsMcSecondaryMotherPdgCodeLambdaMI = new TH1F("h1AsMcSecondaryMotherPdgCodeLambdaMI","Mother of Associated Secondary #Lambda^{0} MI;mother;counts",11,0,11);
1202 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeLambdaMI);
1204 fHistAsMcSecondaryMotherPdgCodeAntiLambda = new TH1F("h1AsMcSecondaryMotherPdgCodeAntiLambda","Mother of Associated Secondary #bar{#Lambda}^{0};mother;counts",11,0,11);
1205 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeAntiLambda);
1206 fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI = new TH1F("h1AsMcSecondaryMotherPdgCodeAntiLambdaMI","Mother of Associated Secondary #bar{Lambda}^{0} MI;mother;counts",11,0,11);
1207 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI);
1209 // Pt distribution Lambda from Sigma
1210 fHistAsMcSecondaryPtLambdaFromSigma = new TH1F("h1AsMcSecondaryPtLambdaFromSigma","#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
1211 fListHist->Add(fHistAsMcSecondaryPtLambdaFromSigma);
1212 fHistAsMcSecondaryPtLambdaFromSigmaMI = new TH1F("h1AsMcSecondaryPtLambdaFromSigmaMI","#Lambda^{0} MI associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
1213 fListHist->Add(fHistAsMcSecondaryPtLambdaFromSigmaMI);
1215 fHistAsMcSecondaryPtAntiLambdaFromSigma = new TH1F("h1AsMcSecondaryPtAntiLambdaFromSigma","#bar{#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
1216 fListHist->Add(fHistAsMcSecondaryPtAntiLambdaFromSigma);
1217 fHistAsMcSecondaryPtAntiLambdaFromSigmaMI = new TH1F("h1AsMcSecondaryPtAntiLambdaFromSigmaMI","#bar{#Lambda}^{0} MI associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
1218 fListHist->Add(fHistAsMcSecondaryPtAntiLambdaFromSigmaMI);
1222 //________________________________________________________________________
1223 void AliAnalysisTaskPerformanceStrange::UserExec(Option_t *)
1226 // Called for each event
1228 AliStack* stack = NULL;
1229 TClonesArray *mcArray = NULL;
1230 TArrayF mcPrimaryVtx;
1232 AliVEvent* lEvent = InputEvent();
1235 Printf("ERROR: Event not available");
1239 //******************
1240 // Trigger Selection ! Warning Works only for ESD, add protection in case of AOD loop
1241 //******************
1242 Bool_t isEventTriggered = kFALSE;
1243 if ( !fAnalysisMC) {
1244 //if (!( ((AliESDEvent*)lEvent)->IsTriggerClassFired("CINT1B-ABCE-NOPF-ALL"))) return;
1245 isEventTriggered = fPhysTrigSel->IsCollisionCandidate((AliESDEvent*)lEvent);
1248 fPhysTrigSel->SetAnalyzeMC(); // Bo: maybe this is not needed (should be done in AliPhysicsSelectionTask)
1249 isEventTriggered = fPhysTrigSel->IsCollisionCandidate((AliESDEvent*)lEvent);
1252 if (!isEventTriggered) return;
1254 //********************
1255 // Track Multiplicty
1256 //********************
1257 fHistTrackPerEvent->Fill(lEvent->GetNumberOfTracks());
1259 // Remove Events with no tracks
1260 if (!(lEvent->GetNumberOfTracks())) return;
1263 //*************************************
1265 //*************************************
1268 Double_t lCutRap = 0.75;
1270 // Cut AliKF Chi2 for Reconstructed particles
1271 Double_t cutChi2KF = 1E3;
1273 // Cut to distinguish between primary and secondary associated particles
1274 // Double_t lMaxMcProdRadiusPrimaries = 0.2;
1278 //*******************
1280 //*******************
1282 if(fAnalysisType == "ESD") {
1283 AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1284 if (!eventHandler) {
1285 //Printf("ERROR: Could not retrieve MC event handler");
1288 AliMCEvent* mcEvent = eventHandler->MCEvent();
1290 //Printf("ERROR: Could not retrieve MC event");
1293 stack = mcEvent->Stack();
1295 //Printf("ERROR: Could not retrieve stack");
1299 AliGenEventHeader* mcHeader=mcEvent->GenEventHeader();
1300 if(!mcHeader) return;
1301 mcHeader->PrimaryVertex(mcPrimaryVtx);
1305 else if(fAnalysisType == "AOD") {
1307 // load MC particles
1308 mcArray = (TClonesArray*)lEvent->GetList()->FindObject(AliAODMCParticle::StdBranchName());
1310 Printf("strange analysis::UserExec: MC particles branch not found!\n");
1315 AliAODMCHeader *mcHeader =
1316 (AliAODMCHeader*)lEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1318 Printf("strange analysis::UserExec: MC header branch not found!\n");
1325 //**********************************************
1327 //**********************************************
1329 Double_t lmcPrimVtxR = 0;
1331 Int_t lNbMCPrimary = 0;
1332 Int_t lNbMCPart = 0;
1334 Int_t lPdgcodeCurrentPart = 0;
1335 Double_t lRapCurrentPart = 0;
1336 Double_t lPtCurrentPart = 0;
1338 Int_t lComeFromSigma = 0;
1341 // Production Radius
1342 Double_t mcPosX = 0.0, mcPosY = 0.0, mcPosZ = 0.0;
1343 Double_t mcPosR = 0.0;
1346 Double_t mcDecayPosX = 0, mcDecayPosY = 0, mcDecayPosR = 0;
1348 // current mc particle 's mother
1349 Int_t iCurrentMother = 0, lPdgCurrentMother = 0;
1350 Bool_t lCurrentMotherIsPrimary;
1352 // variables for multiple reconstruction studies:
1353 Int_t id0 = 0, id1 = 0;
1354 //Int_t lLabelTrackN = 0, lLabelTrackP = 0;
1355 //Int_t lPartNMother = 0, lPartPMother = 0;
1356 //Int_t lPartPMotherPDGcode = 0;
1357 Int_t lNtimesReconstructedK0s = 0, lNtimesReconstructedLambda = 0, lNtimesReconstructedAntiLambda = 0;
1358 Int_t lNtimesReconstructedK0sMI = 0, lNtimesReconstructedLambdaMI = 0, lNtimesReconstructedAntiLambdaMI = 0;
1360 //****************************
1361 // Start loop over MC particles
1365 fHistMCPrimaryVertexX->Fill(mcPrimaryVtx.At(0));
1366 fHistMCPrimaryVertexY->Fill(mcPrimaryVtx.At(1));
1367 fHistMCPrimaryVertexZ->Fill(mcPrimaryVtx.At(2));
1369 lmcPrimVtxR = TMath::Sqrt(mcPrimaryVtx.At(0)*mcPrimaryVtx.At(0)+mcPrimaryVtx.At(1)*mcPrimaryVtx.At(1));
1372 if(fAnalysisType == "ESD") {
1374 lNbMCPrimary = stack->GetNprimary();
1375 lNbMCPart = stack->GetNtrack();
1377 fHistMCMultiplicityPrimary->Fill(lNbMCPrimary);
1378 fHistMCMultiplicityTracks->Fill(lNbMCPart);
1381 for (Int_t iMc = 0; iMc < (stack->GetNtrack()); iMc++) {
1382 TParticle *p0 = stack->Particle(iMc);
1384 //Printf("ERROR: particle with label %d not found in stack (mc loop)", iMc);
1387 lPdgcodeCurrentPart = p0->GetPdgCode();
1389 // Keep only K0s, Lambda and AntiLambda:
1390 if ( (lPdgcodeCurrentPart != 310 ) && (lPdgcodeCurrentPart != 3122 ) && (lPdgcodeCurrentPart != -3122 ) ) continue;
1392 lRapCurrentPart = MyRapidity(p0->Energy(),p0->Pz());
1393 //lEtaCurrentPart = p0->Eta();
1394 lPtCurrentPart = p0->Pt();
1395 iCurrentMother = p0->GetFirstMother();
1396 lPdgCurrentMother = stack->Particle(iCurrentMother)->GetPdgCode();
1401 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
1403 id0 = p0->GetDaughter(0);
1404 id1 = p0->GetDaughter(1);
1406 // Decay Radius and Production Radius
1407 if ( id0 <= lNbMCPart && id0 > 0 && id1 <= lNbMCPart && id1 > 0) {
1408 TParticle *pDaughter0 = stack->Particle(id0);
1409 mcDecayPosX = pDaughter0->Vx();
1410 mcDecayPosY = pDaughter0->Vy();
1411 mcDecayPosR = TMath::Sqrt(mcDecayPosX*mcDecayPosX+mcDecayPosY*mcDecayPosY);
1414 //Printf("ERROR: particle with label %d and/or %d not found in stack (mc loop)", id0,id1);
1418 if (lPdgcodeCurrentPart==310) {
1419 fHistMCtracksProdRadiusK0s->Fill(mcPosX,mcPosY);
1420 fHistMCtracksDecayRadiusK0s->Fill(mcDecayPosR);
1421 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllK0s->Fill(lPtCurrentPart);
1423 else if (lPdgcodeCurrentPart==3122) {
1424 fHistMCtracksProdRadiusLambda->Fill(mcPosX,mcPosY);
1425 fHistMCtracksDecayRadiusLambda->Fill(mcDecayPosR);
1426 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllLambda->Fill(lPtCurrentPart);
1428 else if (lPdgcodeCurrentPart==-3122) {
1429 fHistMCtracksProdRadiusAntiLambda->Fill(mcPosX,mcPosY);
1430 fHistMCtracksDecayRadiusAntiLambda->Fill(mcDecayPosR);
1431 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllAntiLambda->Fill(lPtCurrentPart);
1434 if ( ( ( TMath::Abs(lPdgCurrentMother) == 3212) ||
1435 ( TMath::Abs(lPdgCurrentMother) == 3224) ||
1436 ( TMath::Abs(lPdgCurrentMother) == 3214) ||
1437 ( TMath::Abs(lPdgCurrentMother) == 3114) )
1438 && ( iCurrentMother <= lNbMCPrimary )
1439 ) lComeFromSigma = 1;
1440 else lComeFromSigma = 0;
1442 //*********************************************
1443 // Now keep only primary particles
1444 if ( ( iMc > lNbMCPrimary ) && (!lComeFromSigma) ) continue;
1446 //********************************************
1447 //check if V0 is reconstructed several times
1449 lNtimesReconstructedK0s = 0; lNtimesReconstructedLambda = 0; lNtimesReconstructedAntiLambda = 0;
1450 lNtimesReconstructedK0sMI = 0; lNtimesReconstructedLambdaMI = 0; lNtimesReconstructedAntiLambdaMI = 0;
1452 //for (Int_t jV0 = 0; jV0 < lEvent->GetNumberOfV0s(); jV0++) {
1454 //lLabelTrackN = 0; lLabelTrackP = 0;
1455 //lPartNMother = 0; lPartPMother = 0;
1457 //AliESDv0 *vertexESD = ((AliESDEvent*)lEvent)->GetV0(jV0);
1458 //if (!vertexESD) continue;
1460 //AliESDtrack *trackNESD = ((AliESDEvent*)lEvent)->GetTrack(TMath::Abs(vertexESD->GetNindex()));
1461 //lLabelTrackN = (UInt_t)TMath::Abs(trackNESD->GetLabel());
1462 //if (lLabelTrackN!=id0 && lLabelTrackN!=id1) continue;
1464 //AliESDtrack *trackPESD = ((AliESDEvent*)lEvent)->GetTrack(TMath::Abs(vertexESD->GetPindex()));
1465 //lLabelTrackP = (UInt_t)TMath::Abs(trackPESD->GetLabel());
1466 //if (lLabelTrackP!=id0 && lLabelTrackP!=id1) continue;
1468 //TParticle *lPartNESD = stack->Particle(lLabelTrackN);
1469 //TParticle *lPartPESD = stack->Particle(lLabelTrackP);
1470 //lPartNMother = lPartNESD->GetFirstMother();
1471 //lPartPMother = lPartPESD->GetFirstMother();
1473 //lPartPMotherPDGcode = stack->Particle(lPartPMother)->GetPdgCode();
1475 //switch (vertexESD->GetOnFlyStatus()){
1478 //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0s++;
1479 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambda++;
1480 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambda++;
1484 //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0sMI++;
1485 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambdaMI++;
1486 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambdaMI++;
1490 //} // end loop over reconstructed V0s inside MC loop
1492 if (TMath::Abs(lRapCurrentPart) > lCutRap) continue;
1494 if (lPdgcodeCurrentPart==310) {
1495 fHistMCProdRadiusK0s->Fill(mcPosR);
1496 fHistMCPtK0s->Fill(lPtCurrentPart);
1497 fHistNTimesRecK0s->Fill(lNtimesReconstructedK0s);
1498 fHistNTimesRecK0sMI->Fill(lNtimesReconstructedK0s);
1499 fHistNTimesRecK0sVsPt->Fill(lPtCurrentPart,lNtimesReconstructedK0s);
1500 fHistNTimesRecK0sVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedK0sMI);
1502 else if (lPdgcodeCurrentPart==3122) {
1503 fHistMCProdRadiusLambda->Fill(mcPosR);
1504 fHistMCPtLambda->Fill(lPtCurrentPart);
1505 fHistNTimesRecLambda->Fill(lNtimesReconstructedLambda);
1506 fHistNTimesRecLambdaMI->Fill(lNtimesReconstructedLambdaMI);
1507 fHistNTimesRecLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedLambda);
1508 fHistNTimesRecLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedLambdaMI);
1509 if (lComeFromSigma) fHistMCPtLambdaFromSigma->Fill(lPtCurrentPart);
1511 else if (lPdgcodeCurrentPart==-3122) {
1512 fHistMCProdRadiusAntiLambda->Fill(mcPosR);
1513 fHistMCPtAntiLambda->Fill(lPtCurrentPart);
1514 fHistNTimesRecAntiLambda->Fill(lNtimesReconstructedAntiLambda);
1515 fHistNTimesRecAntiLambdaMI->Fill(lNtimesReconstructedAntiLambdaMI);
1516 fHistNTimesRecAntiLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambda);
1517 fHistNTimesRecAntiLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambdaMI);
1518 if (lComeFromSigma) fHistMCPtAntiLambdaFromSigma->Fill(lPtCurrentPart);
1521 } // end loop ESD MC
1523 } // end ESD condition
1525 else if(fAnalysisType == "AOD") {
1526 lNbMCPart = mcArray->GetEntriesFast();
1529 fHistMCMultiplicityTracks->Fill(lNbMCPart);
1531 for (Int_t iMc = 0; iMc < lNbMCPart; iMc++) {
1533 // Primary vertex TO DO !!
1536 AliAODMCParticle *mcAODPart = (AliAODMCParticle*)mcArray->At(iMc);
1538 //Printf("Strange analysis task (mc loop): particle with label %d not found", iMc);
1541 lPdgcodeCurrentPart = mcAODPart->GetPdgCode();
1542 if (mcAODPart->IsPhysicalPrimary()) {lNbMCPrimary = lNbMCPrimary +1;}
1544 // Keep only K0s, Lambda and AntiLambda:
1545 if ( (lPdgcodeCurrentPart != 310 ) && (lPdgcodeCurrentPart != 3122 ) && (lPdgcodeCurrentPart != -3122 ) ) continue;
1547 //lEtaCurrentPart = mcAODPart->Eta();
1548 lRapCurrentPart = mcAODPart->Y();
1549 lPtCurrentPart = mcAODPart->Pt();
1550 iCurrentMother = mcAODPart->GetMother();
1551 lPdgCurrentMother = ((AliAODMCParticle*)mcArray->At(iCurrentMother))->GetPdgCode();
1552 lCurrentMotherIsPrimary = ((AliAODMCParticle*)mcArray->At(iCurrentMother))->IsPhysicalPrimary();
1554 mcPosX = mcAODPart->Xv();
1555 mcPosY = mcAODPart->Yv();
1556 mcPosZ = mcAODPart->Zv();
1557 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
1559 id0 = mcAODPart->GetDaughter(0);
1560 id1 = mcAODPart->GetDaughter(1);
1562 // Decay Radius and Production Radius
1563 if ( id0 <= lNbMCPart && id0 > 0 && id1 <= lNbMCPart && id1 > 0) {
1564 AliAODMCParticle *mcAODDaughter1 = (AliAODMCParticle*)mcArray->At(id1);
1566 //Printf("Strange analysis task (mc loop): daughter not found");
1569 mcDecayPosX = mcAODDaughter1->Xv();
1570 mcDecayPosY = mcAODDaughter1->Yv();
1571 mcDecayPosR = TMath::Sqrt(mcDecayPosX*mcDecayPosX+mcDecayPosY*mcDecayPosY);
1574 //Printf("ERROR: particle with label %d and/or %d not found in stack (mc loop)", id0,id1);
1578 if (lPdgcodeCurrentPart==310) {
1579 fHistMCtracksProdRadiusK0s->Fill(mcPosX,mcPosY);
1580 fHistMCtracksDecayRadiusK0s->Fill(mcDecayPosR);
1581 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllK0s->Fill(lPtCurrentPart);
1583 else if (lPdgcodeCurrentPart==3122) {
1584 fHistMCtracksProdRadiusLambda->Fill(mcPosX,mcPosY);
1585 fHistMCtracksDecayRadiusLambda->Fill(mcDecayPosR);
1586 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllLambda->Fill(lPtCurrentPart);
1588 else if (lPdgcodeCurrentPart==-3122) {
1589 fHistMCtracksProdRadiusAntiLambda->Fill(mcPosX,mcPosY);
1590 fHistMCtracksDecayRadiusAntiLambda->Fill(mcDecayPosR);
1591 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllAntiLambda->Fill(lPtCurrentPart);
1594 if ( ( ( TMath::Abs(lPdgCurrentMother) == 3212) ||
1595 ( TMath::Abs(lPdgCurrentMother) == 3224) ||
1596 ( TMath::Abs(lPdgCurrentMother) == 3214) ||
1597 ( TMath::Abs(lPdgCurrentMother) == 3114) )
1598 && (lCurrentMotherIsPrimary)
1599 ) lComeFromSigma = 1;
1600 else lComeFromSigma = 0;
1602 //*********************************************
1603 // Now keep only primary particles
1605 // FIX IT !!!! iMC is not defined !!!! FIX IT also in ESD/AOD loop !!
1606 if ( ( iMc > lNbMCPrimary ) && (!lComeFromSigma) ) continue;
1608 //********************************************
1609 // check if V0 is reconstructed several times
1611 //lNtimesReconstructedK0s = 0; lNtimesReconstructedLambda = 0; lNtimesReconstructedAntiLambda = 0;
1612 //lNtimesReconstructedK0sMI = 0; lNtimesReconstructedLambdaMI = 0; lNtimesReconstructedAntiLambdaMI = 0;
1614 //for (Int_t jV0 = 0; jV0 < lEvent->GetNumberOfV0s(); jV0++) {
1616 //lLabelTrackN = 0; lLabelTrackP = 0;
1617 //lPartNMother = 0; lPartPMother = 0;
1619 //AliAODv0 *vertexAOD= ((AliAODEvent*)lEvent)->GetV0(jV0);
1620 //if (!vertexAOD) continue;
1621 //printf("enter!!");
1622 //AliVParticle *trackP = ((AliVEvent*)lEvent)->GetTrack(vertexAOD->GetPosID());
1623 //if (!trackP) continue;
1624 //lLabelTrackP = TMath::Abs(trackP->GetLabel());
1625 //if (lLabelTrackP!=id0 && lLabelTrackP!=id1) continue;
1627 //AliVParticle *trackN = ((AliVEvent*)lEvent)->GetTrack(vertexAOD->GetNegID());
1628 //if (!trackN) continue;
1629 //lLabelTrackN = TMath::Abs(trackN->GetLabel());
1630 //if (lLabelTrackN!=id0 && lLabelTrackN!=id1) continue;
1632 //AliAODMCParticle *lPartNAOD = (AliAODMCParticle*)mcArray->At(lLabelTrackN);
1633 //if (!lPartNAOD) continue;
1634 //AliAODMCParticle *lPartPAOD = (AliAODMCParticle*)mcArray->At(lLabelTrackP);
1635 //if (!lPartPAOD) continue;
1637 //lPartNMother = lPartNAOD->GetMother();
1638 //lPartPMother = lPartPAOD->GetMother();
1640 //lPartPMotherPDGcode = ((AliAODMCParticle*)mcArray->At(lPartPMother))->GetPdgCode();
1642 //switch (vertexAOD->GetOnFlyStatus()){
1645 //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0s++;
1646 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambda++;
1647 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambda++;
1651 //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0sMI++;
1652 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambdaMI++;
1653 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambdaMI++;
1657 //} // end loop over reconstructed V0s inside MC loop
1659 if (TMath::Abs(lRapCurrentPart) > lCutRap) continue;
1661 if (lPdgcodeCurrentPart==310) {
1662 fHistMCProdRadiusK0s->Fill(mcPosR);
1663 fHistMCPtK0s->Fill(lPtCurrentPart);
1664 fHistNTimesRecK0s->Fill(lNtimesReconstructedK0s);
1665 fHistNTimesRecK0sMI->Fill(lNtimesReconstructedK0s);
1666 fHistNTimesRecK0sVsPt->Fill(lPtCurrentPart,lNtimesReconstructedK0s);
1667 fHistNTimesRecK0sVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedK0sMI);
1669 else if (lPdgcodeCurrentPart==3122) {
1670 fHistMCProdRadiusLambda->Fill(mcPosR);
1671 fHistMCPtLambda->Fill(lPtCurrentPart);
1672 fHistNTimesRecLambda->Fill(lNtimesReconstructedLambda);
1673 fHistNTimesRecLambdaMI->Fill(lNtimesReconstructedLambdaMI);
1674 fHistNTimesRecLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedLambda);
1675 fHistNTimesRecLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedLambdaMI);
1676 if (lComeFromSigma) fHistMCPtLambdaFromSigma->Fill(lPtCurrentPart);
1678 else if (lPdgcodeCurrentPart==-3122) {
1679 fHistMCProdRadiusAntiLambda->Fill(mcPosR);
1680 fHistMCPtAntiLambda->Fill(lPtCurrentPart);
1681 fHistNTimesRecAntiLambda->Fill(lNtimesReconstructedAntiLambda);
1682 fHistNTimesRecAntiLambdaMI->Fill(lNtimesReconstructedAntiLambdaMI);
1683 fHistNTimesRecAntiLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambda);
1684 fHistNTimesRecAntiLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambdaMI);
1685 if (lComeFromSigma) fHistMCPtAntiLambdaFromSigma->Fill(lPtCurrentPart);
1688 } // end loop over AODMC particles
1689 fHistMCMultiplicityPrimary->Fill(lNbMCPrimary);
1691 } // end AOD condition
1693 } // End Loop over MC condition
1699 //************************************
1701 //************************************
1703 Double_t lPrimaryVtxPosition[3];
1704 Double_t lPrimaryVtxCov[6];
1705 Double_t lPrimaryVtxChi2 = 999;
1707 Double_t lMagneticField = 999;
1710 Int_t nv0sTot= 0, nv0s = 0, nv0sMI = 0;
1713 Double_t lV0Position[3];
1715 Double_t lDcaPosToPrimVertex = 0;
1716 Double_t lDcaNegToPrimVertex = 0;
1717 Double_t lDcaV0Daughters = 0;
1718 Double_t lV0cosPointAngle = 0;
1719 Double_t lChi2V0 = 0;
1720 Double_t lV0DecayLength = 0;
1721 Double_t lV0Radius = 0;
1722 Double_t lDcaV0ToPrimVertex = 0;
1724 Int_t lOnFlyStatus = 0;
1725 //Float_t tdcaPosToPrimVertexXYZ[2], tdcaNegToPrimVertexXYZ[2]; // ..[0] = Impact parameter in XY plane and ..[1] = Impact parameter in Z
1726 //Double_t tdcaDaughterToPrimVertex[2]; // ..[0] = Pos and ..[1] = Neg
1730 Double_t lInvMassK0s = 0, lInvMassLambda = 0, lInvMassAntiLambda = 0;
1731 Double_t lPtK0s = 0, lPtLambda = 0, lPtAntiLambda = 0;
1732 Double_t lRapK0s = 0, lRapLambda = 0, lRapAntiLambda = 0;
1733 Double_t lEtaK0s = 0, lEtaLambda = 0, lEtaAntiLambda = 0;
1734 Double_t lAlphaV0 = 0, lPtArmV0 = 0;
1736 Double_t lV0Eta = 999;
1738 Float_t lTPCsignalPos = 0;
1739 Float_t lTPCsignalNeg = 0;
1741 Double_t lMomentumTrackInPos =0;
1742 Double_t lMomentumTrackInNeg =0;
1744 // to study Associated V0s:
1745 Int_t lIndexTrackPos = 0, lIndexTrackNeg = 0;
1746 UInt_t lLabelTrackPos = 0, lLabelTrackNeg = 0;
1747 Int_t lCheckPIdK0Short = 0, lCheckMcK0Short = 0;
1748 Int_t lCheckPIdLambda = 0, lCheckMcLambda = 0;
1749 Int_t lCheckPIdAntiLambda = 0, lCheckMcAntiLambda = 0;
1750 Int_t lCheckSecondaryK0s = 0, lCheckSecondaryLambda = 0, lCheckSecondaryAntiLambda = 0;
1751 Int_t lCheckGamma = 0;
1752 Double_t mcPosMotherX = 0, mcPosMotherY = 0, mcPosMotherZ = 0;
1753 Double_t mcPosMotherR = 0;
1754 Double_t mcMotherPt = 0;
1756 Int_t lIndexPosMother = 0;
1757 Int_t lIndexNegMother = 0;
1758 Int_t lIndexMotherOfMother = 0;
1759 Int_t lPDGCodePosDaughter = 0;
1760 Int_t lPDGCodeNegDaughter = 0;
1761 Int_t lPdgcodeMother = 0;
1762 Int_t lPdgcodeMotherOfMother = 0;
1764 // Reconstructed position
1765 Double_t rcPosXK0s = 0, rcPosYK0s = 0, rcPosZK0s = 0;
1766 Double_t rcPosRK0s = 0;
1767 Double_t rcPosXLambda = 0, rcPosYLambda = 0, rcPosZLambda = 0;
1768 Double_t rcPosRLambda = 0;
1769 Double_t rcPosXAntiLambda = 0, rcPosYAntiLambda = 0, rcPosZAntiLambda = 0;
1770 Double_t rcPosRAntiLambda = 0;
1773 Double_t deltaPtK0s = 0, deltaPtLambda = 0, deltaPtAntiLambda = 0;
1776 AliESDtrack *myTrackPos = NULL;
1777 AliESDtrack *myTrackNeg = NULL;
1778 AliVParticle *lVPartPos = NULL;
1779 AliVParticle *lVPartNeg = NULL;
1781 // Daughters' momentum:
1782 Double_t lMomPos[3] = {999,999,999};
1783 Double_t lMomNeg[3] = {999,999,999};
1785 // AliKF Chi2 and Armenteros variables
1786 Double_t lChi2KFK0s = 0, lChi2KFLambda = 0, lChi2KFAntiLambda = 0;
1787 Double_t lAlphaV0K0s = 0, lAlphaV0Lambda = 0, lAlphaV0AntiLambda = 0;
1788 Double_t lPtArmV0K0s = 0, lPtArmV0Lambda = 0, lPtArmV0AntiLambda = 0;
1789 Double_t lQlPos = 0, lQlNeg = 0;
1793 // Bo: please use external methods for these TF1 (no TFormula like this)...
1795 // PID - Check Parameters depending on the AliRoot version ! Method to be improved !
1796 TF1 foPion("foPion", "[0]*([1]*TMath::Power(TMath::Sqrt(1 + (x/0.13957)*(x/0.13957))/(x/0.13957) , [3]) - 1 - TMath::Power(TMath::Sqrt(1 + (x/0.13957)*(x/0.13957))/(x/0.13957) , [3])*TMath::Log([2] + 1/TMath::Power((x/0.13957), [4])))",0.05,20);
1798 // paramters extracted from calibration....
1799 foPion.SetParameters(4.23232575531564326e+00,8.68482806165147636e+00,1.34000000000000005e-05,2.30445734159456084e+00,2.25624744086878559e+00);
1801 TF1 foProton("foProton", "[0]*([1]*TMath::Power(TMath::Sqrt(1 + (x/0.93827)*(x/0.93827))/(x/0.93827) , [3]) - 1 - TMath::Power(TMath::Sqrt(1 + (x/0.93827)*(x/0.93827))/(x/0.93827) , [3])*TMath::Log([2] + 1/TMath::Power((x/0.93827), [4])))",0.05,20);
1803 // paramters extracted from calibration....
1804 foProton.SetParameters(4.23232575531564326e+00,8.68482806165147636e+00,1.34000000000000005e-05,2.30445734159456084e+00,2.25624744086878559e+00);
1807 Float_t nSigmaPosPion = 0;
1808 Float_t nSigmaNegPion = 0;
1810 Float_t nSigmaPosProton = 0;
1811 Float_t nSigmaNegProton = 0;
1813 Float_t cutNSigma = 4.0;
1815 //*******************************************************
1816 // Primary Vertex, magnetic field and Quality tracks cuts
1818 AliAODVertex *myPrimaryVertex = NULL;
1819 AliESDtrackCuts *myTracksCuts = NULL;
1821 if(fAnalysisType == "ESD") {
1823 // Best Primary Vertex:
1824 const AliESDVertex *myBestPrimaryVertex = ((AliESDEvent*)lEvent)->GetPrimaryVertex();
1825 if (!myBestPrimaryVertex) return;
1826 if (!(myBestPrimaryVertex->GetStatus())) return;
1827 //if ( primaryVtx->GetNContributors() <3 ) return;
1828 myBestPrimaryVertex->GetXYZ(lPrimaryVtxPosition);
1829 myBestPrimaryVertex->GetCovMatrix(lPrimaryVtxCov);
1830 lPrimaryVtxChi2 = myBestPrimaryVertex->GetChi2toNDF();
1832 myPrimaryVertex = new AliAODVertex(lPrimaryVtxPosition, lPrimaryVtxCov, lPrimaryVtxChi2, NULL, -1, AliAODVertex::kPrimary);
1833 if (!myPrimaryVertex) return;
1835 // TPC Primary Vertex:
1836 //const AliESDVertex *myTPCPrimaryVertex = ((AliESDEvent*)lEvent)->GetPrimaryVertexTPC();
1837 //if (!myTPCPrimaryVertex) return;
1839 //const AliESDVertex *mySPDPrimaryVertex = ((AliESDEvent*)lEvent)->GetPrimaryVertexSPD();
1840 //if (!mySPDPrimaryVertex) return;
1842 lMagneticField = ((AliESDEvent*)lEvent)->GetMagneticField();
1844 myTracksCuts = new AliESDtrackCuts();
1845 // max value of diagonal covariance
1846 //myTracksCuts->SetMaxCovDiagonalElements(2.0, 2.0, 0.5, 0.5, 2.0);
1847 // require TPC refit
1848 myTracksCuts->SetRequireTPCRefit(kTRUE);
1849 // reject kink daughters
1850 //myTracksCuts->SetAcceptKinkDaughters(kFALSE);
1851 // minimum number of clusters in TPC
1852 myTracksCuts->SetMinNClustersTPC(80);
1853 // maximum normalized chi2
1854 //myTracksCuts->SetMaxChi2PerClusterTPC(3.5);
1857 else if(fAnalysisType == "AOD") {
1858 printf("enter AOD!!");
1859 myPrimaryVertex = ((AliAODEvent*)lEvent)->GetPrimaryVertex();
1860 if (!myPrimaryVertex) return;
1861 lPrimaryVtxPosition[0] = myPrimaryVertex->GetX();
1862 lPrimaryVtxPosition[1] = myPrimaryVertex->GetY();
1863 lPrimaryVtxPosition[2] = myPrimaryVertex->GetZ();
1865 // Tracks cuts FIX IT !
1868 lMagneticField = 999;
1871 fHistPrimaryVertexX->Fill(lPrimaryVtxPosition[0]);
1872 fHistPrimaryVertexY->Fill(lPrimaryVtxPosition[1]);
1873 fHistPrimaryVertexZ->Fill(lPrimaryVtxPosition[2]);
1874 Double_t lrcPrimVtxR = 0;
1875 lrcPrimVtxR = TMath::Sqrt(lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]+lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]); // Bo: this is done with respect to x,y=0,0... to sure it is used anymore;
1877 AliKFVertex primaryVtxKF( *myPrimaryVertex );
1878 AliKFParticle::SetField(lMagneticField);
1881 //*************************
1884 nv0sTot = lEvent->GetNumberOfV0s();
1886 for (Int_t iV0 = 0; iV0 < nv0sTot; iV0++) {
1889 AliKFParticle* negPiKF = NULL;
1890 AliKFParticle* posPiKF = NULL;
1891 AliKFParticle* posPKF = NULL;
1892 AliKFParticle* negAPKF = NULL;
1894 lIndexPosMother = 0; lIndexNegMother = 0; lIndexMotherOfMother = 0;
1895 lCheckPIdK0Short = 0; lCheckMcK0Short = 0; lCheckSecondaryK0s = 0;
1896 lCheckPIdLambda = 0; lCheckMcLambda = 0; lCheckSecondaryLambda = 0;
1897 lCheckPIdAntiLambda = 0; lCheckMcAntiLambda = 0; lCheckSecondaryAntiLambda = 0;
1898 lComeFromSigma = -1;
1901 if(fAnalysisType == "ESD") {
1904 AliESDv0 *v0 = ((AliESDEvent*)lEvent)->GetV0(iV0);
1908 fHistPrimaryVertexPosXV0events->Fill(lPrimaryVtxPosition[0]);
1909 fHistPrimaryVertexPosYV0events->Fill(lPrimaryVtxPosition[1]);
1910 fHistPrimaryVertexPosZV0events->Fill(lPrimaryVtxPosition[2]);
1913 lIndexTrackPos = TMath::Abs(v0->GetPindex());
1914 lIndexTrackNeg = TMath::Abs(v0->GetNindex());
1915 AliESDtrack *myTrackPosTest = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackPos);
1916 AliESDtrack *myTrackNegTest = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackNeg);
1917 if (!myTrackPosTest || !myTrackNegTest) {
1918 Printf("strange analysis::UserExec:: Error:Could not retreive one of the daughter track\n");
1922 if ( myTrackPosTest->GetSign() == myTrackNegTest->GetSign()){
1927 if(!lOnFlyStatus) nv0s++;
1928 else if(lOnFlyStatus) nv0sMI++;
1930 // VO's main characteristics to check the reconstruction cuts
1931 lOnFlyStatus = v0->GetOnFlyStatus();
1932 lChi2V0 = v0->GetChi2V0();
1933 lDcaV0Daughters = v0->GetDcaV0Daughters();
1934 lDcaV0ToPrimVertex = v0->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lPrimaryVtxPosition[2]);
1935 lV0cosPointAngle = v0->GetV0CosineOfPointingAngle(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1], lPrimaryVtxPosition[2]);
1937 v0->GetXYZ(lV0Position[0], lV0Position[1], lV0Position[2]);
1939 lV0Radius = TMath::Sqrt(lV0Position[0]*lV0Position[0]+lV0Position[1]*lV0Position[1]);
1940 lV0DecayLength = TMath::Sqrt(TMath::Power(lV0Position[0] - lPrimaryVtxPosition[0],2) +
1941 TMath::Power(lV0Position[1] - lPrimaryVtxPosition[1],2) +
1942 TMath::Power(lV0Position[2] - lPrimaryVtxPosition[2],2 ));
1945 if( myTrackPosTest->GetSign() ==1){
1947 myTrackPos = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackPos);
1948 myTrackNeg = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackNeg);
1950 // Daughters' momentum;
1951 v0->GetPPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
1952 v0->GetNPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
1954 if (negPiKF) delete negPiKF; negPiKF=NULL;
1955 if (posPiKF) delete posPiKF; posPiKF=NULL;
1956 if (posPKF) delete posPKF; posPKF=NULL;
1957 if (negAPKF) delete negAPKF; negAPKF=NULL;
1959 negPiKF = new AliKFParticle( *(v0->GetParamN()) ,-211);
1960 posPiKF = new AliKFParticle( *(v0->GetParamP()) ,211);
1961 posPKF = new AliKFParticle( *(v0->GetParamP()) ,2212);
1962 negAPKF = new AliKFParticle( *(v0->GetParamN()) ,-2212);
1966 if( myTrackPosTest->GetSign() ==-1){
1968 myTrackPos = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackNeg);
1969 myTrackNeg = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackPos);
1971 // Daughters' momentum;
1972 v0->GetPPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
1973 v0->GetNPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
1975 if (negPiKF) delete negPiKF; negPiKF=NULL;
1976 if (posPiKF) delete posPiKF; posPiKF=NULL;
1977 if (posPKF) delete posPKF; posPKF=NULL;
1978 if (negAPKF) delete negAPKF; negAPKF=NULL;
1980 negPiKF = new AliKFParticle( *(v0->GetParamP()) ,-211);
1981 posPiKF = new AliKFParticle( *(v0->GetParamN()) ,211);
1982 posPKF = new AliKFParticle( *(v0->GetParamN()) ,2212);
1983 negAPKF = new AliKFParticle( *(v0->GetParamP()) ,-2212);
1987 lLabelTrackPos = (UInt_t)TMath::Abs(myTrackPos->GetLabel());
1988 lLabelTrackNeg = (UInt_t)TMath::Abs(myTrackNeg->GetLabel());
1991 // DCA between daughter and Primary Vertex:
1992 if (myTrackPos) lDcaPosToPrimVertex = TMath::Abs(myTrackPos->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lMagneticField) );
1994 if (myTrackNeg) lDcaNegToPrimVertex = TMath::Abs(myTrackNeg->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lMagneticField) );
1996 // Quality tracks cuts:
1997 if ( !(myTracksCuts->IsSelected(myTrackPos)) || !(myTracksCuts->IsSelected(myTrackNeg)) ) continue;
1999 // Armenteros variables:
2000 lAlphaV0 = v0->AlphaV0();
2001 lPtArmV0 = v0->PtArmV0();
2007 lTPCsignalPos = myTrackPos->GetTPCsignal();
2008 lTPCsignalNeg = myTrackNeg->GetTPCsignal();
2010 const AliExternalTrackParam *posInnerParam = myTrackPos->GetInnerParam();
2011 if (!posInnerParam) continue;
2013 const AliExternalTrackParam *negInnerParam = myTrackNeg->GetInnerParam();
2014 if (!negInnerParam) continue;
2016 AliExternalTrackParam trackInPos(*posInnerParam);
2017 AliExternalTrackParam trackInNeg(*negInnerParam);
2019 lMomentumTrackInPos = trackInPos.GetP(); // momentum for dEdx determination
2020 lMomentumTrackInNeg = trackInNeg.GetP();
2022 if (fUsePID.Contains("withPID")) {
2023 nSigmaPosPion = TMath::Abs((lTPCsignalPos - foPion.Eval(lMomentumTrackInPos))/foPion.Eval(lMomentumTrackInPos))/0.06;
2025 nSigmaNegPion = TMath::Abs((lTPCsignalNeg - foPion.Eval(lMomentumTrackInNeg))/foPion.Eval(lMomentumTrackInNeg))/0.06; // 0.06 comes from momentum resolution !
2027 nSigmaPosProton = TMath::Abs((lTPCsignalPos - foProton.Eval(lMomentumTrackInPos))/foProton.Eval(lMomentumTrackInPos))/0.06;
2029 nSigmaNegProton = TMath::Abs((lTPCsignalNeg - foProton.Eval(lMomentumTrackInNeg))/foProton.Eval(lMomentumTrackInNeg))/0.06; // 0.06 comes from momentum resolution !
2032 nSigmaPosPion = 0; nSigmaNegPion =0; nSigmaPosProton = 0; nSigmaNegProton= 0;}
2036 // Monte-Carlo particle associated to reconstructed particles:
2038 //if (lLabelTrackPos < 0 || lLabelTrackNeg < 0) continue;
2039 TParticle *lMCESDPartPos = stack->Particle(lLabelTrackPos);
2040 if(!lMCESDPartPos) {
2041 Printf("no MC particle for positive and/or negative daughter\n");
2044 TParticle *lMCESDPartNeg = stack->Particle(lLabelTrackNeg);
2045 if (!lMCESDPartNeg) continue;
2046 lPDGCodePosDaughter = lMCESDPartPos->GetPdgCode();
2047 lPDGCodeNegDaughter = lMCESDPartNeg->GetPdgCode();
2048 lIndexPosMother = lMCESDPartPos->GetFirstMother();
2049 lIndexNegMother = lMCESDPartNeg->GetFirstMother();
2050 TParticle *lMCESDMother = stack->Particle(lIndexPosMother);
2051 if (!lMCESDMother) continue;
2052 lPdgcodeMother = lMCESDMother->GetPdgCode();
2053 lIndexMotherOfMother = lMCESDMother->GetFirstMother();
2054 if (lIndexMotherOfMother ==-1) lPdgcodeMotherOfMother = 0;
2056 TParticle *lMCESDMotherOfMother = stack->Particle(lIndexMotherOfMother);
2057 if (!lMCESDMotherOfMother) continue;
2058 lPdgcodeMotherOfMother = lMCESDMotherOfMother->GetPdgCode();
2061 mcPosX = lMCESDPartPos->Vx();
2062 mcPosY = lMCESDPartPos->Vy();
2063 mcPosZ = lMCESDPartPos->Vz();
2064 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
2065 mcPosMotherX = lMCESDMother->Vx();
2066 mcPosMotherY = lMCESDMother->Vy();
2067 mcPosMotherZ = lMCESDMother->Vz();
2068 mcPosMotherR = TMath::Sqrt(mcPosMotherX*mcPosMotherX+mcPosMotherY*mcPosMotherY);
2070 mcMotherPt = lMCESDMother->Pt();
2073 } // end ESD condition
2077 else if(fAnalysisType == "AOD") {
2079 AliAODv0 *myAODv0 = ((AliAODEvent*)lEvent)->GetV0(iV0);
2080 if (!myAODv0) continue;
2083 fHistPrimaryVertexPosXV0events->Fill(lPrimaryVtxPosition[0]);
2084 fHistPrimaryVertexPosYV0events->Fill(lPrimaryVtxPosition[1]);
2085 fHistPrimaryVertexPosZV0events->Fill(lPrimaryVtxPosition[2]);
2089 if(!lOnFlyStatus) nv0s++;
2090 else if(lOnFlyStatus) nv0sMI++;
2093 lIndexTrackPos = TMath::Abs(myAODv0->GetPosID());
2094 lIndexTrackNeg = TMath::Abs(myAODv0->GetNegID());
2096 AliVParticle *lVPartPosTest = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackPos);
2097 AliVParticle *lVPartNegTest = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackNeg);
2098 //AliAODTrack *lVPartPos = ((AliAODEvent*)lEvent)->GetTrack(lIndexTrackPos);
2099 //AliAODTrack *lVPartNeg = ((AliAODEvent*)lEvent)->GetTrack(lIndexTrackNeg);
2101 if (!lVPartPosTest ||(!lVPartNegTest )) {
2102 Printf("strange analysis::UserExec:: Could not retreive one of the daughter track\n");
2109 // TPC refit condition (done during reconstruction for Offline but not for On-the-fly)
2110 //if( !(lVPartPosTest->GetStatus() & AliAODTrack::kTPCrefit)) continue;
2111 //if( !(lVPartNegTest->GetStatus() & AliAODTrack::kTPCrefit)) continue;
2114 lDcaPosToPrimVertex = myAODv0->DcaPosToPrimVertex();
2115 lDcaNegToPrimVertex = myAODv0->DcaNegToPrimVertex();
2116 lOnFlyStatus = myAODv0->GetOnFlyStatus();
2117 lChi2V0 = myAODv0->Chi2V0();
2118 lDcaV0Daughters = myAODv0->DcaV0Daughters();
2119 lDcaV0ToPrimVertex = myAODv0->DcaV0ToPrimVertex();
2120 lV0DecayLength = myAODv0->DecayLengthV0(lPrimaryVtxPosition);
2121 lV0cosPointAngle = myAODv0->CosPointingAngle(lPrimaryVtxPosition);
2122 lV0Radius = myAODv0->RadiusV0();
2124 if( lVPartPosTest->Charge() ==1){
2126 lVPartPos = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackPos);
2127 lVPartNeg = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackNeg);
2130 if (negPiKF) delete negPiKF; negPiKF=NULL;
2131 if (posPiKF) delete posPiKF; posPiKF=NULL;
2132 if (posPKF) delete posPKF; posPKF=NULL;
2133 if (negAPKF) delete negAPKF; negAPKF=NULL;
2135 //negPiKF = new AliKFParticle( *(myAODv0->GetParamN()) ,-211);
2136 //posPiKF = new AliKFParticle( *(myAODv0->GetParamP()) ,211);
2137 //posPKF = new AliKFParticle( *(myAODv0->GetParamP()) ,2212);
2138 //negAPKF = new AliKFParticle( *(myAODv0->GetParamN()) ,-2212);
2147 if( lVPartPosTest->Charge() ==-1){
2149 lVPartPos = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackNeg);
2150 lVPartNeg = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackPos);
2152 if (negPiKF) delete negPiKF; negPiKF=NULL;
2153 if (posPiKF) delete posPiKF; posPiKF=NULL;
2154 if (posPKF) delete posPKF; posPKF=NULL;
2155 if (negAPKF) delete negAPKF; negAPKF=NULL;
2157 //negPiKF = new AliKFParticle( *(myAODv0->GetParamP()) ,-211);
2158 //posPiKF = new AliKFParticle( *(myAODv0->GetParamN()) ,211);
2159 //posPKF = new AliKFParticle( *(myAODv0->GetParamN()) ,2212);
2160 //negAPKF = new AliKFParticle( *(myAODv0->GetParamP()) ,-2212);
2167 lLabelTrackPos = TMath::Abs(lVPartPos->GetLabel());
2168 lLabelTrackNeg = TMath::Abs(lVPartNeg->GetLabel());
2170 // Armenteros variables:
2171 lAlphaV0 = myAODv0->AlphaV0();
2172 lPtArmV0 = myAODv0->PtArmV0();
2175 lV0Eta = myAODv0->PseudoRapV0();
2177 // PID not accessible with AOD !
2178 nSigmaPosPion = 0; nSigmaNegPion =0; nSigmaPosProton = 0; nSigmaNegProton= 0;
2181 // Monte-Carlo particle associated to reconstructed particles:
2183 AliAODMCParticle *lMCAODPartPos = (AliAODMCParticle*)mcArray->At(lLabelTrackPos);
2184 if (!lMCAODPartPos) continue;
2185 AliAODMCParticle *lMCAODPartNeg = (AliAODMCParticle*)mcArray->At(lLabelTrackNeg);
2186 if(!lMCAODPartNeg) {
2187 Printf("strange analysis::UserExec:no MC particle for negative daughter\n");
2190 lPDGCodePosDaughter = lMCAODPartPos->GetPdgCode();
2191 lPDGCodeNegDaughter = lMCAODPartNeg->GetPdgCode();
2192 lIndexPosMother = lMCAODPartPos->GetMother();
2193 lIndexNegMother = lMCAODPartNeg->GetMother();
2195 AliAODMCParticle *lMCAODMother = (AliAODMCParticle*)mcArray->At(lIndexPosMother);
2196 lPdgcodeMother = lMCAODMother->GetPdgCode();
2197 lIndexMotherOfMother = lMCAODMother->GetMother();
2198 if (lIndexMotherOfMother ==-1) lPdgcodeMotherOfMother = 0;
2200 lPdgcodeMotherOfMother = ((AliAODMCParticle*)mcArray->At(lIndexMotherOfMother))->GetPdgCode();
2203 mcPosX = lMCAODPartPos->Xv();
2204 mcPosY = lMCAODPartPos->Yv();
2205 mcPosZ = lMCAODPartPos->Zv();
2206 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
2207 mcPosMotherX = lMCAODMother->Xv();
2208 mcPosMotherY = lMCAODMother->Yv();
2209 mcPosMotherZ = lMCAODMother->Zv();
2210 mcPosMotherR = TMath::Sqrt(mcPosMotherX*mcPosMotherX+mcPosMotherY*mcPosMotherY);
2211 mcMotherPt = lMCAODMother->Pt();
2214 } // end AOD condition
2217 AliKFParticle v0K0sKF;
2218 v0K0sKF+=(*negPiKF);
2219 v0K0sKF+=(*posPiKF);
2220 v0K0sKF.SetProductionVertex(primaryVtxKF);
2222 AliKFParticle v0LambdaKF;
2223 v0LambdaKF+=(*negPiKF);
2224 v0LambdaKF+=(*posPKF);
2225 v0LambdaKF.SetProductionVertex(primaryVtxKF);
2227 AliKFParticle v0AntiLambdaKF;
2228 v0AntiLambdaKF+=(*posPiKF);
2229 v0AntiLambdaKF+=(*negAPKF);
2230 v0AntiLambdaKF.SetProductionVertex(primaryVtxKF);
2233 lInvMassK0s = v0K0sKF.GetMass();
2234 lInvMassLambda = v0LambdaKF.GetMass();
2235 lInvMassAntiLambda = v0AntiLambdaKF.GetMass();
2238 lRapK0s = 0.5*TMath::Log((v0K0sKF.GetE()+v0K0sKF.GetPz())/(v0K0sKF.GetE()-v0K0sKF.GetPz()+1.e-13));
2239 lRapLambda = 0.5*TMath::Log((v0LambdaKF.GetE()+v0LambdaKF.GetPz())/(v0LambdaKF.GetE()-v0LambdaKF.GetPz()+1.e-13));
2240 lRapAntiLambda = 0.5*TMath::Log((v0AntiLambdaKF.GetE()+v0AntiLambdaKF.GetPz())/(v0AntiLambdaKF.GetE()-v0AntiLambdaKF.GetPz()+1.e-13));
2243 lEtaK0s = v0K0sKF.GetEta();
2244 lEtaLambda = v0LambdaKF.GetEta();
2245 lEtaAntiLambda = v0AntiLambdaKF.GetEta();
2248 lPtK0s = v0K0sKF.GetPt();
2249 lPtLambda = v0LambdaKF.GetPt();
2250 lPtAntiLambda = v0AntiLambdaKF.GetPt();
2253 deltaPtK0s = lPtK0s - mcMotherPt;
2254 deltaPtLambda = lPtLambda - mcMotherPt;
2255 deltaPtAntiLambda = lPtAntiLambda - mcMotherPt;
2258 lChi2KFK0s = v0K0sKF.GetChi2();
2259 lChi2KFLambda = v0LambdaKF.GetChi2();
2260 lChi2KFAntiLambda = v0AntiLambdaKF.GetChi2();
2262 // Reconstructed Position
2263 rcPosXK0s = v0K0sKF.GetX();
2264 rcPosYK0s = v0K0sKF.GetY();
2265 rcPosZK0s = v0K0sKF.GetZ();
2266 rcPosRK0s = TMath::Sqrt(rcPosXK0s*rcPosXK0s+rcPosYK0s*rcPosYK0s);
2268 rcPosXLambda = v0LambdaKF.GetX();
2269 rcPosYLambda = v0LambdaKF.GetY();
2270 rcPosZLambda = v0LambdaKF.GetZ();
2271 rcPosRLambda = TMath::Sqrt(rcPosXLambda*rcPosXLambda+rcPosYLambda*rcPosYLambda);
2273 rcPosXAntiLambda = v0AntiLambdaKF.GetX();
2274 rcPosYAntiLambda = v0AntiLambdaKF.GetY();
2275 rcPosZAntiLambda = v0AntiLambdaKF.GetZ();
2276 rcPosRAntiLambda = TMath::Sqrt(rcPosXAntiLambda*rcPosXAntiLambda+rcPosYAntiLambda*rcPosYAntiLambda);
2278 TVector3 momPos(lMomPos[0],lMomPos[1],lMomPos[2]);
2279 TVector3 momNeg(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
2280 TVector3 momTotK0s(v0K0sKF.GetPx(),v0K0sKF.GetPy(),v0K0sKF.GetPz());
2281 TVector3 momTotLambda(v0LambdaKF.GetPx(),v0LambdaKF.GetPy(),v0LambdaKF.GetPz());
2282 TVector3 momTotAntiLambda(v0AntiLambdaKF.GetPx(),v0AntiLambdaKF.GetPy(),v0AntiLambdaKF.GetPz());
2284 lQlPos = momPos.Dot(momTotK0s)/momTotK0s.Mag();
2285 lQlNeg = momNeg.Dot(momTotK0s)/momTotK0s.Mag();
2286 lAlphaV0K0s = 1.-2./(1.+lQlPos/lQlNeg);
2287 lQlPos = momPos.Dot(momTotLambda)/momTotLambda.Mag();
2288 lQlNeg = momNeg.Dot(momTotLambda)/momTotLambda.Mag();
2289 lAlphaV0Lambda = 1.-2./(1.+lQlPos/lQlNeg);
2290 lQlPos = momPos.Dot(momTotAntiLambda)/momTotAntiLambda.Mag();
2291 lQlNeg = momNeg.Dot(momTotAntiLambda)/momTotAntiLambda.Mag();
2292 lAlphaV0AntiLambda = 1.-2./(1.+lQlPos/lQlNeg);
2294 lPtArmV0K0s = momPos.Perp(momTotK0s);
2295 lPtArmV0Lambda = momPos.Perp(momTotLambda);
2296 lPtArmV0AntiLambda = momPos.Perp(momTotAntiLambda);
2298 // Look for associated particles:
2300 if( (lIndexPosMother==-1) || (lIndexNegMother==-1) ) {
2301 fHistMCDaughterTrack->Fill(1);
2304 else if( ( (lPDGCodePosDaughter==+211) && (lPDGCodeNegDaughter==-211) )
2306 lCheckPIdK0Short = 1;
2307 fHistMCDaughterTrack->Fill(3);
2308 if ( (lIndexPosMother==lIndexNegMother) &&
2309 (lPdgcodeMother==310) ) {
2310 if (lIndexPosMother <= lNbMCPrimary) lCheckMcK0Short = 1;
2311 else lCheckSecondaryK0s = 1;
2314 else if( ( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211) )
2316 lCheckPIdLambda = 1;
2317 fHistMCDaughterTrack->Fill(5);
2318 if ( (lIndexPosMother==lIndexNegMother) &&
2319 (lPdgcodeMother==3122) ){
2320 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2321 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2322 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2323 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2324 ) lComeFromSigma = 1;
2325 else lComeFromSigma = 0;
2326 if ( (lIndexPosMother <= lNbMCPrimary) ||
2327 ( ( lIndexPosMother > lNbMCPrimary) && (lComeFromSigma) )
2328 ) lCheckMcLambda = 1;
2329 else lCheckSecondaryLambda = 1;
2332 else if( ( (lPDGCodePosDaughter==211) && (lPDGCodeNegDaughter==-2212) )
2334 lCheckPIdAntiLambda = 1;
2335 fHistMCDaughterTrack->Fill(7);
2336 if ( (lIndexPosMother==lIndexNegMother) &&
2337 (lPdgcodeMother==-3122) ) {
2338 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2339 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2340 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2341 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2342 ) lComeFromSigma = 1;
2343 else lComeFromSigma = 0;
2344 if ( (lIndexPosMother <= lNbMCPrimary) ||
2345 ( ( lIndexPosMother > lNbMCPrimary) && (lComeFromSigma) )
2346 ) lCheckMcAntiLambda = 1;
2347 else lCheckSecondaryAntiLambda = 1;
2352 else if ( (lPDGCodePosDaughter==11) &&
2353 (lPDGCodeNegDaughter==-11) &&
2354 (lPdgcodeMother==22 ) )
2356 } // end "look for associated particles
2360 if (fUseCut.Contains("yes")) {
2361 if ( (lDcaPosToPrimVertex < 0.036 ) ||
2362 (lDcaNegToPrimVertex < 0.036 ) ||
2363 (lDcaV0Daughters > 0.5 ) ||
2364 (lV0cosPointAngle < 0.99 )
2370 //*****************************
2371 // filling histograms
2373 fHistDcaPosToPrimVertex->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
2374 fHistDcaNegToPrimVertex->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
2375 fHistDcaPosToPrimVertexZoom->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
2376 fHistDcaNegToPrimVertexZoom->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
2377 fHistRadiusV0->Fill(lV0Radius,lOnFlyStatus);
2378 fHistDecayLengthV0->Fill(lV0DecayLength,lOnFlyStatus);
2379 fHistDcaV0Daughters->Fill(lDcaV0Daughters,lOnFlyStatus);
2380 fHistChi2->Fill(lChi2V0,lOnFlyStatus);
2381 fHistCosPointAngle->Fill(lV0cosPointAngle,lOnFlyStatus);
2382 if (lV0cosPointAngle >= 0.9) fHistCosPointAngleZoom->Fill(lV0cosPointAngle,lOnFlyStatus);
2383 fHistChi2KFBeforeCutK0s->Fill(lChi2KFK0s,lOnFlyStatus);
2384 fHistChi2KFBeforeCutLambda->Fill(lChi2KFLambda,lOnFlyStatus);
2385 fHistChi2KFBeforeCutAntiLambda->Fill(lChi2KFAntiLambda,lOnFlyStatus);
2387 // Histo versus Rap and armenteros plot
2389 if (lCheckMcK0Short) fHistAsMcRapK0->Fill(lRapK0s);
2390 if (lCheckMcLambda) fHistAsMcRapLambda->Fill(lRapLambda);
2391 if (lCheckMcAntiLambda) fHistAsMcRapLambda->Fill(lRapAntiLambda);
2392 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0);
2395 if (lCheckMcK0Short) fHistAsMcRapK0MI->Fill(lRapK0s);
2396 if (lCheckMcLambda) fHistAsMcRapLambdaMI->Fill(lRapLambda);
2397 if (lCheckMcAntiLambda) fHistAsMcRapLambdaMI->Fill(lRapAntiLambda);
2398 fHistArmenterosPodolanskiMI->Fill(lAlphaV0,lPtArmV0);
2401 // K0s associated histograms in |eta| < lCutRap:
2402 if ( (nSigmaPosPion < cutNSigma) && (nSigmaNegPion < cutNSigma)
2403 && (lChi2KFK0s < cutChi2KF) ) {
2405 fHistChi2KFAfterCutK0s->Fill(lChi2KFK0s,lOnFlyStatus);
2407 if (TMath::Abs(lRapK0s) < lCutRap) {
2409 fHistNsigmaPosPionK0->Fill(nSigmaPosPion);
2410 fHistNsigmaNegPionK0->Fill(nSigmaNegPion);
2412 switch (lOnFlyStatus){
2414 fHistMassK0->Fill(lInvMassK0s);
2415 fHistMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
2416 fHistPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
2417 if(lCheckPIdK0Short) fHistPidMcMassK0->Fill(lInvMassK0s);
2418 if(lCheckMcK0Short) {
2419 fHistAsMcMassK0->Fill(lInvMassK0s);
2420 fHistAsMcPtK0->Fill(lPtK0s);
2421 fHistAsMcPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
2422 if (lPtK0s <= 1) fHistAsMcPtZoomK0->Fill(lPtK0s);
2423 fHistAsMcMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
2424 fHistAsMcResxK0->Fill(rcPosXK0s-mcPosX);
2425 fHistAsMcResyK0->Fill(rcPosYK0s-mcPosY);
2426 fHistAsMcReszK0->Fill(rcPosZK0s-mcPosZ);
2427 fHistAsMcResrVsRadiusK0->Fill(rcPosRK0s,rcPosRK0s-mcPosR);
2428 fHistAsMcReszVsRadiusK0->Fill(rcPosZK0s,rcPosZK0s-mcPosZ);
2429 fHistAsMcProdRadiusK0->Fill(mcPosMotherR);
2430 fHistAsMcProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
2431 fHistAsMcResPtK0->Fill(deltaPtK0s);
2432 fHistAsMcResPtVsRapK0->Fill(deltaPtK0s,lRapK0s);
2433 fHistAsMcResPtVsPtK0->Fill(deltaPtK0s,lPtK0s);
2435 if (lCheckSecondaryK0s) {
2436 fHistAsMcSecondaryPtVsRapK0s->Fill(lPtK0s,lRapK0s);
2437 fHistAsMcSecondaryProdRadiusK0s->Fill(mcPosMotherR);
2438 fHistAsMcSecondaryProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
2439 switch (lPdgcodeMotherOfMother) {
2440 case 130 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(0.5);break; // K0L
2441 case 321 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(1.5);break; // K+
2442 case -321 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(2.5);break; // K-
2443 case -3122 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(3.5);break; //AntiLambda
2444 default : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(6.5);break;
2450 fHistMassK0MI->Fill(lInvMassK0s);
2451 fHistMassVsRadiusK0MI->Fill(rcPosRK0s,lInvMassK0s);
2452 fHistPtVsMassK0MI->Fill(lInvMassK0s,lPtK0s);
2453 if(lCheckPIdK0Short) fHistPidMcMassK0MI->Fill(lInvMassK0s);
2454 if(lCheckMcK0Short) {
2455 fHistAsMcMassK0MI->Fill(lInvMassK0s);
2456 fHistAsMcPtK0MI->Fill(lPtK0s);
2457 fHistAsMcPtVsMassK0MI->Fill(lInvMassK0s,lPtK0s);
2458 if (lPtK0s <= 1) fHistAsMcPtZoomK0MI->Fill(lPtK0s);
2459 fHistAsMcMassVsRadiusK0MI->Fill(rcPosRK0s,lInvMassK0s);
2460 fHistAsMcResxK0MI->Fill(rcPosXK0s-mcPosX);
2461 fHistAsMcResyK0MI->Fill(rcPosYK0s-mcPosY);
2462 fHistAsMcReszK0MI->Fill(rcPosZK0s-mcPosZ);
2463 fHistAsMcResrVsRadiusK0MI->Fill(rcPosRK0s,rcPosRK0s-mcPosR);
2464 fHistAsMcReszVsRadiusK0MI->Fill(rcPosZK0s,rcPosZK0s-mcPosZ);
2465 fHistAsMcProdRadiusK0MI->Fill(mcPosMotherR);
2466 fHistAsMcProdRadiusXvsYK0sMI->Fill(mcPosMotherX,mcPosMotherY);
2467 fHistAsMcResPtK0MI->Fill(deltaPtK0s);
2468 fHistAsMcResPtVsRapK0MI->Fill(deltaPtK0s,lRapK0s);
2469 fHistAsMcResPtVsPtK0MI->Fill(deltaPtK0s,lPtK0s);
2471 else if (lCheckSecondaryK0s) {
2472 fHistAsMcSecondaryPtVsRapK0sMI->Fill(lPtK0s,lRapK0s);
2473 fHistAsMcSecondaryProdRadiusK0sMI->Fill(mcPosMotherR);
2474 fHistAsMcSecondaryProdRadiusXvsYK0sMI->Fill(mcPosMotherX,mcPosMotherY);
2475 switch (lPdgcodeMotherOfMother) {
2476 case 130 : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(0.5);break; // K0L
2477 case 321 : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(1.5);break; // K+
2478 case -321 : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(2.5);break; // K-
2479 case -3122 : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(3.5);break; //AntiLambda
2480 default : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(6.5);break;
2485 } // end rapidity condition
2486 } // end nsigma condition
2489 // Associated Lambda histograms in |eta| < lCutRap
2490 if ( (nSigmaPosProton < cutNSigma) && (nSigmaNegPion < cutNSigma)
2491 && (lChi2KFLambda < cutChi2KF) ) {
2493 fHistChi2KFAfterCutLambda->Fill(lChi2KFLambda,lOnFlyStatus);
2495 if (TMath::Abs(lRapLambda) < lCutRap) {
2497 fHistNsigmaPosProtonLambda->Fill(nSigmaPosProton);
2498 fHistNsigmaNegPionLambda->Fill(nSigmaNegPion);
2499 switch (lOnFlyStatus){
2501 fHistMassLambda->Fill(lInvMassLambda);
2502 fHistMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
2503 fHistPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
2504 if(lCheckPIdLambda) fHistPidMcMassLambda->Fill(lInvMassLambda);
2506 if(lCheckMcLambda) {
2507 fHistAsMcMassLambda->Fill(lInvMassLambda);
2508 fHistAsMcPtLambda->Fill(lPtLambda);
2509 fHistAsMcPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
2510 if (lPtLambda <= 1) fHistAsMcPtZoomLambda->Fill(lPtLambda);
2511 fHistAsMcMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
2512 fHistAsMcResxLambda->Fill(rcPosXLambda-mcPosX);
2513 fHistAsMcResyLambda->Fill(rcPosYLambda-mcPosY);
2514 fHistAsMcReszLambda->Fill(rcPosZLambda-mcPosZ);
2515 fHistAsMcResrVsRadiusLambda->Fill(rcPosRLambda,rcPosRLambda-mcPosR);
2516 fHistAsMcReszVsRadiusLambda->Fill(rcPosZLambda,rcPosZLambda-mcPosZ);
2517 fHistAsMcProdRadiusLambda->Fill(mcPosMotherR);
2518 fHistAsMcProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
2519 fHistAsMcResPtLambda->Fill(deltaPtLambda);
2520 fHistAsMcResPtVsRapLambda->Fill(deltaPtLambda,lRapLambda);
2521 fHistAsMcResPtVsPtLambda->Fill(deltaPtLambda,lPtLambda);
2522 if (lComeFromSigma) fHistAsMcPtLambdaFromSigma->Fill(lPtLambda);
2523 switch (lPdgcodeMotherOfMother) {
2524 case 3222 : fHistAsMcMotherPdgCodeLambda->Fill(0.5); break; // Sigma +
2525 case 3212 : fHistAsMcMotherPdgCodeLambda->Fill(1.5); break; // Sigma 0
2526 case 3112 : fHistAsMcMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
2527 case 3224 : fHistAsMcMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
2528 case 3214 : fHistAsMcMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
2529 case 3114 : fHistAsMcMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
2530 case 3322 : fHistAsMcMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
2531 case 3312 : fHistAsMcMotherPdgCodeLambda->Fill(7.5); break; // Xi -
2532 case 3334 : fHistAsMcMotherPdgCodeLambda->Fill(8.5); break; // Omega
2533 case -1 : fHistAsMcMotherPdgCodeLambda->Fill(9.5); break;
2534 default : fHistAsMcMotherPdgCodeLambda->Fill(10.5);break;
2538 else if (lCheckSecondaryLambda) {
2539 fHistAsMcSecondaryPtVsRapLambda->Fill(lPtLambda,lRapLambda);
2540 fHistAsMcSecondaryProdRadiusLambda->Fill(mcPosMotherR);
2541 fHistAsMcSecondaryProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
2542 if (lComeFromSigma) fHistAsMcSecondaryPtLambdaFromSigma->Fill(lPtLambda);
2543 printf(" lPdgcodeMotherOfMother= %d",lPdgcodeMotherOfMother);
2544 switch (lPdgcodeMotherOfMother) {
2545 case 3222 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(0.5); break;// Sigma +
2546 case 3212 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(1.5); break;// Sigma 0
2547 case 3112 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
2548 case 3224 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
2549 case 3214 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
2550 case 3114 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
2551 case 3322 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
2552 case 3312 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(7.5); break; // Xi -
2553 case 3334 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(8.5); break; // Omega
2554 case -1 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(9.5); break;
2555 default : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(10.5);break;
2561 fHistMassLambdaMI->Fill(lInvMassLambda);
2562 fHistMassVsRadiusLambdaMI->Fill(rcPosRLambda,lInvMassLambda);
2563 fHistPtVsMassLambdaMI->Fill(lInvMassLambda,lPtLambda);
2564 if(lCheckPIdLambda) fHistPidMcMassLambdaMI->Fill(lInvMassLambda);
2566 if(lCheckMcLambda) {
2567 fHistAsMcMassLambdaMI->Fill(lInvMassLambda);
2568 fHistAsMcPtLambdaMI->Fill(lPtLambda);
2569 fHistAsMcPtVsMassLambdaMI->Fill(lInvMassLambda,lPtLambda);
2570 fHistAsMcMassVsRadiusLambdaMI->Fill(rcPosRLambda,lInvMassLambda);
2571 fHistAsMcResxLambdaMI->Fill(rcPosXLambda-mcPosX);
2572 fHistAsMcResyLambdaMI->Fill(rcPosYLambda-mcPosY);
2573 fHistAsMcReszLambdaMI->Fill(rcPosZLambda-mcPosZ);
2574 fHistAsMcResrVsRadiusLambdaMI->Fill(rcPosRLambda,rcPosRLambda-mcPosR);
2575 fHistAsMcReszVsRadiusLambdaMI->Fill(rcPosZLambda,rcPosZLambda-mcPosZ);
2576 fHistAsMcProdRadiusLambdaMI->Fill(mcPosMotherR);
2577 fHistAsMcProdRadiusXvsYLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
2578 fHistAsMcResPtLambdaMI->Fill(deltaPtLambda);
2579 fHistAsMcResPtVsRapLambdaMI->Fill(deltaPtLambda,lRapLambda);
2580 fHistAsMcResPtVsPtLambdaMI->Fill(deltaPtLambda,lPtLambda);
2581 if (lComeFromSigma) fHistAsMcPtLambdaFromSigmaMI->Fill(lPtLambda);
2582 switch (lPdgcodeMotherOfMother) {
2583 case 3222 : fHistAsMcMotherPdgCodeLambdaMI->Fill(0.5); break; // Sigma +
2584 case 3212 : fHistAsMcMotherPdgCodeLambdaMI->Fill(1.5); break; // Sigma 0
2585 case 3112 : fHistAsMcMotherPdgCodeLambdaMI->Fill(2.5); break;// Sigma -
2586 case 3224 : fHistAsMcMotherPdgCodeLambdaMI->Fill(3.5); break;// Sigma(1385) +
2587 case 3214 : fHistAsMcMotherPdgCodeLambdaMI->Fill(4.5); break;// Sigma(1385) 0
2588 case 3114 : fHistAsMcMotherPdgCodeLambdaMI->Fill(5.5); break;// Sigma(1385) -
2589 case 3322 : fHistAsMcMotherPdgCodeLambdaMI->Fill(6.5);break; // Xi 0
2590 case 3312 : fHistAsMcMotherPdgCodeLambdaMI->Fill(7.5);break; // Xi -
2591 case 3334 : fHistAsMcMotherPdgCodeLambdaMI->Fill(8.5);break; // Omega
2592 case -1 : fHistAsMcMotherPdgCodeLambdaMI->Fill(9.5);break;
2593 default : fHistAsMcMotherPdgCodeLambdaMI->Fill(10.5);break;
2596 else if (lCheckSecondaryLambda) {
2597 fHistAsMcSecondaryPtVsRapLambdaMI->Fill(lPtLambda,lRapLambda);
2598 fHistAsMcSecondaryProdRadiusLambdaMI->Fill(mcPosMotherR);
2599 fHistAsMcSecondaryProdRadiusXvsYLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
2600 if (lComeFromSigma) fHistAsMcSecondaryPtLambdaFromSigmaMI->Fill(lPtLambda);
2601 switch (lPdgcodeMotherOfMother) {
2602 case 3222 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(0.5); break;// Sigma +
2603 case 3212 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(1.5); break;// Sigma 0
2604 case 3112 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(2.5); break;// Sigma -
2605 case 3224 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(3.5); break;// Sigma(1385) +
2606 case 3214 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(4.5); break;// Sigma(1385) 0
2607 case 3114 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(5.5); break;// Sigma(1385) -
2608 case 3322 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(6.5); break; // Xi 0
2609 case 3312 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(7.5); break; // Xi -
2610 case 3334 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(8.5); break; // Omega
2611 case -1 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(9.5); break;
2612 default : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(10.5);break;
2617 } // end rapidity condition
2618 } //end nsigma condition - lambda
2622 // AntiLambda associated histograms in |eta| < lCutRap
2623 if ( (nSigmaPosPion < cutNSigma) && (nSigmaNegProton < cutNSigma)
2624 && (lChi2KFAntiLambda < cutChi2KF) ) {
2626 fHistChi2KFAfterCutLambda->Fill(lChi2KFLambda,lOnFlyStatus);
2628 if (TMath::Abs(lRapAntiLambda) < lCutRap) {
2631 fHistNsigmaPosPionAntiLambda->Fill(nSigmaPosPion);
2632 fHistNsigmaNegProtonAntiLambda->Fill(nSigmaNegProton);
2634 switch (lOnFlyStatus){
2636 fHistMassAntiLambda->Fill(lInvMassAntiLambda);
2637 fHistMassVsRadiusAntiLambda->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
2638 fHistPtVsMassAntiLambda->Fill(lInvMassAntiLambda,lPtAntiLambda);
2639 if (lCheckPIdAntiLambda) fHistPidMcMassAntiLambda->Fill(lInvMassAntiLambda);
2641 if(lCheckMcAntiLambda) {
2642 fHistAsMcMassAntiLambda->Fill(lInvMassAntiLambda);
2643 fHistAsMcPtAntiLambda->Fill(lPtAntiLambda);
2644 fHistAsMcPtVsMassAntiLambda->Fill(lInvMassAntiLambda,lPtAntiLambda);
2645 fHistAsMcMassVsRadiusAntiLambda->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
2646 fHistAsMcResxAntiLambda->Fill(rcPosXAntiLambda-mcPosX);
2647 fHistAsMcResyAntiLambda->Fill(rcPosYAntiLambda-mcPosY);
2648 fHistAsMcReszAntiLambda->Fill(rcPosZAntiLambda-mcPosZ);
2649 fHistAsMcResrVsRadiusAntiLambda->Fill(rcPosRAntiLambda,rcPosRAntiLambda-mcPosR);
2650 fHistAsMcReszVsRadiusAntiLambda->Fill(rcPosZAntiLambda,rcPosZAntiLambda-mcPosZ);
2651 fHistAsMcProdRadiusAntiLambda->Fill(mcPosMotherR);
2652 fHistAsMcProdRadiusXvsYAntiLambda->Fill(mcPosMotherX,mcPosMotherY);
2653 fHistAsMcResPtAntiLambda->Fill(deltaPtAntiLambda);
2654 fHistAsMcResPtVsRapAntiLambda->Fill(deltaPtAntiLambda,lRapLambda);
2655 fHistAsMcResPtVsPtAntiLambda->Fill(deltaPtAntiLambda,lPtAntiLambda);
2656 if (lComeFromSigma) fHistAsMcPtAntiLambdaFromSigma->Fill(lPtAntiLambda);
2657 switch (lPdgcodeMotherOfMother) {
2658 case -3222 : fHistAsMcMotherPdgCodeAntiLambda->Fill(0.5); break;// Sigma +
2659 case -3212 : fHistAsMcMotherPdgCodeAntiLambda->Fill(1.5); break;// Sigma 0
2660 case -3112 : fHistAsMcMotherPdgCodeAntiLambda->Fill(2.5); break;// Sigma -
2661 case -3224 : fHistAsMcMotherPdgCodeAntiLambda->Fill(3.5); break;// Sigma(1385) +
2662 case -3214 : fHistAsMcMotherPdgCodeAntiLambda->Fill(4.5); break;// Sigma(1385) 0
2663 case -3114 : fHistAsMcMotherPdgCodeAntiLambda->Fill(5.5); break;// Sigma(1385) -
2664 case -3322 : fHistAsMcMotherPdgCodeAntiLambda->Fill(6.5); break; // Xi 0
2665 case -3312 : fHistAsMcMotherPdgCodeAntiLambda->Fill(7.5); break; // Xi -
2666 case -3334 : fHistAsMcMotherPdgCodeAntiLambda->Fill(8.5); break; // Omega
2667 case -1 : fHistAsMcMotherPdgCodeAntiLambda->Fill(9.5); break;
2668 default : fHistAsMcMotherPdgCodeAntiLambda->Fill(10.5);break;
2671 else if (lCheckSecondaryAntiLambda) {
2672 fHistAsMcSecondaryPtVsRapAntiLambda->Fill(lPtAntiLambda,lRapLambda);
2673 fHistAsMcSecondaryProdRadiusAntiLambda->Fill(mcPosMotherR);
2674 fHistAsMcSecondaryProdRadiusXvsYAntiLambda->Fill(mcPosMotherX,mcPosMotherY);
2675 if (lComeFromSigma) fHistAsMcSecondaryPtAntiLambdaFromSigma->Fill(lPtAntiLambda);
2676 switch (lPdgcodeMotherOfMother) {
2677 case -3222 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(0.5); break;// Sigma +
2678 case -3212 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(1.5); break;// Sigma 0
2679 case -3112 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(2.5); break;// Sigma -
2680 case -3224 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(3.5); break;// Sigma(1385) +
2681 case -3214 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(4.5); break;// Sigma(1385) 0
2682 case -3114 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(5.5); break;// Sigma(1385) -
2683 case -3322 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(6.5); break; // Xi 0
2684 case -3312 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(7.5); break; // Xi -
2685 case -3334 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(8.5); break; // Omega
2686 case -1 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(9.5); break;
2687 default : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(10.5);break;
2694 fHistMassAntiLambdaMI->Fill(lInvMassAntiLambda);
2695 fHistMassVsRadiusAntiLambdaMI->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
2696 fHistPtVsMassAntiLambdaMI->Fill(lInvMassAntiLambda,lPtAntiLambda);
2697 if (lCheckPIdAntiLambda) fHistPidMcMassAntiLambdaMI->Fill(lInvMassAntiLambda);
2699 if(lCheckMcAntiLambda) {
2700 fHistAsMcMassAntiLambdaMI->Fill(lInvMassAntiLambda);
2701 fHistAsMcPtAntiLambdaMI->Fill(lPtAntiLambda);
2702 fHistAsMcPtVsMassAntiLambdaMI->Fill(lInvMassAntiLambda,lPtAntiLambda);
2703 fHistAsMcMassVsRadiusAntiLambdaMI->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
2704 fHistAsMcResxAntiLambdaMI->Fill(rcPosXAntiLambda-mcPosX);
2705 fHistAsMcResyAntiLambdaMI->Fill(rcPosYAntiLambda-mcPosY);
2706 fHistAsMcReszAntiLambdaMI->Fill(rcPosZAntiLambda-mcPosZ);
2707 fHistAsMcResrVsRadiusAntiLambdaMI->Fill(rcPosRAntiLambda,rcPosRAntiLambda-mcPosR);
2708 fHistAsMcReszVsRadiusAntiLambdaMI->Fill(rcPosZAntiLambda,rcPosZAntiLambda-mcPosZ);
2709 fHistAsMcProdRadiusAntiLambdaMI->Fill(mcPosMotherR);
2710 fHistAsMcProdRadiusXvsYAntiLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
2711 fHistAsMcResPtAntiLambdaMI->Fill(deltaPtAntiLambda);
2712 fHistAsMcResPtVsRapAntiLambdaMI->Fill(deltaPtAntiLambda,lRapLambda);
2713 fHistAsMcResPtVsPtAntiLambdaMI->Fill(deltaPtAntiLambda,lPtAntiLambda);
2714 if (lComeFromSigma) fHistAsMcPtAntiLambdaFromSigmaMI->Fill(lPtAntiLambda);
2715 switch (lPdgcodeMotherOfMother) {
2716 case -3222 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(0.5); break;// Sigma +
2717 case -3212 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(1.5); break;// Sigma 0
2718 case -3112 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(2.5); break;// Sigma -
2719 case -3224 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(3.5); break;// Sigma(1385) +
2720 case -3214 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(4.5); break;// Sigma(1385) 0
2721 case -3114 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(5.5); break;// Sigma(1385) -
2722 case -3322 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(6.5); break; // Xi 0
2723 case -3312 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(7.5); break; // Xi -
2724 case -3334 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(8.5); break; // Omega
2725 case -1 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(9.5); break;
2726 default : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(10.5);break;
2729 else if (lCheckSecondaryAntiLambda) {
2730 fHistAsMcSecondaryPtVsRapAntiLambdaMI->Fill(lPtAntiLambda,lRapLambda);
2731 fHistAsMcSecondaryProdRadiusAntiLambdaMI->Fill(mcPosMotherR);
2732 fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
2733 if (lComeFromSigma) fHistAsMcSecondaryPtAntiLambdaFromSigmaMI->Fill(lPtAntiLambda);
2734 switch (lPdgcodeMotherOfMother) {
2735 case -3222 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(0.5); break;// Sigma +
2736 case -3212 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(1.5); break;// Sigma 0
2737 case -3112 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(2.5); break;// Sigma -
2738 case -3224 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(3.5); break;// Sigma(1385) +
2739 case -3214 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(4.5); break;// Sigma(1385) 0
2740 case -3114 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(5.5); break;// Sigma(1385) -
2741 case -3322 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(6.5); break; // Xi 0
2742 case -3312 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(7.5); break; // Xi -
2743 case -3334 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(8.5); break; // Omega
2744 case -1 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(9.5); break;
2745 default : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(10.5);break;
2750 } // end rapidity condition
2751 } // end nsigma condition - antilambda
2753 if (negPiKF) delete negPiKF; negPiKF= NULL;
2754 if (posPiKF) delete posPiKF; posPiKF= NULL;
2755 if (posPKF) delete posPKF; posPKF = NULL;
2756 if (negAPKF) delete negAPKF; negAPKF= NULL;
2760 fHistV0Multiplicity->Fill(nv0s);
2761 fHistV0MultiplicityMI->Fill(nv0sMI);
2763 if (fAnalysisType == "ESD") { if(myPrimaryVertex) delete myPrimaryVertex; }
2765 if(myTracksCuts) delete myTracksCuts;
2768 PostData(1, fListHist);
2771 //________________________________________________________________________
2772 void AliAnalysisTaskPerformanceStrange::Terminate(Option_t *)
2774 // Draw result to the screen
2775 // Called once at the end of the query
2777 TList *cRetrievedList = 0x0;
2778 cRetrievedList = (TList*)GetOutputData(1);
2780 if(!cRetrievedList){
2781 AliWarning("ERROR - AliAnalysisTaskPerformanceStrange: output data container list not available\n"); return;
2784 fHistV0Multiplicity = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistV0Multiplicity"));
2785 if (!fHistV0Multiplicity) {
2786 Printf("ERROR: fHistV0Multiplicity not available");
2790 fHistV0MultiplicityMI = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistV0MultiplicityMI"));
2791 if (!fHistV0MultiplicityMI) {
2792 Printf("ERROR: fHistV0MultiplicityMI not available");
2796 TCanvas *canPerformanceStrange = new TCanvas("AliAnalysisTaskCheckV0","Multiplicity",10,10,510,510);
2797 canPerformanceStrange->Divide(2,1);
2798 if (fHistV0Multiplicity->GetMaximum() > 0.) canPerformanceStrange->cd(1)->SetLogy();
2799 fHistV0Multiplicity->SetMarkerStyle(25);
2800 fHistV0Multiplicity->DrawCopy("E");
2801 if (fHistV0MultiplicityMI->GetMaximum() > 0.) canPerformanceStrange->cd(2)->SetLogy();
2802 fHistV0MultiplicityMI->SetMarkerStyle(24);
2803 fHistV0MultiplicityMI->DrawCopy("E");
2809 //----------------------------------------------------------------------------
2811 Double_t AliAnalysisTaskPerformanceStrange::MyRapidity(Double_t rE, Double_t rPz) const
2813 // Local calculation for rapidity
2814 return 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
2816 //----------------------------------------------------------------------------