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