]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/SPECTRA/LambdaK0PbPb/AliAnalysisTaskPerformanceStrange.cxx
Memory leak fixes in the AOD and MC loops (M. Putis)
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / LambdaK0PbPb / AliAnalysisTaskPerformanceStrange.cxx
CommitLineData
e886738f 1/**************************************************************************
2 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16//-----------------------------------------------------------------
17// AliAnalysisTaskPerformanceStrange 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//-----------------------------------------------------------------
22
23#include <Riostream.h>
24
25#include <stdio.h>
26#include <iostream>
27#include "TChain.h"
28#include "TTree.h"
29#include "TH1F.h"
30#include "TH2F.h"
31//#include "TH3F.h"
32#include "TF1.h"
33#include "TList.h"
34#include "TMath.h"
35#include "TCanvas.h"
36
37#include "AliAnalysisManager.h"
38
39#include "AliPhysicsSelection.h"
40#include "AliBackgroundSelection.h"
41
42#include "AliESDVertex.h"
43#include "AliESDEvent.h"
44#include "AliESDInputHandler.h"
45#include "AliESDtrack.h"
46#include "AliESDv0.h"
47#include "AliESDtrackCuts.h"
48#include "AliESDpid.h"
49#include "AliMultiplicity.h"
50
51#include "AliAODEvent.h"
52#include "AliAODVertex.h"
53#include "AliAODTrack.h"
54#include "AliAODv0.h"
55#include "AliAODMCHeader.h"
56#include "AliAODInputHandler.h"
57
58//#include "AliV0vertexer.h"
59
60#include "AliAODMCParticle.h"
61
62#include "AliMCEventHandler.h"
63#include "AliMCEvent.h"
64#include "AliStack.h"
65#include "AliGenEventHeader.h"
66
67#include "AliLog.h"
68
69#include "AliKFVertex.h"
70#include "AliVertexerTracks.h"
71
72#include "AliAnalysisTaskPerformanceStrange.h"
73#include "AliAnalysisCentralitySelector.h"
74
75
76ClassImp(AliAnalysisTaskPerformanceStrange)
77
78
79//________________________________________________________________________
80AliAnalysisTaskPerformanceStrange::AliAnalysisTaskPerformanceStrange()
81: AliAnalysisTaskSE("TaskStrange"), fAnalysisMC(0), fAnalysisType("infoType"), fCollidingSystems(0), fUsePID("infoPID"), fUseCut("infoCut"), fESD(0), fListHist(0), fCentrSelector(0),
82
83 fHistMCPrimaryVertexX(0),
84 fHistMCPrimaryVertexY(0),
85 fHistMCPrimaryVertexZ(0),
86 fHistMCMultiplicityPrimary(0),
87 fHistMCMultiplicityTracks(0),
88 fHistMCtracksProdRadiusK0s(0),
89 fHistMCtracksProdRadiusLambda(0),
90 fHistMCtracksProdRadiusAntiLambda(0),
91 fHistMCtracksDecayRadiusK0s(0),
92 fHistMCtracksDecayRadiusLambda(0),
93 fHistMCtracksDecayRadiusAntiLambda(0),
94 fHistMCPtAllK0s(0),
95 fHistMCPtAllLambda(0),
96 fHistMCPtAllAntiLambda(0),
97 fHistMCProdRadiusK0s(0),
98 fHistMCProdRadiusLambda(0),
99 fHistMCProdRadiusAntiLambda(0),
100 fHistMCRapK0s(0),
101 fHistMCRapInPtRangeK0s(0),
102 fHistMCRapLambda(0),
103 fHistMCRapInPtRangeLambda(0),
104 fHistMCRapAntiLambda(0),
105 fHistMCRapInPtRangeAntiLambda(0),
106 fHistMCRapXi(0),
107 fHistMCRapInPtRangeXi(0),
108 fHistMCRapPhi(0),
109 fHistMCRapInPtRangePhi(0),
110////////////////////////////////////////
111 fHistMCPtK0s(0),
112
113
114 fHistMCPtLambda(0),
115///////////////////////////////////////////
116
117 fHistMCPtLambdaFromSigma(0),
118 fHistMCPtAntiLambdaFromSigma(0),
119 fHistNTimesRecK0s(0),
120// fHistNTimesRecK0sMI(0),
121 fHistNTimesRecLambda(0),
122// fHistNTimesRecLambdaMI(0),
123 fHistNTimesRecAntiLambda(0),
124// fHistNTimesRecAntiLambdaMI(0),
125 fHistNTimesRecK0sVsPt(0),
126// fHistNTimesRecK0sVsPtMI(0),
127 fHistNTimesRecLambdaVsPt(0),
128// fHistNTimesRecLambdaVsPtMI(0),
129 fHistNTimesRecAntiLambdaVsPt(0),
130// fHistNTimesRecAntiLambdaVsPtMI(0),
131 fHistNumberEvents(0),
132 fHistTrackPerEvent(0),
133 fHistTrackletPerEvent(0),
134 fHistMCDaughterTrack(0),
135 fHistSPDPrimaryVertexZ(0),
136 fHistPrimaryVertexX(0),
137 fHistPrimaryVertexY(0),
138 fHistPrimaryVertexZ(0),
139 fHistPrimaryVertexResX(0),
140 fHistPrimaryVertexResY(0),
141 fHistPrimaryVertexResZ(0),
142 fHistPrimaryVertexPosXV0events(0),
143 fHistPrimaryVertexPosYV0events(0),
144 fHistPrimaryVertexPosZV0events(0),
145 fHistDaughterPt(0),
146 fHistDcaPosToPrimVertex(0),
147 fHistDcaNegToPrimVertex(0),
148 fHistDcaPosToPrimVertexZoom(0),
149 fHistDcaNegToPrimVertexZoom(0),
150 fHistRadiusV0(0),
151 fHistDecayLengthV0(0),
152 fHistDcaV0Daughters(0),
153 fHistChi2(0),
154 fHistCosPointAngle(0),
155 fHistCosPointAngleZoom(0),
156 fHistProdRadius(0),
157// fHistProdRadiusMI(0),
158 fHistV0Multiplicity(0),
159// fHistV0MultiplicityMI(0),
160 fHistChi2KFBeforeCutK0s(0),
161 fHistChi2KFBeforeCutLambda(0),
162 fHistChi2KFBeforeCutAntiLambda(0),
163 fHistChi2KFAfterCutK0s(0),
164 fHistChi2KFAfterCutLambda(0),
165 fHistChi2KFAfterCutAntiLambda(0),
166 fHistMassK0(0),
167// fHistMassK0MI(0),
168 fHistMassLambda(0),
169// fHistMassLambdaMI(0),
170 fHistMassAntiLambda(0),
171// fHistMassAntiLambdaMI(0),
172 fHistMassVsRadiusK0(0),
173// fHistMassVsRadiusK0MI(0),
174 fHistMassVsRadiusLambda(0),
175// fHistMassVsRadiusLambdaMI(0),
176 fHistMassVsRadiusAntiLambda(0),
177// fHistMassVsRadiusAntiLambdaMI(0),
178
179///////////////////////////////////////
180 fHistPtVsMassK0(0),
181// fHistPtVsMassK0MI(0),
182 fHistPtVsMassLambda(0),
183////////////////////////////////////////
184 fHistPzPtBeforeK0s(0),
185 fHistPzPtAfterK0s(0),
186 fHistPzPtBeforeLambda(0),
187 fHistPzPtAfterLambda(0),
188
189//////////////////////////////////////////
190// fHistPtVsMassLambdaMI(0),
191// fHistPtVsMassAntiLambda(0),
192// fHistPtVsMassAntiLambdaMI(0),
193
194
195
196// fHistMultVsPtVsMassK0(0),
197// fHistMultVsPtVsMassLambda(0),
198// fHistMultVsPtVsMassAntiLambda(0),
199
200
201 fHistArmenterosPodolanski(0),
202// fHistArmenterosPodolanskiMI(0),
203 fHistNsigmaPosPionAntiLambda(0),
204 fHistNsigmaNegProtonAntiLambda(0),
205 fHistNsigmaPosProtonLambda(0),
206 fHistNsigmaNegPionLambda(0),
207 fHistNsigmaPosPionK0(0),
208 fHistNsigmaNegPionK0(0),
209 fHistAsMcRapK0(0),
210// fHistAsMcRapK0MI(0),
211 fHistAsMcRapLambda(0),
212// fHistAsMcRapLambdaMI(0),
213 fHistAsMcRapAntiLambda(0),
214// fHistAsMcRapAntiLambdaMI(0),
215
216/////////////////////////////////////////////
217 fHistAsMcPtK0(0),
218
219// fHistAsMcPtK0MI(0),
220 fHistAsMcPtLambda(0),
221//////////////////////////////////////////////
222
223
224// fHistAsMcPtAntiLambdaMI(0),
225 fHistAsMcPtZoomK0(0),
226// fHistAsMcPtZoomK0MI(0),
227 fHistAsMcPtZoomLambda(0),
228// fHistAsMcPtZoomLambdaMI(0),
229 fHistAsMcProdRadiusK0(0),
230// fHistAsMcProdRadiusK0MI(0),
231 fHistAsMcProdRadiusLambda(0),
232// fHistAsMcProdRadiusLambdaMI(0),
233 fHistAsMcProdRadiusAntiLambda(0),
234// fHistAsMcProdRadiusAntiLambdaMI(0),
235 fHistAsMcProdRadiusXvsYK0s(0),
236// fHistAsMcProdRadiusXvsYK0sMI(0),
237 fHistAsMcProdRadiusXvsYLambda(0),
238// fHistAsMcProdRadiusXvsYLambdaMI(0),
239 fHistAsMcProdRadiusXvsYAntiLambda(0),
240// fHistAsMcProdRadiusXvsYAntiLambdaMI(0),
241 fHistPidMcMassK0(0),
242// fHistPidMcMassK0MI(0),
243 fHistPidMcMassLambda(0),
244// fHistPidMcMassLambdaMI(0),
245 fHistPidMcMassAntiLambda(0),
246// fHistPidMcMassAntiLambdaMI(0),
247 fHistAsMcMassK0(0),
248// fHistAsMcMassK0MI(0),
249 fHistAsMcMassLambda(0),
250// fHistAsMcMassLambdaMI(0),
251 fHistAsMcMassAntiLambda(0),
252// fHistAsMcMassAntiLambdaMI(0),
253 fHistAsMcPtVsMassK0(0),
254// fHistAsMcPtVsMassK0MI(0),
255 fHistAsMcPtVsMassLambda(0),
256// fHistAsMcPtVsMassLambdaMI(0),
257 fHistAsMcPtVsMassAntiLambda(0),
258// fHistAsMcPtVsMassAntiLambdaMI(0),
259 fHistAsMcMassVsRadiusK0(0),
260// fHistAsMcMassVsRadiusK0MI(0),
261 fHistAsMcMassVsRadiusLambda(0),
262// fHistAsMcMassVsRadiusLambdaMI(0),
263 fHistAsMcMassVsRadiusAntiLambda(0),
264// fHistAsMcMassVsRadiusAntiLambdaMI(0),
265 fHistAsMcResxK0(0),
266 fHistAsMcResyK0(0),
267 fHistAsMcReszK0(0),
268 fHistAsMcResrVsRadiusK0(0),
269 fHistAsMcReszVsRadiusK0(0),
270// fHistAsMcResxK0MI(0),
271// fHistAsMcResyK0MI(0),
272 // fHistAsMcReszK0MI(0),
273// fHistAsMcResrVsRadiusK0MI(0),
274// fHistAsMcReszVsRadiusK0MI(0),
275 fHistAsMcResxLambda(0),
276 fHistAsMcResyLambda(0),
277 fHistAsMcReszLambda(0),
278 fHistAsMcResrVsRadiusLambda(0),
279 fHistAsMcReszVsRadiusLambda(0),
280// fHistAsMcResxLambdaMI(0),
281// fHistAsMcResyLambdaMI(0),
282// fHistAsMcReszLambdaMI(0),
283// fHistAsMcResrVsRadiusLambdaMI(0),
284// fHistAsMcReszVsRadiusLambdaMI(0),
285 fHistAsMcResxAntiLambda(0),
286 fHistAsMcResyAntiLambda(0),
287 fHistAsMcReszAntiLambda(0),
288 fHistAsMcResrVsRadiusAntiLambda(0),
289 fHistAsMcReszVsRadiusAntiLambda(0),
290// fHistAsMcResxAntiLambdaMI(0),
291// fHistAsMcResyAntiLambdaMI(0),
292// fHistAsMcReszAntiLambdaMI(0),
293// fHistAsMcResrVsRadiusAntiLambdaMI(0),
294// fHistAsMcReszVsRadiusAntiLambdaMI(0),
295 fHistAsMcResPtK0(0),
296// fHistAsMcResPtK0MI(0),
297 fHistAsMcResPtLambda(0),
298// fHistAsMcResPtLambdaMI(0),
299 fHistAsMcResPtAntiLambda(0),
300// fHistAsMcResPtAntiLambdaMI(0),
301 fHistAsMcResPtVsRapK0(0),
302// fHistAsMcResPtVsRapK0MI(0),
303 fHistAsMcResPtVsRapLambda(0),
304// fHistAsMcResPtVsRapLambdaMI(0),
305 fHistAsMcResPtVsRapAntiLambda(0),
306// fHistAsMcResPtVsRapAntiLambdaMI(0),
307 fHistAsMcResPtVsPtK0(0),
308// fHistAsMcResPtVsPtK0MI(0),
309 fHistAsMcResPtVsPtLambda(0),
310// fHistAsMcResPtVsPtLambdaMI(0),
311 fHistAsMcResPtVsPtAntiLambda(0),
312// fHistAsMcResPtVsPtAntiLambdaMI(0),
313 fHistAsMcMotherPdgCodeK0s(0),
314// fHistAsMcMotherPdgCodeK0sMI(0),
315 fHistAsMcMotherPdgCodeLambda(0),
316// fHistAsMcMotherPdgCodeLambdaMI(0),
317 fHistAsMcMotherPdgCodeAntiLambda(0),
318// fHistAsMcMotherPdgCodeAntiLambdaMI(0),
319 fHistAsMcPtLambdaFromSigma(0),
320// fHistAsMcPtLambdaFromSigmaMI(0),
321 fHistAsMcPtAntiLambdaFromSigma(0),
322// fHistAsMcPtAntiLambdaFromSigmaMI(0),
323 fHistAsMcSecondaryPtVsRapK0s(0),
324// fHistAsMcSecondaryPtVsRapK0sMI(0),
325 fHistAsMcSecondaryPtVsRapLambda(0),
326// fHistAsMcSecondaryPtVsRapLambdaMI(0),
327 fHistAsMcSecondaryPtVsRapAntiLambda(0),
328// fHistAsMcSecondaryPtVsRapAntiLambdaMI(0),
329 fHistAsMcSecondaryProdRadiusK0s(0),
330// fHistAsMcSecondaryProdRadiusK0sMI(0),
331 fHistAsMcSecondaryProdRadiusLambda(0),
332// fHistAsMcSecondaryProdRadiusLambdaMI(0),
333 fHistAsMcSecondaryProdRadiusAntiLambda(0),
334// fHistAsMcSecondaryProdRadiusAntiLambdaMI(0),
335 fHistAsMcSecondaryProdRadiusXvsYK0s(0),
336// fHistAsMcSecondaryProdRadiusXvsYK0sMI(0),
337 fHistAsMcSecondaryProdRadiusXvsYLambda(0),
338// fHistAsMcSecondaryProdRadiusXvsYLambdaMI(0),
339 fHistAsMcSecondaryProdRadiusXvsYAntiLambda(0),
340// fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI(0),
341 fHistAsMcSecondaryMotherPdgCodeK0s(0),
342// fHistAsMcSecondaryMotherPdgCodeK0sMI(0),
343 fHistAsMcSecondaryMotherPdgCodeLambda(0),
344// fHistAsMcSecondaryMotherPdgCodeLambdaMI(0),
345 fHistAsMcSecondaryMotherPdgCodeAntiLambda(0),
346// fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI(0),
347 fHistAsMcSecondaryPtLambdaFromSigma(0),
348// fHistAsMcSecondaryPtLambdaFromSigmaMI(0),
349 fHistAsMcSecondaryPtAntiLambdaFromSigma(0)
350// fHistAsMcSecondaryPtAntiLambdaFromSigmaMI(0)
351
352{
353 // Constructor
354
355 // New V0 cuts
356/* fCuts[0]=33; // max allowed chi2
357 fCuts[1]=0.05; // min allowed impact parameter for the 1st daughter
358 fCuts[2]=0.05; // min allowed impact parameter for the 2nd daughter
359 fCuts[3]=0.5; // max allowed DCA between the daughter tracks
360 fCuts[4]=0.00; // max allowed cosine of V0's pointing angle
361 fCuts[5]=0.2; // min radius of the fiducial volume
362 fCuts[6]=100; // max radius of the fiducial volume
363*/
364}
365
366
367
368
369
370//________________________________________________________________________
371AliAnalysisTaskPerformanceStrange::AliAnalysisTaskPerformanceStrange(const char *name)
372 : AliAnalysisTaskSE(name), fAnalysisMC(0), fAnalysisType("infoType"), fCollidingSystems(0), fUsePID("infoPID"), fUseCut("infocut"), fESD(0), fListHist(),fCentrSelector(0),
373 fHistMCPrimaryVertexX(0),
374 fHistMCPrimaryVertexY(0),
375 fHistMCPrimaryVertexZ(0),
376 fHistMCMultiplicityPrimary(0),
377 fHistMCMultiplicityTracks(0),
378 fHistMCtracksProdRadiusK0s(0),
379 fHistMCtracksProdRadiusLambda(0),
380 fHistMCtracksProdRadiusAntiLambda(0),
381 fHistMCtracksDecayRadiusK0s(0),
382 fHistMCtracksDecayRadiusLambda(0),
383 fHistMCtracksDecayRadiusAntiLambda(0),
384 fHistMCPtAllK0s(0),
385 fHistMCPtAllLambda(0),
386 fHistMCPtAllAntiLambda(0),
387 fHistMCProdRadiusK0s(0),
388 fHistMCProdRadiusLambda(0),
389 fHistMCProdRadiusAntiLambda(0),
390 fHistMCRapK0s(0),
391 fHistMCRapInPtRangeK0s(0),
392 fHistMCRapLambda(0),
393 fHistMCRapInPtRangeLambda(0),
394 fHistMCRapAntiLambda(0),
395 fHistMCRapInPtRangeAntiLambda(0),
396 fHistMCRapXi(0),
397 fHistMCRapInPtRangeXi(0),
398 fHistMCRapPhi(0),
399 fHistMCRapInPtRangePhi(0),
400
401////////////////////////////////////////////////
402 fHistMCPtK0s(0),
403
404 fHistMCPtLambda(0),
405/////////////////////////////////////////////////
406
407 fHistMCPtLambdaFromSigma(0),
408 fHistMCPtAntiLambdaFromSigma(0),
409 fHistNTimesRecK0s(0),
410// fHistNTimesRecK0sMI(0),
411 fHistNTimesRecLambda(0),
412// fHistNTimesRecLambdaMI(0),
413 fHistNTimesRecAntiLambda(0),
414// fHistNTimesRecAntiLambdaMI(0),
415 fHistNTimesRecK0sVsPt(0),
416// fHistNTimesRecK0sVsPtMI(0),
417 fHistNTimesRecLambdaVsPt(0),
418// fHistNTimesRecLambdaVsPtMI(0),
419 fHistNTimesRecAntiLambdaVsPt(0),
420// fHistNTimesRecAntiLambdaVsPtMI(0),
421 fHistNumberEvents(0),
422 fHistTrackPerEvent(0),
423 fHistTrackletPerEvent(0),
424 fHistMCDaughterTrack(0),
425 fHistSPDPrimaryVertexZ(0),
426 fHistPrimaryVertexX(0),
427 fHistPrimaryVertexY(0),
428 fHistPrimaryVertexZ(0),
429 fHistPrimaryVertexResX(0),
430 fHistPrimaryVertexResY(0),
431 fHistPrimaryVertexResZ(0),
432 fHistPrimaryVertexPosXV0events(0),
433 fHistPrimaryVertexPosYV0events(0),
434 fHistPrimaryVertexPosZV0events(0),
435 fHistDaughterPt(0),
436 fHistDcaPosToPrimVertex(0),
437 fHistDcaNegToPrimVertex(0),
438 fHistDcaPosToPrimVertexZoom(0),
439 fHistDcaNegToPrimVertexZoom(0),
440 fHistRadiusV0(0),
441 fHistDecayLengthV0(0),
442 fHistDcaV0Daughters(0),
443 fHistChi2(0),
444 fHistCosPointAngle(0),
445 fHistCosPointAngleZoom(0),
446 fHistProdRadius(0),
447// fHistProdRadiusMI(0),
448 fHistV0Multiplicity(0),
449// fHistV0MultiplicityMI(0),
450 fHistChi2KFBeforeCutK0s(0),
451 fHistChi2KFBeforeCutLambda(0),
452 fHistChi2KFBeforeCutAntiLambda(0),
453 fHistChi2KFAfterCutK0s(0),
454 fHistChi2KFAfterCutLambda(0),
455 fHistChi2KFAfterCutAntiLambda(0),
456 fHistMassK0(0),
457// fHistMassK0MI(0),
458 fHistMassLambda(0),
459// fHistMassLambdaMI(0),
460 fHistMassAntiLambda(0),
461// fHistMassAntiLambdaMI(0),
462 fHistMassVsRadiusK0(0),
463// fHistMassVsRadiusK0MI(0),
464 fHistMassVsRadiusLambda(0),
465// fHistMassVsRadiusLambdaMI(0),
466 fHistMassVsRadiusAntiLambda(0),
467// fHistMassVsRadiusAntiLambdaMI(0),
468
469/////////////////////////////////////////////
470 fHistPtVsMassK0(0),
471// fHistPtVsMassK0MI(0),
472 fHistPtVsMassLambda(0),
473// fHistPtVsMassLambdaMI(0),
474///////////////////////////////////////////////////
475 fHistPzPtBeforeK0s(0),
476 fHistPzPtAfterK0s(0),
477 fHistPzPtBeforeLambda(0),
478 fHistPzPtAfterLambda(0),
479
480//////////////////////////////////////////
481
482// fHistMultVsPtVsMassK0(0),
483// fHistMultVsPtVsMassLambda(0),
484// fHistMultVsPtVsMassAntiLambda(0),
485
486
487 fHistArmenterosPodolanski(0),
488// fHistArmenterosPodolanskiMI(0),
489 fHistNsigmaPosPionAntiLambda(0),
490 fHistNsigmaNegProtonAntiLambda(0),
491 fHistNsigmaPosProtonLambda(0),
492 fHistNsigmaNegPionLambda(0),
493 fHistNsigmaPosPionK0(0),
494 fHistNsigmaNegPionK0(0),
495 fHistAsMcRapK0(0),
496// fHistAsMcRapK0MI(0),
497 fHistAsMcRapLambda(0),
498// fHistAsMcRapLambdaMI(0),
499 fHistAsMcRapAntiLambda(0),
500// fHistAsMcRapAntiLambdaMI(0),
501
502///////////////////////////////////
503 fHistAsMcPtK0(0),
504
505
506// fHistAsMcPtK0MI(0),
507 fHistAsMcPtLambda(0),
508
509/////////////////////////////////////
510
511
512// fHistAsMcPtAntiLambdaMI(0),
513 fHistAsMcPtZoomK0(0),
514// fHistAsMcPtZoomK0MI(0),
515 fHistAsMcPtZoomLambda(0),
516// fHistAsMcPtZoomLambdaMI(0),
517 fHistAsMcProdRadiusK0(0),
518// fHistAsMcProdRadiusK0MI(0),
519 fHistAsMcProdRadiusLambda(0),
520// fHistAsMcProdRadiusLambdaMI(0),
521 fHistAsMcProdRadiusAntiLambda(0),
522// fHistAsMcProdRadiusAntiLambdaMI(0),
523 fHistAsMcProdRadiusXvsYK0s(0),
524// fHistAsMcProdRadiusXvsYK0sMI(0),
525 fHistAsMcProdRadiusXvsYLambda(0),
526// fHistAsMcProdRadiusXvsYLambdaMI(0),
527 fHistAsMcProdRadiusXvsYAntiLambda(0),
528// fHistAsMcProdRadiusXvsYAntiLambdaMI(0),
529 fHistPidMcMassK0(0),
530// fHistPidMcMassK0MI(0),
531 fHistPidMcMassLambda(0),
532// fHistPidMcMassLambdaMI(0),
533 fHistPidMcMassAntiLambda(0),
534// fHistPidMcMassAntiLambdaMI(0),
535 fHistAsMcMassK0(0),
536// fHistAsMcMassK0MI(0),
537 fHistAsMcMassLambda(0),
538// fHistAsMcMassLambdaMI(0),
539 fHistAsMcMassAntiLambda(0),
540// fHistAsMcMassAntiLambdaMI(0),
541 fHistAsMcPtVsMassK0(0),
542// fHistAsMcPtVsMassK0MI(0),
543 fHistAsMcPtVsMassLambda(0),
544// fHistAsMcPtVsMassLambdaMI(0),
545 fHistAsMcPtVsMassAntiLambda(0),
546// fHistAsMcPtVsMassAntiLambdaMI(0),
547 fHistAsMcMassVsRadiusK0(0),
548// fHistAsMcMassVsRadiusK0MI(0),
549 fHistAsMcMassVsRadiusLambda(0),
550// fHistAsMcMassVsRadiusLambdaMI(0),
551 fHistAsMcMassVsRadiusAntiLambda(0),
552// fHistAsMcMassVsRadiusAntiLambdaMI(0),
553 fHistAsMcResxK0(0),
554 fHistAsMcResyK0(0),
555 fHistAsMcReszK0(0),
556 fHistAsMcResrVsRadiusK0(0),
557 fHistAsMcReszVsRadiusK0(0),
558// fHistAsMcResxK0MI(0),
559// fHistAsMcResyK0MI(0),
560 // fHistAsMcReszK0MI(0),
561// fHistAsMcResrVsRadiusK0MI(0),
562// fHistAsMcReszVsRadiusK0MI(0),
563 fHistAsMcResxLambda(0),
564 fHistAsMcResyLambda(0),
565 fHistAsMcReszLambda(0),
566 fHistAsMcResrVsRadiusLambda(0),
567 fHistAsMcReszVsRadiusLambda(0),
568// fHistAsMcResxLambdaMI(0),
569// fHistAsMcResyLambdaMI(0),
570// fHistAsMcReszLambdaMI(0),
571// fHistAsMcResrVsRadiusLambdaMI(0),
572// fHistAsMcReszVsRadiusLambdaMI(0),
573 fHistAsMcResxAntiLambda(0),
574 fHistAsMcResyAntiLambda(0),
575 fHistAsMcReszAntiLambda(0),
576 fHistAsMcResrVsRadiusAntiLambda(0),
577 fHistAsMcReszVsRadiusAntiLambda(0),
578// fHistAsMcResxAntiLambdaMI(0),
579// fHistAsMcResyAntiLambdaMI(0),
580// fHistAsMcReszAntiLambdaMI(0),
581// fHistAsMcResrVsRadiusAntiLambdaMI(0),
582// fHistAsMcReszVsRadiusAntiLambdaMI(0),
583 fHistAsMcResPtK0(0),
584// fHistAsMcResPtK0MI(0),
585 fHistAsMcResPtLambda(0),
586// fHistAsMcResPtLambdaMI(0),
587 fHistAsMcResPtAntiLambda(0),
588// fHistAsMcResPtAntiLambdaMI(0),
589 fHistAsMcResPtVsRapK0(0),
590// fHistAsMcResPtVsRapK0MI(0),
591 fHistAsMcResPtVsRapLambda(0),
592// fHistAsMcResPtVsRapLambdaMI(0),
593 fHistAsMcResPtVsRapAntiLambda(0),
594// fHistAsMcResPtVsRapAntiLambdaMI(0),
595 fHistAsMcResPtVsPtK0(0),
596// fHistAsMcResPtVsPtK0MI(0),
597 fHistAsMcResPtVsPtLambda(0),
598// fHistAsMcResPtVsPtLambdaMI(0),
599 fHistAsMcResPtVsPtAntiLambda(0),
600// fHistAsMcResPtVsPtAntiLambdaMI(0),
601 fHistAsMcMotherPdgCodeK0s(0),
602// fHistAsMcMotherPdgCodeK0sMI(0),
603 fHistAsMcMotherPdgCodeLambda(0),
604// fHistAsMcMotherPdgCodeLambdaMI(0),
605 fHistAsMcMotherPdgCodeAntiLambda(0),
606// fHistAsMcMotherPdgCodeAntiLambdaMI(0),
607 fHistAsMcPtLambdaFromSigma(0),
608// fHistAsMcPtLambdaFromSigmaMI(0),
609 fHistAsMcPtAntiLambdaFromSigma(0),
610// fHistAsMcPtAntiLambdaFromSigmaMI(0),
611 fHistAsMcSecondaryPtVsRapK0s(0),
612// fHistAsMcSecondaryPtVsRapK0sMI(0),
613 fHistAsMcSecondaryPtVsRapLambda(0),
614// fHistAsMcSecondaryPtVsRapLambdaMI(0),
615 fHistAsMcSecondaryPtVsRapAntiLambda(0),
616// fHistAsMcSecondaryPtVsRapAntiLambdaMI(0),
617 fHistAsMcSecondaryProdRadiusK0s(0),
618// fHistAsMcSecondaryProdRadiusK0sMI(0),
619 fHistAsMcSecondaryProdRadiusLambda(0),
620// fHistAsMcSecondaryProdRadiusLambdaMI(0),
621 fHistAsMcSecondaryProdRadiusAntiLambda(0),
622// fHistAsMcSecondaryProdRadiusAntiLambdaMI(0),
623 fHistAsMcSecondaryProdRadiusXvsYK0s(0),
624// fHistAsMcSecondaryProdRadiusXvsYK0sMI(0),
625 fHistAsMcSecondaryProdRadiusXvsYLambda(0),
626// fHistAsMcSecondaryProdRadiusXvsYLambdaMI(0),
627 fHistAsMcSecondaryProdRadiusXvsYAntiLambda(0),
628// fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI(0),
629 fHistAsMcSecondaryMotherPdgCodeK0s(0),
630// fHistAsMcSecondaryMotherPdgCodeK0sMI(0),
631 fHistAsMcSecondaryMotherPdgCodeLambda(0),
632// fHistAsMcSecondaryMotherPdgCodeLambdaMI(0),
633 fHistAsMcSecondaryMotherPdgCodeAntiLambda(0),
634// fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI(0),
635 fHistAsMcSecondaryPtLambdaFromSigma(0),
636// fHistAsMcSecondaryPtLambdaFromSigmaMI(0),
637 fHistAsMcSecondaryPtAntiLambdaFromSigma(0)
638// fHistAsMcSecondaryPtAntiLambdaFromSigmaMI(0)
639
640{
641 // Constructor
642
643 //New V0 cuts
644/* fCuts[0]=33; // max allowed chi2
645 fCuts[1]=0.05; // min allowed impact parameter for the 1st daughter
646 fCuts[2]=0.05; // min allowed impact parameter for the 2nd daughter
647 fCuts[3]=0.5; // max allowed DCA between the daughter tracks
648 fCuts[4]=0.00; // max allowed cosine of V0's pointing angle
649 fCuts[5]=0.2; // min radius of the fiducial volume
650 fCuts[6]=100; // max radius of the fiducial volume
651*/
652 // Define output slots only here
653 // Output slot #1 writes into a TList container
654 DefineOutput(1, TList::Class());
655 DefineOutput(2, AliAnalysisCentralitySelector::Class());
656
657}
658
659//________________________________________________________________________
660void AliAnalysisTaskPerformanceStrange::UserCreateOutputObjects()
661{
662
663 //******************
664 // Create histograms
665 //*******************
666 fListHist = new TList();
667 fListHist->SetOwner();
668
669 // Bo: tbd: condition before allocation (i.e. if (!fHistMCMultiplicityPrimary){...} for each histo...
670
671
672
673 //***************
674 // MC histograms
675 //***************
676
677 // Primary Vertex:
678 fHistMCPrimaryVertexX = new TH1F("h1MCPrimaryVertexX", "MC Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
679 fListHist->Add(fHistMCPrimaryVertexX);
680
681 fHistMCPrimaryVertexY = new TH1F("h1MCPrimaryVertexY", "MC Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
682 fListHist->Add(fHistMCPrimaryVertexY);
683
684 fHistMCPrimaryVertexZ = new TH1F("h1MCPrimaryVertexZ", "MC Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
685 fListHist->Add(fHistMCPrimaryVertexZ);
686
687 // Multiplicity
688 fHistMCMultiplicityPrimary = new TH1F("h1MCMultiplicityPrimary", "MC Primary Particles;NPrimary;Count", 201, -0.5, 200.5);
689 fListHist->Add(fHistMCMultiplicityPrimary);
690
691 fHistMCMultiplicityTracks = new TH1F("h1MCMultiplicityTracks", "MC Tracks;Ntracks;Count", 201, -0.5, 200.5);
692 fListHist->Add(fHistMCMultiplicityTracks);
693
694 // Production Radius of non-primary particles:
695 fHistMCtracksProdRadiusK0s = new TH2F("h2MCtracksProdRadiusK0s","Non-primary MC K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
696 fListHist->Add(fHistMCtracksProdRadiusK0s);
697
698 fHistMCtracksProdRadiusLambda = new TH2F("h2MCtracksProdRadiusLambda","Non-primary MC #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
699 fListHist->Add(fHistMCtracksProdRadiusLambda);
700
701 fHistMCtracksProdRadiusAntiLambda = new TH2F("h2MCtracksProdRadiusAntiLambda","Non-primary MC #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
702 fListHist->Add(fHistMCtracksProdRadiusAntiLambda);
703
704 // Decay Radius of non-primary particles:
705 fHistMCtracksDecayRadiusK0s = new TH1F("h1MCtracksDecayRadiusK0s","Non-primary MC K^{0} Decay Radius;r (cm)",101,-1,100);
706 fListHist->Add(fHistMCtracksDecayRadiusK0s);
707
708 fHistMCtracksDecayRadiusLambda = new TH1F("h1MCtracksDecayRadiusLambda","Non-primary MC #Lambda^{0} Decay Radius;r (cm)",101,-1,100);
709 fListHist->Add(fHistMCtracksDecayRadiusLambda);
710
711 fHistMCtracksDecayRadiusAntiLambda = new TH1F("h1MCtracksDecayRadiusAntiLambda","Non-primary #bar{#Lambda}^{0} Decay Radius;r (cm)",100,1,101);
712 fListHist->Add(fHistMCtracksDecayRadiusAntiLambda);
713
714 // Pt Distribution of non-primary particles:
715 fHistMCPtAllK0s = new TH1F("h1MCPtAllK0s", "Non-primary MC K^{0};p_{t} (GeV/c);Counts",240,0,12);
716 fListHist->Add(fHistMCPtAllK0s);
717
718 fHistMCPtAllLambda = new TH1F("h1MCPtAllLambda", "Non-primary MC #Lambda^{0};p_{t} (GeV/c);Counts",240,0,12);
719 fListHist->Add(fHistMCPtAllLambda);
720
721 fHistMCPtAllAntiLambda = new TH1F("h1MCPtAllAntiLambda", "Non-primary MC #bar{#Lambda}^{0};p_{t} (GeV/c);Counts",240,0,12);
722 fListHist->Add(fHistMCPtAllAntiLambda);
723
724 // Production Radius
725 fHistMCProdRadiusK0s = new TH1F("h1MCProdRadiusK0s", "MC K^{0} Production Radius;r (cm);Count", 400, -2, 2);
726 fListHist->Add(fHistMCProdRadiusK0s);
727
728 fHistMCProdRadiusLambda = new TH1F("h1MCProdRadiusLambda", "MC #Lambda^{0} Production Radius;r (cm);Count", 400, -2, 2);
729 fListHist->Add(fHistMCProdRadiusLambda);
730
731 fHistMCProdRadiusAntiLambda = new TH1F("h1MCProdRadiusAntiLambda", "MC #bar{#Lambda}^{0} Production Radius;r (cm);Count", 400, -2, 2);
732 fListHist->Add(fHistMCProdRadiusAntiLambda);
733
734
735 // Rapidity distribution:
736 fHistMCRapK0s = new TH1F("h1MCRapK0s", "K^{0};y",160,-4,4);
737 fListHist->Add(fHistMCRapK0s);
738
739 fHistMCRapInPtRangeK0s = new TH1F("h1MCRapInPtRangeK0s", "K^{0};y",160,-4,4);
740 fListHist->Add(fHistMCRapInPtRangeK0s);
741
742 fHistMCRapLambda = new TH1F("h1MCRapLambda", "#Lambda;y",160,-4,4);
743 fListHist->Add(fHistMCRapLambda);
744
745 fHistMCRapInPtRangeLambda = new TH1F("h1MCRapInPtRangeLambda", "#Lambda;y",160,-4,4);
746 fListHist->Add(fHistMCRapInPtRangeLambda);
747
748 fHistMCRapAntiLambda = new TH1F("h1MCRapAntiLambda", "#bar{#Lambda};y",160,-4,4);
749 fListHist->Add(fHistMCRapAntiLambda);
750
751 fHistMCRapInPtRangeAntiLambda = new TH1F("h1MCRapInPtRangeAntiLambda", "#bar{#Lambda};y",160,-4,4);
752 fListHist->Add(fHistMCRapInPtRangeAntiLambda);
753
754 fHistMCRapXi = new TH1F("h1MCRapXi", "Xi;y",160,-4,4);
755 fListHist->Add(fHistMCRapXi);
756
757 fHistMCRapInPtRangeXi = new TH1F("h1MCRapInPtRangeXi", "Xi;y",160,-4,4);
758 fListHist->Add(fHistMCRapInPtRangeXi);
759
760 fHistMCRapPhi = new TH1F("h1MCRapPhi", "Phi;y",160,-4,4);
761 fListHist->Add(fHistMCRapPhi);
762
763 fHistMCRapInPtRangePhi = new TH1F("h1MCRapInPtRangePhi", "Phi;y",160,-4,4);
764 fListHist->Add(fHistMCRapInPtRangePhi);
765
766
767 // Pt distribution:
768 fHistMCPtK0s = new TH1F("h1MCPtK0s", "K^{0};p_{t} (GeV/c)",240,0,12);
769 fListHist->Add(fHistMCPtK0s);
770
771
772
773
774 fHistMCPtLambda = new TH1F("h1MCPtLambda", "#Lambda^{0};p_{t} (GeV/c)",240,0,12);
775 fListHist->Add(fHistMCPtLambda);
776
777
778
779
780 // Pt distribution of Lambda coming from Sigma decay
781 fHistMCPtLambdaFromSigma = new TH1F("h1MCPtLambdaFromSigma", "#Lambda^{0};p_{t} (GeV/c)",240,0,12);
782 fListHist->Add(fHistMCPtLambdaFromSigma);
783
784 fHistMCPtAntiLambdaFromSigma = new TH1F("h1MCPtAntiLambdaFromSigma", "#Lambda^{0};p_{t} (GeV/c)",240,0,12);
785 fListHist->Add(fHistMCPtAntiLambdaFromSigma);
786
787 // Multiple reconstruction studies
788 fHistNTimesRecK0s = new TH1F("h1NTimesRecK0s","number of times a K0s is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
789 fListHist->Add(fHistNTimesRecK0s);
790// 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);
791// fListHist->Add(fHistNTimesRecK0sMI);
792
793 fHistNTimesRecLambda = new TH1F("h1NTimesRecLambda","number of times a Lambda is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
794 fListHist->Add(fHistNTimesRecLambda);
795// 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);
796// fListHist->Add(fHistNTimesRecLambdaMI);
797
798 fHistNTimesRecAntiLambda = new TH1F("h1NTimesRecAntiLambda","number of times an AntiLambda is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
799 fListHist->Add(fHistNTimesRecAntiLambda);
800// 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);
801// fListHist->Add(fHistNTimesRecAntiLambdaMI);
802
803 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);
804 fListHist->Add(fHistNTimesRecK0sVsPt);
805// 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);
806// fListHist->Add(fHistNTimesRecK0sVsPtMI);
807
808 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);
809 fListHist->Add(fHistNTimesRecLambdaVsPt);
810// 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);
811// fListHist->Add(fHistNTimesRecLambdaVsPtMI);
812
813 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);
814 fListHist->Add(fHistNTimesRecAntiLambdaVsPt);
815// 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);
816// fListHist->Add(fHistNTimesRecAntiLambdaVsPtMI);
817
818
819
820 //***********************************
821 // Reconstructed particles histograms
822 //***********************************
823
824 // Number of events;
825 fHistNumberEvents = new TH1F("h1NumberEvents", "Number of events; index;Number of Events",10,0,10);
826 fListHist->Add(fHistNumberEvents);
827
828 // multiplicity
829 fHistTrackPerEvent = new TH1F("h1TrackPerEvent", "Tracks per event;Number of Tracks;Number of Events",1000,0,1000);
830 fListHist->Add(fHistTrackPerEvent);
831
832 fHistTrackletPerEvent = new TH1F("h1TrackletPerEvent", "Number of tracklets;Number of tracklets per events;Number of events",1000,0,1000);
833 fListHist->Add(fHistTrackletPerEvent);
834
835 fHistMCDaughterTrack = new TH1F("h1MCDaughterTrack","Distribution of mc id for daughters;id tags;Counts",15,0,15);
836 fListHist->Add(fHistMCDaughterTrack);
837
838 // Primary Vertex:
839 fHistSPDPrimaryVertexZ = new TH1F("h1SPDPrimaryVertexZ", "SPD Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
840 fListHist->Add(fHistSPDPrimaryVertexZ);
841
842 fHistPrimaryVertexX = new TH1F("h1PrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
843 fListHist->Add(fHistPrimaryVertexX);
844
845 fHistPrimaryVertexY = new TH1F("h1PrimaryVertexY", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
846 fListHist->Add(fHistPrimaryVertexY);
847
848 fHistPrimaryVertexZ = new TH1F("h1PrimaryVertexZ", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
849 fListHist->Add(fHistPrimaryVertexZ);
850
851
852 // Primary vertex resolution
853 fHistPrimaryVertexResX = new TH1F("h1PrimaryVertexResX", "Primary Vertex Resolution X;Primary Vertex Resolution X (cm);Events",100,-0.25,0.25);
854 fListHist->Add(fHistPrimaryVertexResX);
855
856 fHistPrimaryVertexResY = new TH1F("h1PrimaryVertexResY", "Primary Vertex Resolution Y;Primary Vertex Resolution Y (cm);Events",100,-0.25,0.25);
857 fListHist->Add(fHistPrimaryVertexResY);
858
859 fHistPrimaryVertexResZ = new TH1F("h1PrimaryVertexResZ", "Primary Vertex Resolution Z;Primary Vertex Resolution Z (cm);Events",200,-0.25,0.25);
860 fListHist->Add(fHistPrimaryVertexResZ);
861
862
863 // Primary Vertex in events with V0 candidates:
864 fHistPrimaryVertexPosXV0events = new TH1F("h1PrimaryVertexPosXV0events", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
865 fListHist->Add(fHistPrimaryVertexPosXV0events);
866 fHistPrimaryVertexPosYV0events = new TH1F("h1PrimaryVertexPosYV0events", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
867 fListHist->Add(fHistPrimaryVertexPosYV0events);
868 fHistPrimaryVertexPosZV0events = new TH1F("h1PrimaryVertexPosZV0events", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20.0,20.0);
869 fListHist->Add(fHistPrimaryVertexPosZV0events);
870
871 // Daughters Pt:
872 fHistDaughterPt = new TH2F("h2DaughterPt", "Daughter Pt;Positive Daughter Pt; Negative Daughter Pt",200,0,2,200,0,2);
873 fListHist->Add(fHistDaughterPt);
874
875 // Cut checks:
876 fHistDcaPosToPrimVertex = new TH2F("h2DcaPosToPrimVertex", "Positive V0 daughter;dca(cm);Status",500,0,5,2,-0.5,1.5);
877 fListHist->Add(fHistDcaPosToPrimVertex);
878
879 fHistDcaNegToPrimVertex = new TH2F("h2DcaNegToPrimVertex", "Negative V0 daughter;dca(cm);Status",500,0,5,2,-0.5,1.5);
880 fListHist->Add(fHistDcaNegToPrimVertex);
881
882 fHistDcaPosToPrimVertexZoom = new TH2F("h2DcaPosToPrimVertexZoom", "Positive V0 daughter;dca(cm);Status",100,0,0.1,2,-0.5,1.5);
883 fListHist->Add(fHistDcaPosToPrimVertexZoom);
884
885 fHistDcaNegToPrimVertexZoom = new TH2F("h2DcaNegToPrimVertexZoom", "Negative V0 daughter;dca(cm);Status",100,0,0.1,2,-0.5,1.5);
886 fListHist->Add(fHistDcaNegToPrimVertexZoom);
887
888 fHistRadiusV0 = new TH2F("h2RadiusV0", "Radius;Radius(cm);Status",1200,0,120,2,-0.5,1.5);
889 fListHist->Add(fHistRadiusV0);
890
891 fHistDecayLengthV0 = new TH2F("h2DecayLengthV0", "V0s decay Length;decay length(cm);Status", 240, 0, 120,2,-0.5,1.5);
892 fListHist->Add(fHistDecayLengthV0);
893
894 fHistDcaV0Daughters = new TH2F("h2DcaV0Daughters", "DCA between daughters;dca(cm);Status", 160, 0, 4,2,-0.5,1.5);
895 fListHist->Add(fHistDcaV0Daughters);
896
897 fHistChi2 = new TH2F("h2Chi2", "V0s chi2;chi2;Status", 33, 0, 33,2,-0.5,1.5);
898 fListHist->Add(fHistChi2);
899
900 fHistCosPointAngle = new TH2F("h2CosPointAngle", "Cosine of V0's pointing angle", 100,0,1,2,-0.5,1.5);
901 fListHist->Add(fHistCosPointAngle);
902
903 fHistCosPointAngleZoom = new TH2F("h2CosPointAngleZoom", "Cosine of V0's pointing angle", 100,0.9,1,2,-0.5,1.5);
904 fListHist->Add(fHistCosPointAngleZoom);
905
906 fHistProdRadius = new TH2F("h2ProdRadius", "Production position;x (cm);y (cm)", 100,-50,50,100,-50,50);
907 fListHist->Add(fHistProdRadius);
908
909// fHistProdRadiusMI = new TH2F("h2ProdRadiusMI", "Production position, V0s MI;x (cm);y (cm)", 100,-50,50,100,-50,50);
910// fListHist->Add(fHistProdRadiusMI);
911
912 // V0 Multiplicity
913 if (!fHistV0Multiplicity) {
914 if (fCollidingSystems)
915 fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of Offline V0s;Events", 200, 0, 40000);
916 else
917 fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of Offline V0s;Events", 10, 0, 10);
918 fListHist->Add(fHistV0Multiplicity);
919 }
920
921/* if (!fHistV0MultiplicityMI) {
922 if (fCollidingSystems)
923 fHistV0MultiplicityMI = new TH1F("fHistV0MultiplicityMI", "Multiplicity distribution;Number of On-the-fly V0s;Events", 200, 0, 40000);
924 else
925 fHistV0MultiplicityMI = new TH1F("fHistV0MultiplicityMI", "Multiplicity distribution;Number of On-the-fly V0s;Events", 10, 0, 10);
926 fListHist->Add(fHistV0MultiplicityMI);
927 }
928*/
929 // AliKF Chi2
930 fHistChi2KFBeforeCutK0s = new TH2F("h1Chi2KFBeforeCutK0s", "K^{0} candidates;#Chi^{2});Counts", 250, 0, 50, 2,-0.5,1.5);
931 fListHist->Add(fHistChi2KFBeforeCutK0s);
932 fHistChi2KFBeforeCutLambda = new TH2F("h1Chi2KFBeforeCutLambda", "#Lambda^{0} candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
933 fListHist->Add(fHistChi2KFBeforeCutLambda);
934 fHistChi2KFBeforeCutAntiLambda = new TH2F("h1Chi2KFBeforeCutAntiLambda", "#bar{#Lambda}^{0} candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
935 fListHist->Add(fHistChi2KFBeforeCutAntiLambda);
936
937 fHistChi2KFAfterCutK0s = new TH2F("h1Chi2KFAfterCutK0s", "K^{0} candidates;#Chi^{2});Counts", 250, 0, 50, 2,-0.5,1.5);
938 fListHist->Add(fHistChi2KFAfterCutK0s);
939 fHistChi2KFAfterCutLambda = new TH2F("h1Chi2KFAfterCutLambda", "#Lambda^{0} candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
940 fListHist->Add(fHistChi2KFAfterCutLambda);
941 fHistChi2KFAfterCutAntiLambda = new TH2F("h1Chi2KFAfterCutAntiLambda", "#bar{#Lambda}^{0} candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
942 fListHist->Add(fHistChi2KFAfterCutAntiLambda);
943
944 // Mass:
945 fHistMassK0 = new TH1F("h1MassK0", "K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
946 fListHist->Add(fHistMassK0);
947// fHistMassK0MI = new TH1F("h1MassK0MI", "K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
948// fListHist->Add(fHistMassK0MI);
949
950 fHistMassLambda = new TH1F("h1MassLambda", "#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
951 fListHist->Add(fHistMassLambda);
952// fHistMassLambdaMI = new TH1F("h1MassLambdaMI", "#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
953// fListHist->Add(fHistMassLambdaMI);
954
955 fHistMassAntiLambda = new TH1F("h1MassAntiLambda", "#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
956 fListHist->Add(fHistMassAntiLambda);
957// fHistMassAntiLambdaMI = new TH1F("h1MassAntiLambdaMI", "#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
958// fListHist->Add(fHistMassAntiLambdaMI);
959
960 // invariant mass vs radius
961 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};
962 Int_t lNbinRadius = 9;
963 Int_t lNbinInvMassLambda = 300;
964
965 fHistMassVsRadiusK0 = new TH2F("h2MassVsRadiusK0", "K^{0} candidates;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 200, 0.4, 0.6);
966 fListHist->Add(fHistMassVsRadiusK0);
967
968// fHistMassVsRadiusK0MI = new TH2F("h2MassVsRadiusK0MI", "K^{0} MI candidates;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 200, 0.4, 0.6);
969// fListHist->Add(fHistMassVsRadiusK0MI);
970
971 fHistMassVsRadiusLambda = new TH2F("h2MassVsRadiusLambda", "#Lambda candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
972 fListHist->Add(fHistMassVsRadiusLambda);
973
974// fHistMassVsRadiusLambdaMI = new TH2F("h2MassVsRadiusLambdaMI", "#Lambda MI candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
975// fListHist->Add(fHistMassVsRadiusLambdaMI);
976
977 fHistMassVsRadiusAntiLambda = new TH2F("h2MassVsRadiusAntiLambda", "#bar{#Lambda} candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
978 fListHist->Add(fHistMassVsRadiusAntiLambda);
979
980// fHistMassVsRadiusAntiLambdaMI = new TH2F("h2MassVsRadiusAntiLambdaMI", "#bar{#Lambda} candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
981// fListHist->Add(fHistMassVsRadiusAntiLambdaMI);
982
983 // Pt Vs Mass
984 fHistPtVsMassK0 = new TH2F("h2PtVsMassK0","K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,240,0,12);
985 fListHist->Add(fHistPtVsMassK0);
986// fHistPtVsMassK0MI = new TH2F("h2PtVsMassK0MI","K^{0} MIcandidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,240,0,12);
987// fListHist->Add(fHistPtVsMassK0MI);
988
989 fHistPtVsMassLambda = new TH2F("h2PtVsMassLambda","#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,240,0,12);
990 fListHist->Add(fHistPtVsMassLambda);
991// fHistPtVsMassLambdaMI = new TH2F("h2PtVsMassLambdaMI","#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,240,0,12);
992// fListHist->Add(fHistPtVsMassLambdaMI);
993////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
994fHistPzPtBeforeK0s = new TH1F("h1PzPtBeforeK0s","K0s; Abs(pz/pt); count",1000,0,10);
995 fListHist->Add(fHistPzPtBeforeK0s);
996
997fHistPzPtAfterK0s = new TH1F("h1PzPtAfterK0s","K0s; Abs(pz/pt); count",1000,0,10);
998 fListHist->Add(fHistPzPtAfterK0s);
999
1000fHistPzPtBeforeLambda = new TH1F("h1PzPtBeforeLambda","#Lambda^{0}; Abs(pz/pt); count",1000,0,10);
1001 fListHist->Add(fHistPzPtBeforeLambda);
1002
1003fHistPzPtAfterLambda = new TH1F("h1PzPtAfterLambda","#Lambda^{0}; Abs(pz/pt); count",1000,0,10);
1004 fListHist->Add(fHistPzPtAfterLambda);
1005///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1006
1007 fHistArmenterosPodolanski = new TH2F("h2ArmenterosPodolanski","Armenteros-Podolanski phase space;#alpha;p_{t} arm",100,-1.0,1.0,50,0,0.5);
1008// fHistArmenterosPodolanskiMI = new TH2F("h2ArmenterosPodolanskiMI","Armenteros-Podolanski phase space;#alpha;p_{t} arm",100,-1.0,1.0,50,0,0.5);
1009
1010
1011 //PID
1012 fHistNsigmaPosPionAntiLambda = new TH1F("h1NsigmaPosPionAntiLambda", "Positive daughter of Antilambda;NsigmaPion;Counts",25,0,5);
1013 fListHist->Add(fHistNsigmaPosPionAntiLambda);
1014
1015 fHistNsigmaNegProtonAntiLambda = new TH1F("h1NsigmaNegProtonAntiLambda", "Negative daughter of Antilambda;NsigmaProton;Counts",25,0,5);
1016 fListHist->Add(fHistNsigmaNegProtonAntiLambda);
1017
1018 fHistNsigmaPosProtonLambda = new TH1F("h1NsigmaPosProtonLambda", "Positive daughter of Lambda;NsigmaProton;Counts",25,0,5);
1019 fListHist->Add(fHistNsigmaPosProtonLambda);
1020
1021 fHistNsigmaNegPionLambda = new TH1F("h1NsigmaNegPionLambda", "Negative daughter of Lambda;NsigmaPion;Counts",25,0,5);
1022 fListHist->Add(fHistNsigmaNegPionLambda);
1023
1024 fHistNsigmaPosPionK0 = new TH1F("h1NsigmaPosPionK0", "Positive daughter of K0s;NsigmaPion;Counts",25,0,5);
1025 fListHist->Add(fHistNsigmaPosPionK0);
1026
1027 fHistNsigmaNegPionK0 = new TH1F("h1NsigmaNegPionK0", "Negative daughter of K0s;NsigmaPion;Counts",25,0,5);
1028 fListHist->Add(fHistNsigmaNegPionK0);
1029
1030
1031 //********************************
1032 // Associated particles histograms
1033 //********************************
1034
1035 // Rap distribution
1036 fHistAsMcRapK0 = new TH1F("h1AsMcRapK0", "K^{0} associated;eta;Counts", 60, -1.5, 1.5);
1037 fListHist->Add(fHistAsMcRapK0);
1038// fHistAsMcRapK0MI = new TH1F("h1AsMcRapK0MI", "K^{0} associated;eta;Counts", 60, -1.5, 1.5);
1039// fListHist->Add(fHistAsMcRapK0MI);
1040
1041 fHistAsMcRapLambda = new TH1F("h1AsMcRapLambda", "#Lambda^{0} associated;eta;Counts", 60, -1.5, 1.5);
1042 fListHist->Add(fHistAsMcRapLambda);
1043// fHistAsMcRapLambdaMI = new TH1F("h1AsMcRapLambdaMI", "#Lambda^{0} associated;eta;Counts", 60, -1.5, 1.5);
1044// fListHist->Add(fHistAsMcRapLambdaMI);
1045
1046 fHistAsMcRapAntiLambda = new TH1F("h1AsMcRapAntiLambda", "#bar{#Lambda}^{0} associated;eta;Counts", 60, -1.5, 1.5);
1047 fListHist->Add(fHistAsMcRapAntiLambda);
1048 // fHistAsMcRapAntiLambdaMI = new TH1F("h1AsMcRapAntiLambdaMI", "#bar{#Lambda}^{0} associated;eta;Counts", 60, -1.5, 1.5);
1049// fListHist->Add(fHistAsMcRapAntiLambdaMI);
1050
1051
1052 //Pt distribution
1053 fHistAsMcPtK0 = new TH1F("h1AsMcPtK0", "K^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1054 fListHist->Add(fHistAsMcPtK0);
1055
1056
1057// fHistAsMcPtK0MI = new TH1F("h1AsMcPtK0MI", "K^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1058// fListHist->Add(fHistAsMcPtK0MI);
1059
1060 fHistAsMcPtLambda = new TH1F("h1AsMcPtLambda", "#Lambda^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1061 fListHist->Add(fHistAsMcPtLambda);
1062
1063
1064
1065// fHistAsMcPtAntiLambdaMI = new TH1F("h1AsMcPtAntiLambdaMI", "#bar{#Lambda}^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1066// fListHist->Add(fHistAsMcPtAntiLambdaMI);
1067
1068 fHistAsMcPtZoomK0 = new TH1F("h1AsMcPtZoomK0", "K^{0} candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
1069 fListHist->Add(fHistAsMcPtZoomK0);
1070// fHistAsMcPtZoomK0MI = new TH1F("h1AsMcPtZoomK0MI", "K^{0} MI candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
1071// fListHist->Add(fHistAsMcPtZoomK0MI);
1072
1073 fHistAsMcPtZoomLambda = new TH1F("h1AsMcPtZoomLambda", "#Lambda^{0} candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
1074 fListHist->Add(fHistAsMcPtZoomLambda);
1075// fHistAsMcPtZoomLambdaMI = new TH1F("h1AsMcPtZoomLambdaMI", "#Lambda^{0} MI candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
1076// fListHist->Add(fHistAsMcPtZoomLambdaMI);
1077
1078
1079 // Radius distribution
1080 fHistAsMcProdRadiusK0 = new TH1F("h1AsMcProdRadiusK0", "K^{0} associated;r (cm);Counts", 500, 0, 100);
1081 fListHist->Add(fHistAsMcProdRadiusK0);
1082// fHistAsMcProdRadiusK0MI = new TH1F("h1AsMcProdRadiusK0MI", "K^{0} associated;r (cm);Counts", 500, 0, 100);
1083// fListHist->Add(fHistAsMcProdRadiusK0MI);
1084
1085 fHistAsMcProdRadiusLambda = new TH1F("h1AsMcProdRadiusLambda", "#Lambda^{0} associated;r (cm);Counts", 500, 0, 100);
1086 fListHist->Add(fHistAsMcProdRadiusLambda);
1087// fHistAsMcProdRadiusLambdaMI = new TH1F("h1AsMcProdRadiusLambdaMI", "#Lambda^{0} associated;r (cm);Counts", 500, 0, 100);
1088// fListHist->Add(fHistAsMcProdRadiusLambdaMI);
1089
1090 fHistAsMcProdRadiusAntiLambda = new TH1F("h1AsMcProdRadiusAntiLambda", "#bar{#Lambda}^{0} associated;r (cm);Counts", 500, 0, 100);
1091 fListHist->Add(fHistAsMcProdRadiusAntiLambda);
1092// fHistAsMcProdRadiusAntiLambdaMI = new TH1F("h1AsMcProdRadiusAntiLambdaMI", "#bar{#Lambda}^{0} associated;r (cm);Counts", 500, 0, 100);
1093// fListHist->Add(fHistAsMcProdRadiusAntiLambdaMI);
1094
1095 fHistAsMcProdRadiusXvsYK0s = new TH2F("h2AsMcProdRadiusXvsYK0s","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
1096 fListHist->Add(fHistAsMcProdRadiusXvsYK0s);
1097// fHistAsMcProdRadiusXvsYK0sMI = new TH2F("h2AsMcProdRadiusXvsYK0sMI","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
1098// fListHist->Add(fHistAsMcProdRadiusXvsYK0sMI);
1099
1100 fHistAsMcProdRadiusXvsYLambda = new TH2F("h2AsMcProdRadiusXvsYLambda","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
1101 fListHist->Add(fHistAsMcProdRadiusXvsYLambda);
1102// fHistAsMcProdRadiusXvsYLambdaMI = new TH2F("h2AsMcProdRadiusXvsYLambdaMI","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
1103// fListHist->Add(fHistAsMcProdRadiusXvsYLambdaMI);
1104
1105 fHistAsMcProdRadiusXvsYAntiLambda = new TH2F("h2AsMcProdRadiusXvsYAntiLambda","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
1106 fListHist->Add(fHistAsMcProdRadiusXvsYAntiLambda);
1107// fHistAsMcProdRadiusXvsYAntiLambdaMI = new TH2F("h2AsMcProdRadiusXvsYAntiLambdaMI","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
1108// fListHist->Add(fHistAsMcProdRadiusXvsYAntiLambdaMI);
1109
1110
1111
1112 // Mass
1113 fHistPidMcMassK0 = new TH1F("h1PidMcMassK0", "K^{0} MC PId checked;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
1114 fListHist->Add(fHistPidMcMassK0);
1115// fHistPidMcMassK0MI = new TH1F("h1PidMcMassK0MI", "K^{0} MC PId checked;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
1116// fListHist->Add(fHistPidMcMassK0MI);
1117
1118 fHistPidMcMassLambda = new TH1F("h1PidMcMassLambda", "#Lambda^{0} MC PId checked;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1119 fListHist->Add(fHistPidMcMassLambda);
1120// fHistPidMcMassLambdaMI = new TH1F("h1PidMcMassLambdaMI", "#Lambda^{0} MC PId checked;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1121// fListHist->Add(fHistPidMcMassLambdaMI);
1122
1123 fHistPidMcMassAntiLambda = new TH1F("h1PidMcMassAntiLambda", "#bar{#Lambda}^{0} MC PId checked;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1124 fListHist->Add(fHistPidMcMassAntiLambda);
1125// fHistPidMcMassAntiLambdaMI = new TH1F("h1PidMcMassAntiLambdaMI", "#bar{#Lambda}^{0} MC PId checked;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1126// fListHist->Add(fHistPidMcMassAntiLambdaMI);
1127
1128 fHistAsMcMassK0 = new TH1F("h1AsMcMassK0", "K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
1129 fListHist->Add(fHistAsMcMassK0);
1130// fHistAsMcMassK0MI = new TH1F("h1AsMcMassK0MI", "K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
1131// fListHist->Add(fHistAsMcMassK0MI);
1132
1133 fHistAsMcMassLambda = new TH1F("h1AsMcMassLambda", "#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1134 fListHist->Add(fHistAsMcMassLambda);
1135// fHistAsMcMassLambdaMI = new TH1F("h1AsMcMassLambdaMI", "#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1136// fListHist->Add(fHistAsMcMassLambdaMI);
1137
1138 fHistAsMcMassAntiLambda = new TH1F("h1AsMcMassAntiLambda", "#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1139 fListHist->Add(fHistAsMcMassAntiLambda);
1140// fHistAsMcMassAntiLambdaMI = new TH1F("h1AsMcMassAntiLambdaMI", "#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1141// fListHist->Add(fHistAsMcMassAntiLambdaMI);
1142
1143 //Pt versus Mass
1144 fHistAsMcPtVsMassK0 = new TH2F("h2AsMcPtVsMassK0","K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,240,0,12);
1145 fListHist->Add(fHistAsMcPtVsMassK0);
1146// fHistAsMcPtVsMassK0MI = new TH2F("h2AsMcPtVsMassK0MI","K^{0} MIassociated;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,240,0,12);
1147// fListHist->Add(fHistAsMcPtVsMassK0MI);
1148
1149 fHistAsMcPtVsMassLambda = new TH2F("h2AsMcPtVsMassLambda","#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,240,0,12);
1150 fListHist->Add(fHistAsMcPtVsMassLambda);
1151// fHistAsMcPtVsMassLambdaMI = new TH2F("h2AsMcPtVsMassLambdaMI","#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,240,0,12);
1152// fListHist->Add(fHistAsMcPtVsMassLambdaMI);
1153
1154 fHistAsMcPtVsMassAntiLambda = new TH2F("h2AsMcPtVsMassAntiLambda","#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,240,0,12);
1155 fListHist->Add(fHistAsMcPtVsMassAntiLambda);
1156// fHistAsMcPtVsMassAntiLambdaMI = new TH2F("h2AsMcPtVsMassAntiLambdaMI","#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,240,0,12);
1157// fListHist->Add(fHistAsMcPtVsMassAntiLambdaMI);
1158
1159
1160 // invariant mass vs radius
1161 fHistAsMcMassVsRadiusK0 = new TH2F("h2AsMcMassVsRadiusK0", "K^{0} associated;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 500, 0.47, 0.52);
1162 fListHist->Add(fHistAsMcMassVsRadiusK0);
1163
1164// fHistAsMcMassVsRadiusK0MI = new TH2F("h2AsMcMassVsRadiusK0MI", "K^{0} MI associated;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 500, 0.47, 0.52);
1165// fListHist->Add(fHistAsMcMassVsRadiusK0MI);
1166
1167 fHistAsMcMassVsRadiusLambda = new TH2F("h2AsMcMassVsRadiusLambda", "#Lambda associated;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, lNbinInvMassLambda, 1.10, 1.13);
1168 fListHist->Add(fHistAsMcMassVsRadiusLambda);
1169
1170// fHistAsMcMassVsRadiusLambdaMI = new TH2F("h2AsMcMassVsRadiusLambdaMI", "#Lambda MI associated;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, lNbinInvMassLambda, 1.10, 1.13);
1171// fListHist->Add(fHistAsMcMassVsRadiusLambdaMI);
1172
1173 fHistAsMcMassVsRadiusAntiLambda = new TH2F("h2AsMcMassVsRadiusAntiLambda", "#bar{#Lambda} associated;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius,lNbinInvMassLambda , 1.10, 1.13);
1174 fListHist->Add(fHistAsMcMassVsRadiusAntiLambda);
1175
1176// fHistAsMcMassVsRadiusAntiLambdaMI = new TH2F("h2AsMcMassVsRadiusAntiLambdaMI", "#bar{#Lambda} MI associated;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius,lNbinInvMassLambda , 1.10, 1.13);
1177// fListHist->Add(fHistAsMcMassVsRadiusAntiLambdaMI);
1178
1179
1180 // Position Resolution
1181 fHistAsMcResxK0 = new TH1F("h1AsMcResxK0", "K^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1182 fListHist->Add(fHistAsMcResxK0);
1183 fHistAsMcResyK0 = new TH1F("h1AsMcResyK0", "K^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1184 fListHist->Add(fHistAsMcResyK0);
1185 fHistAsMcReszK0 = new TH1F("h1AsMcReszK0", "K^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1186 fListHist->Add(fHistAsMcReszK0);
1187 fHistAsMcResrVsRadiusK0 = new TH2F("h2AsMcResrVsRadiusK0", "K^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50., 50, -0.25, 0.25);
1188 fListHist->Add(fHistAsMcResrVsRadiusK0);
1189 fHistAsMcReszVsRadiusK0 = new TH2F("h2AsMcReszVsRadiusK0", "K^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1190 fListHist->Add(fHistAsMcReszVsRadiusK0);
1191
1192// fHistAsMcResxK0MI = new TH1F("h1AsMcResxK0MI", "K^{0} MI associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1193// fListHist->Add(fHistAsMcResxK0MI);
1194// fHistAsMcResyK0MI = new TH1F("h1AsMcResyK0MI", "K^{0} MI associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1195// fListHist->Add(fHistAsMcResyK0MI);
1196// fHistAsMcReszK0MI = new TH1F("h1AsMcReszK0MI", "K^{0} MI associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1197// fListHist->Add(fHistAsMcReszK0MI);
1198// fHistAsMcResrVsRadiusK0MI = new TH2F("h2AsMcResrVsRadiusK0MI", "K^{0} MI associated;Radius (cm);#Delta r (cm)",8,radius, 50, -0.25, 0.25);
1199// fListHist->Add(fHistAsMcResrVsRadiusK0MI);
1200// fHistAsMcReszVsRadiusK0MI = new TH2F("h2AsMcReszVsRadiusK0MI", "K^{0} MI associated;Radius (cm);#Delta z (cm)",8,radius, 50, -0.25, 0.25);
1201// fListHist->Add(fHistAsMcReszVsRadiusK0MI);
1202
1203 fHistAsMcResxLambda = new TH1F("h1AsMcResxLambda", "#Lambda^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1204 fListHist->Add(fHistAsMcResxLambda);
1205 fHistAsMcResyLambda = new TH1F("h1AsMcResyLambda", "#Lambda^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1206 fListHist->Add(fHistAsMcResyLambda);
1207 fHistAsMcReszLambda = new TH1F("h1AsMcReszLambda", "#Lambda^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1208 fListHist->Add(fHistAsMcReszLambda);
1209 fHistAsMcResrVsRadiusLambda = new TH2F("h2AsMcResrVsRadiusLambda", "#Lambda^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1210 fListHist->Add(fHistAsMcResrVsRadiusLambda);
1211 fHistAsMcReszVsRadiusLambda = new TH2F("h2AsMcReszVsRadiusLambda", "#Lambda^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1212 fListHist->Add(fHistAsMcReszVsRadiusLambda);
1213
1214// fHistAsMcResxLambdaMI = new TH1F("h1AsMcResxLambdaMI", "#Lambda^{0} MI associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1215// fListHist->Add(fHistAsMcResxLambdaMI);
1216// fHistAsMcResyLambdaMI = new TH1F("h1AsMcResyLambdaMI", "#Lambda^{0} MI associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1217// fListHist->Add(fHistAsMcResyLambdaMI);
1218// fHistAsMcReszLambdaMI = new TH1F("h1AsMcReszLambdaMI", "#Lambda^{0} MI associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1219// fListHist->Add(fHistAsMcReszLambdaMI);
1220// fHistAsMcResrVsRadiusLambdaMI = new TH2F("h2AsMcResrVsRadiusLambdaMI", "#Lambda^{0} MI associated;Radius (cm);#Delta r (cm)",8,radius, 50, -0.25, 0.25);
1221// fListHist->Add(fHistAsMcResrVsRadiusLambdaMI);
1222// fHistAsMcReszVsRadiusLambdaMI = new TH2F("h2AsMcReszVsRadiusLambdaMI", "#Lambda^{0} MI associated;Radius (cm);#Delta z (cm)",8,radius, 50, -0.25, 0.25);
1223// fListHist->Add(fHistAsMcReszVsRadiusLambdaMI);
1224
1225 fHistAsMcResxAntiLambda = new TH1F("h1AsMcResxAntiLambda", "#bar{#Lambda}^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1226 fListHist->Add(fHistAsMcResxAntiLambda);
1227 fHistAsMcResyAntiLambda = new TH1F("h1AsMcResyAntiLambda", "#bar{#Lambda}^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1228 fListHist->Add(fHistAsMcResyAntiLambda);
1229 fHistAsMcReszAntiLambda = new TH1F("h1AsMcReszAntiLambda", "#bar{#Lambda}^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1230 fListHist->Add(fHistAsMcReszAntiLambda);
1231 fHistAsMcResrVsRadiusAntiLambda = new TH2F("h2AsMcResrVsRadiusAntiLambda", "#bar{#Lambda}^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1232 fListHist->Add(fHistAsMcResrVsRadiusAntiLambda);
1233 fHistAsMcReszVsRadiusAntiLambda = new TH2F("h2AsMcReszVsRadiusAntiLambda", "#bar{#Lambda}^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1234 fListHist->Add(fHistAsMcReszVsRadiusAntiLambda);
1235
1236// fHistAsMcResxAntiLambdaMI = new TH1F("h1AsMcResxAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1237// fListHist->Add(fHistAsMcResxAntiLambdaMI);
1238// fHistAsMcResyAntiLambdaMI = new TH1F("h1AsMcResyAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1239// fListHist->Add(fHistAsMcResyAntiLambdaMI);
1240// fHistAsMcReszAntiLambdaMI = new TH1F("h1AsMcReszAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1241// fListHist->Add(fHistAsMcReszAntiLambdaMI);
1242// fHistAsMcResrVsRadiusAntiLambdaMI = new TH2F("h2AsMcResrVsRadiusAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;Radius (cm);#Delta r (cm)",8,radius, 50, -0.25, 0.25);
1243// fListHist->Add(fHistAsMcResrVsRadiusAntiLambdaMI);
1244// fHistAsMcReszVsRadiusAntiLambdaMI = new TH2F("h2AsMcReszVsRadiusAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;Radius (cm);#Delta z (cm)",8,radius, 50, -0.25, 0.25);
1245// fListHist->Add(fHistAsMcReszVsRadiusAntiLambdaMI);
1246
1247 // Pt Resolution
1248 fHistAsMcResPtK0 = new TH1F("h1AsMcResPtK0","Pt Resolution K^{0};#Delta Pt;Counts",200,-1,1);
1249 fListHist->Add(fHistAsMcResPtK0);
1250// fHistAsMcResPtK0MI = new TH1F("h1AsMcResPtK0MI","Pt Resolution K^{0} MI;#Delta Pt;Counts",200,-1,1);
1251// fListHist->Add(fHistAsMcResPtK0MI);
1252
1253 fHistAsMcResPtLambda = new TH1F("h1AsMcResPtLambda","Pt Resolution #Lambda^{0};#Delta Pt;Counts",200,-1,1);
1254 fListHist->Add(fHistAsMcResPtLambda);
1255// fHistAsMcResPtLambdaMI = new TH1F("h1AsMcResPtLambdaMI","Pt Resolution #Lambda^{0} MI;#Delta Pt;Counts",200,-1,1);
1256// fListHist->Add(fHistAsMcResPtLambdaMI);
1257
1258 fHistAsMcResPtAntiLambda = new TH1F("h1AsMcResPtAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Counts",200,-1,1);
1259 fListHist->Add(fHistAsMcResPtAntiLambda);
1260// fHistAsMcResPtAntiLambdaMI = new TH1F("h1AsMcResPtAntiLambdaMI","Pt Resolution #bar{#Lambda}^{0} MI;#Delta Pt;Counts",200,-1,1);
1261/// fListHist->Add(fHistAsMcResPtAntiLambdaMI);
1262
1263
1264 fHistAsMcResPtVsRapK0 = new TH2F("h2AsMcResPtVsRapK0","Pt Resolution K^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
1265 fListHist->Add(fHistAsMcResPtVsRapK0);
1266// fHistAsMcResPtVsRapK0MI = new TH2F("h2AsMcResPtVsRapK0MI","Pt Resolution K^{0} MI;#Delta Pt;Rap",200,-1,1,20,-1,1);
1267// fListHist->Add(fHistAsMcResPtVsRapK0MI);
1268
1269 fHistAsMcResPtVsRapLambda = new TH2F("h2AsMcResPtVsRapLambda","Pt Resolution #Lambda^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
1270 fListHist->Add(fHistAsMcResPtVsRapLambda);
1271// fHistAsMcResPtVsRapLambdaMI = new TH2F("h2AsMcResPtVsRapLambdaMI","Pt Resolution #Lambda^{0} MI;#Delta Pt;Rap",200,-1,1,20,-1,1);
1272// fListHist->Add(fHistAsMcResPtVsRapLambdaMI);
1273
1274 fHistAsMcResPtVsRapAntiLambda = new TH2F("h2AsMcResPtVsRapAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
1275 fListHist->Add(fHistAsMcResPtVsRapAntiLambda);
1276// fHistAsMcResPtVsRapAntiLambdaMI = new TH2F("h2AsMcResPtVsRapAntiLambdaMI","Pt Resolution #bar{#Lambda}^{0} MI;#Delta Pt;Rap",200,-1,1,20,-1,1);
1277// fListHist->Add(fHistAsMcResPtVsRapAntiLambdaMI);
1278
1279
1280 fHistAsMcResPtVsPtK0 = new TH2F("h2AsMcResPtVsPtK0","Pt Resolution K^{0};#Delta Pt;Pt",600,-0.15,0.15,240,0,12);
1281 fListHist->Add(fHistAsMcResPtVsPtK0);
1282// fHistAsMcResPtVsPtK0MI = new TH2F("h2AsMcResPtVsPtK0MI","Pt Resolution K^{0} MI;#Delta Pt;Pt",600,-0.15,0.15,240,0,12);
1283// fListHist->Add(fHistAsMcResPtVsPtK0MI);
1284
1285 fHistAsMcResPtVsPtLambda = new TH2F("h2AsMcResPtVsPtLambda","Pt Resolution #Lambda^{0};#Delta Pt;Pt",600,-0.15,0.15,240,0,12);
1286 fListHist->Add(fHistAsMcResPtVsPtLambda);
1287// fHistAsMcResPtVsPtLambdaMI = new TH2F("h2AsMcResPtVsPtLambdaMI","Pt Resolution #Lambda^{0} MI;#Delta Pt;Pt",600,-0.15,0.15,240,0,12);
1288// fListHist->Add(fHistAsMcResPtVsPtLambdaMI);
1289
1290 fHistAsMcResPtVsPtAntiLambda = new TH2F("h2AsMcResPtVsPtAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Pt",300,-0.15,0.15,240,0,12);
1291 fListHist->Add(fHistAsMcResPtVsPtAntiLambda);
1292// fHistAsMcResPtVsPtAntiLambdaMI = new TH2F("h2AsMcResPtVsPtAntiLambdaMI","Pt Resolution #bar{#Lambda}^{0} MI;#Delta Pt;Pt",300,-0.15,0.15,240,0,12);
1293// fListHist->Add(fHistAsMcResPtVsPtAntiLambdaMI);
1294
1295
1296 // pdgcode of mother
1297 fHistAsMcMotherPdgCodeK0s = new TH1F("h1AsMcMotherPdgCodeK0s","Mother of Associated K^{0};mother;counts",11,0,11);
1298 fListHist->Add(fHistAsMcMotherPdgCodeK0s);
1299// fHistAsMcMotherPdgCodeK0sMI = new TH1F("h1AsMcMotherPdgCodeK0sMI","Mother of Associated K^{0} MI;mother;counts",11,0,11);
1300// fListHist->Add(fHistAsMcMotherPdgCodeK0sMI);
1301
1302 fHistAsMcMotherPdgCodeLambda = new TH1F("h1AsMcMotherPdgCodeLambda","Mother of Associated #Lambda^{0};mother;counts",11,0,11);
1303 fListHist->Add(fHistAsMcMotherPdgCodeLambda);
1304// fHistAsMcMotherPdgCodeLambdaMI = new TH1F("h1AsMcMotherPdgCodeLambdaMI","Mother of Associated #Lambda^{0} MI;mother;counts",11,0,11);
1305// fListHist->Add(fHistAsMcMotherPdgCodeLambdaMI);
1306
1307 fHistAsMcMotherPdgCodeAntiLambda = new TH1F("h1AsMcMotherPdgCodeAntiLambda","Mother of Associated #bar{#Lambda}^{0};mother;counts",11,0,11);
1308 fListHist->Add(fHistAsMcMotherPdgCodeAntiLambda);
1309// fHistAsMcMotherPdgCodeAntiLambdaMI = new TH1F("h1AsMcMotherPdgCodeAntiLambdaMI","Mother of Associated #bar{Lambda}^{0} MI;mother;counts",11,0,11);
1310// fListHist->Add(fHistAsMcMotherPdgCodeAntiLambdaMI);
1311
1312
1313 // Pt distribution Lambda from Sigma
1314 fHistAsMcPtLambdaFromSigma = new TH1F("h1AsMcPtLambdaFromSigma","#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1315 fListHist->Add(fHistAsMcPtLambdaFromSigma);
1316// fHistAsMcPtLambdaFromSigmaMI = new TH1F("h1AsMcPtLambdaFromSigmaMI","#Lambda^{0} MI associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1317// fListHist->Add(fHistAsMcPtLambdaFromSigmaMI);
1318
1319 fHistAsMcPtAntiLambdaFromSigma = new TH1F("h1AsMcPtAntiLambdaFromSigma","#bar{#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1320 fListHist->Add(fHistAsMcPtAntiLambdaFromSigma);
1321// fHistAsMcPtAntiLambdaFromSigmaMI = new TH1F("h1AsMcPtAntiLambdaFromSigmaMI","#bar{#Lambda}^{0} MI associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1322// fListHist->Add(fHistAsMcPtAntiLambdaFromSigmaMI);
1323
1324
1325 // Associated secondary particles:
1326 // Pt and rapidity distribution
1327 fHistAsMcSecondaryPtVsRapK0s = new TH2F("h2AsMcSecondaryPtVsRapK0s", "K^{0} associated secondary;p_{t} (GeV/c);rapidity",240,0,12,30,-1.5,1.5);
1328 fListHist->Add(fHistAsMcSecondaryPtVsRapK0s);
1329// fHistAsMcSecondaryPtVsRapK0sMI = new TH2F("h2AsMcSecondaryPtVsRapK0sMI", "K^{0} MI associated secondary;p_{t} (GeV/c);rapidity",240,0,12,30,-1.5,1.5);
1330// fListHist->Add(fHistAsMcSecondaryPtVsRapK0sMI);
1331
1332 fHistAsMcSecondaryPtVsRapLambda = new TH2F("h2AsMcSecondaryPtVsRapLambda", "#Lambda^{0} associated secondary;p_{t} (GeV/c);rapidity",240,0,12,30,-1.5,1.5);
1333 fListHist->Add(fHistAsMcSecondaryPtVsRapLambda);
1334// fHistAsMcSecondaryPtVsRapLambdaMI = new TH2F("h2AsMcSecondaryPtVsRapLambdaMI", "#Lambda^{0} MI associated secondary;p_{t} (GeV/c);rapidity",240,0,12,30,-1.5,1.5);
1335// fListHist->Add(fHistAsMcSecondaryPtVsRapLambdaMI);
1336
1337 fHistAsMcSecondaryPtVsRapAntiLambda = new TH2F("h2AsMcSecondaryPtVsRapAntiLambda", "#bar{#Lambda}^{0} associated secondary;p_{t} (GeV/c);rapidity",240,0,12,30,-1.5,1.5);
1338 fListHist->Add(fHistAsMcSecondaryPtVsRapAntiLambda);
1339// fHistAsMcSecondaryPtVsRapAntiLambdaMI = new TH2F("h2AsMcSecondaryPtVsRapAntiLambdaMI", "#bar{#Lambda}^{0} MI associated secondary;p_{t} (GeV/c);rapidity",240,0,12,30,-1.5,1.5);
1340// fListHist->Add(fHistAsMcSecondaryPtVsRapAntiLambdaMI);
1341
1342 // Production radius
1343 fHistAsMcSecondaryProdRadiusK0s = new TH1F("h1AsMcSecondaryProdRadiusK0s", "K^{0} Production Radius;r (cm);Count", 170, -2, 15);
1344 fListHist->Add(fHistAsMcSecondaryProdRadiusK0s);
1345// fHistAsMcSecondaryProdRadiusK0sMI = new TH1F("h1AsMcSecondaryProdRadiusK0sMI", "K^{0} MI Production Radius;r (cm);Count", 170, -2, 15);
1346// fListHist->Add(fHistAsMcSecondaryProdRadiusK0sMI);
1347
1348 fHistAsMcSecondaryProdRadiusLambda = new TH1F("h1AsMcSecondaryProdRadiusLambda", "#Lambda^{0} Production Radius;r (cm);Count", 170, -2, 15);
1349 fListHist->Add(fHistAsMcSecondaryProdRadiusLambda);
1350// fHistAsMcSecondaryProdRadiusLambdaMI = new TH1F("h1AsMcSecondaryProdRadiusLambdaMI", "#Lambda^{0} MI Production Radius;r (cm);Count", 170, -2, 15);
1351// fListHist->Add(fHistAsMcSecondaryProdRadiusLambdaMI);
1352
1353 fHistAsMcSecondaryProdRadiusAntiLambda = new TH1F("h1AsMcSecondaryProdRadiusAntiLambda", "#bar{#Lambda}^{0} Production Radius;r (cm);Count", 170, -2, 15);
1354 fListHist->Add(fHistAsMcSecondaryProdRadiusAntiLambda);
1355// fHistAsMcSecondaryProdRadiusAntiLambdaMI = new TH1F("h1AsMcSecondaryProdRadiusAntiLambdaMI", "#bar{#Lambda}^{0} MI Production Radius;r (cm);Count", 170, -2, 15);
1356// fListHist->Add(fHistAsMcSecondaryProdRadiusAntiLambdaMI);
1357
1358 fHistAsMcSecondaryProdRadiusXvsYK0s = new TH2F("h2AsMcSecondaryProdRadiusXvsYK0s","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1359 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYK0s);
1360// fHistAsMcSecondaryProdRadiusXvsYK0sMI = new TH2F("h2AsMcSecondaryProdRadiusXvsYK0sMI","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1361// fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYK0sMI);
1362
1363 fHistAsMcSecondaryProdRadiusXvsYLambda = new TH2F("h2AsMcSecondaryProdRadiusXvsYLambda","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1364 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYLambda);
1365// fHistAsMcSecondaryProdRadiusXvsYLambdaMI = new TH2F("h2AsMcSecondaryProdRadiusXvsYLambdaMI","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1366// fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYLambdaMI);
1367
1368 fHistAsMcSecondaryProdRadiusXvsYAntiLambda = new TH2F("h2AsMcSecondaryProdRadiusXvsYAntiLambda","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1369 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYAntiLambda);
1370// fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI = new TH2F("h2AsMcSecondaryProdRadiusXvsYAntiLambdaMI","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1371// fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI);
1372
1373 fHistAsMcSecondaryMotherPdgCodeK0s = new TH1F("h1AsMcSecondaryMotherPdgCodeK0s","Mother of Associated Secondary K^{0};mother;counts",11,0,11);
1374 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeK0s);
1375// fHistAsMcSecondaryMotherPdgCodeK0sMI = new TH1F("h1AsMcSecondaryMotherPdgCodeK0sMI","Mother of Associated Secondary K^{0} MI;mother;counts",11,0,11);
1376// fListHist->Add(fHistAsMcSecondaryMotherPdgCodeK0sMI);
1377
1378 fHistAsMcSecondaryMotherPdgCodeLambda = new TH1F("h1AsMcSecondaryMotherPdgCodeLambda","Mother of Associated Secondary #Lambda^{0};mother;counts",11,0,11);
1379 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeLambda);
1380// fHistAsMcSecondaryMotherPdgCodeLambdaMI = new TH1F("h1AsMcSecondaryMotherPdgCodeLambdaMI","Mother of Associated Secondary #Lambda^{0} MI;mother;counts",11,0,11);
1381// fListHist->Add(fHistAsMcSecondaryMotherPdgCodeLambdaMI);
1382
1383 fHistAsMcSecondaryMotherPdgCodeAntiLambda = new TH1F("h1AsMcSecondaryMotherPdgCodeAntiLambda","Mother of Associated Secondary #bar{#Lambda}^{0};mother;counts",11,0,11);
1384 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeAntiLambda);
1385// fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI = new TH1F("h1AsMcSecondaryMotherPdgCodeAntiLambdaMI","Mother of Associated Secondary #bar{Lambda}^{0} MI;mother;counts",11,0,11);
1386// fListHist->Add(fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI);
1387
1388 // Pt distribution Lambda from Sigma
1389 fHistAsMcSecondaryPtLambdaFromSigma = new TH1F("h1AsMcSecondaryPtLambdaFromSigma","#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1390 fListHist->Add(fHistAsMcSecondaryPtLambdaFromSigma);
1391// fHistAsMcSecondaryPtLambdaFromSigmaMI = new TH1F("h1AsMcSecondaryPtLambdaFromSigmaMI","#Lambda^{0} MI associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1392// fListHist->Add(fHistAsMcSecondaryPtLambdaFromSigmaMI);
1393
1394 fHistAsMcSecondaryPtAntiLambdaFromSigma = new TH1F("h1AsMcSecondaryPtAntiLambdaFromSigma","#bar{#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1395 fListHist->Add(fHistAsMcSecondaryPtAntiLambdaFromSigma);
1396// fHistAsMcSecondaryPtAntiLambdaFromSigmaMI = new TH1F("h1AsMcSecondaryPtAntiLambdaFromSigmaMI","#bar{#Lambda}^{0} MI associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1397// fListHist->Add(fHistAsMcSecondaryPtAntiLambdaFromSigmaMI);
1398
1399 PostData(1, fListHist);
1400 PostData(2, fCentrSelector);
1401
1402}
1403
1404//________________________________________________________________________
1405void AliAnalysisTaskPerformanceStrange::UserExec(Option_t *)
1406{
1407 // Main loop
1408 // Called for each event
1409
1410 AliStack* stack = NULL;
1411 TClonesArray *mcArray = NULL;
1412 TArrayF mcPrimaryVtx;
1413
1414 fESD=(AliESDEvent *)InputEvent();
1415
1416 if (!fESD) {
1417 Printf("ERROR: fESD not available");
1418 return;
1419 }
1420
1421
1422 AliVEvent* lEvent = InputEvent();
1423
1424 if (!lEvent) {
1425 Printf("ERROR: Event not available");
1426 return;
1427 }
1428
1429 fHistNumberEvents->Fill(0.5);
1430
1431 //******************
1432 // Trigger Selection ! Warning Works only for ESD, add protection in case of AOD loop
1433 //******************
1434
1435 Bool_t isSelected =
1436 (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()
1437 & AliVEvent::kMB);
1438 if (!isSelected) return;
1439
1440 // Centrality selection
1441 static AliESDtrackCuts * trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(); // FIXME: make it a data member
1442 Bool_t isCentralitySelected = fCentrSelector->IsCentralityBinSelected(fESD,trackCuts); // FIXME esd track cuts if needed
1443 if(!isCentralitySelected) return;
1444 // FIXME: add to hist number events another entry for centrality.
1445
1446 // Done by the AliPhysicsSelection Task ! Only the selected events are passed to this task
1447
1448 fHistNumberEvents->Fill(1.5);
1449
1450
1451 //*************************
1452 //End track multiplicity
1453 //*************************
1454
1455
1456 // Remove Events with no tracks
1457 //if (!(fESD->GetNumberOfTracks())) return;
1458
1459 fHistNumberEvents->Fill(2.5);
1460 fHistTrackPerEvent->Fill(fESD->GetNumberOfTracks());
1461
1462 //*************************************
1463 // Cut used:
1464 //*************************************
1465
1466 // Cut Rapidity:
1467 Double_t lCutRap = 0.75;
1468
1469 // Cut AliKF Chi2 for Reconstructed particles
1470 Double_t cutChi2KF = 1E3;
1471
1472 // If PID is used:
1473 Double_t lLimitPPID = 0.7;
1474 Float_t cutNSigmaLowP = 1E3;
1475 Float_t cutNSigmaHighP = 1E3;
1476 if (fUsePID.Contains("withPID")) {
1477 cutNSigmaLowP = 5.0;
1478 cutNSigmaHighP = 3.0;
1479 }
1480
1481
1482 // Cut Daughters pt (GeV/c):
1483 Double_t cutMinPtDaughter = 0.160;
1484
1485 // Cut primary vertex:
1486 Double_t cutPrimVertex = 10.0;
1487
1488 // Min number of TPC clusters:
1489 Int_t nbMinTPCclusters = 80;
1490
1491 //*******************
1492 // PID parameters:
1493 //*******************
1494
1495 Double_t fAlephParameters[5] = {0,0,0,0,0,};
1496
1497 fAlephParameters[0] = 0.0283086;
1498 fAlephParameters[1] = 2.63394e+01;
1499 fAlephParameters[2] = 5.04114e-11;
1500 fAlephParameters[3] = 2.12543e+00;
1501 fAlephParameters[4] = 4.88663e+00;
1502
1503
1504 //*******************
1505 // Access MC:
1506 //*******************
1507 if (fAnalysisMC) {
1508 if(fAnalysisType == "ESD") {
1509 AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1510 if (!eventHandler) {
1511 Printf("ERROR: Could not retrieve MC event handler");
1512 return;
1513 }
1514 AliMCEvent* mcEvent = eventHandler->MCEvent();
1515 if (!mcEvent) {
1516 Printf("ERROR: Could not retrieve MC event");
1517 return;
1518 }
1519 stack = mcEvent->Stack();
1520 if (!stack) {
1521 Printf("ERROR: Could not retrieve stack");
1522 return;
1523 }
1524
1525 AliGenEventHeader* mcHeader=mcEvent->GenEventHeader();
1526 if(!mcHeader) return;
1527 mcHeader->PrimaryVertex(mcPrimaryVtx);
1528
1529 }
1530
1531 else if(fAnalysisType == "AOD") {
1532
1533 // load MC particles
1534 mcArray = (TClonesArray*)fESD->GetList()->FindObject(AliAODMCParticle::StdBranchName());
1535 if(!mcArray) {
1536 Printf("strange analysis::UserExec: MC particles branch not found!\n");
1537 return;
1538 }
1539
1540 // load MC header
1541 AliAODMCHeader *mcHeader =
1542 (AliAODMCHeader*)fESD->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1543 if(!mcHeader) {
1544 Printf("strange analysis::UserExec: MC header branch not found!\n");
1545 return;
1546 }
1547 }
1548
1549 // PID parameters for MC simulations:
1550 fAlephParameters[0] = 2.15898e+00/50.;
1551 fAlephParameters[1] = 1.75295e+01;
1552 fAlephParameters[2] = 3.40030e-09;
1553 fAlephParameters[3] = 1.96178e+00;
1554 fAlephParameters[4] = 3.91720e+00;
1555 }
1556
1557
1558 //**********************************************
1559 // MC loop
1560 //**********************************************
1561
1562 Double_t lmcPrimVtxR = 0;
1563
1564 Int_t lNbMCPrimary = 0;
1565 Int_t lNbMCPart = 0;
1566
1567 Int_t lPdgcodeCurrentPart = 0;
1568 Double_t lRapCurrentPart = 0;
1569 Double_t lPtCurrentPart = 0;
1570
1571 Int_t lComeFromSigma = 0;
1572
1573
1574 // Production Radius
1575 Double_t mcPosX = 0.0, mcPosY = 0.0, mcPosZ = 0.0;
1576 Double_t mcPosR = 0.0;
1577
1578 // Decay Radius
1579 Double_t mcDecayPosX = 0, mcDecayPosY = 0, mcDecayPosR = 0;
1580
1581 // current mc particle 's mother
1582 Int_t iCurrentMother = 0, lPdgCurrentMother = 0;
1583 Bool_t lCurrentMotherIsPrimary;
1584
1585 // current mc particles 's daughter:
1586 Int_t lPdgCurrentDaughter0 = 0, lPdgCurrentDaughter1 = 0;
1587
1588 // variables for multiple reconstruction studies:
1589 Int_t id0 = 0, id1 = 0;
1590 //Int_t lLabelTrackN = 0, lLabelTrackP = 0;
1591 //Int_t lPartNMother = 0, lPartPMother = 0;
1592 //Int_t lPartPMotherPDGcode = 0;
1593 Int_t lNtimesReconstructedK0s = 0, lNtimesReconstructedLambda = 0, lNtimesReconstructedAntiLambda = 0;
1594 // Int_t lNtimesReconstructedK0sMI = 0, lNtimesReconstructedLambdaMI = 0, lNtimesReconstructedAntiLambdaMI = 0;
1595
1596 //****************************
1597 // Start loop over MC particles
1598 if (fAnalysisMC) {
1599
1600 // Primary vertex
1601 fHistMCPrimaryVertexX->Fill(mcPrimaryVtx.At(0));
1602 fHistMCPrimaryVertexY->Fill(mcPrimaryVtx.At(1));
1603 fHistMCPrimaryVertexZ->Fill(mcPrimaryVtx.At(2));
1604
1605 lmcPrimVtxR = TMath::Sqrt(mcPrimaryVtx.At(0)*mcPrimaryVtx.At(0)+mcPrimaryVtx.At(1)*mcPrimaryVtx.At(1));
1606
1607
1608 if(fAnalysisType == "ESD") {
1609
1610 lNbMCPrimary = stack->GetNprimary();
1611 lNbMCPart = stack->GetNtrack();
1612
1613 fHistMCMultiplicityPrimary->Fill(lNbMCPrimary);
1614 fHistMCMultiplicityTracks->Fill(lNbMCPart);
1615
1616
1617 for (Int_t iMc = 0; iMc < (stack->GetNtrack()); iMc++) {
1618 TParticle *p0 = stack->Particle(iMc);
1619 if (!p0) {
1620 //Printf("ERROR: particle with label %d not found in stack (mc loop)", iMc);
1621 continue;
1622 }
1623 lPdgcodeCurrentPart = p0->GetPdgCode();
1624
1625 // Keep only K0s, Lambda and AntiLambda, Xi and Phi:
1626 if ( (lPdgcodeCurrentPart != 310 ) && (lPdgcodeCurrentPart != 3122 ) && (lPdgcodeCurrentPart != -3122 ) && (lPdgcodeCurrentPart != 3312 ) && (lPdgcodeCurrentPart != -3312) && (lPdgcodeCurrentPart != -333) ) continue;
1627
1628 lRapCurrentPart = MyRapidity(p0->Energy(),p0->Pz());
1629 //lEtaCurrentPart = p0->Eta();
1630 lPtCurrentPart = p0->Pt();
1631
1632 iCurrentMother = p0->GetFirstMother();
1633
1634// lPdgCurrentMother = stack->Particle(iCurrentMother)->GetPdgCode();
1635 if (iCurrentMother == -1){lPdgCurrentMother=0; } else {lPdgCurrentMother = stack->Particle(iCurrentMother)->GetPdgCode();}
1636
1637 mcPosX = p0->Vx();
1638 mcPosY = p0->Vy();
1639 mcPosZ = p0->Vz();
1640 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
1641
1642 id0 = p0->GetDaughter(0);
1643 id1 = p0->GetDaughter(1);
1644
1645 // Decay Radius and Production Radius
1646 if ( id0 <= lNbMCPart && id0 > 0 && id1 <= lNbMCPart && id1 > 0) {
1647 TParticle *pDaughter0 = stack->Particle(id0);
1648 TParticle *pDaughter1 = stack->Particle(id1);
1649 lPdgCurrentDaughter0 = pDaughter0->GetPdgCode();
1650 lPdgCurrentDaughter1 = pDaughter1->GetPdgCode();
1651
1652 mcDecayPosX = pDaughter0->Vx();
1653 mcDecayPosY = pDaughter0->Vy();
1654 mcDecayPosR = TMath::Sqrt(mcDecayPosX*mcDecayPosX+mcDecayPosY*mcDecayPosY);
1655 }
1656 else {
1657 //FIXME: shouldn't this be a fatal?
1658 //Printf("ERROR: particle with label %d and/or %d not found in stack (mc loop)", id0,id1);
1659 mcDecayPosR = -1.0;
1660 }
1661
1662 if (lPdgcodeCurrentPart==310) {
1663 fHistMCtracksProdRadiusK0s->Fill(mcPosX,mcPosY);
1664 fHistMCtracksDecayRadiusK0s->Fill(mcDecayPosR);
1665 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllK0s->Fill(lPtCurrentPart);
1666 }
1667 else if (lPdgcodeCurrentPart==3122) {
1668 fHistMCtracksProdRadiusLambda->Fill(mcPosX,mcPosY);
1669 fHistMCtracksDecayRadiusLambda->Fill(mcDecayPosR);
1670 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllLambda->Fill(lPtCurrentPart);
1671 }
1672 else if (lPdgcodeCurrentPart==-3122) {
1673 fHistMCtracksProdRadiusAntiLambda->Fill(mcPosX,mcPosY);
1674 fHistMCtracksDecayRadiusAntiLambda->Fill(mcDecayPosR);
1675 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllAntiLambda->Fill(lPtCurrentPart);
1676 }
1677
1678 // FIXME: not sure if I understand this: is it correct?
1679 if ( ( ( TMath::Abs(lPdgCurrentMother) == 3212) ||
1680 ( TMath::Abs(lPdgCurrentMother) == 3224) ||
1681 ( TMath::Abs(lPdgCurrentMother) == 3214) ||
1682 ( TMath::Abs(lPdgCurrentMother) == 3114) )
1683 && ( iCurrentMother <= lNbMCPrimary )
1684 ) lComeFromSigma = 1;
1685 else lComeFromSigma = 0;
1686
1687 //*********************************************
1688 // Now keep only primary particles
1689 if ( ( iMc > lNbMCPrimary ) && (!lComeFromSigma) ) continue;
1690
1691 //********************************************
1692 //check if V0 is reconstructed several times
1693
1694 lNtimesReconstructedK0s = 0; lNtimesReconstructedLambda = 0; lNtimesReconstructedAntiLambda = 0;
1695 //lNtimesReconstructedK0sMI = 0; lNtimesReconstructedLambdaMI = 0; lNtimesReconstructedAntiLambdaMI = 0;
1696
1697 //for (Int_t jV0 = 0; jV0 < fESD->GetNumberOfV0s(); jV0++) {
1698
1699 //lLabelTrackN = 0; lLabelTrackP = 0;
1700 //lPartNMother = 0; lPartPMother = 0;
1701
1702 //AliESDv0 *vertexESD = ((AliESDEvent*)fESD)->GetV0(jV0);
1703 //if (!vertexESD) continue;
1704
1705 //AliESDtrack *trackNESD = ((AliESDEvent*)fESD)->GetTrack(TMath::Abs(vertexESD->GetNindex()));
1706 //lLabelTrackN = (UInt_t)TMath::Abs(trackNESD->GetLabel());
1707 //if (lLabelTrackN!=id0 && lLabelTrackN!=id1) continue;
1708
1709 //AliESDtrack *trackPESD = ((AliESDEvent*)fESD)->GetTrack(TMath::Abs(vertexESD->GetPindex()));
1710 //lLabelTrackP = (UInt_t)TMath::Abs(trackPESD->GetLabel());
1711 //if (lLabelTrackP!=id0 && lLabelTrackP!=id1) continue;
1712
1713 //TParticle *lPartNESD = stack->Particle(lLabelTrackN);
1714 //TParticle *lPartPESD = stack->Particle(lLabelTrackP);
1715 //lPartNMother = lPartNESD->GetFirstMother();
1716 //lPartPMother = lPartPESD->GetFirstMother();
1717
1718 //lPartPMotherPDGcode = stack->Particle(lPartPMother)->GetPdgCode();
1719
1720 //switch (vertexESD->GetOnFlyStatus()){
1721
1722 //case 0 :
1723 //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0s++;
1724 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambda++;
1725 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambda++;
1726 //break;
1727
1728 //case 1 :
1729 //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0sMI++;
1730 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambdaMI++;
1731 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambdaMI++;
1732 //break;
1733
1734 //}
1735 //} // end loop over reconstructed V0s inside MC loop
1736;
1737
1738 // Rap distribution
1739 if (lPdgcodeCurrentPart==310) {
1740 fHistMCRapK0s->Fill(lRapCurrentPart);
1741 if (lPtCurrentPart < 0.2 && lPtCurrentPart < 3.0)
1742 fHistMCRapInPtRangeK0s->Fill(lRapCurrentPart);
1743 }
1744
1745 if (lPdgcodeCurrentPart==3122) {
1746 fHistMCRapLambda->Fill(lRapCurrentPart);
1747 if (lPtCurrentPart < 0.6 && lPtCurrentPart < 3.5)
1748 fHistMCRapInPtRangeLambda->Fill(lRapCurrentPart);
1749 }
1750
1751 if (lPdgcodeCurrentPart==-3122) {
1752 fHistMCRapAntiLambda->Fill(lRapCurrentPart);
1753 if (lPtCurrentPart < 0.6 && lPtCurrentPart < 3.5)
1754 fHistMCRapInPtRangeAntiLambda->Fill(lRapCurrentPart);
1755 }
1756
1757 if (lPdgcodeCurrentPart==3312 || lPdgcodeCurrentPart==-3312) {
1758 fHistMCRapXi->Fill(lRapCurrentPart);
1759 if (lPtCurrentPart < 0.6 && lPtCurrentPart < 3.0)
1760 fHistMCRapInPtRangeXi->Fill(lRapCurrentPart);
1761 }
1762
1763 if (lPdgcodeCurrentPart==333) {
1764 fHistMCRapPhi->Fill(lRapCurrentPart);
1765 if (lPtCurrentPart < 0.7 && lPtCurrentPart < 3.0)
1766 fHistMCRapInPtRangePhi->Fill(lRapCurrentPart);
1767 }
1768
1769 // Rapidity Cut
1770 if (TMath::Abs(lRapCurrentPart) > lCutRap) continue;
1771
1772 if (lPdgcodeCurrentPart==310) {
1773 fHistMCProdRadiusK0s->Fill(mcPosR);
1774
1775 fHistMCPtK0s->Fill(lPtCurrentPart);
1776
1777
1778
1779 fHistNTimesRecK0s->Fill(lNtimesReconstructedK0s);
1780 // fHistNTimesRecK0sMI->Fill(lNtimesReconstructedK0s);
1781 fHistNTimesRecK0sVsPt->Fill(lPtCurrentPart,lNtimesReconstructedK0s);
1782 // fHistNTimesRecK0sVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedK0sMI);
1783 }
1784 else
1785 if (lPdgcodeCurrentPart==3122) {
1786 fHistMCProdRadiusLambda->Fill(mcPosR);
1787
1788 fHistMCPtLambda->Fill(lPtCurrentPart);
1789
1790
1791 fHistNTimesRecLambda->Fill(lNtimesReconstructedLambda);
1792 // fHistNTimesRecLambdaMI->Fill(lNtimesReconstructedLambdaMI);
1793 fHistNTimesRecLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedLambda);
1794 // fHistNTimesRecLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedLambdaMI);
1795 if (lComeFromSigma) fHistMCPtLambdaFromSigma->Fill(lPtCurrentPart);
1796
1797 //printf("found Lambda MC pT=%e\n",lPtCurrentPart);
1798 //printf("found Lambda MC Plabel=%d PPDGcode=%d Nlabel=%d NPDGcode=%d\n\n",id0,lPdgCurrentDaughter0,id1,lPdgCurrentDaughter1);
1799
1800 }
1801
1802
1803 } // end loop ESD MC
1804
1805 } // end ESD condition
1806
1807 else if(fAnalysisType == "AOD") {
1808 lNbMCPart = mcArray->GetEntriesFast();
1809 lNbMCPrimary = 0;
1810
1811 fHistMCMultiplicityTracks->Fill(lNbMCPart);
1812
1813 for (Int_t iMc = 0; iMc < lNbMCPart; iMc++) {
1814
1815 // Primary vertex TO DO !!
1816 //
1817
1818 AliAODMCParticle *mcAODPart = (AliAODMCParticle*)mcArray->At(iMc);
1819 if (!mcAODPart) {
1820 //Printf("Strange analysis task (mc loop): particle with label %d not found", iMc);
1821 continue;
1822 }
1823 lPdgcodeCurrentPart = mcAODPart->GetPdgCode();
1824 if (mcAODPart->IsPhysicalPrimary()) {lNbMCPrimary = lNbMCPrimary +1;}
1825
1826 // Keep only K0s, Lambda and AntiLambda:
1827 if ( (lPdgcodeCurrentPart != 310 ) && (lPdgcodeCurrentPart != 3122 ) && (lPdgcodeCurrentPart != -3122 ) ) continue;
1828
1829 //lEtaCurrentPart = mcAODPart->Eta();
1830 lRapCurrentPart = mcAODPart->Y();
1831 lPtCurrentPart = mcAODPart->Pt();
1832 iCurrentMother = mcAODPart->GetMother();
1833 lPdgCurrentMother = ((AliAODMCParticle*)mcArray->At(iCurrentMother))->GetPdgCode();
1834 lCurrentMotherIsPrimary = ((AliAODMCParticle*)mcArray->At(iCurrentMother))->IsPhysicalPrimary();
1835
1836 mcPosX = mcAODPart->Xv();
1837 mcPosY = mcAODPart->Yv();
1838 mcPosZ = mcAODPart->Zv();
1839 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
1840
1841 id0 = mcAODPart->GetDaughter(0);
1842 id1 = mcAODPart->GetDaughter(1);
1843
1844 // Decay Radius and Production Radius
1845 if ( id0 <= lNbMCPart && id0 > 0 && id1 <= lNbMCPart && id1 > 0) {
1846 AliAODMCParticle *mcAODDaughter1 = (AliAODMCParticle*)mcArray->At(id1);
1847 if (!mcAODPart) {
1848 //Printf("Strange analysis task (mc loop): daughter not found");
1849 continue;
1850 }
1851 mcDecayPosX = mcAODDaughter1->Xv();
1852 mcDecayPosY = mcAODDaughter1->Yv();
1853 mcDecayPosR = TMath::Sqrt(mcDecayPosX*mcDecayPosX+mcDecayPosY*mcDecayPosY);
1854 }
1855 else {
1856 //Printf("ERROR: particle with label %d and/or %d not found in stack (mc loop)", id0,id1);
1857 mcDecayPosR = -1.0;
1858 }
1859
1860 if (lPdgcodeCurrentPart==310) {
1861 fHistMCtracksProdRadiusK0s->Fill(mcPosX,mcPosY);
1862 fHistMCtracksDecayRadiusK0s->Fill(mcDecayPosR);
1863 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllK0s->Fill(lPtCurrentPart);
1864 }
1865 else if (lPdgcodeCurrentPart==3122) {
1866 fHistMCtracksProdRadiusLambda->Fill(mcPosX,mcPosY);
1867 fHistMCtracksDecayRadiusLambda->Fill(mcDecayPosR);
1868 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllLambda->Fill(lPtCurrentPart);
1869 }
1870 else if (lPdgcodeCurrentPart==-3122) {
1871 fHistMCtracksProdRadiusAntiLambda->Fill(mcPosX,mcPosY);
1872 fHistMCtracksDecayRadiusAntiLambda->Fill(mcDecayPosR);
1873 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllAntiLambda->Fill(lPtCurrentPart);
1874 }
1875
1876 if ( ( ( TMath::Abs(lPdgCurrentMother) == 3212) ||
1877 ( TMath::Abs(lPdgCurrentMother) == 3224) ||
1878 ( TMath::Abs(lPdgCurrentMother) == 3214) ||
1879 ( TMath::Abs(lPdgCurrentMother) == 3114) )
1880 && (lCurrentMotherIsPrimary)
1881 ) lComeFromSigma = 1;
1882 else lComeFromSigma = 0;
1883
1884 //*********************************************
1885 // Now keep only primary particles
1886
1887 // FIX IT !!!! iMC is not defined !!!! FIX IT also in ESD/AOD loop !!
1888 if ( ( iMc > lNbMCPrimary ) && (!lComeFromSigma) ) continue;
1889
1890 //********************************************
1891 // check if V0 is reconstructed several times
1892
1893 //lNtimesReconstructedK0s = 0; lNtimesReconstructedLambda = 0; lNtimesReconstructedAntiLambda = 0;
1894 //lNtimesReconstructedK0sMI = 0; lNtimesReconstructedLambdaMI = 0; lNtimesReconstructedAntiLambdaMI = 0;
1895
1896 //for (Int_t jV0 = 0; jV0 < fESD->GetNumberOfV0s(); jV0++) {
1897
1898 //lLabelTrackN = 0; lLabelTrackP = 0;
1899 //lPartNMother = 0; lPartPMother = 0;
1900
1901 //AliAODv0 *vertexAOD= ((AliAODEvent*)fESD)->GetV0(jV0);
1902 //if (!vertexAOD) continue;
1903 //printf("enter!!");
1904 //AliVParticle *trackP = ((AliVEvent*)fESD)->GetTrack(vertexAOD->GetPosID());
1905 //if (!trackP) continue;
1906 //lLabelTrackP = TMath::Abs(trackP->GetLabel());
1907 //if (lLabelTrackP!=id0 && lLabelTrackP!=id1) continue;
1908
1909 //AliVParticle *trackN = ((AliVEvent*)fESD)->GetTrack(vertexAOD->GetNegID());
1910 //if (!trackN) continue;
1911 //lLabelTrackN = TMath::Abs(trackN->GetLabel());
1912 //if (lLabelTrackN!=id0 && lLabelTrackN!=id1) continue;
1913
1914 //AliAODMCParticle *lPartNAOD = (AliAODMCParticle*)mcArray->At(lLabelTrackN);
1915 //if (!lPartNAOD) continue;
1916 //AliAODMCParticle *lPartPAOD = (AliAODMCParticle*)mcArray->At(lLabelTrackP);
1917 //if (!lPartPAOD) continue;
1918
1919 //lPartNMother = lPartNAOD->GetMother();
1920 //lPartPMother = lPartPAOD->GetMother();
1921
1922 //lPartPMotherPDGcode = ((AliAODMCParticle*)mcArray->At(lPartPMother))->GetPdgCode();
1923
1924 //switch (vertexAOD->GetOnFlyStatus()){
1925
1926 //case 0 :
1927 //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0s++;
1928 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambda++;
1929 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambda++;
1930 //break;
1931
1932 //case 1 :
1933 //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0sMI++;
1934 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambdaMI++;
1935 //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambdaMI++;
1936 //break;
1937
1938 ///}
1939 //} // end loop over reconstructed V0s inside MC loop
1940
1941 if (TMath::Abs(lRapCurrentPart) > lCutRap) continue;
1942
1943 if (lPdgcodeCurrentPart==310) {
1944 fHistMCProdRadiusK0s->Fill(mcPosR);
1945 fHistMCPtK0s->Fill(lPtCurrentPart);
1946 fHistNTimesRecK0s->Fill(lNtimesReconstructedK0s);
1947 // fHistNTimesRecK0sMI->Fill(lNtimesReconstructedK0s);
1948 fHistNTimesRecK0sVsPt->Fill(lPtCurrentPart,lNtimesReconstructedK0s);
1949 // fHistNTimesRecK0sVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedK0sMI);
1950 }
1951 else if (lPdgcodeCurrentPart==3122) {
1952 fHistMCProdRadiusLambda->Fill(mcPosR);
1953 fHistMCPtLambda->Fill(lPtCurrentPart);
1954 fHistNTimesRecLambda->Fill(lNtimesReconstructedLambda);
1955 // fHistNTimesRecLambdaMI->Fill(lNtimesReconstructedLambdaMI);
1956 fHistNTimesRecLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedLambda);
1957 // fHistNTimesRecLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedLambdaMI);
1958 if (lComeFromSigma) fHistMCPtLambdaFromSigma->Fill(lPtCurrentPart);
1959 }
1960 else if (lPdgcodeCurrentPart==-3122) {
1961 fHistMCProdRadiusAntiLambda->Fill(mcPosR);
1962 //fHistMCPtAntiLambda->Fill(lPtCurrentPart);
1963 fHistNTimesRecAntiLambda->Fill(lNtimesReconstructedAntiLambda);
1964 // fHistNTimesRecAntiLambdaMI->Fill(lNtimesReconstructedAntiLambdaMI);
1965 fHistNTimesRecAntiLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambda);
1966 // fHistNTimesRecAntiLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambdaMI);
1967 if (lComeFromSigma) fHistMCPtAntiLambdaFromSigma->Fill(lPtCurrentPart);
1968 }
1969
1970 } // end loop over AODMC particles
1971 fHistMCMultiplicityPrimary->Fill(lNbMCPrimary);
1972
1973 } // end AOD condition
1974
1975 } // End Loop over MC condition
1976
1977
1978
1979
1980
1981 //************************************
1982 // ESD or AOD loop
1983 //************************************
1984
1985 Double_t lMagneticField = 999;
1986
1987 //Multiplcity:
1988 Int_t nv0sTot= 0, nv0s = 0;
1989// Int_t nv0sMI =0;
1990 // Variables:
1991 Double_t lV0Position[3];
1992
1993 Double_t lDcaPosToPrimVertex = 0;
1994 Double_t lDcaNegToPrimVertex = 0;
1995 Double_t lDcaV0Daughters = 0;
1996 Double_t lV0cosPointAngle = 0;
1997 Double_t lChi2V0 = 0;
1998 Double_t lV0DecayLength = 0;
1999 Double_t lV0Radius = 0;
2000 Double_t lDcaV0ToPrimVertex = 0;
2001
2002 Int_t lOnFlyStatus = 0;
2003 //Float_t tdcaPosToPrimVertexXYZ[2], tdcaNegToPrimVertexXYZ[2]; // ..[0] = Impact parameter in XY plane and ..[1] = Impact parameter in Z
2004 //Double_t tdcaDaughterToPrimVertex[2]; // ..[0] = Pos and ..[1] = Neg
2005
2006
2007
2008 Double_t lInvMassK0s = 0, lInvMassLambda = 0, lInvMassAntiLambda = 0;
2009 Double_t lPtK0s = 0, lPtLambda = 0, lPtAntiLambda = 0;
2010 Double_t lRapK0s = 0, lRapLambda = 0, lRapAntiLambda = 0;
2011 Double_t lEtaK0s = 0, lEtaLambda = 0, lEtaAntiLambda = 0;
2012 Double_t lAlphaV0 = 0, lPtArmV0 = 0;
2013
2014 Double_t lPzK0s = 0, lPzLambda = 0, lPzAntiLambda = 0;
2015
2016
2017 Double_t lV0Eta = 999;
2018
2019 // to study Associated V0s:
2020 Int_t lIndexTrackPos = 0, lIndexTrackNeg = 0;
2021 UInt_t lLabelTrackPos = 0, lLabelTrackNeg = 0;
2022 Int_t lCheckPIdK0Short = 0, lCheckMcK0Short = 0;
2023 Int_t lCheckPIdLambda = 0, lCheckMcLambda = 0;
2024 Int_t lCheckPIdAntiLambda = 0, lCheckMcAntiLambda = 0;
2025 Int_t lCheckSecondaryK0s = 0, lCheckSecondaryLambda = 0, lCheckSecondaryAntiLambda = 0;
2026 Int_t lCheckGamma = 0;
2027 Double_t mcPosMotherX = 0, mcPosMotherY = 0, mcPosMotherZ = 0;
2028 Double_t mcPosMotherR = 0;
2029 Double_t mcMotherPt = 0;
2030
2031 Int_t lIndexPosMother = 0;
2032 Int_t lIndexNegMother = 0;
2033 Int_t lIndexMotherOfMother = 0;
2034 Int_t lPDGCodePosDaughter = 0;
2035 Int_t lPDGCodeNegDaughter = 0;
2036 Int_t lPdgcodeMother = 0;
2037 Int_t lPdgcodeMotherOfMother = 0;
2038
2039 // Reconstructed position
2040 Double_t rcPosXK0s = 0, rcPosYK0s = 0, rcPosZK0s = 0;
2041 Double_t rcPosRK0s = 0;
2042 Double_t rcPosXLambda = 0, rcPosYLambda = 0, rcPosZLambda = 0;
2043 Double_t rcPosRLambda = 0;
2044 Double_t rcPosXAntiLambda = 0, rcPosYAntiLambda = 0, rcPosZAntiLambda = 0;
2045 Double_t rcPosRAntiLambda = 0;
2046
2047 // Pt resolution
2048 Double_t deltaPtK0s = 0, deltaPtLambda = 0, deltaPtAntiLambda = 0;
2049
2050 // Daughters
2051 AliESDtrack *myTrackPos = NULL;
2052 AliESDtrack *myTrackNeg = NULL;
2053 AliVParticle *lVPartPos = NULL;
2054 AliVParticle *lVPartNeg = NULL;
2055
2056 // Daughters' momentum:
2057 Double_t lMomPos[3] = {999,999,999};
2058 Double_t lMomNeg[3] = {999,999,999};
2059 Double_t lPtPos = 999, lPtNeg = 999;
2060 Double_t lPPos = 999, lPNeg = 999;
2061
2062 // Inner Wall parameters:
2063 Double_t lMomInnerWallPos =999, lMomInnerWallNeg = 999;
2064
2065 // AliKF Chi2 and Armenteros variables
2066 Double_t lChi2KFK0s = 0, lChi2KFLambda = 0, lChi2KFAntiLambda = 0;
2067 Double_t lAlphaV0K0s = 0, lAlphaV0Lambda = 0, lAlphaV0AntiLambda = 0;
2068 Double_t lPtArmV0K0s = 0, lPtArmV0Lambda = 0, lPtArmV0AntiLambda = 0;
2069 Double_t lQlPos = 0, lQlNeg = 0;
2070
2071
2072 // PID
2073 Float_t nSigmaPosPion = 0;
2074 Float_t nSigmaNegPion = 0;
2075
2076 Float_t nSigmaPosProton = 0;
2077 Float_t nSigmaNegProton = 0;
2078
2079 Int_t lCheckPIDK0sPosDaughter = 0, lCheckPIDK0sNegDaughter = 0;
2080 Int_t lCheckPIDLambdaPosDaughter = 0, lCheckPIDLambdaNegDaughter = 0;
2081 Int_t lCheckPIDAntiLambdaPosDaughter = 0, lCheckPIDAntiLambdaNegDaughter = 0;
2082
2083
2084
2085 //***********************
2086 // Primary Vertex cuts &
2087 // Magnetic field and Quality tracks cuts
2088
2089 Double_t lPrimaryVtxPosition[3];
2090 Double_t lPrimaryVtxCov[6];
2091 Double_t lPrimaryVtxChi2 = 999;
2092 Double_t lResPrimaryVtxX = 999;
2093 Double_t lResPrimaryVtxY = 999;
2094 Double_t lResPrimaryVtxZ = 999;
2095
2096 AliAODVertex *myPrimaryVertex = NULL;
2097 //const AliVVertex *mySPDPrimaryVertex = NULL;
2098
2099 AliESDtrackCuts *myTracksCuts = NULL;
2100
2101 const AliMultiplicity *myMultiplicty = ((AliESDEvent*)fESD)->GetMultiplicity();
2102
2103 if(fAnalysisType == "ESD") {
2104
2105 // Best Primary Vertex:
2106 const AliESDVertex *myBestPrimaryVertex = ((AliESDEvent*)fESD)->GetPrimaryVertex();
2107 myBestPrimaryVertex = ((AliESDEvent*)fESD)->GetPrimaryVertex();
2108 if (!myBestPrimaryVertex) return;
2109 if (!myBestPrimaryVertex->GetStatus()) return;
2110 fHistNumberEvents->Fill(3.5);
2111 myBestPrimaryVertex->GetXYZ(lPrimaryVtxPosition);
2112 myBestPrimaryVertex->GetCovMatrix(lPrimaryVtxCov);
2113 if ( ( TMath::Abs(lPrimaryVtxPosition[2]) ) > cutPrimVertex) return ;
2114 fHistNumberEvents->Fill(4.5);
2115 lPrimaryVtxChi2 = myBestPrimaryVertex->GetChi2toNDF();
2116 lResPrimaryVtxX = myBestPrimaryVertex->GetXRes();
2117 lResPrimaryVtxY = myBestPrimaryVertex->GetYRes();
2118 lResPrimaryVtxZ = myBestPrimaryVertex->GetZRes();
2119
2120 // remove TPC-only primary vertex : retain only events with tracking + SPD vertex
2121 const AliESDVertex *mySPDPrimaryVertex = ((AliESDEvent*)fESD)->GetPrimaryVertexSPD();
2122 if (!mySPDPrimaryVertex) return;
2123 fHistSPDPrimaryVertexZ->Fill(mySPDPrimaryVertex->GetZ());
2124 const AliESDVertex *myPrimaryVertexTracking = ((AliESDEvent*)fESD)->GetPrimaryVertexTracks();
2125 if (!myPrimaryVertexTracking) return;
2126 if (!mySPDPrimaryVertex->GetStatus() && !myPrimaryVertexTracking->GetStatus() ) return;
2127 fHistNumberEvents->Fill(5.5);
2128
2129
2130 myPrimaryVertex = new AliAODVertex(lPrimaryVtxPosition, lPrimaryVtxCov, lPrimaryVtxChi2, NULL, -1, AliAODVertex::kPrimary);
2131 if (!myPrimaryVertex) return;
2132
2133
2134 // Number of Tracklets:
2135 //const AliMultiplicity *myMultiplicty = ((AliESDEvent*)fESD)->GetMultiplicity();
2136 //if (myMultiplicty->GetNumberOfTracklets() < 10) return;
2137 fHistTrackletPerEvent->Fill(myMultiplicty->GetNumberOfTracklets());
2138
2139 lMagneticField = ((AliESDEvent*)fESD)->GetMagneticField();
2140
2141 myTracksCuts = new AliESDtrackCuts();
2142 // require TPC refit
2143 myTracksCuts->SetRequireTPCRefit(kTRUE);
2144 // minimum number of clusters in TPC
2145 myTracksCuts->SetMinNClustersTPC(nbMinTPCclusters);
2146
2147 }
2148
2149 else if(fAnalysisType == "AOD") {
2150 printf("enter AOD!!");
2151 myPrimaryVertex = ((AliAODEvent*)fESD)->GetPrimaryVertex();
2152 if (!myPrimaryVertex) return;
2153
2154 lPrimaryVtxPosition[0] = myPrimaryVertex->GetX();
2155 lPrimaryVtxPosition[1] = myPrimaryVertex->GetY();
2156 lPrimaryVtxPosition[2] = myPrimaryVertex->GetZ();
2157
2158 // Cut on SPD vertex and fill histo Nevents: FIX it !
2159
2160 // Tracks cuts FIX IT !
2161
2162 // FIX it !!!
2163 lMagneticField = 999;
2164
2165 }
2166
2167
2168 fHistPrimaryVertexX->Fill(lPrimaryVtxPosition[0]);
2169 fHistPrimaryVertexY->Fill(lPrimaryVtxPosition[1]);
2170 fHistPrimaryVertexZ->Fill(lPrimaryVtxPosition[2]);
2171 //Double_t lrcPrimVtxR = TMath::Sqrt(lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]+lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]);
2172
2173 fHistPrimaryVertexResX->Fill(lResPrimaryVtxX);
2174 fHistPrimaryVertexResY->Fill(lResPrimaryVtxY);
2175 fHistPrimaryVertexResZ->Fill(lResPrimaryVtxZ);
2176
2177
2178 //***********************
2179 // AliKF Primary Vertex
2180
2181 AliKFVertex primaryVtxKF( *myPrimaryVertex );
2182 AliKFParticle::SetField(lMagneticField);
2183
2184
2185 //************************************
2186 // PID
2187
2188 AliESDpid *fESDpid = new AliESDpid(); // FIXME delete
2189 fESDpid->GetTPCResponse().SetBetheBlochParameters(fAlephParameters[0],fAlephParameters[1],fAlephParameters[2],fAlephParameters[3],fAlephParameters[4]);
2190
2191
2192
2193 //***Rerun the V0 finder
2194
2195// fESD->ResetV0s();
2196// AliV0vertexer v0Vertexer;
2197// v0Vertexer.SetCuts(fCuts);
2198// v0Vertexer.Tracks2V0vertices(fESD);
2199
2200 //*************************
2201 // V0 loop
2202
2203 nv0sTot = fESD->GetNumberOfV0s();
2204 if (!nv0sTot) fHistNumberEvents->Fill(6.5);
2205
2206 for (Int_t iV0 = 0; iV0 < nv0sTot; iV0++) {
2207
2208 // ALiKF
2209 AliKFParticle* negPiKF = NULL;
2210 AliKFParticle* posPiKF = NULL;
2211 AliKFParticle* posPKF = NULL;
2212 AliKFParticle* negAPKF = NULL;
2213
2214
2215 lIndexPosMother = 0; lIndexNegMother = 0; lIndexMotherOfMother = 0;
2216 lCheckPIdK0Short = 0; lCheckMcK0Short = 0; lCheckSecondaryK0s = 0;
2217 lCheckPIdLambda = 0; lCheckMcLambda = 0; lCheckSecondaryLambda = 0;
2218 lCheckPIdAntiLambda = 0; lCheckMcAntiLambda = 0; lCheckSecondaryAntiLambda = 0;
2219 lComeFromSigma = -1;
2220
2221
2222 if(fAnalysisType == "ESD") {
2223
2224
2225 AliESDv0 *v0 = ((AliESDEvent*)fESD)->GetV0(iV0);
2226 if (!v0) continue;
2227
2228 // Primary vertex:
2229 fHistPrimaryVertexPosXV0events->Fill(lPrimaryVtxPosition[0]);
2230 fHistPrimaryVertexPosYV0events->Fill(lPrimaryVtxPosition[1]);
2231 fHistPrimaryVertexPosZV0events->Fill(lPrimaryVtxPosition[2]);
2232
2233 // V0's Daughters
2234 lIndexTrackPos = TMath::Abs(v0->GetPindex());
2235 lIndexTrackNeg = TMath::Abs(v0->GetNindex());
2236 AliESDtrack *myTrackPosTest = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackPos);
2237 AliESDtrack *myTrackNegTest = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackNeg);
2238 if (!myTrackPosTest || !myTrackNegTest) {
2239 Printf("strange analysis::UserExec:: Error:Could not retreive one of the daughter track\n");
2240 continue;
2241 }
2242 // Remove like-sign
2243 if ( myTrackPosTest->GetSign() == myTrackNegTest->GetSign()){
2244 continue;
2245 }
2246
2247 // VO's main characteristics to check the reconstruction cuts
2248 lOnFlyStatus = v0->GetOnFlyStatus();
2249 lChi2V0 = v0->GetChi2V0();
2250 lDcaV0Daughters = v0->GetDcaV0Daughters();
2251 lDcaV0ToPrimVertex = v0->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lPrimaryVtxPosition[2]);
2252 lV0cosPointAngle = v0->GetV0CosineOfPointingAngle(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1], lPrimaryVtxPosition[2]);
2253
2254 v0->GetXYZ(lV0Position[0], lV0Position[1], lV0Position[2]);
2255
2256 lV0Radius = TMath::Sqrt(lV0Position[0]*lV0Position[0]+lV0Position[1]*lV0Position[1]);
2257 lV0DecayLength = TMath::Sqrt(TMath::Power(lV0Position[0] - lPrimaryVtxPosition[0],2) +
2258 TMath::Power(lV0Position[1] - lPrimaryVtxPosition[1],2) +
2259 TMath::Power(lV0Position[2] - lPrimaryVtxPosition[2],2 ));
2260
2261
2262 if( myTrackPosTest->GetSign() ==1){
2263
2264 myTrackPos = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackPos);
2265 myTrackNeg = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackNeg);
2266
2267 // Daughters' momentum;
2268 v0->GetPPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
2269 v0->GetNPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
2270
2271 if (negPiKF) delete negPiKF; negPiKF=NULL;
2272 if (posPiKF) delete posPiKF; posPiKF=NULL;
2273 if (posPKF) delete posPKF; posPKF=NULL;
2274 if (negAPKF) delete negAPKF; negAPKF=NULL;
2275
2276 negPiKF = new AliKFParticle( *(v0->GetParamN()) ,-211);
2277 posPiKF = new AliKFParticle( *(v0->GetParamP()) ,211);
2278 posPKF = new AliKFParticle( *(v0->GetParamP()) ,2212);
2279 negAPKF = new AliKFParticle( *(v0->GetParamN()) ,-2212);
2280
2281 }
2282
2283 if( myTrackPosTest->GetSign() ==-1){
2284
2285 myTrackPos = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackNeg);
2286 myTrackNeg = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackPos);
2287
2288 // Daughters' momentum;
2289 v0->GetPPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
2290 v0->GetNPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
2291
2292 if (negPiKF) delete negPiKF; negPiKF=NULL;
2293 if (posPiKF) delete posPiKF; posPiKF=NULL;
2294 if (posPKF) delete posPKF; posPKF=NULL;
2295 if (negAPKF) delete negAPKF; negAPKF=NULL;
2296
2297 negPiKF = new AliKFParticle( *(v0->GetParamP()) ,-211);
2298 posPiKF = new AliKFParticle( *(v0->GetParamN()) ,211);
2299 posPKF = new AliKFParticle( *(v0->GetParamN()) ,2212);
2300 negAPKF = new AliKFParticle( *(v0->GetParamP()) ,-2212);
2301
2302 }
2303
2304 lLabelTrackPos = (UInt_t)TMath::Abs(myTrackPos->GetLabel());
2305 lLabelTrackNeg = (UInt_t)TMath::Abs(myTrackNeg->GetLabel());
2306
2307 // Daughters Pt and P:
2308 lPtPos = TMath::Sqrt(lMomPos[0]*lMomPos[0] + lMomPos[1]*lMomPos[1]);
2309 lPtNeg = TMath::Sqrt(lMomNeg[0]*lMomNeg[0] + lMomNeg[1]*lMomNeg[1]);
2310
2311 lPPos = TMath::Sqrt(lMomPos[0]*lMomPos[0] + lMomPos[1]*lMomPos[1] + lMomPos[2]*lMomPos[2]);
2312 lPNeg = TMath::Sqrt(lMomNeg[0]*lMomNeg[0] + lMomNeg[1]*lMomNeg[1] + lMomNeg[2]*lMomNeg[2]);
2313
2314 // Inner Wall parameter:
2315 const AliExternalTrackParam *myInnerWallTrackPos = myTrackPos->GetInnerParam();
2316 if(myInnerWallTrackPos) lMomInnerWallPos = myInnerWallTrackPos->GetP();
2317 const AliExternalTrackParam *myInnerWallTrackNeg = myTrackNeg->GetInnerParam();
2318 if(myInnerWallTrackNeg) lMomInnerWallNeg = myInnerWallTrackNeg->GetP();
2319
2320 // DCA between daughter and Primary Vertex:
2321 if (myTrackPos) lDcaPosToPrimVertex = TMath::Abs(myTrackPos->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lMagneticField) );
2322
2323 if (myTrackNeg) lDcaNegToPrimVertex = TMath::Abs(myTrackNeg->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lMagneticField) );
2324
2325 // Quality tracks cuts:
9a8af841 2326 if ( !(myTracksCuts->IsSelected(myTrackPos)) || !(myTracksCuts->IsSelected(myTrackNeg)) ) {
2327 if (negPiKF) delete negPiKF; negPiKF=NULL;
2328 if (posPiKF) delete posPiKF; posPiKF=NULL;
2329 if (posPKF) delete posPKF; posPKF=NULL;
2330 if (negAPKF) delete negAPKF; negAPKF=NULL;
2331 continue;
2332 }
e886738f 2333 // Armenteros variables:
2334 lAlphaV0 = v0->AlphaV0();
2335 lPtArmV0 = v0->PtArmV0();
2336
2337 // Pseudorapidity:
2338 lV0Eta = v0->Eta();
2339
2340 // PID
2341 if (fUsePID.Contains("withPID")) {
2342 nSigmaPosPion = TMath::Abs(fESDpid->NumberOfSigmasTPC(myTrackPos,AliPID::kPion));
2343
2344 nSigmaNegPion = TMath::Abs(fESDpid->NumberOfSigmasTPC(myTrackNeg,AliPID::kPion));
2345
2346 nSigmaPosProton = TMath::Abs(fESDpid->NumberOfSigmasTPC(myTrackPos,AliPID::kProton));
2347
2348 nSigmaNegProton = TMath::Abs(fESDpid->NumberOfSigmasTPC(myTrackNeg,AliPID::kProton));
2349 }
2350 else {
2351 nSigmaPosPion = 0; nSigmaNegPion =0; nSigmaPosProton = 0; nSigmaNegProton= 0;
2352 }
2353
2354
2355
2356 // Monte-Carlo particle associated to reconstructed particles:
2357 if (fAnalysisMC) {
2358 //if (lLabelTrackPos < 0 || lLabelTrackNeg < 0) continue;
2359 TParticle *lMCESDPartPos = stack->Particle(lLabelTrackPos);
2360 if(!lMCESDPartPos) {
2361 Printf("no MC particle for positive and/or negative daughter\n");
8b1e6981 2362
2363 if (negPiKF) delete negPiKF; negPiKF=NULL;
2364 if (posPiKF) delete posPiKF; posPiKF=NULL;
2365 if (posPKF) delete posPKF; posPKF=NULL;
2366 if (negAPKF) delete negAPKF; negAPKF=NULL;
2367 continue;
2368
e886738f 2369 }
2370 TParticle *lMCESDPartNeg = stack->Particle(lLabelTrackNeg);
8b1e6981 2371 if (!lMCESDPartNeg) {
2372 if (negPiKF) delete negPiKF; negPiKF=NULL;
2373 if (posPiKF) delete posPiKF; posPiKF=NULL;
2374 if (posPKF) delete posPKF; posPKF=NULL;
2375 if (negAPKF) delete negAPKF; negAPKF=NULL;
2376 continue;
2377 }
e886738f 2378 lPDGCodePosDaughter = lMCESDPartPos->GetPdgCode();
2379 lPDGCodeNegDaughter = lMCESDPartNeg->GetPdgCode();
2380 lIndexPosMother = lMCESDPartPos->GetFirstMother();
2381 lIndexNegMother = lMCESDPartNeg->GetFirstMother();
2382
8b1e6981 2383 if (lIndexPosMother == -1) {
2384 if (negPiKF) delete negPiKF; negPiKF=NULL;
2385 if (posPiKF) delete posPiKF; posPiKF=NULL;
2386 if (posPKF) delete posPKF; posPKF=NULL;
2387 if (negAPKF) delete negAPKF; negAPKF=NULL;
2388 continue;
2389 }
e886738f 2390 TParticle *lMCESDMother = stack->Particle(lIndexPosMother);
8b1e6981 2391 if (!lMCESDMother) {
2392 if (negPiKF) delete negPiKF; negPiKF=NULL;
2393 if (posPiKF) delete posPiKF; posPiKF=NULL;
2394 if (posPKF) delete posPKF; posPKF=NULL;
2395 if (negAPKF) delete negAPKF; negAPKF=NULL;
2396 continue;
2397 }
e886738f 2398 lPdgcodeMother = lMCESDMother->GetPdgCode();
2399 lIndexMotherOfMother = lMCESDMother->GetFirstMother();
2400 if (lIndexMotherOfMother ==-1) lPdgcodeMotherOfMother = 0;
2401 else {
2402 TParticle *lMCESDMotherOfMother = stack->Particle(lIndexMotherOfMother);
8b1e6981 2403 if (!lMCESDMotherOfMother) {
2404 if (negPiKF) delete negPiKF; negPiKF=NULL;
2405 if (posPiKF) delete posPiKF; posPiKF=NULL;
2406 if (posPKF) delete posPKF; posPKF=NULL;
2407 if (negAPKF) delete negAPKF; negAPKF=NULL;
2408 continue;
2409 }
e886738f 2410 lPdgcodeMotherOfMother = lMCESDMotherOfMother->GetPdgCode();
2411 }
2412
2413 mcPosX = lMCESDPartPos->Vx();
2414 mcPosY = lMCESDPartPos->Vy();
2415 mcPosZ = lMCESDPartPos->Vz();
2416 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
2417 mcPosMotherX = lMCESDMother->Vx();
2418 mcPosMotherY = lMCESDMother->Vy();
2419 mcPosMotherZ = lMCESDMother->Vz();
2420 mcPosMotherR = TMath::Sqrt(mcPosMotherX*mcPosMotherX+mcPosMotherY*mcPosMotherY);
2421
2422 mcMotherPt = lMCESDMother->Pt();
2423 }
2424
2425 } // end ESD condition
2426
2427
2428
2429 else if(fAnalysisType == "AOD") {
2430
2431 AliAODv0 *myAODv0 = ((AliAODEvent*)fESD)->GetV0(iV0);
2432 if (!myAODv0) continue;
2433
2434 // Primary vertex:
2435 fHistPrimaryVertexPosXV0events->Fill(lPrimaryVtxPosition[0]);
2436 fHistPrimaryVertexPosYV0events->Fill(lPrimaryVtxPosition[1]);
2437 fHistPrimaryVertexPosZV0events->Fill(lPrimaryVtxPosition[2]);
2438
2439
2440 //Multiplicity:
2441 if(!lOnFlyStatus) nv0s++;
2442// else if(lOnFlyStatus) nv0sMI++;
2443
2444 // V0's Daughters
2445 lIndexTrackPos = TMath::Abs(myAODv0->GetPosID());
2446 lIndexTrackNeg = TMath::Abs(myAODv0->GetNegID());
2447
2448 AliVParticle *lVPartPosTest = ((AliVEvent*)fESD)->GetTrack(lIndexTrackPos);
2449 AliVParticle *lVPartNegTest = ((AliVEvent*)fESD)->GetTrack(lIndexTrackNeg);
2450 //AliAODTrack *lVPartPos = ((AliAODEvent*)fESD)->GetTrack(lIndexTrackPos);
2451 //AliAODTrack *lVPartNeg = ((AliAODEvent*)fESD)->GetTrack(lIndexTrackNeg);
2452
2453 if (!lVPartPosTest ||(!lVPartNegTest )) {
2454 Printf("strange analysis::UserExec:: Could not retreive one of the daughter track\n");
2455 continue;
2456 }
2457
2458 // Quality cuts:
2459 // TO DO !!!!!!!
2460
2461 // TPC refit condition (done during reconstruction for Offline but not for On-the-fly)
2462 //if( !(lVPartPosTest->GetStatus() & AliAODTrack::kTPCrefit)) continue;
2463 //if( !(lVPartNegTest->GetStatus() & AliAODTrack::kTPCrefit)) continue;
2464
2465
2466 lDcaPosToPrimVertex = myAODv0->DcaPosToPrimVertex();
2467 lDcaNegToPrimVertex = myAODv0->DcaNegToPrimVertex();
2468 lOnFlyStatus = myAODv0->GetOnFlyStatus();
2469 lChi2V0 = myAODv0->Chi2V0();
2470 lDcaV0Daughters = myAODv0->DcaV0Daughters();
2471 lDcaV0ToPrimVertex = myAODv0->DcaV0ToPrimVertex();
2472 lV0DecayLength = myAODv0->DecayLengthV0(lPrimaryVtxPosition);
2473 lV0cosPointAngle = myAODv0->CosPointingAngle(lPrimaryVtxPosition);
2474 lV0Radius = myAODv0->RadiusV0();
2475
2476 if( lVPartPosTest->Charge() ==1){
2477
2478 lVPartPos = ((AliVEvent*)fESD)->GetTrack(lIndexTrackPos);
2479 lVPartNeg = ((AliVEvent*)fESD)->GetTrack(lIndexTrackNeg);
2480
2481
2482 if (negPiKF) delete negPiKF; negPiKF=NULL;
2483 if (posPiKF) delete posPiKF; posPiKF=NULL;
2484 if (posPKF) delete posPKF; posPKF=NULL;
2485 if (negAPKF) delete negAPKF; negAPKF=NULL;
2486
2487 //negPiKF = new AliKFParticle( *(myAODv0->GetParamN()) ,-211);
2488 //posPiKF = new AliKFParticle( *(myAODv0->GetParamP()) ,211);
2489 //posPKF = new AliKFParticle( *(myAODv0->GetParamP()) ,2212);
2490 //negAPKF = new AliKFParticle( *(myAODv0->GetParamN()) ,-2212);
2491 // TO DO !!!!!!
2492 negPiKF = NULL;
2493 posPiKF = NULL;
2494 posPKF = NULL;
2495 negAPKF = NULL;
2496
2497 }
2498
2499 if( lVPartPosTest->Charge() ==-1){
2500
2501 lVPartPos = ((AliVEvent*)fESD)->GetTrack(lIndexTrackNeg);
2502 lVPartNeg = ((AliVEvent*)fESD)->GetTrack(lIndexTrackPos);
2503
2504 if (negPiKF) delete negPiKF; negPiKF=NULL;
2505 if (posPiKF) delete posPiKF; posPiKF=NULL;
2506 if (posPKF) delete posPKF; posPKF=NULL;
2507 if (negAPKF) delete negAPKF; negAPKF=NULL;
2508
2509 //negPiKF = new AliKFParticle( *(myAODv0->GetParamP()) ,-211);
2510 //posPiKF = new AliKFParticle( *(myAODv0->GetParamN()) ,211);
2511 //posPKF = new AliKFParticle( *(myAODv0->GetParamN()) ,2212);
2512 //negAPKF = new AliKFParticle( *(myAODv0->GetParamP()) ,-2212);
2513 negPiKF = NULL;
2514 posPiKF = NULL;
2515 posPKF = NULL;
2516 negAPKF = NULL;
2517 }
2518
2519 lLabelTrackPos = TMath::Abs(lVPartPos->GetLabel());
2520 lLabelTrackNeg = TMath::Abs(lVPartNeg->GetLabel());
2521
2522 // Armenteros variables:
2523 lAlphaV0 = myAODv0->AlphaV0();
2524 lPtArmV0 = myAODv0->PtArmV0();
2525
2526 // Pseudorapidity:
2527 lV0Eta = myAODv0->PseudoRapV0();
2528
2529 // PID not accessible with AOD !
2530 nSigmaPosPion = 0; nSigmaNegPion =0; nSigmaPosProton = 0; nSigmaNegProton= 0;
2531
2532
2533 // Monte-Carlo particle associated to reconstructed particles:
2534 if (fAnalysisMC) {
2535 AliAODMCParticle *lMCAODPartPos = (AliAODMCParticle*)mcArray->At(lLabelTrackPos);
8b1e6981 2536 if (!lMCAODPartPos) {
2537 if (negPiKF) delete negPiKF; negPiKF=NULL;
2538 if (posPiKF) delete posPiKF; posPiKF=NULL;
2539 if (posPKF) delete posPKF; posPKF=NULL;
2540 if (negAPKF) delete negAPKF; negAPKF=NULL;
2541 continue;
2542 }
e886738f 2543 AliAODMCParticle *lMCAODPartNeg = (AliAODMCParticle*)mcArray->At(lLabelTrackNeg);
8b1e6981 2544 if(!lMCAODPartNeg)
e886738f 2545 // Printf("strange analysis::UserExec:no MC particle for negative daughter\n");
8b1e6981 2546 {
2547 if (negPiKF) delete negPiKF; negPiKF=NULL;
2548 if (posPiKF) delete posPiKF; posPiKF=NULL;
2549 if (posPKF) delete posPKF; posPKF=NULL;
2550 if (negAPKF) delete negAPKF; negAPKF=NULL;
2551 continue;
2552
e886738f 2553 }
2554 lPDGCodePosDaughter = lMCAODPartPos->GetPdgCode();
2555 lPDGCodeNegDaughter = lMCAODPartNeg->GetPdgCode();
2556 lIndexPosMother = lMCAODPartPos->GetMother();
2557 lIndexNegMother = lMCAODPartNeg->GetMother();
2558
2559 AliAODMCParticle *lMCAODMother = (AliAODMCParticle*)mcArray->At(lIndexPosMother);
2560 lPdgcodeMother = lMCAODMother->GetPdgCode();
2561 lIndexMotherOfMother = lMCAODMother->GetMother();
2562 if (lIndexMotherOfMother ==-1) lPdgcodeMotherOfMother = 0;
2563 else {
2564 lPdgcodeMotherOfMother = ((AliAODMCParticle*)mcArray->At(lIndexMotherOfMother))->GetPdgCode();
2565 }
2566
2567 mcPosX = lMCAODPartPos->Xv();
2568 mcPosY = lMCAODPartPos->Yv();
2569 mcPosZ = lMCAODPartPos->Zv();
2570 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
2571 mcPosMotherX = lMCAODMother->Xv();
2572 mcPosMotherY = lMCAODMother->Yv();
2573 mcPosMotherZ = lMCAODMother->Zv();
2574 mcPosMotherR = TMath::Sqrt(mcPosMotherX*mcPosMotherX+mcPosMotherY*mcPosMotherY);
2575 mcMotherPt = lMCAODMother->Pt();
2576 }
2577
2578 } // end AOD condition
2579
2580
2581 // Multiplicity:
2582 if(!lOnFlyStatus) nv0s++;
2583// else if(lOnFlyStatus) nv0sMI++;
2584
2585 // Daughter momentum cut: ! FIX it in case of AOD !
2586 if ( (lPtPos < cutMinPtDaughter ) ||
2587 (lPtNeg < cutMinPtDaughter )
9a8af841 2588 ) {
2589 if (negPiKF) delete negPiKF; negPiKF=NULL;
2590 if (posPiKF) delete posPiKF; posPiKF=NULL;
2591 if (posPKF) delete posPKF; posPKF=NULL;
2592 if (negAPKF) delete negAPKF; negAPKF=NULL;
2593 continue;
2594 }
e886738f 2595
2596 AliKFParticle v0K0sKF;
2597 v0K0sKF+=(*negPiKF);
2598 v0K0sKF+=(*posPiKF);
2599 v0K0sKF.SetProductionVertex(primaryVtxKF);
2600
2601 AliKFParticle v0LambdaKF;
2602 v0LambdaKF+=(*negPiKF);
2603 v0LambdaKF+=(*posPKF);
2604 v0LambdaKF.SetProductionVertex(primaryVtxKF);
2605
2606 AliKFParticle v0AntiLambdaKF;
2607 v0AntiLambdaKF+=(*posPiKF);
2608 v0AntiLambdaKF+=(*negAPKF);
2609 v0AntiLambdaKF.SetProductionVertex(primaryVtxKF);
2610
2611 // Invariant mass
2612 lInvMassK0s = v0K0sKF.GetMass();
2613 lInvMassLambda = v0LambdaKF.GetMass();
2614 lInvMassAntiLambda = v0AntiLambdaKF.GetMass();
2615
2616 // Rapidity:
2617 lRapK0s = 0.5*TMath::Log((v0K0sKF.GetE()+v0K0sKF.GetPz())/(v0K0sKF.GetE()-v0K0sKF.GetPz()+1.e-13));
2618 lRapLambda = 0.5*TMath::Log((v0LambdaKF.GetE()+v0LambdaKF.GetPz())/(v0LambdaKF.GetE()-v0LambdaKF.GetPz()+1.e-13));
2619 lRapAntiLambda = 0.5*TMath::Log((v0AntiLambdaKF.GetE()+v0AntiLambdaKF.GetPz())/(v0AntiLambdaKF.GetE()-v0AntiLambdaKF.GetPz()+1.e-13));
2620
2621 // Pseudo-rapidity
2622 lEtaK0s = v0K0sKF.GetEta();
2623 lEtaLambda = v0LambdaKF.GetEta();
2624 lEtaAntiLambda = v0AntiLambdaKF.GetEta();
2625
2626 // Pz:
2627 lPzK0s = v0K0sKF.GetPz();
2628 lPzLambda = v0LambdaKF.GetPz();
2629 lPzAntiLambda = v0AntiLambdaKF.GetPz();
2630
2631 // Pt:
2632 lPtK0s = v0K0sKF.GetPt();
2633 lPtLambda = v0LambdaKF.GetPt();
2634 lPtAntiLambda = v0AntiLambdaKF.GetPt();
2635
9a8af841 2636 if (lPtK0s==0) {
2637 if (negPiKF) delete negPiKF; negPiKF=NULL;
2638 if (posPiKF) delete posPiKF; posPiKF=NULL;
2639 if (posPKF) delete posPKF; posPKF=NULL;
2640 if (negAPKF) delete negAPKF; negAPKF=NULL;
2641 continue;
2642 }
2643 if (lPtLambda==0) {
2644 if (negPiKF) delete negPiKF; negPiKF=NULL;
2645 if (posPiKF) delete posPiKF; posPiKF=NULL;
2646 if (posPKF) delete posPKF; posPKF=NULL;
2647 if (negAPKF) delete negAPKF; negAPKF=NULL;
2648 continue;
2649 }
e886738f 2650 // Pt Resolution
2651 deltaPtK0s = (lPtK0s - mcMotherPt)/mcMotherPt;
2652 deltaPtLambda = (lPtLambda - mcMotherPt)/mcMotherPt;
2653 deltaPtAntiLambda = (lPtAntiLambda - mcMotherPt)/mcMotherPt;
2654
2655 // KF Chi2
2656 lChi2KFK0s = v0K0sKF.GetChi2();
2657 lChi2KFLambda = v0LambdaKF.GetChi2();
2658 lChi2KFAntiLambda = v0AntiLambdaKF.GetChi2();
2659
2660 // Reconstructed Position
2661 rcPosXK0s = v0K0sKF.GetX();
2662 rcPosYK0s = v0K0sKF.GetY();
2663 rcPosZK0s = v0K0sKF.GetZ();
2664 rcPosRK0s = TMath::Sqrt(rcPosXK0s*rcPosXK0s+rcPosYK0s*rcPosYK0s);
2665
2666 rcPosXLambda = v0LambdaKF.GetX();
2667 rcPosYLambda = v0LambdaKF.GetY();
2668 rcPosZLambda = v0LambdaKF.GetZ();
2669 rcPosRLambda = TMath::Sqrt(rcPosXLambda*rcPosXLambda+rcPosYLambda*rcPosYLambda);
2670
2671 rcPosXAntiLambda = v0AntiLambdaKF.GetX();
2672 rcPosYAntiLambda = v0AntiLambdaKF.GetY();
2673 rcPosZAntiLambda = v0AntiLambdaKF.GetZ();
2674 rcPosRAntiLambda = TMath::Sqrt(rcPosXAntiLambda*rcPosXAntiLambda+rcPosYAntiLambda*rcPosYAntiLambda);
2675
2676 TVector3 momPos(lMomPos[0],lMomPos[1],lMomPos[2]);
2677 TVector3 momNeg(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
2678 TVector3 momTotK0s(v0K0sKF.GetPx(),v0K0sKF.GetPy(),v0K0sKF.GetPz());
2679 TVector3 momTotLambda(v0LambdaKF.GetPx(),v0LambdaKF.GetPy(),v0LambdaKF.GetPz());
2680 TVector3 momTotAntiLambda(v0AntiLambdaKF.GetPx(),v0AntiLambdaKF.GetPy(),v0AntiLambdaKF.GetPz());
2681
2682 lQlPos = momPos.Dot(momTotK0s)/momTotK0s.Mag();
2683 lQlNeg = momNeg.Dot(momTotK0s)/momTotK0s.Mag();
2684 lAlphaV0K0s = 1.-2./(1.+lQlPos/lQlNeg);
2685 lQlPos = momPos.Dot(momTotLambda)/momTotLambda.Mag();
2686 lQlNeg = momNeg.Dot(momTotLambda)/momTotLambda.Mag();
2687 lAlphaV0Lambda = 1.-2./(1.+lQlPos/lQlNeg);
2688 lQlPos = momPos.Dot(momTotAntiLambda)/momTotAntiLambda.Mag();
2689 lQlNeg = momNeg.Dot(momTotAntiLambda)/momTotAntiLambda.Mag();
2690 lAlphaV0AntiLambda = 1.-2./(1.+lQlPos/lQlNeg);
2691
2692 lPtArmV0K0s = momPos.Perp(momTotK0s);
2693 lPtArmV0Lambda = momPos.Perp(momTotLambda);
2694 lPtArmV0AntiLambda = momPos.Perp(momTotAntiLambda);
2695
2696 // Look for associated particles:
2697 if (fAnalysisMC) {
2698 if( (lIndexPosMother==-1) || (lIndexNegMother==-1) ) {
2699 fHistMCDaughterTrack->Fill(1);
2700 }
2701
2702 else if( ( (lPDGCodePosDaughter==+211) && (lPDGCodeNegDaughter==-211) )
2703 ) {
2704 lCheckPIdK0Short = 1;
2705 fHistMCDaughterTrack->Fill(3);
2706 if ( (lIndexPosMother==lIndexNegMother) &&
2707 (lPdgcodeMother==310) ) {
2708 if (lIndexPosMother <= lNbMCPrimary) lCheckMcK0Short = 1;
2709 else lCheckSecondaryK0s = 1;
2710 }
2711 }
2712 else if( ( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211) )
2713 ) {
2714 lCheckPIdLambda = 1;
2715 fHistMCDaughterTrack->Fill(5);
2716 if ( (lIndexPosMother==lIndexNegMother) &&
2717 (lPdgcodeMother==3122) ){
2718 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2719 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2720 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2721 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2722 ) lComeFromSigma = 1;
2723 else lComeFromSigma = 0;
2724 if ( (lIndexPosMother <= lNbMCPrimary) ||
2725 ( ( lIndexPosMother > lNbMCPrimary) && (lComeFromSigma) )
2726 ) lCheckMcLambda = 1;
2727 else lCheckSecondaryLambda = 1;
2728 }
2729 }
2730 else if( ( (lPDGCodePosDaughter==211) && (lPDGCodeNegDaughter==-2212) )
2731 ) {
2732 lCheckPIdAntiLambda = 1;
2733 fHistMCDaughterTrack->Fill(7);
2734 if ( (lIndexPosMother==lIndexNegMother) &&
2735 (lPdgcodeMother==-3122) ) {
2736 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2737 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2738 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2739 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2740 ) lComeFromSigma = 1;
2741 else lComeFromSigma = 0;
2742 if ( (lIndexPosMother <= lNbMCPrimary) ||
2743 ( ( lIndexPosMother > lNbMCPrimary) && (lComeFromSigma) )
2744 ) lCheckMcAntiLambda = 1;
2745 else lCheckSecondaryAntiLambda = 1;
2746 }
2747 }
2748
2749 // Gamma conversion
2750 else if ( (lPDGCodePosDaughter==11) &&
2751 (lPDGCodeNegDaughter==-11) &&
2752 (lPdgcodeMother==22 ) )
2753 lCheckGamma = 1;
2754 } // end "look for associated particles
2755
2756
2757 // Cuts:
2758/* if (fUseCut.Contains("yes")) {
2759 if ( (lDcaPosToPrimVertex < 0.036 ) ||
2760 (lDcaNegToPrimVertex < 0.036 ) ||
2761 (lDcaV0Daughters > 0.5 ) ||
2762 (lV0cosPointAngle < 0.999 )
2763 )
2764 continue;
2765 }
2766*/
2767
2768/*
2769 if ( (lDcaV0Daughters > 0.3 ) ||
2770 (lV0cosPointAngle < 0.998 )
2771
2772 ) continue;
2773*/
2774 // PID condition:
2775 lCheckPIDK0sPosDaughter = 0, lCheckPIDK0sNegDaughter = 0;
2776 lCheckPIDLambdaPosDaughter = 0, lCheckPIDLambdaNegDaughter = 0;
2777 lCheckPIDAntiLambdaPosDaughter = 0, lCheckPIDAntiLambdaNegDaughter = 0;
2778
2779 if (lMomInnerWallPos < lLimitPPID) {
2780 if (nSigmaPosPion < cutNSigmaLowP) {
2781 lCheckPIDK0sPosDaughter = 1;
2782 lCheckPIDAntiLambdaPosDaughter = 1;
2783 }
2784 if (nSigmaPosProton < cutNSigmaLowP) lCheckPIDLambdaPosDaughter = 1;
2785 }
2786
2787 else if (lMomInnerWallPos > lLimitPPID) {
2788 if (nSigmaPosPion < cutNSigmaHighP) {
2789 lCheckPIDK0sPosDaughter = 1;
2790 lCheckPIDAntiLambdaPosDaughter = 1;
2791 }
2792 if (nSigmaPosProton < cutNSigmaHighP) lCheckPIDLambdaPosDaughter = 1;
2793 }
2794
2795 if (lMomInnerWallNeg < lLimitPPID) {
2796 if (nSigmaNegPion < cutNSigmaLowP) {
2797 lCheckPIDK0sNegDaughter = 1;
2798 lCheckPIDLambdaNegDaughter = 1;
2799 }
2800 if (nSigmaNegProton < cutNSigmaLowP) lCheckPIDAntiLambdaNegDaughter = 1;
2801
2802 }
2803 else if (lMomInnerWallNeg > lLimitPPID) {
2804 if (nSigmaNegPion < cutNSigmaHighP) {
2805 lCheckPIDK0sNegDaughter = 1;
2806 lCheckPIDLambdaNegDaughter = 1;
2807 }
2808 if (nSigmaNegProton < cutNSigmaHighP) lCheckPIDAntiLambdaNegDaughter = 1;
2809 }
2810
2811
2812 //*****************************
2813 // filling histograms
2814
2815 fHistDcaPosToPrimVertex->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
2816 fHistDcaNegToPrimVertex->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
2817 fHistDcaPosToPrimVertexZoom->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
2818 fHistDcaNegToPrimVertexZoom->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
2819 fHistRadiusV0->Fill(lV0Radius,lOnFlyStatus);
2820 fHistDecayLengthV0->Fill(lV0DecayLength,lOnFlyStatus);
2821 fHistDcaV0Daughters->Fill(lDcaV0Daughters,lOnFlyStatus);
2822 fHistChi2->Fill(lChi2V0,lOnFlyStatus);
2823 fHistCosPointAngle->Fill(lV0cosPointAngle,lOnFlyStatus);
2824 if (lV0cosPointAngle >= 0.9) fHistCosPointAngleZoom->Fill(lV0cosPointAngle,lOnFlyStatus);
2825 fHistChi2KFBeforeCutK0s->Fill(lChi2KFK0s,lOnFlyStatus);
2826 fHistChi2KFBeforeCutLambda->Fill(lChi2KFLambda,lOnFlyStatus);
2827 fHistChi2KFBeforeCutAntiLambda->Fill(lChi2KFAntiLambda,lOnFlyStatus);
2828
2829
2830 // Histo versus Rap and armenteros plot
2831 if (!lOnFlyStatus){
2832 if (lCheckMcK0Short) fHistAsMcRapK0->Fill(lRapK0s);
2833 if (lCheckMcLambda) fHistAsMcRapLambda->Fill(lRapLambda);
2834 if (lCheckMcAntiLambda) fHistAsMcRapLambda->Fill(lRapAntiLambda);
2835// fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0);
2836// fHistDaughterPt->Fill(lPtPos,lPtNeg);
2837 }
2838/* else {
2839 if (lCheckMcK0Short) fHistAsMcRapK0MI->Fill(lRapK0s);
2840 if (lCheckMcLambda) fHistAsMcRapLambdaMI->Fill(lRapLambda);
2841 if (lCheckMcAntiLambda) fHistAsMcRapLambdaMI->Fill(lRapAntiLambda);
2842 fHistArmenterosPodolanskiMI->Fill(lAlphaV0,lPtArmV0);
2843 }*/
2844
2845
2846 // K0s associated histograms in |rap| < lCutRap:
2847
2848////////////////////////////
2849 if ( lCheckPIDK0sPosDaughter && lCheckPIDK0sNegDaughter
2850 && (lChi2KFK0s < cutChi2KF)) fHistPzPtBeforeK0s->Fill(TMath::Abs(lPzK0s/lPtK0s));
2851/////////////////////////////
2852
2853 if ( lCheckPIDK0sPosDaughter && lCheckPIDK0sNegDaughter
2854 && (lChi2KFK0s < cutChi2KF) && (TMath::Abs(lPzK0s/lPtK0s)<0.7) ) {
2855
2856
2857
2858 fHistPzPtAfterK0s->Fill(TMath::Abs(lPzK0s/lPtK0s));
2859
2860
2861
2862 fHistChi2KFAfterCutK0s->Fill(lChi2KFK0s,lOnFlyStatus);
2863
2864 if (TMath::Abs(lRapK0s) < lCutRap) {
2865
2866 fHistNsigmaPosPionK0->Fill(nSigmaPosPion);
2867 fHistNsigmaNegPionK0->Fill(nSigmaNegPion);
2868
2869 switch (lOnFlyStatus){
2870 case 0 :
2871 fHistMassK0->Fill(lInvMassK0s);
2872 fHistMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
2873 fHistPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
2874
2875
2876// fHistMultVsPtVsMassK0->Fill(multiplicity ,lInvMassK0s,lPtK0s);
2877 if(lCheckPIdK0Short) fHistPidMcMassK0->Fill(lInvMassK0s);
2878 if(lCheckMcK0Short) {
2879 fHistAsMcMassK0->Fill(lInvMassK0s);
2880 fHistAsMcPtK0->Fill(lPtK0s);
2881
2882
2883 fHistAsMcPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
2884 if (lPtK0s <= 1) fHistAsMcPtZoomK0->Fill(lPtK0s);
2885 fHistAsMcMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
2886 fHistAsMcResxK0->Fill(rcPosXK0s-mcPosX);
2887 fHistAsMcResyK0->Fill(rcPosYK0s-mcPosY);
2888 fHistAsMcReszK0->Fill(rcPosZK0s-mcPosZ);
2889 fHistAsMcResrVsRadiusK0->Fill(rcPosRK0s,rcPosRK0s-mcPosR);
2890 fHistAsMcReszVsRadiusK0->Fill(rcPosZK0s,rcPosZK0s-mcPosZ);
2891 fHistAsMcProdRadiusK0->Fill(mcPosMotherR);
2892 fHistAsMcProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
2893 fHistAsMcResPtK0->Fill(deltaPtK0s);
2894 fHistAsMcResPtVsRapK0->Fill(deltaPtK0s,lRapK0s);
2895 fHistAsMcResPtVsPtK0->Fill(deltaPtK0s,lPtK0s);
2896 }
2897 else if (lCheckSecondaryK0s) {
2898 fHistAsMcSecondaryPtVsRapK0s->Fill(lPtK0s,lRapK0s);
2899 fHistAsMcSecondaryProdRadiusK0s->Fill(mcPosMotherR);
2900 fHistAsMcSecondaryProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
2901 switch (lPdgcodeMotherOfMother) {
2902 case 130 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(0.5);break; // K0L
2903 case 321 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(1.5);break; // K+
2904 case -321 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(2.5);break; // K-
2905 case -3122 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(3.5);break; //AntiLambda
2906 default : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(6.5);break;
2907 }
2908 }
2909 break;
2910
2911/* case 1 :
2912 fHistMassK0MI->Fill(lInvMassK0s);
2913 fHistMassVsRadiusK0MI->Fill(rcPosRK0s,lInvMassK0s);
2914 fHistPtVsMassK0MI->Fill(lInvMassK0s,lPtK0s);
2915 if(lCheckPIdK0Short) fHistPidMcMassK0MI->Fill(lInvMassK0s);
2916 if(lCheckMcK0Short) {
2917 fHistAsMcMassK0MI->Fill(lInvMassK0s);
2918 fHistAsMcPtK0MI->Fill(lPtK0s);
2919 fHistAsMcPtVsMassK0MI->Fill(lInvMassK0s,lPtK0s);
2920 if (lPtK0s <= 1) fHistAsMcPtZoomK0MI->Fill(lPtK0s);
2921 fHistAsMcMassVsRadiusK0MI->Fill(rcPosRK0s,lInvMassK0s);
2922 fHistAsMcResxK0MI->Fill(rcPosXK0s-mcPosX);
2923 fHistAsMcResyK0MI->Fill(rcPosYK0s-mcPosY);
2924 fHistAsMcReszK0MI->Fill(rcPosZK0s-mcPosZ);
2925 fHistAsMcResrVsRadiusK0MI->Fill(rcPosRK0s,rcPosRK0s-mcPosR);
2926 fHistAsMcReszVsRadiusK0MI->Fill(rcPosZK0s,rcPosZK0s-mcPosZ);
2927 fHistAsMcProdRadiusK0MI->Fill(mcPosMotherR);
2928 fHistAsMcProdRadiusXvsYK0sMI->Fill(mcPosMotherX,mcPosMotherY);
2929 fHistAsMcResPtK0MI->Fill(deltaPtK0s);
2930 fHistAsMcResPtVsRapK0MI->Fill(deltaPtK0s,lRapK0s);
2931 fHistAsMcResPtVsPtK0MI->Fill(deltaPtK0s,lPtK0s);
2932 }
2933 else if (lCheckSecondaryK0s) {
2934 fHistAsMcSecondaryPtVsRapK0sMI->Fill(lPtK0s,lRapK0s);
2935 fHistAsMcSecondaryProdRadiusK0sMI->Fill(mcPosMotherR);
2936 fHistAsMcSecondaryProdRadiusXvsYK0sMI->Fill(mcPosMotherX,mcPosMotherY);
2937 switch (lPdgcodeMotherOfMother) {
2938 case 130 : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(0.5);break; // K0L
2939 case 321 : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(1.5);break; // K+
2940 case -321 : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(2.5);break; // K-
2941 case -3122 : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(3.5);break; //AntiLambda
2942 default : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(6.5);break;
2943 }
2944 }
2945 break; */
2946 }
2947 } // end rapidity condition
2948 } // end nsigma condition
2949
2950
2951 // Associated Lambda histograms in |rap| < lCutRap
2952
2953////////////////////////len koly kontrole Abs(Pz/Pt)
2954 if ( lCheckPIDLambdaPosDaughter && lCheckPIDLambdaNegDaughter
2955 && (lChi2KFLambda < cutChi2KF)) fHistPzPtBeforeLambda->Fill(TMath::Abs(lPzLambda/lPtLambda));
2956////////////////////////
2957
2958 if ( lCheckPIDLambdaPosDaughter && lCheckPIDLambdaNegDaughter
2959 && (lChi2KFLambda < cutChi2KF) && (TMath::Abs(lPzLambda/lPtLambda)<0.7) ) {
2960
2961
2962
2963
2964 fHistPzPtAfterLambda->Fill(TMath::Abs(lPzLambda/lPtLambda));
2965
2966 fHistChi2KFAfterCutLambda->Fill(lChi2KFLambda,lOnFlyStatus);
2967
2968 if (TMath::Abs(lRapLambda) < lCutRap) {
2969
2970 fHistNsigmaPosProtonLambda->Fill(nSigmaPosProton);
2971 fHistNsigmaNegPionLambda->Fill(nSigmaNegPion);
2972 switch (lOnFlyStatus){
2973 case 0 :
2974 fHistMassLambda->Fill(lInvMassLambda);
2975 fHistMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
2976 fHistPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
2977
2978
2979
2980
2981// fHistMultVsPtVsMassLambda->Fill(multiplicity ,lInvMassLambda,lPtLambda);
2982 if(lCheckPIdLambda) fHistPidMcMassLambda->Fill(lInvMassLambda);
2983
2984 if(lCheckMcLambda) {
2985 fHistAsMcMassLambda->Fill(lInvMassLambda);
2986 fHistAsMcPtLambda->Fill(lPtLambda);
2987
2988
2989 fHistAsMcPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
2990 if (lPtLambda <= 1) fHistAsMcPtZoomLambda->Fill(lPtLambda);
2991 fHistAsMcMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
2992 fHistAsMcResxLambda->Fill(rcPosXLambda-mcPosX);
2993 fHistAsMcResyLambda->Fill(rcPosYLambda-mcPosY);
2994 fHistAsMcReszLambda->Fill(rcPosZLambda-mcPosZ);
2995 fHistAsMcResrVsRadiusLambda->Fill(rcPosRLambda,rcPosRLambda-mcPosR);
2996 fHistAsMcReszVsRadiusLambda->Fill(rcPosZLambda,rcPosZLambda-mcPosZ);
2997 fHistAsMcProdRadiusLambda->Fill(mcPosMotherR);
2998 fHistAsMcProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
2999 fHistAsMcResPtLambda->Fill(deltaPtLambda);
3000 fHistAsMcResPtVsRapLambda->Fill(deltaPtLambda,lRapLambda);
3001 fHistAsMcResPtVsPtLambda->Fill(deltaPtLambda,lPtLambda);
3002 if (lComeFromSigma) fHistAsMcPtLambdaFromSigma->Fill(lPtLambda);
3003 switch (lPdgcodeMotherOfMother) {
3004 case 3222 : fHistAsMcMotherPdgCodeLambda->Fill(0.5); break; // Sigma +
3005 case 3212 : fHistAsMcMotherPdgCodeLambda->Fill(1.5); break; // Sigma 0
3006 case 3112 : fHistAsMcMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
3007 case 3224 : fHistAsMcMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
3008 case 3214 : fHistAsMcMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
3009 case 3114 : fHistAsMcMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
3010 case 3322 : fHistAsMcMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
3011 case 3312 : fHistAsMcMotherPdgCodeLambda->Fill(7.5); break; // Xi -
3012 case 3334 : fHistAsMcMotherPdgCodeLambda->Fill(8.5); break; // Omega
3013 case -1 : fHistAsMcMotherPdgCodeLambda->Fill(9.5); break;
3014 default : fHistAsMcMotherPdgCodeLambda->Fill(10.5);break;
3015 }
3016
3017
3018 //printf("found Lambda RC dcaPos=%e dcaNeg=%e dcaDau=%e cosP=%e pT=%e mass=%e\n",lDcaPosToPrimVertex ,lDcaNegToPrimVertex ,lDcaV0Daughters,lV0cosPointAngle,lPtLambda,lInvMassLambda);
3019 //printf("found Lambda RC Pindex=%d Nindex=%d Plabel=%d Nlabel=%d\n\n",lIndexTrackPos,lIndexTrackNeg,lLabelTrackPos,lLabelTrackNeg);
3020
3021 }
3022
3023 else if (lCheckSecondaryLambda) {
3024 fHistAsMcSecondaryPtVsRapLambda->Fill(lPtLambda,lRapLambda);
3025 fHistAsMcSecondaryProdRadiusLambda->Fill(mcPosMotherR);
3026 fHistAsMcSecondaryProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
3027 if (lComeFromSigma) fHistAsMcSecondaryPtLambdaFromSigma->Fill(lPtLambda);
3028 printf(" lPdgcodeMotherOfMother= %d",lPdgcodeMotherOfMother);
3029 switch (lPdgcodeMotherOfMother) {
3030 case 3222 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(0.5); break;// Sigma +
3031 case 3212 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(1.5); break;// Sigma 0
3032 case 3112 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
3033 case 3224 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
3034 case 3214 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
3035 case 3114 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
3036 case 3322 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
3037 case 3312 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(7.5); break; // Xi -
3038 case 3334 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(8.5); break; // Omega
3039 case -1 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(9.5); break;
3040 default : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(10.5);break;
3041 }
3042 }
3043 break;
3044
3045/* case 1 :
3046 fHistMassLambdaMI->Fill(lInvMassLambda);
3047 fHistMassVsRadiusLambdaMI->Fill(rcPosRLambda,lInvMassLambda);
3048 fHistPtVsMassLambdaMI->Fill(lInvMassLambda,lPtLambda);
3049 if(lCheckPIdLambda) fHistPidMcMassLambdaMI->Fill(lInvMassLambda);
3050
3051 if(lCheckMcLambda) {
3052 fHistAsMcMassLambdaMI->Fill(lInvMassLambda);
3053 fHistAsMcPtLambdaMI->Fill(lPtLambda);
3054 fHistAsMcPtVsMassLambdaMI->Fill(lInvMassLambda,lPtLambda);
3055 fHistAsMcMassVsRadiusLambdaMI->Fill(rcPosRLambda,lInvMassLambda);
3056 fHistAsMcResxLambdaMI->Fill(rcPosXLambda-mcPosX);
3057 fHistAsMcResyLambdaMI->Fill(rcPosYLambda-mcPosY);
3058 fHistAsMcReszLambdaMI->Fill(rcPosZLambda-mcPosZ);
3059 fHistAsMcResrVsRadiusLambdaMI->Fill(rcPosRLambda,rcPosRLambda-mcPosR);
3060 fHistAsMcReszVsRadiusLambdaMI->Fill(rcPosZLambda,rcPosZLambda-mcPosZ);
3061 fHistAsMcProdRadiusLambdaMI->Fill(mcPosMotherR);
3062 fHistAsMcProdRadiusXvsYLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
3063 fHistAsMcResPtLambdaMI->Fill(deltaPtLambda);
3064 fHistAsMcResPtVsRapLambdaMI->Fill(deltaPtLambda,lRapLambda);
3065 fHistAsMcResPtVsPtLambdaMI->Fill(deltaPtLambda,lPtLambda);
3066 if (lComeFromSigma) fHistAsMcPtLambdaFromSigmaMI->Fill(lPtLambda);
3067 switch (lPdgcodeMotherOfMother) {
3068 case 3222 : fHistAsMcMotherPdgCodeLambdaMI->Fill(0.5); break; // Sigma +
3069 case 3212 : fHistAsMcMotherPdgCodeLambdaMI->Fill(1.5); break; // Sigma 0
3070 case 3112 : fHistAsMcMotherPdgCodeLambdaMI->Fill(2.5); break;// Sigma -
3071 case 3224 : fHistAsMcMotherPdgCodeLambdaMI->Fill(3.5); break;// Sigma(1385) +
3072 case 3214 : fHistAsMcMotherPdgCodeLambdaMI->Fill(4.5); break;// Sigma(1385) 0
3073 case 3114 : fHistAsMcMotherPdgCodeLambdaMI->Fill(5.5); break;// Sigma(1385) -
3074 case 3322 : fHistAsMcMotherPdgCodeLambdaMI->Fill(6.5);break; // Xi 0
3075 case 3312 : fHistAsMcMotherPdgCodeLambdaMI->Fill(7.5);break; // Xi -
3076 case 3334 : fHistAsMcMotherPdgCodeLambdaMI->Fill(8.5);break; // Omega
3077 case -1 : fHistAsMcMotherPdgCodeLambdaMI->Fill(9.5);break;
3078 default : fHistAsMcMotherPdgCodeLambdaMI->Fill(10.5);break;
3079 }
3080 }
3081 else if (lCheckSecondaryLambda) {
3082 fHistAsMcSecondaryPtVsRapLambdaMI->Fill(lPtLambda,lRapLambda);
3083 fHistAsMcSecondaryProdRadiusLambdaMI->Fill(mcPosMotherR);
3084 fHistAsMcSecondaryProdRadiusXvsYLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
3085 if (lComeFromSigma) fHistAsMcSecondaryPtLambdaFromSigmaMI->Fill(lPtLambda);
3086 switch (lPdgcodeMotherOfMother) {
3087 case 3222 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(0.5); break;// Sigma +
3088 case 3212 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(1.5); break;// Sigma 0
3089 case 3112 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(2.5); break;// Sigma -
3090 case 3224 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(3.5); break;// Sigma(1385) +
3091 case 3214 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(4.5); break;// Sigma(1385) 0
3092 case 3114 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(5.5); break;// Sigma(1385) -
3093 case 3322 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(6.5); break; // Xi 0
3094 case 3312 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(7.5); break; // Xi -
3095 case 3334 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(8.5); break; // Omega
3096 case -1 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(9.5); break;
3097 default : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(10.5);break;
3098 }
3099 }
3100 break;
3101 */
3102 }
3103 } // end rapidity condition
3104 } //end nsigma condition - lambda
3105
3106
3107 if (negPiKF) delete negPiKF; negPiKF= NULL;
3108 if (posPiKF) delete posPiKF; posPiKF= NULL;
3109 if (posPKF) delete posPKF; posPKF = NULL;
3110 if (negAPKF) delete negAPKF; negAPKF= NULL;
3111
3112 } // end V0 loop
3113
3114 fHistV0Multiplicity->Fill(nv0s);
3115// fHistV0MultiplicityMI->Fill(nv0sMI);
3116
3117 if (fAnalysisType == "ESD") { if(myPrimaryVertex) delete myPrimaryVertex; }
3118
3119 if(myTracksCuts) delete myTracksCuts;
3120
3121 // Post output data
3122 PostData(1, fListHist);
0cc18548 3123 PostData(2, fCentrSelector);
e886738f 3124}
3125
3126//________________________________________________________________________
3127void AliAnalysisTaskPerformanceStrange::Terminate(Option_t *)
3128{/*
3129 // Draw result to the screen
3130 // Called once at the end of the query
3131
3132 TList *cRetrievedList = 0x0;
3133 cRetrievedList = (TList*)GetOutputData(1);
3134
3135 if(!cRetrievedList){
3136 AliWarning("ERROR - AliAnalysisTaskPerformanceStrange: output data container list not available\n"); return;
3137 }
3138
3139
3140 fHistV0Multiplicity = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0Multiplicity"));
3141 if (!fHistV0Multiplicity) {
3142 Printf("ERROR: fHistV0Multiplicity not available");
3143 return;
3144 }
3145
3146 fHistV0MultiplicityMI = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityMI"));
3147 if (!fHistV0MultiplicityMI) {
3148 Printf("ERROR: fHistV0MultiplicityMI not available");
3149 return;
3150 }
3151
3152 TCanvas *canPerformanceStrange = new TCanvas("AliAnalysisTaskCheckV0","Multiplicity",10,10,510,510);
3153 canPerformanceStrange->Divide(2,1);
3154 if (fHistV0Multiplicity->GetMaximum() > 0.) canPerformanceStrange->cd(1)->SetLogy();
3155 fHistV0Multiplicity->SetMarkerStyle(25);
3156 fHistV0Multiplicity->DrawCopy("E");
3157 if (fHistV0MultiplicityMI->GetMaximum() > 0.) canPerformanceStrange->cd(2)->SetLogy();
3158 fHistV0MultiplicityMI->SetMarkerStyle(24);
3159 fHistV0MultiplicityMI->DrawCopy("E");
3160
3161
3162*/
3163}
3164
3165//----------------------------------------------------------------------------
3166
3167Double_t AliAnalysisTaskPerformanceStrange::MyRapidity(Double_t rE, Double_t rPz) const
3168{
3169 // Local calculation for rapidity
3170 return 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
3171}
3172//----------------------------------------------------------------------------
3173