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