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