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