]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/LambdaK0PbPb/AliAnalysisTaskPerformanceStrangeAOD.cxx
AOD version of main-stream AliAnalysisTaskPerformanceStrange task
[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), 
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),
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   // Min number of TPC clusters:
1638   // Int_t nbMinTPCclusters = 80;
1639
1640   
1641   //
1642   // PID flags:
1643   Int_t LambdaPID = 0;
1644   Int_t AntiLambdaPID = 0;
1645       
1646
1647   //
1648   //  // Access MC:
1649   //
1650
1651   TClonesArray *stack = 0x0;
1652   Double_t mcXv=0., mcYv=0., mcZv=0.;
1653   Int_t ntrk =0, ntrk0=0;
1654
1655   if (fAnalysisMC) {
1656     TList *lst = aod->GetList();
1657     stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
1658     if (!stack) {
1659       Printf("ERROR: stack not available");
1660       return;
1661     }
1662     AliAODMCHeader *
1663       mcHdr=(AliAODMCHeader*)lst->FindObject(AliAODMCHeader::StdBranchName());
1664
1665     mcXv=mcHdr->GetVtxX(); mcYv=mcHdr->GetVtxY(); mcZv=mcHdr->GetVtxZ();
1666
1667     ntrk=stack->GetEntriesFast(), ntrk0=ntrk;
1668      
1669     if(TMath::Abs(mcZv)>10)return;
1670   }
1671
1672   fHistNumberEvents->Fill(3.5);
1673   //**********************************************
1674   // MC loop
1675   //**********************************************
1676
1677   Double_t lmcPrimVtxR      = 0;
1678
1679   Int_t lNbMCPrimary        = 0;
1680   Int_t lNbMCPart           = 0;
1681
1682   Int_t lPdgcodeCurrentPart = 0;
1683   Double_t lRapCurrentPart  = 0;
1684   Double_t lPtCurrentPart   = 0;
1685   
1686   Int_t lComeFromSigma      = 0;
1687
1688   
1689   // Production Radius
1690   Double_t mcPosX     = 0.0,  mcPosY      = 0.0,  mcPosZ      = 0.0;
1691   Double_t mcPosR     = 0.0;
1692
1693   // Decay Radius
1694   Double_t mcDecayPosX = 0, mcDecayPosY = 0, mcDecayPosR = 0;
1695
1696   // current mc particle 's mother
1697   Int_t iCurrentMother  = 0, lPdgCurrentMother    = 0;
1698   //  Bool_t lCurrentMotherIsPrimary;
1699
1700   // current mc particles 's daughter:
1701   Int_t lPdgCurrentDaughter0 = 0, lPdgCurrentDaughter1 = 0; 
1702
1703   // variables for multiple reconstruction studies:
1704   Int_t id0           = 0, id1          = 0;
1705   //Int_t lLabelTrackN  = 0, lLabelTrackP = 0;
1706   //Int_t lPartNMother  = 0, lPartPMother = 0;
1707   //Int_t lPartPMotherPDGcode      = 0;
1708   Int_t lNtimesReconstructedK0s   = 0, lNtimesReconstructedLambda   = 0, lNtimesReconstructedAntiLambda   = 0;
1709   // Int_t lNtimesReconstructedK0sMI = 0, lNtimesReconstructedLambdaMI = 0, lNtimesReconstructedAntiLambdaMI = 0;
1710
1711   //****************************
1712   // Start loop over MC particles
1713   if (fAnalysisMC) {
1714
1715     // Primary vertex
1716     fHistMCPrimaryVertexX->Fill(mcXv);
1717     fHistMCPrimaryVertexY->Fill(mcYv);
1718     fHistMCPrimaryVertexZ->Fill(mcZv);
1719     
1720     lmcPrimVtxR = TMath::Sqrt(mcXv*mcXv+mcYv*mcYv);
1721   
1722
1723     if(fAnalysisType == "AOD") {
1724       
1725       // lNbMCPrimary = stack->GetNprimary();
1726          
1727       fHistMCMultiplicityPrimary->Fill(lNbMCPrimary);
1728       fHistMCMultiplicityTracks->Fill(lNbMCPart);
1729       lNbMCPart = lNbMCPart +1;      
1730       
1731       for (Int_t iMc = 0; iMc < (ntrk); iMc++) {  
1732         AliAODMCParticle *p0=(AliAODMCParticle*)stack->UncheckedAt(iMc);
1733         if (!p0) {
1734           //Printf("ERROR: particle with label %d not found in stack (mc loop)", iMc);
1735           continue;
1736         }
1737         lPdgcodeCurrentPart = p0->GetPdgCode();
1738         
1739         // Keep only K0s, Lambda and AntiLambda, Xi and Phi:
1740         if ( (lPdgcodeCurrentPart != 310 ) && (lPdgcodeCurrentPart != 3122 ) && (lPdgcodeCurrentPart != -3122 ) && (lPdgcodeCurrentPart != 3312 ) && (lPdgcodeCurrentPart != -3312) && (lPdgcodeCurrentPart != -333) ) continue;
1741         
1742         lRapCurrentPart   = MyRapidity(p0->E(),p0->Pz());
1743         //lEtaCurrentPart   = p0->Eta();
1744         lPtCurrentPart    = p0->Pt();
1745         iCurrentMother    = p0->GetMother();
1746
1747         AliAODMCParticle *Mother = (AliAODMCParticle*)stack->UncheckedAt(iCurrentMother);
1748         //      lPdgCurrentMother = stack->Particle(iCurrentMother)->GetPdgCode();
1749         if (iCurrentMother == -1){lPdgCurrentMother=0; } else {lPdgCurrentMother = Mother->GetPdgCode();} 
1750
1751         mcPosX = p0->Xv();
1752         mcPosY = p0->Yv();
1753         mcPosZ = p0->Zv();
1754         mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
1755         
1756         id0  = p0->GetDaughter(0);
1757         id1  = p0->GetDaughter(1);
1758
1759         // Decay Radius and Production Radius
1760         if ( id0 <= ntrk && id0 > 0 && id1 <= ntrk && id1 > 0) {
1761           AliAODMCParticle *pDaughter0 = (AliAODMCParticle*)stack->UncheckedAt(id0);
1762           AliAODMCParticle *pDaughter1 = (AliAODMCParticle*)stack->UncheckedAt(id1);
1763           lPdgCurrentDaughter0 = pDaughter0->GetPdgCode();
1764           lPdgCurrentDaughter1 = pDaughter1->GetPdgCode();
1765           
1766           mcDecayPosX = pDaughter0->Xv();
1767           mcDecayPosY = pDaughter0->Yv();
1768           mcDecayPosR = TMath::Sqrt(mcDecayPosX*mcDecayPosX+mcDecayPosY*mcDecayPosY);
1769         }
1770         else  {
1771           //Printf("ERROR: particle with label %d and/or %d not found in stack (mc loop)", id0,id1);
1772           mcDecayPosR = -1.0;
1773         }
1774         
1775         if (lPdgcodeCurrentPart==310)   {
1776           fHistMCtracksProdRadiusK0s->Fill(mcPosX,mcPosY);
1777           fHistMCtracksDecayRadiusK0s->Fill(mcDecayPosR);
1778           if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllK0s->Fill(lPtCurrentPart);
1779         }
1780         else if (lPdgcodeCurrentPart==3122)  {
1781           fHistMCtracksProdRadiusLambda->Fill(mcPosX,mcPosY);
1782           fHistMCtracksDecayRadiusLambda->Fill(mcDecayPosR);
1783           if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllLambda->Fill(lPtCurrentPart);
1784         }
1785         else if (lPdgcodeCurrentPart==-3122) {
1786           fHistMCtracksProdRadiusAntiLambda->Fill(mcPosX,mcPosY);
1787           fHistMCtracksDecayRadiusAntiLambda->Fill(mcDecayPosR);
1788           if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllAntiLambda->Fill(lPtCurrentPart);
1789         }
1790         
1791         if ( ( ( TMath::Abs(lPdgCurrentMother) == 3212)  ||
1792                ( TMath::Abs(lPdgCurrentMother) == 3224)  ||
1793                ( TMath::Abs(lPdgCurrentMother) == 3214)  ||
1794                ( TMath::Abs(lPdgCurrentMother) == 3114) )
1795              //      && ( iCurrentMother <= lNbMCPrimary )
1796              //              && ( Mother->IsPhysicalPrimary() )
1797              && ( Mother->GetMother() == -1) //&& (Mother->GetDaughter(0) == (iCurrentMother+1))
1798              ) lComeFromSigma = 1;
1799         else lComeFromSigma = 0;
1800         
1801         //*********************************************
1802         // Now keep only primary particles   
1803         //      if ( ( iMc > lNbMCPrimary ) && (!lComeFromSigma) ) continue;
1804         //      if ( !((p0->GetMother() == -1) && (p0->GetDaughter(0) == (iMc+1) ) && p0->IsPhysicalPrimary()) && (!lComeFromSigma)   ) continue;
1805         //      if ( !(p0->GetMother() == -1) && (!lComeFromSigma)   ) continue;
1806         //*************************************//                                                                                                                                                               
1807         // new definition of primary particles //                                                                                                                                                               
1808         //*************************************//                                                                                                                                                               
1809
1810         Double_t dx = 0;
1811         Double_t dy = 0;
1812         Double_t dz = 0;
1813         Double_t ProdDistance = 0;
1814
1815
1816         dx = ( ( mcXv) - (mcPosX) );
1817         dy = ( ( mcYv) - (mcPosY) );
1818         dz = ( ( mcZv) - (mcPosZ) );
1819
1820         ProdDistance = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
1821
1822         if (ProdDistance > 0.001) continue; // secondary V0      
1823
1824
1825
1826         //********************************************
1827      
1828         lNtimesReconstructedK0s   = 0; lNtimesReconstructedLambda   = 0; lNtimesReconstructedAntiLambda   = 0;
1829
1830  
1831         // Rap distribution
1832         if (lPdgcodeCurrentPart==310) {
1833           fHistMCRapK0s->Fill(lRapCurrentPart);
1834           if (lPtCurrentPart < 0.2 && lPtCurrentPart < 3.0)
1835             fHistMCRapInPtRangeK0s->Fill(lRapCurrentPart);
1836         }
1837
1838         if (lPdgcodeCurrentPart==3122) {
1839           fHistMCRapLambda->Fill(lRapCurrentPart);
1840           if (lPtCurrentPart < 0.6 && lPtCurrentPart < 3.5)
1841             fHistMCRapInPtRangeLambda->Fill(lRapCurrentPart);
1842         }
1843
1844         if (lPdgcodeCurrentPart==-3122) {
1845           fHistMCRapAntiLambda->Fill(lRapCurrentPart);
1846           if (lPtCurrentPart < 0.6 && lPtCurrentPart < 3.5)
1847             fHistMCRapInPtRangeAntiLambda->Fill(lRapCurrentPart);
1848         }
1849
1850         if (lPdgcodeCurrentPart==3312 || lPdgcodeCurrentPart==-3312) {
1851           fHistMCRapXi->Fill(lRapCurrentPart);
1852           if (lPtCurrentPart < 0.6 && lPtCurrentPart < 3.0)
1853             fHistMCRapInPtRangeXi->Fill(lRapCurrentPart);
1854         }
1855
1856         if (lPdgcodeCurrentPart==333) {
1857           fHistMCRapPhi->Fill(lRapCurrentPart);
1858           if (lPtCurrentPart < 0.7 && lPtCurrentPart < 3.0)
1859             fHistMCRapInPtRangePhi->Fill(lRapCurrentPart);
1860         }
1861  
1862         // Rapidity Cut
1863         if (TMath::Abs(lRapCurrentPart) > lCutRap) continue;
1864  
1865         if (lPdgcodeCurrentPart==310) {
1866           fHistMCProdRadiusK0s->Fill(mcPosR);
1867
1868           fHistMCPtK0s->Fill(lPtCurrentPart);
1869
1870
1871
1872           fHistNTimesRecK0s->Fill(lNtimesReconstructedK0s);
1873           fHistNTimesRecK0sVsPt->Fill(lPtCurrentPart,lNtimesReconstructedK0s);
1874         }
1875         else 
1876           if (lPdgcodeCurrentPart==3122) {
1877             fHistMCProdRadiusLambda->Fill(mcPosR);
1878
1879             fHistMCPtLambda->Fill(lPtCurrentPart);        
1880
1881
1882             fHistNTimesRecLambda->Fill(lNtimesReconstructedLambda);
1883             fHistNTimesRecLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedLambda);
1884             if (lComeFromSigma) fHistMCPtLambdaFromSigma->Fill(lPtCurrentPart);
1885
1886             //printf("found Lambda MC pT=%e\n",lPtCurrentPart);
1887             //printf("found Lambda MC Plabel=%d PPDGcode=%d Nlabel=%d NPDGcode=%d\n\n",id0,lPdgCurrentDaughter0,id1,lPdgCurrentDaughter1); 
1888           
1889           }
1890           else 
1891             if (lPdgcodeCurrentPart==-3122) {
1892               fHistMCProdRadiusAntiLambda->Fill(mcPosR);
1893
1894               fHistMCPtAntiLambda->Fill(lPtCurrentPart);          
1895
1896
1897               fHistNTimesRecAntiLambda->Fill(lNtimesReconstructedAntiLambda);
1898               fHistNTimesRecAntiLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambda);
1899               if (lComeFromSigma) fHistMCPtAntiLambdaFromSigma->Fill(lPtCurrentPart);
1900
1901               //printf("found Lambda MC pT=%e\n",lPtCurrentPart);
1902               //printf("found Lambda MC Plabel=%d PPDGcode=%d Nlabel=%d NPDGcode=%d\n\n",id0,lPdgCurrentDaughter0,id1,lPdgCurrentDaughter1); 
1903           
1904             }
1905
1906         
1907       } // end loop ESD MC
1908       
1909     } // end ESD condition
1910
1911
1912   } // End Loop over MC condition
1913
1914   
1915
1916
1917
1918   //************************************
1919   // AOD loop 
1920   //************************************
1921
1922   //  Double_t  lLambdaMass = 1.115683;  //PDG
1923   Double_t lPLambda = 0;
1924   Double_t lPAntiLambda = 0;
1925   Double_t lPK0s = 0;
1926   //  Double_t lMagneticField = 999;
1927
1928   //Multiplcity:
1929   //  Int_t    nv0sTot= 0;
1930   Int_t  nv0s = 0;
1931   //  Int_t nv0sMI =0;   
1932   // Variables:
1933   Double_t  lV0Position[3];
1934  
1935   Double_t lDcaPosToPrimVertex = 0;
1936   Double_t lDcaNegToPrimVertex = 0;
1937   Double_t lDcaV0Daughters     = 0;
1938   Double_t lV0cosPointAngle    = 0;
1939   Double_t lChi2V0             = 0;
1940   Double_t lV0DecayLength      = 0;
1941   Double_t lV0Radius           = 0;
1942   Double_t lDcaV0ToPrimVertex  = 0;
1943   Double_t lcTauLambda         = 0;   
1944   Double_t lcTauAntiLambda     = 0;   
1945   Double_t lcTauK0s            = 0;   
1946   Int_t    lOnFlyStatus        = 0;
1947   //Float_t   tdcaPosToPrimVertexXYZ[2], tdcaNegToPrimVertexXYZ[2]; // ..[0] = Impact parameter in XY plane and ..[1] = Impact parameter in Z            
1948   //Double_t  tdcaDaughterToPrimVertex[2];                          // ..[0] = Pos and ..[1] = Neg
1949
1950   
1951
1952   Double_t lInvMassK0s = 0, lInvMassLambda = 0, lInvMassAntiLambda = 0;
1953   Double_t lPtK0s      = 0, lPtLambda      = 0, lPtAntiLambda      = 0;
1954   Double_t lRapK0s     = 0, lRapLambda     = 0, lRapAntiLambda     = 0;
1955   //  Double_t lEtaK0s     = 0, lEtaLambda     = 0, lEtaAntiLambda     = 0;
1956   Double_t lAlphaV0      = 0, lPtArmV0       = 0;
1957
1958   Double_t lPzK0s      = 0, lPzLambda      = 0,  lPzAntiLambda      = 0;
1959
1960
1961   Double_t lV0Eta = 999;
1962   
1963   // to study Associated V0s:
1964   //  Int_t    lIndexTrackPos       = 0, lIndexTrackNeg         = 0;
1965   UInt_t   lLabelTrackPos       = 0, lLabelTrackNeg         = 0;
1966   Int_t    lCheckPIdK0Short     = 0, lCheckMcK0Short        = 0;
1967   Int_t    lCheckPIdLambda      = 0, lCheckMcLambda         = 0;
1968   Int_t    lCheckPIdAntiLambda  = 0, lCheckMcAntiLambda     = 0;
1969   Int_t    lCheckSecondaryK0s   = 0, lCheckSecondaryLambda  = 0, lCheckSecondaryAntiLambda  = 0;
1970   Int_t    lCheckGamma          = 0;
1971   Double_t mcPosMotherX         = 0, mcPosMotherY           = 0, mcPosMotherZ  = 0;
1972   Double_t mcPosMotherR         = 0;
1973   Double_t mcMotherPt           = 0;
1974
1975   Int_t lIndexPosMother        = 0;
1976   Int_t lIndexNegMother        = 0;
1977   Int_t lIndexMotherOfMother   = 0;
1978   Int_t lPDGCodePosDaughter    = 0;
1979   Int_t lPDGCodeNegDaughter    = 0;
1980   Int_t lPdgcodeMother         = 0;
1981   Int_t lPdgcodeMotherOfMother = 0;
1982
1983   // Reconstructed position
1984   Double_t rcPosXK0s        = 0,  rcPosYK0s        = 0, rcPosZK0s        = 0;
1985   Double_t rcPosRK0s        = 0;
1986   Double_t rcPosXLambda     = 0,  rcPosYLambda     = 0, rcPosZLambda     = 0;
1987   Double_t rcPosRLambda     = 0;
1988   Double_t rcPosXAntiLambda = 0,  rcPosYAntiLambda = 0, rcPosZAntiLambda = 0;
1989   Double_t rcPosRAntiLambda = 0;
1990
1991   // Pt resolution
1992   Double_t deltaPtK0s  = 0, deltaPtLambda  = 0, deltaPtAntiLambda  = 0;
1993
1994   // Daughters
1995   const  AliAODTrack  *myTrackPos  = NULL;
1996   const  AliAODTrack  *myTrackNeg  = NULL;
1997   //  AliVParticle *lVPartPos   = NULL;
1998   // AliVParticle *lVPartNeg   = NULL;
1999
2000   //  V0 momentum      
2001   //  Double_t V0mom[3] = {999,999,999};
2002   Double_t lPosMom = 0;
2003   Double_t lNegMom = 0;
2004   //  Double_t lPmom = 0;
2005   //  Double_t lPLambda = 0;
2006
2007   // Daughters' momentum:
2008   Double_t  lMomPos[3] = {999,999,999};
2009   Double_t  lMomNeg[3] = {999,999,999};
2010   Double_t  lPtPos = 999, lPtNeg = 999;
2011   Double_t  lPPos = 999, lPNeg = 999;
2012
2013   // Inner Wall parameters:
2014   Double_t  lMomInnerWallPos =999, lMomInnerWallNeg = 999;
2015
2016   // AliKF Chi2 and Armenteros variables
2017   //  Double_t lChi2KFK0s  = 0, lChi2KFLambda = 0,  lChi2KFAntiLambda = 0;
2018   //  Double_t lAlphaV0K0s = 0, lAlphaV0Lambda = 0,  lAlphaV0AntiLambda = 0;
2019   //Double_t lPtArmV0K0s = 0, lPtArmV0Lambda = 0,  lPtArmV0AntiLambda = 0;
2020   //  Double_t lQlPos   = 0, lQlNeg   = 0;
2021
2022
2023   // PID
2024   Float_t nSigmaPosPion   = 0;
2025   Float_t nSigmaNegPion   = 0;
2026
2027   Float_t nSigmaPosProton = 0;
2028   Float_t nSigmaNegProton = 0;
2029   
2030
2031   Int_t lCheckPIDK0sPosDaughter        = 0, lCheckPIDK0sNegDaughter        = 0;
2032   Int_t lCheckPIDLambdaPosDaughter     = 0, lCheckPIDLambdaNegDaughter     = 0;
2033   Int_t lCheckPIDAntiLambdaPosDaughter = 0, lCheckPIDAntiLambdaNegDaughter = 0;
2034
2035   
2036   
2037   //***********************
2038   // Primary Vertex cuts &
2039   // Magnetic field and Quality tracks cuts 
2040
2041   Double_t  lPrimaryVtxPosition[3];
2042   //  Double_t  lPrimaryVtxCov[6];
2043   Double_t  lPrimaryVtxChi2 = 999;
2044   //  Double_t  lResPrimaryVtxX = 999;
2045   // Double_t  lResPrimaryVtxY = 999;
2046   // Double_t  lResPrimaryVtxZ = 999;
2047      
2048   AliAODVertex *myPrimaryVertex = NULL;
2049   //const AliVVertex *mySPDPrimaryVertex = NULL;
2050
2051   if(fAnalysisType == "AOD") {  
2052     AliAODVertex *myPrimVertex = aod->GetPrimaryVertex();
2053     //    AliAODVertex(myPrimVertex);
2054     myPrimVertex->GetXYZ(lPrimaryVtxPosition); 
2055     if ( ( TMath::Abs(myPrimVertex->GetZ()) ) > cutPrimVertex) return ;
2056     fHistNumberEvents->Fill(4.5);    
2057     lPrimaryVtxChi2 = myPrimVertex->GetChi2perNDF();
2058
2059     /// multilplicity
2060     ntrk=aod->GetNumberOfTracks();
2061     Int_t mult=0;
2062     //  Double_t nsig;
2063     for (Int_t i=0; i<ntrk; i++) {
2064       AliAODTrack *t=aod->GetTrack(i);
2065       if (t->IsMuonTrack()) continue;
2066       if (!t->IsOn(AliAODTrack::kTPCrefit)) continue;
2067
2068       Double_t xyz[3];
2069       if (t->GetPosition(xyz)) continue;
2070       if (TMath::Abs(xyz[0])>3.) continue;
2071       if (TMath::Abs(xyz[1])>3.) continue;
2072
2073       Double_t pt=t->Pt(),pz=t->Pz();
2074       if (TMath::Abs(pz/pt)>0.8) continue;
2075
2076       mult++;
2077
2078       /*    const AliAODPid *pid=t->GetDetPid();
2079             if (!pid) continue;
2080
2081             Double_t p=pid->GetTPCmomentum();
2082             Double_t dedx=pid->GetTPCsignal()/47.;
2083             fdEdx->Fill(p,dedx,1);
2084
2085             nsig=pidResponse->NumberOfSigmasTPC(t,AliPID::kProton);
2086             if (TMath::Abs(nsig) < 3.) fdEdxPid->Fill(p,dedx,1);
2087       */
2088     }
2089         
2090     fHistTPCMult->Fill(mult);
2091
2092    
2093     fHistPrimaryVertexX->Fill(lPrimaryVtxPosition[0]);
2094     fHistPrimaryVertexY->Fill(lPrimaryVtxPosition[1]);
2095     fHistPrimaryVertexZ->Fill(lPrimaryVtxPosition[2]);
2096     //Double_t lrcPrimVtxR = TMath::Sqrt(lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]+lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]);
2097     /*
2098       fHistPrimaryVertexResX->Fill(lResPrimaryVtxX);
2099       fHistPrimaryVertexResY->Fill(lResPrimaryVtxY);
2100       fHistPrimaryVertexResZ->Fill(lResPrimaryVtxZ);
2101     */
2102     // V0 loop
2103       
2104     Int_t nv0 = aod->GetNumberOfV0s();
2105     while (nv0--) {
2106       AliAODv0 *v0=aod->GetV0(nv0);
2107       if (!v0) {   fHistNumberEvents->Fill(5.5);continue;}
2108
2109       if (!AcceptV0(v0,aod,lCutPseudorap)){   fHistNumberEvents->Fill(6.5); continue;}
2110       fHistNumberEvents->Fill(7.5);
2111
2112    
2113       lIndexPosMother     = 0; lIndexNegMother     = 0; lIndexMotherOfMother       = 0;
2114       lCheckPIdK0Short    = 0; lCheckMcK0Short     = 0; lCheckSecondaryK0s         = 0;
2115       lCheckPIdLambda     = 0; lCheckMcLambda      = 0; lCheckSecondaryLambda      = 0;
2116       lCheckPIdAntiLambda = 0; lCheckMcAntiLambda  = 0; lCheckSecondaryAntiLambda  = 0;       
2117       lComeFromSigma      = -1;lCheckGamma = 0;
2118     
2119     
2120       if(fAnalysisType == "AOD") {
2121
2122         // Primary vertex:
2123         fHistPrimaryVertexPosXV0events->Fill(lPrimaryVtxPosition[0]);
2124         fHistPrimaryVertexPosYV0events->Fill(lPrimaryVtxPosition[1]);
2125         fHistPrimaryVertexPosZV0events->Fill(lPrimaryVtxPosition[2]);
2126       
2127         // V0's Daughters
2128         //      lIndexTrackPos = TMath::Abs(v0->GetPindex());
2129         //lIndexTrackNeg = TMath::Abs(v0->GetNindex());
2130         AliAODTrack *myTrackNegTest=(AliAODTrack *)v0->GetDaughter(1);
2131         AliAODTrack *myTrackPosTest=(AliAODTrack *)v0->GetDaughter(0);
2132
2133         //      AliExternalTrackParam *NegParam = AliExternalTrackParam(myTrackNegTest);
2134         //AliExternalTrackParam *PosParam = AliExternalTrackParam(myTrackPosTest);
2135         //  const  AliExternalTrackParam *NegParam = myTrackNegTest->GetOuterParam();
2136         //const  AliExternalTrackParam *PosParam = myTrackPosTest->GetOuterParam();
2137
2138         if (!myTrackPosTest || !myTrackNegTest) {
2139           Printf("strange analysis::UserExec:: Error:Could not retreive one of the daughter track\n");
2140           continue;
2141         }
2142         // Remove like-sign
2143         if (myTrackNegTest->Charge() == myTrackPosTest->Charge()){
2144           continue;
2145         } 
2146      
2147         // VO's main characteristics to check the reconstruction cuts
2148         lOnFlyStatus       = v0->GetOnFlyStatus();
2149         lChi2V0            = v0->Chi2V0();
2150         lDcaV0Daughters    = v0->DcaV0Daughters();
2151         lDcaV0ToPrimVertex = v0->DcaV0ToPrimVertex();
2152         lV0cosPointAngle   = v0->CosPointingAngle(lPrimaryVtxPosition);
2153
2154         v0->GetXYZ(lV0Position);
2155
2156         lV0Radius      = TMath::Sqrt(lV0Position[0]*lV0Position[0]+lV0Position[1]*lV0Position[1]);
2157         lV0DecayLength = TMath::Sqrt(TMath::Power(lV0Position[0] - lPrimaryVtxPosition[0],2) +
2158                                      TMath::Power(lV0Position[1] - lPrimaryVtxPosition[1],2) +
2159                                      TMath::Power(lV0Position[2] - lPrimaryVtxPosition[2],2 ));
2160
2161
2162         if( myTrackPosTest->Charge() ==1){
2163         
2164           myTrackPos = myTrackPosTest;
2165           myTrackNeg = myTrackNegTest;
2166
2167           // Daughters' momentum;
2168           myTrackPos->GetPxPyPz(lMomPos);
2169           myTrackNeg->GetPxPyPz(lMomNeg);
2170         }
2171       
2172         if( myTrackPosTest->Charge() ==-1){
2173         
2174           myTrackPos = myTrackNegTest;
2175           myTrackNeg = myTrackPosTest;
2176
2177           // Daughters' momentum;
2178           myTrackPos->GetPxPyPz(lMomPos);
2179           myTrackNeg->GetPxPyPz(lMomNeg);
2180         }
2181      
2182         lLabelTrackPos = (UInt_t)TMath::Abs(myTrackPos->GetLabel());
2183         lLabelTrackNeg = (UInt_t)TMath::Abs(myTrackNeg->GetLabel());
2184       
2185         // Daughters Pt and P:
2186         lPtPos = TMath::Sqrt(lMomPos[0]*lMomPos[0] + lMomPos[1]*lMomPos[1]);
2187         lPtNeg = TMath::Sqrt(lMomNeg[0]*lMomNeg[0] + lMomNeg[1]*lMomNeg[1]);
2188
2189         lPPos = TMath::Sqrt(lMomPos[0]*lMomPos[0] + lMomPos[1]*lMomPos[1] + lMomPos[2]*lMomPos[2]);
2190         lPNeg = TMath::Sqrt(lMomNeg[0]*lMomNeg[0] + lMomNeg[1]*lMomNeg[1] + lMomNeg[2]*lMomNeg[2]);
2191
2192         // V0 momentum
2193         lPosMom = lPPos;
2194         lNegMom = lPNeg;
2195      
2196         // Inner Wall parameter:
2197         const AliAODPid *pidPos=myTrackPos->GetDetPid();      
2198         const AliAODPid *pidNeg=myTrackNeg->GetDetPid();
2199      
2200         // innerWall momentum
2201         lMomInnerWallPos = pidPos->GetTPCmomentum(); 
2202         lMomInnerWallNeg = pidNeg->GetTPCmomentum();; 
2203               
2204         // DCA between daughter and Primary Vertex:
2205         if (myTrackPos) lDcaPosToPrimVertex = v0->DcaPosToPrimVertex();
2206         if (myTrackNeg) lDcaNegToPrimVertex = v0->DcaNegToPrimVertex();      
2207
2208       
2209         // Quality tracks cuts:
2210         if ( !(AcceptTrack(myTrackPos)) || !(AcceptTrack(myTrackNeg)) ) 
2211           { continue;}
2212
2213         // Armenteros variables:
2214         lAlphaV0      =  v0->AlphaV0();
2215         lPtArmV0      =  v0->PtArmV0();
2216
2217         // Pseudorapidity:
2218         lV0Eta = v0->PseudoRapV0();
2219         //////////////////////////////////////////////////////////////////////////
2220         // Invariant mass
2221         lInvMassK0s = v0->MassK0Short();
2222         lPtK0s = v0->Pt();
2223         lPzK0s = v0->Pz();
2224
2225         lInvMassLambda = v0->MassLambda();
2226         lPtLambda = v0->Pt();
2227         lPzLambda = v0->Pz();
2228
2229         lInvMassAntiLambda = v0->MassAntiLambda();
2230         lPtAntiLambda = v0->Pt();
2231         lPzAntiLambda = v0->Pz();
2232   
2233
2234         // Rapidity:
2235         lRapK0s    = v0->RapK0Short();
2236         lRapLambda = v0->RapLambda();
2237         lRapAntiLambda = v0->Y(-3122);
2238         
2239         if (lPtK0s==0)  {continue;}
2240         if (lPtLambda==0)       {continue;}
2241         if (lPtAntiLambda==0)   {continue;}
2242
2243         ///////////////////////////////////////////////////////////////////////      
2244
2245         // PID  new method July 2011
2246         if (fUsePID.Contains("withPID")) {
2247           nSigmaPosPion =       TMath::Abs(fPIDResponse->NumberOfSigmasTPC(myTrackPos, AliPID::kPion));
2248           nSigmaNegPion =       TMath::Abs(fPIDResponse->NumberOfSigmasTPC(myTrackNeg, AliPID::kPion));
2249           nSigmaPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(myTrackPos, AliPID::kProton));
2250           nSigmaNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(myTrackNeg, AliPID::kProton));
2251         }
2252         else {
2253           nSigmaPosPion = 0; nSigmaNegPion =0; nSigmaPosProton = 0; nSigmaNegProton= 0;
2254         }
2255       
2256         // Monte-Carlo particle associated to reconstructed particles: 
2257         if (fAnalysisMC) {
2258           //if (lLabelTrackPos < 0 || lLabelTrackNeg < 0) continue;
2259           AliAODMCParticle *pp=(AliAODMCParticle*)stack->UncheckedAt(lLabelTrackPos);
2260           if(!pp) { 
2261             //  Printf("no MC particle for positive and/or negative daughter\n");
2262             continue;
2263           }
2264           AliAODMCParticle *np=(AliAODMCParticle*)stack->UncheckedAt(lLabelTrackNeg);
2265           if (!np)      { continue;}
2266           lPDGCodePosDaughter = pp->GetPdgCode();
2267           lPDGCodeNegDaughter = np->GetPdgCode();
2268           lIndexPosMother = pp->GetMother(); 
2269           lIndexNegMother = np->GetMother(); 
2270
2271           if (lIndexPosMother == -1) {
2272
2273             lPdgcodeMother = 0;
2274             lIndexMotherOfMother = 0;
2275             mcPosX = 0;
2276             mcPosY = 0;
2277             mcPosZ = 0;
2278             mcPosR = 0;
2279             mcPosMotherX = 0;
2280             mcPosMotherY = 0;
2281             mcPosMotherZ = 0;
2282             mcPosMotherR = 0;
2283             mcMotherPt = 1;
2284           }
2285
2286           else {
2287             AliAODMCParticle *lMCAODMother=(AliAODMCParticle*)stack->UncheckedAt(lIndexPosMother);
2288             if (!lMCAODMother)  { continue;}
2289             lPdgcodeMother         = lMCAODMother->GetPdgCode();
2290             lIndexMotherOfMother   = lMCAODMother->GetMother();
2291             if (lIndexMotherOfMother ==-1) lPdgcodeMotherOfMother = 0;
2292             else {
2293               AliAODMCParticle *lMCAODMotherOfMother=(AliAODMCParticle*)stack->UncheckedAt(lIndexMotherOfMother);
2294               if (!lMCAODMotherOfMother)        {continue;}
2295               lPdgcodeMotherOfMother = lMCAODMotherOfMother->GetPdgCode();
2296             }
2297         
2298             mcPosX = pp->Xv();
2299             mcPosY = pp->Yv();
2300             mcPosZ = pp->Zv();
2301             mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
2302             mcPosMotherX = lMCAODMother->Xv();
2303             mcPosMotherY = lMCAODMother->Yv();
2304             mcPosMotherZ = lMCAODMother->Zv();
2305             mcPosMotherR = TMath::Sqrt(mcPosMotherX*mcPosMotherX+mcPosMotherY*mcPosMotherY);
2306         
2307             mcMotherPt   = lMCAODMother->Pt();
2308           }
2309         }
2310       } // end AOD condition
2311
2312       // Multiplicity:
2313       if(!lOnFlyStatus) nv0s++;
2314       //    else  if(lOnFlyStatus) nv0sMI++;
2315
2316       // Daughter momentum cut: ! FIX it in case of AOD !
2317       if ( (lPtPos  < cutMinPtDaughter ) ||
2318            (lPtNeg  < cutMinPtDaughter )
2319            )    {continue;}
2320       // Look for associated particles:
2321       if (fAnalysisMC) {
2322         if( (lIndexPosMother==-1) || (lIndexNegMother==-1) ) {
2323           fHistMCDaughterTrack->Fill(1);
2324         }
2325       
2326         else if( ( (lPDGCodePosDaughter==+211) && (lPDGCodeNegDaughter==-211) )    
2327                  ) {
2328           lCheckPIdK0Short    = 1;
2329           fHistMCDaughterTrack->Fill(3);
2330           if ( (lIndexPosMother==lIndexNegMother) &&
2331                (lPdgcodeMother==310) ) {
2332             if (((AliAODMCParticle*)stack->UncheckedAt(lIndexPosMother))->IsPrimary()) lCheckMcK0Short  = 1;
2333             else lCheckSecondaryK0s = 1;
2334           }
2335         }
2336         else if( ( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211)  )  
2337                  ) {
2338           lCheckPIdLambda     = 1;
2339           fHistMCDaughterTrack->Fill(5);
2340           if ( (lIndexPosMother==lIndexNegMother) &&
2341                (lPdgcodeMother==3122)  ){
2342             if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2343                  ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2344                  ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2345                  ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2346                  ) lComeFromSigma = 1;
2347             else lComeFromSigma = 0; 
2348             if ( ((AliAODMCParticle*)stack->UncheckedAt(lIndexPosMother))->IsPrimary() || 
2349                  (!(((AliAODMCParticle*)stack->UncheckedAt(lIndexPosMother))->IsPrimary() ) && (lComeFromSigma) )
2350                  ) lCheckMcLambda  = 1; 
2351             else lCheckSecondaryLambda    = 1;
2352           }
2353         }
2354         else if( ( (lPDGCodePosDaughter==211)   && (lPDGCodeNegDaughter==-2212) )            
2355                  ) {
2356           lCheckPIdAntiLambda = 1;
2357           fHistMCDaughterTrack->Fill(7);
2358           if ( (lIndexPosMother==lIndexNegMother) &&
2359                (lPdgcodeMother==-3122) ) {
2360             if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2361                  ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2362                  ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2363                  ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2364                  ) lComeFromSigma = 1;
2365             else lComeFromSigma = 0;  
2366             if ( ((AliAODMCParticle*)stack->UncheckedAt(lIndexPosMother))->IsPrimary() || 
2367                  ( (!((AliAODMCParticle*)stack->UncheckedAt(lIndexPosMother))->IsPrimary()) && (lComeFromSigma) )
2368                  ) lCheckMcAntiLambda  = 1;
2369             else lCheckSecondaryAntiLambda = 1;
2370           }
2371         }
2372       
2373         // Gamma conversion
2374         else if ( (lPDGCodePosDaughter==-11) &&
2375                   (lPDGCodeNegDaughter==11) &&
2376                   (lPdgcodeMother==22 ) )
2377           lCheckGamma = 1;
2378       } // end "look for associated particles  
2379    
2380     
2381       // PID condition:
2382       lCheckPIDK0sPosDaughter        = 0, lCheckPIDK0sNegDaughter        = 0;
2383       lCheckPIDLambdaPosDaughter     = 0, lCheckPIDLambdaNegDaughter     = 0;
2384       lCheckPIDAntiLambdaPosDaughter = 0, lCheckPIDAntiLambdaNegDaughter = 0;
2385
2386       if (lMomInnerWallPos < lLimitPPID) {
2387         if (nSigmaPosPion < cutNSigmaLowP)   {
2388           lCheckPIDK0sPosDaughter        = 1;
2389           lCheckPIDAntiLambdaPosDaughter = 1;
2390         }
2391         if (nSigmaPosProton < cutNSigmaLowP) lCheckPIDLambdaPosDaughter    = 1;      
2392       }
2393
2394       else if (lMomInnerWallPos > lLimitPPID) {    
2395         if (nSigmaPosPion < cutNSigmaHighP)   {
2396           lCheckPIDK0sPosDaughter        = 1;
2397           lCheckPIDAntiLambdaPosDaughter = 1;
2398         }
2399         if (nSigmaPosProton < cutNSigmaHighP) lCheckPIDLambdaPosDaughter    = 1;
2400       }
2401
2402       if (lMomInnerWallNeg < lLimitPPID) {
2403         if (nSigmaNegPion < cutNSigmaLowP)    {
2404           lCheckPIDK0sNegDaughter       = 1;
2405           lCheckPIDLambdaNegDaughter    = 1;
2406         }
2407         if (nSigmaNegProton < cutNSigmaLowP)  lCheckPIDAntiLambdaNegDaughter = 1;
2408       
2409       }
2410       else if (lMomInnerWallNeg > lLimitPPID) {
2411         if (nSigmaNegPion < cutNSigmaHighP)   {
2412           lCheckPIDK0sNegDaughter       = 1;
2413           lCheckPIDLambdaNegDaughter    = 1;
2414         }
2415         if (nSigmaNegProton < cutNSigmaHighP) lCheckPIDAntiLambdaNegDaughter = 1;
2416       }
2417  
2418       //*****************************
2419       // filling histograms
2420       //*****************************
2421     
2422       if(fUsePID.Contains("withPID") && (lCheckPIDAntiLambdaNegDaughter==0) && lCheckPIDLambdaPosDaughter==1) LambdaPID = 1;
2423       else LambdaPID =0;
2424       if(fUsePID.Contains("withPID") && (lCheckPIDLambdaPosDaughter==0) && lCheckPIDAntiLambdaNegDaughter==1) AntiLambdaPID = 1;
2425       else AntiLambdaPID =0;
2426
2427       lPLambda = TMath::Sqrt(lPzLambda*lPzLambda + lPtLambda*lPtLambda);
2428       lPAntiLambda = TMath::Sqrt(lPzAntiLambda*lPzAntiLambda + lPtAntiLambda*lPtAntiLambda);
2429       lPK0s = TMath::Sqrt(lPzK0s*lPzK0s + lPtK0s*lPtK0s);
2430
2431       if ((LambdaPID==1 && lPosMom <=1) || (lPosMom>1) ||  !(fUsePID.Contains("withPID"))){  
2432         if ((TMath::Abs(lRapLambda) < lCutRap) && lOnFlyStatus==0) {
2433           fHistTPCsigPLambda->Fill(lPosMom,myTrackPos->GetTPCsignal());
2434
2435         }
2436       }
2437
2438       if ((AntiLambdaPID==1 && lNegMom <=1) || (lNegMom>1) ||  !(fUsePID.Contains("withPID"))){  
2439         if ((TMath::Abs(lRapAntiLambda) < lCutRap) && lOnFlyStatus==0) {
2440           fHistTPCsigPAntiLambda->Fill(lNegMom,myTrackNeg->GetTPCsignal());
2441
2442         }
2443       }
2444     
2445       //cTau Lambda   
2446       lcTauLambda     = (lV0DecayLength*lInvMassLambda)/lPLambda;
2447       //cTau AntiLambda   
2448       lcTauAntiLambda     = (lV0DecayLength*lInvMassAntiLambda)/lPAntiLambda;
2449       //cTau K0s   
2450       lcTauK0s     = (lV0DecayLength*lInvMassK0s)/lPK0s;
2451
2452       if (lPLambda <1 && lOnFlyStatus==0 ){
2453         fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0);
2454         fHistcTauL->Fill(lcTauLambda);
2455       }
2456
2457       ////////////////
2458       //
2459       //  K0s
2460       //
2461       ////////////////
2462     
2463       if (lcTauK0s< cutcTauK0s) {
2464    
2465         if (TMath::Abs(lRapK0s) < lCutRap ) {
2466
2467           //////2D histos: cut vs on fly status/////////////////////
2468
2469           fHistDcaPosToPrimVertexK0->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
2470           fHistDcaNegToPrimVertexK0->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
2471           fHistRadiusV0K0->Fill(lV0Radius,lOnFlyStatus);
2472           fHistDecayLengthV0K0->Fill(lV0DecayLength,lOnFlyStatus);
2473           fHistDcaV0DaughtersK0->Fill(lDcaV0Daughters,lOnFlyStatus);
2474           fHistChi2K0->Fill(lChi2V0,lOnFlyStatus);
2475           fHistCosPointAngleK0->Fill(lV0cosPointAngle,lOnFlyStatus);
2476
2477           //////2D histos: cut vs mass///////////////////// 
2478
2479           if (lOnFlyStatus==0){
2480         
2481
2482             fHistMassK0->Fill(lInvMassK0s);
2483             fHistMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
2484             fHistPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
2485
2486
2487             fHistDcaPosToPrimVertexK0vsMassK0->Fill(lDcaPosToPrimVertex,lInvMassK0s);
2488             fHistDcaNegToPrimVertexK0vsMassK0->Fill(lDcaNegToPrimVertex,lInvMassK0s);
2489             fHistRadiusV0K0vsMassK0->Fill(lV0Radius,lInvMassK0s);
2490             fHistDecayLengthV0K0vsMassK0->Fill(lV0DecayLength,lInvMassK0s);
2491             fHistDcaV0DaughtersK0vsMassK0->Fill(lDcaV0Daughters,lInvMassK0s);
2492             fHistCosPointAngleK0vsMassK0->Fill(lV0cosPointAngle,lInvMassK0s);
2493             if(fQASelector){
2494               if (lPtK0s>0 && lPtK0s <3){ 
2495                 fHistDcaPosToPrimVertexK0vsMassK0pt1->Fill(lDcaPosToPrimVertex,lInvMassK0s);
2496                 fHistDcaNegToPrimVertexK0vsMassK0pt1->Fill(lDcaNegToPrimVertex,lInvMassK0s);
2497                 fHistRadiusV0K0vsMassK0pt1->Fill(lV0Radius,lInvMassK0s);
2498                 fHistDecayLengthV0K0vsMassK0pt1->Fill(lV0DecayLength,lInvMassK0s);
2499                 fHistDcaV0DaughtersK0vsMassK0pt1->Fill(lDcaV0Daughters,lInvMassK0s);
2500                 fHistCosPointAngleK0vsMassK0pt1->Fill(lV0cosPointAngle,lInvMassK0s);
2501               }   
2502               if (lPtK0s > 3 && lPtK0s < 6){ 
2503                 fHistDcaPosToPrimVertexK0vsMassK0pt2->Fill(lDcaPosToPrimVertex,lInvMassK0s);
2504                 fHistDcaNegToPrimVertexK0vsMassK0pt2->Fill(lDcaNegToPrimVertex,lInvMassK0s);
2505                 fHistRadiusV0K0vsMassK0pt2->Fill(lV0Radius,lInvMassK0s);
2506                 fHistDecayLengthV0K0vsMassK0pt2->Fill(lV0DecayLength,lInvMassK0s);
2507                 fHistDcaV0DaughtersK0vsMassK0pt2->Fill(lDcaV0Daughters,lInvMassK0s);
2508                 fHistCosPointAngleK0vsMassK0pt2->Fill(lV0cosPointAngle,lInvMassK0s);
2509               }   
2510               if (lPtK0s > 6 && lPtK0s < 10){ 
2511                 fHistDcaPosToPrimVertexK0vsMassK0pt3->Fill(lDcaPosToPrimVertex,lInvMassK0s);
2512                 fHistDcaNegToPrimVertexK0vsMassK0pt3->Fill(lDcaNegToPrimVertex,lInvMassK0s);
2513                 fHistRadiusV0K0vsMassK0pt3->Fill(lV0Radius,lInvMassK0s);
2514                 fHistDecayLengthV0K0vsMassK0pt3->Fill(lV0DecayLength,lInvMassK0s);
2515                 fHistDcaV0DaughtersK0vsMassK0pt3->Fill(lDcaV0Daughters,lInvMassK0s);
2516                 fHistCosPointAngleK0vsMassK0pt3->Fill(lV0cosPointAngle,lInvMassK0s);
2517               }   
2518             } //fQASelector
2519           }
2520         } // if rap. condition
2521       } // end cTau condition
2522
2523
2524       ////////////////////////////
2525       //
2526       //    Lambda
2527       //
2528       ////////////////////////////
2529
2530
2531       if (lcTauLambda < cutcTauL){
2532
2533     
2534         //    if ((LambdaPID==1 && lPosMom <=1 ) || (lPosMom>1 ) ||  !(fUsePID.Contains("withPID"))){    This was set before. Global momentum used instead InnerWall momentum. which one is ok?
2535         if ((LambdaPID==1 && lMomInnerWallPos  <=1 ) || (lMomInnerWallPos >1 ) ||  !(fUsePID.Contains("withPID"))){  
2536
2537           if (TMath::Abs(lRapLambda) < lCutRap) {
2538
2539             //////2D histos: cut vs on fly status/////////////////////
2540
2541             fHistDcaPosToPrimVertexL->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
2542             fHistDcaNegToPrimVertexL->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
2543             fHistRadiusV0L->Fill(lV0Radius,lOnFlyStatus);
2544             fHistDecayLengthV0L->Fill(lV0DecayLength,lOnFlyStatus);
2545             fHistDcaV0DaughtersL->Fill(lDcaV0Daughters,lOnFlyStatus);
2546             fHistChi2L->Fill(lChi2V0,lOnFlyStatus);
2547             fHistCosPointAngleL->Fill(lV0cosPointAngle,lOnFlyStatus);
2548
2549             //////2D histos: cut vs mass/////////////////////
2550
2551             if (lOnFlyStatus==0){
2552               fHistMassLambda->Fill(lInvMassLambda);
2553               fHistMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
2554               fHistPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
2555               if(lPtLambda <=1) fHistNSigmaProton->Fill(nSigmaPosProton);
2556
2557               fHistDcaPosToPrimVertexLvsMassL->Fill(lDcaPosToPrimVertex,lInvMassLambda);
2558               fHistDcaNegToPrimVertexLvsMassL->Fill(lDcaNegToPrimVertex,lInvMassLambda);
2559               fHistRadiusV0LvsMassL->Fill(lV0Radius,lInvMassLambda);
2560               fHistDecayLengthV0LvsMassL->Fill(lV0DecayLength,lInvMassLambda);
2561               fHistDcaV0DaughtersLvsMassL->Fill(lDcaV0Daughters,lInvMassLambda);
2562               fHistCosPointAngleLvsMassL->Fill(lV0cosPointAngle,lInvMassLambda);
2563
2564               if(fQASelector){            
2565                 if (lPtLambda>0 && lPtLambda <3){ 
2566                   fHistDcaPosToPrimVertexLambdaVsMasspt1->Fill(lDcaPosToPrimVertex,lInvMassLambda);
2567                   fHistDcaNegToPrimVertexLambdaVsMasspt1->Fill(lDcaNegToPrimVertex,lInvMassLambda);
2568                   fHistRadiusV0LambdaVsMasspt1->Fill(lV0Radius,lInvMassLambda);
2569                   fHistDecayLengthV0LambdaVsMasspt1->Fill(lV0DecayLength,lInvMassLambda);
2570                   fHistDcaV0DaughtersLambdaVsMasspt1->Fill(lDcaV0Daughters,lInvMassLambda);
2571                   fHistCosPointAngleLambdaVsMasspt1->Fill(lV0cosPointAngle,lInvMassLambda);
2572                 }   
2573                 if (lPtLambda > 3 && lPtLambda < 6){ 
2574                   fHistDcaPosToPrimVertexLambdaVsMasspt2->Fill(lDcaPosToPrimVertex,lInvMassLambda);
2575                   fHistDcaNegToPrimVertexLambdaVsMasspt2->Fill(lDcaNegToPrimVertex,lInvMassLambda);
2576                   fHistRadiusV0LambdaVsMasspt2->Fill(lV0Radius,lInvMassLambda);
2577                   fHistDecayLengthV0LambdaVsMasspt2->Fill(lV0DecayLength,lInvMassLambda);
2578                   fHistDcaV0DaughtersLambdaVsMasspt2->Fill(lDcaV0Daughters,lInvMassLambda);
2579                   fHistCosPointAngleLambdaVsMasspt2->Fill(lV0cosPointAngle,lInvMassLambda);
2580                 }   
2581                 if (lPtLambda > 6 && lPtLambda < 10){ 
2582                   fHistDcaPosToPrimVertexLambdaVsMasspt3->Fill(lDcaPosToPrimVertex,lInvMassLambda);
2583                   fHistDcaNegToPrimVertexLambdaVsMasspt3->Fill(lDcaNegToPrimVertex,lInvMassLambda);
2584                   fHistRadiusV0LambdaVsMasspt3->Fill(lV0Radius,lInvMassLambda);
2585                   fHistDecayLengthV0LambdaVsMasspt3->Fill(lV0DecayLength,lInvMassLambda);
2586                   fHistDcaV0DaughtersLambdaVsMasspt3->Fill(lDcaV0Daughters,lInvMassLambda);
2587                   fHistCosPointAngleLambdaVsMasspt3->Fill(lV0cosPointAngle,lInvMassLambda);
2588                 }   
2589               }//QA Selector
2590             }
2591           } //end of Rap condition
2592         } // end of PID condition
2593       }  //end cTau condition
2594
2595
2596       ////////////////////////////
2597       //
2598       //    Anti-Lambda
2599       //
2600       ////////////////////////////
2601
2602
2603       if (lcTauAntiLambda < cutcTauL){
2604
2605         //    if ((AntiLambdaPID==1 && lNegMom <=1) || (lNegMom>1) ||  !(fUsePID.Contains("withPID"))){  
2606         if ((AntiLambdaPID==1 && lMomInnerWallNeg <=1) || (lMomInnerWallNeg >1) ||  !(fUsePID.Contains("withPID"))){  
2607           if (TMath::Abs(lRapAntiLambda) < lCutRap) {
2608
2609             //////2D histos: cut vs on fly status/////////////////////
2610
2611             fHistDcaPosToPrimVertexAntiL->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
2612             fHistDcaNegToPrimVertexAntiL->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
2613             fHistRadiusV0AntiL->Fill(lV0Radius,lOnFlyStatus);
2614             fHistDecayLengthV0AntiL->Fill(lV0DecayLength,lOnFlyStatus);
2615             fHistDcaV0DaughtersAntiL->Fill(lDcaV0Daughters,lOnFlyStatus);
2616             fHistChi2AntiL->Fill(lChi2V0,lOnFlyStatus);
2617             fHistCosPointAngleAntiL->Fill(lV0cosPointAngle,lOnFlyStatus);
2618
2619             //////2D histos: cut vs mass/////////////////////
2620
2621             if (lOnFlyStatus==0){
2622
2623               fHistMassAntiLambda->Fill(lInvMassAntiLambda);
2624               fHistMassVsRadiusAntiLambda->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
2625               fHistPtVsMassAntiLambda->Fill(lInvMassAntiLambda,lPtAntiLambda);
2626
2627
2628               fHistDcaPosToPrimVertexAntiLvsMass->Fill(lDcaPosToPrimVertex,lInvMassAntiLambda);
2629               fHistDcaNegToPrimVertexAntiLvsMass->Fill(lDcaNegToPrimVertex,lInvMassAntiLambda);
2630               fHistRadiusV0AntiLvsMass->Fill(lV0Radius,lInvMassAntiLambda);
2631               fHistDecayLengthV0AntiLvsMass->Fill(lV0DecayLength,lInvMassAntiLambda);
2632               fHistDcaV0DaughtersAntiLvsMass->Fill(lDcaV0Daughters,lInvMassAntiLambda);
2633               fHistCosPointAngleAntiLvsMass->Fill(lV0cosPointAngle,lInvMassAntiLambda);
2634
2635               if(fQASelector){            
2636                 if (lPtAntiLambda>0 && lPtAntiLambda <3){ 
2637                   fHistDcaPosToPrimVertexAntiLVsMasspt1->Fill(lDcaPosToPrimVertex,lInvMassAntiLambda);
2638                   fHistDcaNegToPrimVertexAntiLVsMasspt1->Fill(lDcaNegToPrimVertex,lInvMassAntiLambda);
2639                   fHistRadiusV0AntiLVsMasspt1->Fill(lV0Radius,lInvMassAntiLambda);
2640                   fHistDecayLengthV0AntiLVsMasspt1->Fill(lV0DecayLength,lInvMassAntiLambda);
2641                   fHistDcaV0DaughtersAntiLVsMasspt1->Fill(lDcaV0Daughters,lInvMassAntiLambda);
2642                   fHistCosPointAngleAntiLVsMasspt1->Fill(lV0cosPointAngle,lInvMassAntiLambda);
2643                 }   
2644                 if (lPtAntiLambda > 3 && lPtAntiLambda < 6){ 
2645                   fHistDcaPosToPrimVertexAntiLVsMasspt2->Fill(lDcaPosToPrimVertex,lInvMassAntiLambda);
2646                   fHistDcaNegToPrimVertexAntiLVsMasspt2->Fill(lDcaNegToPrimVertex,lInvMassAntiLambda);
2647                   fHistRadiusV0AntiLVsMasspt2->Fill(lV0Radius,lInvMassAntiLambda);
2648                   fHistDecayLengthV0AntiLVsMasspt2->Fill(lV0DecayLength,lInvMassAntiLambda);
2649                   fHistDcaV0DaughtersAntiLVsMasspt2->Fill(lDcaV0Daughters,lInvMassAntiLambda);
2650                   fHistCosPointAngleAntiLVsMasspt2->Fill(lV0cosPointAngle,lInvMassAntiLambda);
2651                 }   
2652                 if (lPtAntiLambda > 6 && lPtAntiLambda < 10){ 
2653                   fHistDcaPosToPrimVertexAntiLVsMasspt3->Fill(lDcaPosToPrimVertex,lInvMassAntiLambda);
2654                   fHistDcaNegToPrimVertexAntiLVsMasspt3->Fill(lDcaNegToPrimVertex,lInvMassAntiLambda);
2655                   fHistRadiusV0AntiLVsMasspt3->Fill(lV0Radius,lInvMassAntiLambda);
2656                   fHistDecayLengthV0AntiLVsMasspt3->Fill(lV0DecayLength,lInvMassAntiLambda);
2657                   fHistDcaV0DaughtersAntiLVsMasspt3->Fill(lDcaV0Daughters,lInvMassAntiLambda);
2658                   fHistCosPointAngleAntiLVsMasspt3->Fill(lV0cosPointAngle,lInvMassAntiLambda);
2659                 }   
2660               } //QA Selector
2661             }
2662           } //end of Rap condition
2663         } // end of PID condition
2664       } //end cTau condition
2665
2666       ///////////////values for cuts end////////////////////////////////////////////////////////////////////////
2667
2668
2669       // Histo versus Rap and armenteros plot
2670       if (!lOnFlyStatus){
2671         if (lCheckMcK0Short) fHistAsMcRapK0->Fill(lRapK0s);
2672         if (lCheckMcLambda) fHistAsMcRapLambda->Fill(lRapLambda);
2673         if (lCheckMcAntiLambda) fHistAsMcRapLambda->Fill(lRapAntiLambda);
2674         //      fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0);
2675         if ((TMath::Abs(lRapK0s) < lCutRap)&&(TMath::Abs(lRapLambda) < lCutRap)) fHistK0sMassVsLambdaMass->Fill(lInvMassK0s,lInvMassLambda);
2676       }
2677
2678
2679       /////////////////////////////////////////////////
2680       //
2681       // K0s associated histograms
2682       //
2683       /////////////////////////////////////////////////
2684
2685       if (lcTauK0s< cutcTauK0s) {
2686
2687         if (TMath::Abs(lRapK0s) < lCutRap) {
2688
2689           fHistNsigmaPosPionK0->Fill(nSigmaPosPion);
2690           fHistNsigmaNegPionK0->Fill(nSigmaNegPion);
2691         
2692           switch (lOnFlyStatus){
2693           case 0 : 
2694
2695
2696             //    fHistMultVsPtVsMassK0->Fill(multiplicity ,lInvMassK0s,lPtK0s);
2697             if(lCheckPIdK0Short) fHistPidMcMassK0->Fill(lInvMassK0s);
2698             if(lCheckMcK0Short) {
2699               fHistAsMcMassK0->Fill(lInvMassK0s);
2700               fHistAsMcPtK0->Fill(lPtK0s);
2701
2702
2703               fHistAsMcPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
2704               if (lPtK0s <= 1) fHistAsMcPtZoomK0->Fill(lPtK0s);
2705               fHistAsMcMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
2706               fHistAsMcResxK0->Fill(rcPosXK0s-mcPosX);
2707               fHistAsMcResyK0->Fill(rcPosYK0s-mcPosY);
2708               fHistAsMcReszK0->Fill(rcPosZK0s-mcPosZ);
2709               fHistAsMcResrVsRadiusK0->Fill(rcPosRK0s,rcPosRK0s-mcPosR);
2710               fHistAsMcReszVsRadiusK0->Fill(rcPosZK0s,rcPosZK0s-mcPosZ);
2711               fHistAsMcProdRadiusK0->Fill(mcPosMotherR);
2712               fHistAsMcProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
2713               fHistAsMcResPtK0->Fill(deltaPtK0s);
2714               fHistAsMcResPtVsRapK0->Fill(deltaPtK0s,lRapK0s);
2715               fHistAsMcResPtVsPtK0->Fill(deltaPtK0s,lPtK0s);
2716             }
2717             else if (lCheckSecondaryK0s) {
2718               fHistAsMcSecondaryPtVsRapK0s->Fill(lPtK0s,lRapK0s);
2719               fHistAsMcSecondaryProdRadiusK0s->Fill(mcPosMotherR);
2720               fHistAsMcSecondaryProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
2721               switch (lPdgcodeMotherOfMother) {
2722               case 130   : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(0.5);break; // K0L
2723               case 321   : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(1.5);break; // K+
2724               case -321  : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(2.5);break; // K-
2725               case -3122 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(3.5);break; //AntiLambda
2726               default    : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(6.5);break;
2727               }
2728             }
2729             break;
2730           
2731           }
2732         } // end rapidity condition
2733       } //end cTau condition
2734     
2735
2736       // Associated Lambda histograms in |rap| < lCutRap
2737       if (lcTauLambda < cutcTauL){
2738
2739         //      if ((LambdaPID==1 && lMomInnerWallPos <=1) || (lMomInnerWallPos>1) ||  !(fUsePID.Contains("withPID"))){                                                                                                    
2740         if (TMath::Abs(lRapLambda) < lCutRap) {
2741
2742           fHistNsigmaPosProtonLambda->Fill(nSigmaPosProton);
2743           fHistNsigmaNegPionLambda->Fill(nSigmaNegPion);
2744           switch (lOnFlyStatus){
2745           case 0 : 
2746
2747             //          fHistMultVsPtVsMassLambda->Fill(multiplicity ,lInvMassLambda,lPtLambda);
2748             if(lCheckPIdLambda) fHistPidMcMassLambda->Fill(lInvMassLambda);
2749           
2750             if(lCheckMcLambda) {
2751               fHistAsMcMassLambda->Fill(lInvMassLambda);
2752               fHistAsMcPtLambda->Fill(lPtLambda);
2753               fHistCosPointAngleLvsMassVsPtsigL->Fill(lPtLambda,lV0cosPointAngle,lInvMassLambda);
2754
2755               fHistAsMcPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
2756               if (lPtLambda <= 1) fHistAsMcPtZoomLambda->Fill(lPtLambda);
2757               fHistAsMcMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
2758               fHistAsMcResxLambda->Fill(rcPosXLambda-mcPosX);
2759               fHistAsMcResyLambda->Fill(rcPosYLambda-mcPosY);
2760               fHistAsMcReszLambda->Fill(rcPosZLambda-mcPosZ);
2761               fHistAsMcResrVsRadiusLambda->Fill(rcPosRLambda,rcPosRLambda-mcPosR);
2762               fHistAsMcReszVsRadiusLambda->Fill(rcPosZLambda,rcPosZLambda-mcPosZ);
2763               fHistAsMcProdRadiusLambda->Fill(mcPosMotherR);
2764               fHistAsMcProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
2765               fHistAsMcResPtLambda->Fill(deltaPtLambda);
2766               fHistAsMcResPtVsRapLambda->Fill(deltaPtLambda,lRapLambda);
2767               fHistAsMcResPtVsPtLambda->Fill(deltaPtLambda,lPtLambda);
2768               if (lComeFromSigma) fHistAsMcPtLambdaFromSigma->Fill(lPtLambda);
2769               switch (lPdgcodeMotherOfMother) {
2770               case 3222 : fHistAsMcMotherPdgCodeLambda->Fill(0.5); break; // Sigma +
2771               case 3212 : fHistAsMcMotherPdgCodeLambda->Fill(1.5); break; // Sigma 0
2772               case 3112 : fHistAsMcMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
2773               case 3224 : fHistAsMcMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
2774               case 3214 : fHistAsMcMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
2775               case 3114 : fHistAsMcMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
2776               case 3322 : fHistAsMcMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
2777               case 3312 : fHistAsMcMotherPdgCodeLambda->Fill(7.5); break; // Xi -
2778               case 3334 : fHistAsMcMotherPdgCodeLambda->Fill(8.5); break; // Omega
2779               case -1   : fHistAsMcMotherPdgCodeLambda->Fill(9.5); break;
2780               default   : fHistAsMcMotherPdgCodeLambda->Fill(10.5);break; 
2781               }
2782    
2783               //printf("found Lambda RC dcaPos=%e dcaNeg=%e dcaDau=%e cosP=%e pT=%e mass=%e\n",lDcaPosToPrimVertex ,lDcaNegToPrimVertex ,lDcaV0Daughters,lV0cosPointAngle,lPtLambda,lInvMassLambda);
2784               //printf("found Lambda RC Pindex=%d  Nindex=%d  Plabel=%d  Nlabel=%d\n\n",lIndexTrackPos,lIndexTrackNeg,lLabelTrackPos,lLabelTrackNeg);
2785             
2786             }
2787           
2788             else if (lCheckSecondaryLambda) {
2789               fHistAsMcSecondaryPtVsRapLambda->Fill(lPtLambda,lRapLambda);
2790               fHistAsMcSecondaryProdRadiusLambda->Fill(mcPosMotherR); 
2791               fHistAsMcSecondaryProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
2792               if (lComeFromSigma) fHistAsMcSecondaryPtLambdaFromSigma->Fill(lPtLambda);
2793               printf(" lPdgcodeMotherOfMother= %d",lPdgcodeMotherOfMother);
2794               switch (lPdgcodeMotherOfMother) {
2795               case 3222 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(0.5); break;// Sigma +
2796               case 3212 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(1.5); break;// Sigma 0
2797               case 3112 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
2798               case 3224 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
2799               case 3214 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
2800               case 3114 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
2801               case 3322 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
2802               case 3312 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(7.5); break; // Xi -
2803               case 3334 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(8.5); break; // Omega
2804               case -1   : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(9.5); break;
2805               default   : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(10.5);break;
2806               }
2807             }
2808          
2809             if(!lCheckMcLambda)fHistCosPointAngleLvsMassVsPtbackL->Fill(lPtLambda,lV0cosPointAngle,lInvMassLambda);
2810             break;
2811           
2812           }
2813         } // end rapidity condition
2814         //    }// end PID condition
2815       }//end cTau condition
2816
2817       /////////////////////////////////////////////////////
2818       // Associated AntiLambda histograms 
2819       /////////////////////////////////////////////////////
2820
2821       if (lcTauAntiLambda < cutcTauL){
2822
2823         //     if ((AntiLambdaPID==1 && lMomInnerWallNeg <=1) || (lMomInnerWallNeg>1) ||  !(fUsePID.Contains("withPID"))){                                                                                               
2824         if (TMath::Abs(lRapAntiLambda) < lCutRap) {
2825
2826           fHistNsigmaPosProtonAntiLambda->Fill(nSigmaPosProton);
2827           fHistNsigmaNegPionAntiLambda->Fill(nSigmaNegPion);
2828           switch (lOnFlyStatus){
2829           case 0 : 
2830
2831             //          fHistMultVsPtVsMassAntiLambda->Fill(multiplicity ,lInvMassAntiLambda,lPtAntiLambda);
2832             if(lCheckPIdAntiLambda) fHistPidMcMassAntiLambda->Fill(lInvMassAntiLambda);
2833           
2834             if(lCheckMcAntiLambda) {
2835               fHistAsMcMassAntiLambda->Fill(lInvMassAntiLambda);
2836               fHistAsMcPtAntiLambda->Fill(lPtAntiLambda);
2837
2838
2839               fHistAsMcPtVsMassAntiLambda->Fill(lInvMassAntiLambda,lPtAntiLambda);
2840               if (lPtAntiLambda <= 1) fHistAsMcPtZoomAntiLambda->Fill(lPtAntiLambda);
2841               fHistAsMcMassVsRadiusAntiLambda->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
2842               fHistAsMcResxAntiLambda->Fill(rcPosXAntiLambda-mcPosX);
2843               fHistAsMcResyAntiLambda->Fill(rcPosYAntiLambda-mcPosY);
2844               fHistAsMcReszAntiLambda->Fill(rcPosZAntiLambda-mcPosZ);
2845               fHistAsMcResrVsRadiusAntiLambda->Fill(rcPosRAntiLambda,rcPosRAntiLambda-mcPosR);
2846               fHistAsMcReszVsRadiusAntiLambda->Fill(rcPosZAntiLambda,rcPosZAntiLambda-mcPosZ);
2847               fHistAsMcProdRadiusAntiLambda->Fill(mcPosMotherR);
2848               fHistAsMcProdRadiusXvsYAntiLambda->Fill(mcPosMotherX,mcPosMotherY);
2849               fHistAsMcResPtAntiLambda->Fill(deltaPtAntiLambda);
2850               fHistAsMcResPtVsRapAntiLambda->Fill(deltaPtAntiLambda,lRapAntiLambda);
2851               fHistAsMcResPtVsPtAntiLambda->Fill(deltaPtAntiLambda,lPtAntiLambda);
2852               if (lComeFromSigma) fHistAsMcPtAntiLambdaFromSigma->Fill(lPtAntiLambda);
2853               switch (lPdgcodeMotherOfMother) {
2854               case 3222 : fHistAsMcMotherPdgCodeAntiLambda->Fill(0.5); break; // Sigma +
2855               case 3212 : fHistAsMcMotherPdgCodeAntiLambda->Fill(1.5); break; // Sigma 0
2856               case 3112 : fHistAsMcMotherPdgCodeAntiLambda->Fill(2.5); break;// Sigma -
2857               case 3224 : fHistAsMcMotherPdgCodeAntiLambda->Fill(3.5); break;// Sigma(1385) +
2858               case 3214 : fHistAsMcMotherPdgCodeAntiLambda->Fill(4.5); break;// Sigma(1385) 0
2859               case 3114 : fHistAsMcMotherPdgCodeAntiLambda->Fill(5.5); break;// Sigma(1385) -
2860               case 3322 : fHistAsMcMotherPdgCodeAntiLambda->Fill(6.5); break; // Xi 0
2861               case 3312 : fHistAsMcMotherPdgCodeAntiLambda->Fill(7.5); break; // Xi -
2862               case 3334 : fHistAsMcMotherPdgCodeAntiLambda->Fill(8.5); break; // Omega
2863
2864               case -1   : fHistAsMcMotherPdgCodeAntiLambda->Fill(9.5); break;
2865               default   : fHistAsMcMotherPdgCodeAntiLambda->Fill(10.5);break; 
2866               }
2867     
2868               //printf("found AntiLambda RC dcaPos=%e dcaNeg=%e dcaDau=%e cosP=%e pT=%e mass=%e\n",lDcaPosToPrimVertex ,lDcaNegToPrimVertex ,lDcaV0Daughters,lV0cosPointAngle,lPtAntiLambda,lInvMassAntiLambda);
2869               //printf("found AntiLambda RC Pindex=%d  Nindex=%d  Plabel=%d  Nlabel=%d\n\n",lIndexTrackPos,lIndexTrackNeg,lLabelTrackPos,lLabelTrackNeg);
2870             
2871             }
2872           
2873             else if (lCheckSecondaryAntiLambda) {
2874               fHistAsMcSecondaryPtVsRapAntiLambda->Fill(lPtAntiLambda,lRapAntiLambda);
2875               fHistAsMcSecondaryProdRadiusAntiLambda->Fill(mcPosMotherR); 
2876               fHistAsMcSecondaryProdRadiusXvsYAntiLambda->Fill(mcPosMotherX,mcPosMotherY);
2877               if (lComeFromSigma) fHistAsMcSecondaryPtAntiLambdaFromSigma->Fill(lPtAntiLambda);
2878               printf(" lPdgcodeMotherOfMother= %d",lPdgcodeMotherOfMother);
2879               switch (lPdgcodeMotherOfMother) {
2880               case 3222 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(0.5); break;// Sigma +
2881               case 3212 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(1.5); break;// Sigma 0
2882               case 3112 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(2.5); break;// Sigma -
2883               case 3224 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(3.5); break;// Sigma(1385) +
2884               case 3214 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(4.5); break;// Sigma(1385) 0
2885               case 3114 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(5.5); break;// Sigma(1385) -
2886               case 3322 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(6.5); break; // Xi 0
2887               case 3312 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(7.5); break; // Xi -
2888               case 3334 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(8.5); break; // Omega
2889               case -1   : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(9.5); break;
2890               default   : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(10.5);break;
2891               }
2892             }
2893             break;
2894           
2895           }
2896         } // end rapidity condition
2897         // }// end PID condition       
2898       }//end cTau condition
2899
2900     } // end V0 loop
2901
2902     //  if (primaryVtxKF) delete primaryVtxKF;primaryVtxKF=NULL ;
2903
2904
2905     fHistV0Multiplicity->Fill(nv0s);
2906     //  fHistV0MultiplicityMI->Fill(nv0sMI);
2907
2908     if (fAnalysisType == "AOD") { if(myPrimaryVertex) delete myPrimaryVertex; }
2909
2910   
2911     // Post output data
2912   }      
2913
2914 }
2915 //________________________________________________________________________
2916 void AliAnalysisTaskPerformanceStrangeAOD::Terminate(Option_t *) 
2917
2918 }
2919
2920 //----------------------------------------------------------------------------
2921
2922 Double_t AliAnalysisTaskPerformanceStrangeAOD::MyRapidity(Double_t rE, Double_t rPz) const
2923 {
2924   // Local calculation for rapidity
2925   return 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
2926
2927 //----------------------------------------------------------------------------
2928