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