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