2 /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //-----------------------------------------------------------------
17 // AliAnalysisTaskPerformanceStrange class
18 // This task is for a performance study of V0 identification.
19 // It works with MC info and ESD tree.
20 // Author: H.Ricaud, H.Ricaud@gsi.de
21 //-----------------------------------------------------------------
23 #include <Riostream.h>
37 #include "AliAnalysisManager.h"
39 #include "AliPhysicsSelection.h"
40 #include "AliBackgroundSelection.h"
42 #include "AliESDVertex.h"
43 #include "AliESDEvent.h"
44 #include "AliESDInputHandler.h"
45 #include "AliESDtrack.h"
47 #include "AliESDtrackCuts.h"
48 #include "AliESDpid.h"
49 #include "AliMultiplicity.h"
51 #include "AliAODEvent.h"
52 #include "AliAODVertex.h"
53 #include "AliAODTrack.h"
55 #include "AliAODMCHeader.h"
56 #include "AliAODInputHandler.h"
58 //#include "AliV0vertexer.h"
60 #include "AliAODMCParticle.h"
62 #include "AliMCEventHandler.h"
63 #include "AliMCEvent.h"
65 #include "AliGenEventHeader.h"
69 #include "AliKFVertex.h"
70 #include "AliVertexerTracks.h"
72 #include "AliAnalysisTaskPerformanceStrange.h"
73 #include "AliAnalysisCentralitySelector.h"
74 #include "AliPIDResponse.h"
75 #include "AliCentrality.h"
79 ClassImp(AliAnalysisTaskPerformanceStrange)
82 //________________________________________________________________________
83 AliAnalysisTaskPerformanceStrange::AliAnalysisTaskPerformanceStrange()
84 : AliAnalysisTaskSE(), fAnalysisMC(0), fAnalysisType("infoType"), fCollidingSystems(0), fUsePID("infoPID"), fUseCut("infoCut"),fDown(0),fUp(0), fESD(0), fListHist(0),fCentrSelector(0),fTracksCuts(0),fPIDResponse(0),fQASelector(0),
86 fHistMCPrimaryVertexX(0),
87 fHistMCPrimaryVertexY(0),
88 fHistMCPrimaryVertexZ(0),
89 fHistPtTracksITSRefit(0),
91 fHistPtTracksPITSRefit(0),
93 fHistMCMultiplicityPrimary(0),
94 fHistMCMultiplicityTracks(0),
96 fHistMCtracksProdRadiusK0s(0),
97 fHistMCtracksProdRadiusLambda(0),
98 fHistMCtracksProdRadiusAntiLambda(0),
99 fHistMCtracksDecayRadiusK0s(0),
100 fHistMCtracksDecayRadiusLambda(0),
101 fHistMCtracksDecayRadiusAntiLambda(0),
104 fHistMCPtAllLambda(0),
105 fHistMCPtAllAntiLambda(0),
108 fHistMCPtAllK0sRap3(0),
109 fHistMCPtAllLambdaRap3(0),
110 fHistMCPtAllAntiLambdaRap3(0),
113 fHistMCProdRadiusK0s(0),
114 fHistMCProdRadiusLambda(0),
115 fHistMCProdRadiusAntiLambda(0),
117 fHistMCRapInPtRangeK0s(0),
119 fHistMCRapInPtRangeLambda(0),
120 fHistMCRapAntiLambda(0),
121 fHistMCRapInPtRangeAntiLambda(0),
123 fHistMCRapInPtRangeXi(0),
125 fHistMCRapInPtRangePhi(0),
126 ////////////////////////////////////////
130 fHistMCPtAntiLambda(0),
134 fHistMCPtLambdaRap3(0),
135 fHistMCPtAntiLambdaRap3(0),
138 ///////////////////////////////////////////
140 fHistMCPtLambdaFromSigma(0),
141 fHistMCPtAntiLambdaFromSigma(0),
142 fHistNTimesRecK0s(0),
143 fHistNTimesRecLambda(0),
144 fHistNTimesRecAntiLambda(0),
145 fHistNTimesRecK0sVsPt(0),
146 fHistNTimesRecLambdaVsPt(0),
147 fHistNTimesRecAntiLambdaVsPt(0),
148 fHistNumberEvents(0),
149 fHistTrackPerEvent(0),
151 fHistTrackletPerEvent(0),
152 fHistMCDaughterTrack(0),
153 fHistSPDPrimaryVertexZ(0),
154 fHistPrimaryVertexX(0),
155 fHistPrimaryVertexY(0),
156 fHistPrimaryVertexZ(0),
157 fHistPrimaryVertexResX(0),
158 fHistPrimaryVertexResY(0),
159 fHistPrimaryVertexResZ(0),
160 fHistPrimaryVertexPosXV0events(0),
161 fHistPrimaryVertexPosYV0events(0),
162 fHistPrimaryVertexPosZV0events(0),
164 ////////////////////////////////////////
166 fHistDcaPosToPrimVertexK0(0),
167 fHistDcaNegToPrimVertexK0(0),
169 fHistDecayLengthV0K0(0),
170 fHistDcaV0DaughtersK0(0),
172 fHistCosPointAngleK0(0),
174 fHistDcaPosToPrimVertexK0vsMassK0(0),
175 fHistDcaNegToPrimVertexK0vsMassK0(0),
176 fHistRadiusV0K0vsMassK0(0),
177 fHistDecayLengthV0K0vsMassK0(0),
178 fHistDcaV0DaughtersK0vsMassK0(0),
179 fHistCosPointAngleK0vsMassK0(0),
181 fHistDcaPosToPrimVertexK0vsMassK0pt1(0),
182 fHistDcaNegToPrimVertexK0vsMassK0pt1(0),
183 fHistRadiusV0K0vsMassK0pt1(0),
184 fHistDecayLengthV0K0vsMassK0pt1(0),
185 fHistDcaV0DaughtersK0vsMassK0pt1(0),
186 fHistCosPointAngleK0vsMassK0pt1(0),
188 fHistDcaPosToPrimVertexK0vsMassK0pt2(0),
189 fHistDcaNegToPrimVertexK0vsMassK0pt2(0),
190 fHistRadiusV0K0vsMassK0pt2(0),
191 fHistDecayLengthV0K0vsMassK0pt2(0),
192 fHistDcaV0DaughtersK0vsMassK0pt2(0),
193 fHistCosPointAngleK0vsMassK0pt2(0),
195 fHistDcaPosToPrimVertexK0vsMassK0pt3(0),
196 fHistDcaNegToPrimVertexK0vsMassK0pt3(0),
197 fHistRadiusV0K0vsMassK0pt3(0),
198 fHistDecayLengthV0K0vsMassK0pt3(0),
199 fHistDcaV0DaughtersK0vsMassK0pt3(0),
200 fHistCosPointAngleK0vsMassK0pt3(0),
202 /////////// Lambda ///////////////////////////
204 fHistDcaPosToPrimVertexL(0),
205 fHistDcaNegToPrimVertexL(0),
207 fHistDecayLengthV0L(0),
208 fHistDcaV0DaughtersL(0),
210 fHistCosPointAngleL(0),
213 fHistDcaPosToPrimVertexLvsMassL(0),
214 fHistDcaNegToPrimVertexLvsMassL(0),
215 fHistRadiusV0LvsMassL(0),
216 fHistDecayLengthV0LvsMassL(0),
217 fHistDcaV0DaughtersLvsMassL(0),
218 fHistCosPointAngleLvsMassL(0),
219 fHistCosPointAngleLvsMassVsPtsigL(0),
220 fHistCosPointAngleLvsMassVsPtbackL(0),
223 fHistDcaPosToPrimVertexLambdaVsMasspt1(0),
224 fHistDcaNegToPrimVertexLambdaVsMasspt1(0),
225 fHistRadiusV0LambdaVsMasspt1(0),
226 fHistDecayLengthV0LambdaVsMasspt1(0),
227 fHistDcaV0DaughtersLambdaVsMasspt1(0),
228 fHistCosPointAngleLambdaVsMasspt1(0),
230 fHistDcaPosToPrimVertexLambdaVsMasspt2(0),
231 fHistDcaNegToPrimVertexLambdaVsMasspt2(0),
232 fHistRadiusV0LambdaVsMasspt2(0),
233 fHistDecayLengthV0LambdaVsMasspt2(0),
234 fHistDcaV0DaughtersLambdaVsMasspt2(0),
235 fHistCosPointAngleLambdaVsMasspt2(0),
237 fHistDcaPosToPrimVertexLambdaVsMasspt3(0),
238 fHistDcaNegToPrimVertexLambdaVsMasspt3(0),
239 fHistRadiusV0LambdaVsMasspt3(0),
240 fHistDecayLengthV0LambdaVsMasspt3(0),
241 fHistDcaV0DaughtersLambdaVsMasspt3(0),
242 fHistCosPointAngleLambdaVsMasspt3(0),
246 /////////Antilambda ///////////////////
247 fHistDcaPosToPrimVertexAntiL(0),
248 fHistDcaNegToPrimVertexAntiL(0),
249 fHistRadiusV0AntiL(0),
250 fHistDecayLengthV0AntiL(0),
251 fHistDcaV0DaughtersAntiL(0),
253 fHistCosPointAngleAntiL(0),
255 fHistDcaPosToPrimVertexAntiLvsMass(0),
256 fHistDcaNegToPrimVertexAntiLvsMass(0),
257 fHistRadiusV0AntiLvsMass(0),
258 fHistDecayLengthV0AntiLvsMass(0),
259 fHistDcaV0DaughtersAntiLvsMass(0),
260 fHistCosPointAngleAntiLvsMass(0),
264 fHistDcaPosToPrimVertexAntiLVsMasspt1(0),
265 fHistDcaNegToPrimVertexAntiLVsMasspt1(0),
266 fHistRadiusV0AntiLVsMasspt1(0),
267 fHistDecayLengthV0AntiLVsMasspt1(0),
268 fHistDcaV0DaughtersAntiLVsMasspt1(0),
269 fHistCosPointAngleAntiLVsMasspt1(0),
271 fHistDcaPosToPrimVertexAntiLVsMasspt2(0),
272 fHistDcaNegToPrimVertexAntiLVsMasspt2(0),
273 fHistRadiusV0AntiLVsMasspt2(0),
274 fHistDecayLengthV0AntiLVsMasspt2(0),
275 fHistDcaV0DaughtersAntiLVsMasspt2(0),
276 fHistCosPointAngleAntiLVsMasspt2(0),
278 fHistDcaPosToPrimVertexAntiLVsMasspt3(0),
279 fHistDcaNegToPrimVertexAntiLVsMasspt3(0),
280 fHistRadiusV0AntiLVsMasspt3(0),
281 fHistDecayLengthV0AntiLVsMasspt3(0),
282 fHistDcaV0DaughtersAntiLVsMasspt3(0),
283 fHistCosPointAngleAntiLVsMasspt3(0),
285 /////////////////////////////////////////
286 fHistV0Multiplicity(0),
289 fHistMassAntiLambda(0),
290 fHistMassVsRadiusK0(0),
291 fHistMassVsRadiusLambda(0),
292 fHistMassVsRadiusAntiLambda(0),
294 ///////////////////////////////////////
296 fHistPtVsMassLambda(0),
297 fHistPtVsMassAntiLambda(0),
300 fHistPtVsMassK0Rap3(0),
301 fHistPtVsMassLambdaRap3(0),
302 fHistPtVsMassAntiLambdaRap3(0),
304 ////////////////////////////////////////
306 fHistArmenterosPodolanski(0),
307 fHistK0sMassVsLambdaMass(0),
308 fHistTPCsigPLambda(0),
309 fHistTPCsigPAntiLambda(0),
310 fHistNSigmaProton(0),
311 fHistNsigmaPosPionAntiLambda(0),
312 fHistNsigmaNegProtonAntiLambda(0),
313 fHistNsigmaPosProtonLambda(0),
314 fHistNsigmaNegPionLambda(0),
315 fHistNsigmaPosProtonAntiLambda(0),
316 fHistNsigmaNegPionAntiLambda(0),
317 fHistNsigmaPosPionK0(0),
318 fHistNsigmaNegPionK0(0),
320 fHistAsMcRapLambda(0),
321 fHistAsMcRapAntiLambda(0),
322 /////////////////////
325 fHistAsMcPtLambda(0),
326 fHistAsMcPtAntiLambda(0),
329 fHistAsMcPtK0Rap3(0),
330 fHistAsMcPtLambdaRap3(0),
331 fHistAsMcPtAntiLambdaRap3(0),
334 /////////////////////////////////////
336 fHistAsMcPtZoomK0(0),
337 fHistAsMcPtZoomLambda(0),
338 fHistAsMcPtZoomAntiLambda(0),
339 fHistAsMcProdRadiusK0(0),
340 fHistAsMcProdRadiusLambda(0),
341 fHistAsMcProdRadiusAntiLambda(0),
342 fHistAsMcProdRadiusXvsYK0s(0),
343 fHistAsMcProdRadiusXvsYLambda(0),
344 fHistAsMcProdRadiusXvsYAntiLambda(0),
346 fHistPidMcMassLambda(0),
347 fHistPidMcMassAntiLambda(0),
350 ///////////////////////////////
353 fHistAsMcMassLambda(0),
354 fHistAsMcMassAntiLambda(0),
357 fHistAsMcMassK0Rap3(0),
358 fHistAsMcMassLambdaRap3(0),
359 fHistAsMcMassAntiLambdaRap3(0),
362 fHistAsMcPtVsMassK0(0),
363 fHistAsMcPtVsMassLambda(0),
364 fHistAsMcPtVsMassAntiLambda(0),
367 fHistAsMcPtVsMassK0Rap3(0),
368 fHistAsMcPtVsMassLambdaRap3(0),
369 fHistAsMcPtVsMassAntiLambdaRap3(0),
371 ///////////////////////////////////////
373 fHistAsMcMassVsRadiusK0(0),
374 fHistAsMcMassVsRadiusLambda(0),
375 fHistAsMcMassVsRadiusAntiLambda(0),
379 fHistAsMcResrVsRadiusK0(0),
380 fHistAsMcReszVsRadiusK0(0),
381 fHistAsMcResxLambda(0),
382 fHistAsMcResyLambda(0),
383 fHistAsMcReszLambda(0),
384 fHistAsMcResrVsRadiusLambda(0),
385 fHistAsMcReszVsRadiusLambda(0),
386 fHistAsMcResxAntiLambda(0),
387 fHistAsMcResyAntiLambda(0),
388 fHistAsMcReszAntiLambda(0),
389 fHistAsMcResrVsRadiusAntiLambda(0),
390 fHistAsMcReszVsRadiusAntiLambda(0),
392 fHistAsMcResPtLambda(0),
393 fHistAsMcResPtAntiLambda(0),
394 fHistAsMcResPtVsRapK0(0),
395 fHistAsMcResPtVsRapLambda(0),
396 fHistAsMcResPtVsRapAntiLambda(0),
397 fHistAsMcResPtVsPtK0(0),
398 fHistAsMcResPtVsPtLambda(0),
399 fHistAsMcResPtVsPtAntiLambda(0),
400 fHistAsMcMotherPdgCodeK0s(0),
401 fHistAsMcMotherPdgCodeLambda(0),
402 fHistAsMcMotherPdgCodeAntiLambda(0),
403 fHistAsMcPtLambdaFromSigma(0),
404 fHistAsMcPtAntiLambdaFromSigma(0),
405 fHistAsMcSecondaryPtVsRapK0s(0),
406 fHistAsMcSecondaryPtVsRapLambda(0),
407 fHistAsMcSecondaryPtVsRapAntiLambda(0),
408 fHistAsMcSecondaryProdRadiusK0s(0),
409 fHistAsMcSecondaryProdRadiusLambda(0),
410 fHistAsMcSecondaryProdRadiusAntiLambda(0),
411 fHistAsMcSecondaryProdRadiusXvsYK0s(0),
412 fHistAsMcSecondaryProdRadiusXvsYLambda(0),
413 fHistAsMcSecondaryProdRadiusXvsYAntiLambda(0),
414 fHistAsMcSecondaryMotherPdgCodeK0s(0),
415 fHistAsMcSecondaryMotherPdgCodeLambda(0),
416 fHistAsMcSecondaryMotherPdgCodeAntiLambda(0),
417 fHistAsMcSecondaryPtLambdaFromSigma(0),
418 fHistAsMcSecondaryPtAntiLambdaFromSigma(0)
428 //________________________________________________________________________
429 AliAnalysisTaskPerformanceStrange::AliAnalysisTaskPerformanceStrange(const char *name)
430 : 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),
432 fHistMCPrimaryVertexX(0),
433 fHistMCPrimaryVertexY(0),
434 fHistMCPrimaryVertexZ(0),
435 fHistPtTracksITSRefit(0),
437 fHistPtTracksPITSRefit(0),
439 fHistMCMultiplicityPrimary(0),
440 fHistMCMultiplicityTracks(0),
442 fHistMCtracksProdRadiusK0s(0),
443 fHistMCtracksProdRadiusLambda(0),
444 fHistMCtracksProdRadiusAntiLambda(0),
445 fHistMCtracksDecayRadiusK0s(0),
446 fHistMCtracksDecayRadiusLambda(0),
447 fHistMCtracksDecayRadiusAntiLambda(0),
450 fHistMCPtAllLambda(0),
451 fHistMCPtAllAntiLambda(0),
454 fHistMCPtAllK0sRap3(0),
455 fHistMCPtAllLambdaRap3(0),
456 fHistMCPtAllAntiLambdaRap3(0),
459 fHistMCProdRadiusK0s(0),
460 fHistMCProdRadiusLambda(0),
461 fHistMCProdRadiusAntiLambda(0),
463 fHistMCRapInPtRangeK0s(0),
465 fHistMCRapInPtRangeLambda(0),
466 fHistMCRapAntiLambda(0),
467 fHistMCRapInPtRangeAntiLambda(0),
469 fHistMCRapInPtRangeXi(0),
471 fHistMCRapInPtRangePhi(0),
472 ////////////////////////////////////////
476 fHistMCPtAntiLambda(0),
480 fHistMCPtLambdaRap3(0),
481 fHistMCPtAntiLambdaRap3(0),
484 ///////////////////////////////////////////
486 fHistMCPtLambdaFromSigma(0),
487 fHistMCPtAntiLambdaFromSigma(0),
488 fHistNTimesRecK0s(0),
489 fHistNTimesRecLambda(0),
490 fHistNTimesRecAntiLambda(0),
491 fHistNTimesRecK0sVsPt(0),
492 fHistNTimesRecLambdaVsPt(0),
493 fHistNTimesRecAntiLambdaVsPt(0),
494 fHistNumberEvents(0),
495 fHistTrackPerEvent(0),
497 fHistTrackletPerEvent(0),
498 fHistMCDaughterTrack(0),
499 fHistSPDPrimaryVertexZ(0),
500 fHistPrimaryVertexX(0),
501 fHistPrimaryVertexY(0),
502 fHistPrimaryVertexZ(0),
503 fHistPrimaryVertexResX(0),
504 fHistPrimaryVertexResY(0),
505 fHistPrimaryVertexResZ(0),
506 fHistPrimaryVertexPosXV0events(0),
507 fHistPrimaryVertexPosYV0events(0),
508 fHistPrimaryVertexPosZV0events(0),
510 ////////////////////////////////////////
512 fHistDcaPosToPrimVertexK0(0),
513 fHistDcaNegToPrimVertexK0(0),
515 fHistDecayLengthV0K0(0),
516 fHistDcaV0DaughtersK0(0),
518 fHistCosPointAngleK0(0),
520 fHistDcaPosToPrimVertexK0vsMassK0(0),
521 fHistDcaNegToPrimVertexK0vsMassK0(0),
522 fHistRadiusV0K0vsMassK0(0),
523 fHistDecayLengthV0K0vsMassK0(0),
524 fHistDcaV0DaughtersK0vsMassK0(0),
525 fHistCosPointAngleK0vsMassK0(0),
527 fHistDcaPosToPrimVertexK0vsMassK0pt1(0),
528 fHistDcaNegToPrimVertexK0vsMassK0pt1(0),
529 fHistRadiusV0K0vsMassK0pt1(0),
530 fHistDecayLengthV0K0vsMassK0pt1(0),
531 fHistDcaV0DaughtersK0vsMassK0pt1(0),
532 fHistCosPointAngleK0vsMassK0pt1(0),
534 fHistDcaPosToPrimVertexK0vsMassK0pt2(0),
535 fHistDcaNegToPrimVertexK0vsMassK0pt2(0),
536 fHistRadiusV0K0vsMassK0pt2(0),
537 fHistDecayLengthV0K0vsMassK0pt2(0),
538 fHistDcaV0DaughtersK0vsMassK0pt2(0),
539 fHistCosPointAngleK0vsMassK0pt2(0),
541 fHistDcaPosToPrimVertexK0vsMassK0pt3(0),
542 fHistDcaNegToPrimVertexK0vsMassK0pt3(0),
543 fHistRadiusV0K0vsMassK0pt3(0),
544 fHistDecayLengthV0K0vsMassK0pt3(0),
545 fHistDcaV0DaughtersK0vsMassK0pt3(0),
546 fHistCosPointAngleK0vsMassK0pt3(0),
548 /////////// Lambda ///////////////////////////
550 fHistDcaPosToPrimVertexL(0),
551 fHistDcaNegToPrimVertexL(0),
553 fHistDecayLengthV0L(0),
554 fHistDcaV0DaughtersL(0),
556 fHistCosPointAngleL(0),
559 fHistDcaPosToPrimVertexLvsMassL(0),
560 fHistDcaNegToPrimVertexLvsMassL(0),
561 fHistRadiusV0LvsMassL(0),
562 fHistDecayLengthV0LvsMassL(0),
563 fHistDcaV0DaughtersLvsMassL(0),
564 fHistCosPointAngleLvsMassL(0),
565 fHistCosPointAngleLvsMassVsPtsigL(0),
566 fHistCosPointAngleLvsMassVsPtbackL(0),
569 fHistDcaPosToPrimVertexLambdaVsMasspt1(0),
570 fHistDcaNegToPrimVertexLambdaVsMasspt1(0),
571 fHistRadiusV0LambdaVsMasspt1(0),
572 fHistDecayLengthV0LambdaVsMasspt1(0),
573 fHistDcaV0DaughtersLambdaVsMasspt1(0),
574 fHistCosPointAngleLambdaVsMasspt1(0),
576 fHistDcaPosToPrimVertexLambdaVsMasspt2(0),
577 fHistDcaNegToPrimVertexLambdaVsMasspt2(0),
578 fHistRadiusV0LambdaVsMasspt2(0),
579 fHistDecayLengthV0LambdaVsMasspt2(0),
580 fHistDcaV0DaughtersLambdaVsMasspt2(0),
581 fHistCosPointAngleLambdaVsMasspt2(0),
583 fHistDcaPosToPrimVertexLambdaVsMasspt3(0),
584 fHistDcaNegToPrimVertexLambdaVsMasspt3(0),
585 fHistRadiusV0LambdaVsMasspt3(0),
586 fHistDecayLengthV0LambdaVsMasspt3(0),
587 fHistDcaV0DaughtersLambdaVsMasspt3(0),
588 fHistCosPointAngleLambdaVsMasspt3(0),
592 /////////Antilambda ///////////////////
593 fHistDcaPosToPrimVertexAntiL(0),
594 fHistDcaNegToPrimVertexAntiL(0),
595 fHistRadiusV0AntiL(0),
596 fHistDecayLengthV0AntiL(0),
597 fHistDcaV0DaughtersAntiL(0),
599 fHistCosPointAngleAntiL(0),
601 fHistDcaPosToPrimVertexAntiLvsMass(0),
602 fHistDcaNegToPrimVertexAntiLvsMass(0),
603 fHistRadiusV0AntiLvsMass(0),
604 fHistDecayLengthV0AntiLvsMass(0),
605 fHistDcaV0DaughtersAntiLvsMass(0),
606 fHistCosPointAngleAntiLvsMass(0),
610 fHistDcaPosToPrimVertexAntiLVsMasspt1(0),
611 fHistDcaNegToPrimVertexAntiLVsMasspt1(0),
612 fHistRadiusV0AntiLVsMasspt1(0),
613 fHistDecayLengthV0AntiLVsMasspt1(0),
614 fHistDcaV0DaughtersAntiLVsMasspt1(0),
615 fHistCosPointAngleAntiLVsMasspt1(0),
617 fHistDcaPosToPrimVertexAntiLVsMasspt2(0),
618 fHistDcaNegToPrimVertexAntiLVsMasspt2(0),
619 fHistRadiusV0AntiLVsMasspt2(0),
620 fHistDecayLengthV0AntiLVsMasspt2(0),
621 fHistDcaV0DaughtersAntiLVsMasspt2(0),
622 fHistCosPointAngleAntiLVsMasspt2(0),
624 fHistDcaPosToPrimVertexAntiLVsMasspt3(0),
625 fHistDcaNegToPrimVertexAntiLVsMasspt3(0),
626 fHistRadiusV0AntiLVsMasspt3(0),
627 fHistDecayLengthV0AntiLVsMasspt3(0),
628 fHistDcaV0DaughtersAntiLVsMasspt3(0),
629 fHistCosPointAngleAntiLVsMasspt3(0),
631 /////////////////////////////////////////
632 fHistV0Multiplicity(0),
635 fHistMassAntiLambda(0),
636 fHistMassVsRadiusK0(0),
637 fHistMassVsRadiusLambda(0),
638 fHistMassVsRadiusAntiLambda(0),
640 ///////////////////////////////////////
642 fHistPtVsMassLambda(0),
643 fHistPtVsMassAntiLambda(0),
646 fHistPtVsMassK0Rap3(0),
647 fHistPtVsMassLambdaRap3(0),
648 fHistPtVsMassAntiLambdaRap3(0),
650 ////////////////////////////////////////
652 fHistArmenterosPodolanski(0),
653 fHistK0sMassVsLambdaMass(0),
654 fHistTPCsigPLambda(0),
655 fHistTPCsigPAntiLambda(0),
656 fHistNSigmaProton(0),
657 fHistNsigmaPosPionAntiLambda(0),
658 fHistNsigmaNegProtonAntiLambda(0),
659 fHistNsigmaPosProtonLambda(0),
660 fHistNsigmaNegPionLambda(0),
661 fHistNsigmaPosProtonAntiLambda(0),
662 fHistNsigmaNegPionAntiLambda(0),
663 fHistNsigmaPosPionK0(0),
664 fHistNsigmaNegPionK0(0),
666 fHistAsMcRapLambda(0),
667 fHistAsMcRapAntiLambda(0),
668 /////////////////////
671 fHistAsMcPtLambda(0),
672 fHistAsMcPtAntiLambda(0),
675 fHistAsMcPtK0Rap3(0),
676 fHistAsMcPtLambdaRap3(0),
677 fHistAsMcPtAntiLambdaRap3(0),
680 /////////////////////////////////////
682 fHistAsMcPtZoomK0(0),
683 fHistAsMcPtZoomLambda(0),
684 fHistAsMcPtZoomAntiLambda(0),
685 fHistAsMcProdRadiusK0(0),
686 fHistAsMcProdRadiusLambda(0),
687 fHistAsMcProdRadiusAntiLambda(0),
688 fHistAsMcProdRadiusXvsYK0s(0),
689 fHistAsMcProdRadiusXvsYLambda(0),
690 fHistAsMcProdRadiusXvsYAntiLambda(0),
692 fHistPidMcMassLambda(0),
693 fHistPidMcMassAntiLambda(0),
696 ///////////////////////////////
699 fHistAsMcMassLambda(0),
700 fHistAsMcMassAntiLambda(0),
703 fHistAsMcMassK0Rap3(0),
704 fHistAsMcMassLambdaRap3(0),
705 fHistAsMcMassAntiLambdaRap3(0),
708 fHistAsMcPtVsMassK0(0),
709 fHistAsMcPtVsMassLambda(0),
710 fHistAsMcPtVsMassAntiLambda(0),
713 fHistAsMcPtVsMassK0Rap3(0),
714 fHistAsMcPtVsMassLambdaRap3(0),
715 fHistAsMcPtVsMassAntiLambdaRap3(0),
717 ///////////////////////////////////////
719 fHistAsMcMassVsRadiusK0(0),
720 fHistAsMcMassVsRadiusLambda(0),
721 fHistAsMcMassVsRadiusAntiLambda(0),
725 fHistAsMcResrVsRadiusK0(0),
726 fHistAsMcReszVsRadiusK0(0),
727 fHistAsMcResxLambda(0),
728 fHistAsMcResyLambda(0),
729 fHistAsMcReszLambda(0),
730 fHistAsMcResrVsRadiusLambda(0),
731 fHistAsMcReszVsRadiusLambda(0),
732 fHistAsMcResxAntiLambda(0),
733 fHistAsMcResyAntiLambda(0),
734 fHistAsMcReszAntiLambda(0),
735 fHistAsMcResrVsRadiusAntiLambda(0),
736 fHistAsMcReszVsRadiusAntiLambda(0),
738 fHistAsMcResPtLambda(0),
739 fHistAsMcResPtAntiLambda(0),
740 fHistAsMcResPtVsRapK0(0),
741 fHistAsMcResPtVsRapLambda(0),
742 fHistAsMcResPtVsRapAntiLambda(0),
743 fHistAsMcResPtVsPtK0(0),
744 fHistAsMcResPtVsPtLambda(0),
745 fHistAsMcResPtVsPtAntiLambda(0),
746 fHistAsMcMotherPdgCodeK0s(0),
747 fHistAsMcMotherPdgCodeLambda(0),
748 fHistAsMcMotherPdgCodeAntiLambda(0),
749 fHistAsMcPtLambdaFromSigma(0),
750 fHistAsMcPtAntiLambdaFromSigma(0),
751 fHistAsMcSecondaryPtVsRapK0s(0),
752 fHistAsMcSecondaryPtVsRapLambda(0),
753 fHistAsMcSecondaryPtVsRapAntiLambda(0),
754 fHistAsMcSecondaryProdRadiusK0s(0),
755 fHistAsMcSecondaryProdRadiusLambda(0),
756 fHistAsMcSecondaryProdRadiusAntiLambda(0),
757 fHistAsMcSecondaryProdRadiusXvsYK0s(0),
758 fHistAsMcSecondaryProdRadiusXvsYLambda(0),
759 fHistAsMcSecondaryProdRadiusXvsYAntiLambda(0),
760 fHistAsMcSecondaryMotherPdgCodeK0s(0),
761 fHistAsMcSecondaryMotherPdgCodeLambda(0),
762 fHistAsMcSecondaryMotherPdgCodeAntiLambda(0),
763 fHistAsMcSecondaryPtLambdaFromSigma(0),
764 fHistAsMcSecondaryPtAntiLambdaFromSigma(0)
769 // Define output slots only here
770 // Output slot #1 writes into a TList container
771 DefineOutput(1, TList::Class());
772 DefineOutput(2, AliAnalysisCentralitySelector::Class());
773 DefineOutput(3, AliESDtrackCuts::Class());
775 AliAnalysisTaskPerformanceStrange::~AliAnalysisTaskPerformanceStrange() {
779 if (fListHist && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fListHist; fListHist = 0x0; }
780 if (fCentrSelector && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCentrSelector; fCentrSelector = 0x0; }
781 if (fTracksCuts && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fTracksCuts; fTracksCuts = 0x0; }
785 //________________________________________________________________________
786 void AliAnalysisTaskPerformanceStrange::UserCreateOutputObjects()
791 //*******************
792 fListHist = new TList();
793 fListHist->SetOwner();
794 //fListHistCuts = new TList();
795 //fListHistCuts->SetOwner();
797 // Bo: tbd: condition before allocation (i.e. if (!fHistMCMultiplicityPrimary){...} for each histo...
804 fHistMCPrimaryVertexX = new TH1F("h1MCPrimaryVertexX", "MC Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
805 fListHist->Add(fHistMCPrimaryVertexX);
807 fHistMCPrimaryVertexY = new TH1F("h1MCPrimaryVertexY", "MC Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
808 fListHist->Add(fHistMCPrimaryVertexY);
810 fHistMCPrimaryVertexZ = new TH1F("h1MCPrimaryVertexZ", "MC Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
811 fListHist->Add(fHistMCPrimaryVertexZ);
813 // Pt track distribution
814 fHistPtTracksITSRefit = new TH1F("h1PtTracksITSRefit", "Pt tracks;p_{t} (GeV/c);Counts", 240,0,12);
815 fListHist->Add(fHistPtTracksITSRefit);
817 fHistPtTracks = new TH1F("h1PtTracks", "Pt tracks;p_{t} (GeV/c);Counts", 240,0,12);
818 fListHist->Add(fHistPtTracks);
820 // Pt track distribution
821 fHistPtTracksPITSRefit = new TH1F("h1PtTracksPITSRefit", "Pt tracks;p_{t} (GeV/c);Counts", 240,0,12);
822 fListHist->Add(fHistPtTracksPITSRefit);
824 fHistPtTracksP = new TH1F("h1PtTracksP", "Pt tracks;p_{t} (GeV/c);Counts", 240,0,12);
825 fListHist->Add(fHistPtTracksP);
828 fHistMCMultiplicityPrimary = new TH1F("h1MCMultiplicityPrimary", "MC Primary Particles;NPrimary;Count", 201, -0.5, 200.5);
829 fListHist->Add(fHistMCMultiplicityPrimary);
831 fHistMCMultiplicityTracks = new TH1F("h1MCMultiplicityTracks", "MC Tracks;Ntracks;Count", 201, -0.5, 200.5);
832 fListHist->Add(fHistMCMultiplicityTracks);
834 // Production Radius of non-primary particles:
835 fHistMCtracksProdRadiusK0s = new TH2F("h2MCtracksProdRadiusK0s","Non-primary MC K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
836 fListHist->Add(fHistMCtracksProdRadiusK0s);
838 fHistMCtracksProdRadiusLambda = new TH2F("h2MCtracksProdRadiusLambda","Non-primary MC #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
839 fListHist->Add(fHistMCtracksProdRadiusLambda);
841 fHistMCtracksProdRadiusAntiLambda = new TH2F("h2MCtracksProdRadiusAntiLambda","Non-primary MC #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
842 fListHist->Add(fHistMCtracksProdRadiusAntiLambda);
844 // Decay Radius of non-primary particles:
845 fHistMCtracksDecayRadiusK0s = new TH1F("h1MCtracksDecayRadiusK0s","Non-primary MC K^{0} Decay Radius;r (cm)",101,-1,100);
846 fListHist->Add(fHistMCtracksDecayRadiusK0s);
848 fHistMCtracksDecayRadiusLambda = new TH1F("h1MCtracksDecayRadiusLambda","Non-primary MC #Lambda^{0} Decay Radius;r (cm)",101,-1,100);
849 fListHist->Add(fHistMCtracksDecayRadiusLambda);
851 fHistMCtracksDecayRadiusAntiLambda = new TH1F("h1MCtracksDecayRadiusAntiLambda","Non-primary #bar{#Lambda}^{0} Decay Radius;r (cm)",100,1,101);
852 fListHist->Add(fHistMCtracksDecayRadiusAntiLambda);
854 // Pt Distribution of non-primary particles:
855 fHistMCPtAllK0s = new TH1F("h1MCPtAllK0s", "Non-primary MC K^{0};p_{t} (GeV/c);Counts",240,0,12);
856 fListHist->Add(fHistMCPtAllK0s);
858 fHistMCPtAllLambda = new TH1F("h1MCPtAllLambda", "Non-primary MC #Lambda^{0};p_{t} (GeV/c);Counts",240,0,12);
859 fListHist->Add(fHistMCPtAllLambda);
861 fHistMCPtAllAntiLambda = new TH1F("h1MCPtAllAntiLambda", "Non-primary MC #bar{#Lambda}^{0};p_{t} (GeV/c);Counts",240,0,12);
862 fListHist->Add(fHistMCPtAllAntiLambda);
865 // Pt Distribution of non-primary particles Rap3:
866 fHistMCPtAllK0sRap3 = new TH1F("h1MCPtAllK0sRap3", "Non-primary MC K^{0};p_{t} (GeV/c);Counts",240,0,12);
867 fListHist->Add(fHistMCPtAllK0sRap3);
869 fHistMCPtAllLambdaRap3 = new TH1F("h1MCPtAllLambdaRap3", "Non-primary MC #LambdaRap3^{0};p_{t} (GeV/c);Counts",240,0,12);
870 fListHist->Add(fHistMCPtAllLambdaRap3);
872 fHistMCPtAllAntiLambdaRap3 = new TH1F("h1MCPtAllAntiLambdaRap3", "Non-primary MC #bar{#LambdaRap3}^{0};p_{t} (GeV/c);Counts",240,0,12);
873 fListHist->Add(fHistMCPtAllAntiLambdaRap3);
877 fHistMCProdRadiusK0s = new TH1F("h1MCProdRadiusK0s", "MC K^{0} Production Radius;r (cm);Count", 400, -2, 2);
878 fListHist->Add(fHistMCProdRadiusK0s);
880 fHistMCProdRadiusLambda = new TH1F("h1MCProdRadiusLambda", "MC #Lambda^{0} Production Radius;r (cm);Count", 400, -2, 2);
881 fListHist->Add(fHistMCProdRadiusLambda);
883 fHistMCProdRadiusAntiLambda = new TH1F("h1MCProdRadiusAntiLambda", "MC #bar{#Lambda}^{0} Production Radius;r (cm);Count", 400, -2, 2);
884 fListHist->Add(fHistMCProdRadiusAntiLambda);
886 // Rapidity distribution:
887 fHistMCRapK0s = new TH1F("h1MCRapK0s", "K^{0};y",160,-4,4);
888 fListHist->Add(fHistMCRapK0s);
890 fHistMCRapInPtRangeK0s = new TH1F("h1MCRapInPtRangeK0s", "K^{0};y",160,-4,4);
891 fListHist->Add(fHistMCRapInPtRangeK0s);
893 fHistMCRapLambda = new TH1F("h1MCRapLambda", "#Lambda;y",160,-4,4);
894 fListHist->Add(fHistMCRapLambda);
896 fHistMCRapInPtRangeLambda = new TH1F("h1MCRapInPtRangeLambda", "#Lambda;y",160,-4,4);
897 fListHist->Add(fHistMCRapInPtRangeLambda);
899 fHistMCRapAntiLambda = new TH1F("h1MCRapAntiLambda", "#bar{#Lambda};y",160,-4,4);
900 fListHist->Add(fHistMCRapAntiLambda);
902 fHistMCRapInPtRangeAntiLambda = new TH1F("h1MCRapInPtRangeAntiLambda", "#bar{#Lambda};y",160,-4,4);
903 fListHist->Add(fHistMCRapInPtRangeAntiLambda);
905 fHistMCRapXi = new TH1F("h1MCRapXi", "Xi;y",160,-4,4);
906 fListHist->Add(fHistMCRapXi);
908 fHistMCRapInPtRangeXi = new TH1F("h1MCRapInPtRangeXi", "Xi;y",160,-4,4);
909 fListHist->Add(fHistMCRapInPtRangeXi);
911 fHistMCRapPhi = new TH1F("h1MCRapPhi", "Phi;y",160,-4,4);
912 fListHist->Add(fHistMCRapPhi);
914 fHistMCRapInPtRangePhi = new TH1F("h1MCRapInPtRangePhi", "Phi;y",160,-4,4);
915 fListHist->Add(fHistMCRapInPtRangePhi);
918 fHistMCPtK0s = new TH1F("h1MCPtK0s", "K^{0};p_{t} (GeV/c)",240,0,12);
919 fListHist->Add(fHistMCPtK0s);
921 fHistMCPtLambda = new TH1F("h1MCPtLambda", "#Lambda^{0};p_{t} (GeV/c)",240,0,12);
922 fListHist->Add(fHistMCPtLambda);
924 fHistMCPtAntiLambda = new TH1F("h1MCPtAntiLambda", "#AntiLambda^{0};p_{t} (GeV/c)",240,0,12);
925 fListHist->Add(fHistMCPtAntiLambda);
928 // Pt distribution Rap3:
929 fHistMCPtK0sRap3 = new TH1F("h1MCPtK0sRap3", "K^{0};p_{t} (GeV/c)",240,0,12);
930 fListHist->Add(fHistMCPtK0sRap3);
932 fHistMCPtLambdaRap3 = new TH1F("h1MCPtLambdaRap3", "#Lambda^{0};p_{t} (GeV/c)",240,0,12);
933 fListHist->Add(fHistMCPtLambdaRap3);
935 fHistMCPtAntiLambdaRap3 = new TH1F("h1MCPtAntiLambdaRap3", "#AntiLambda^{0};p_{t} (GeV/c)",240,0,12);
936 fListHist->Add(fHistMCPtAntiLambdaRap3);
939 // Pt distribution of Lambda coming from Sigma decay
940 fHistMCPtLambdaFromSigma = new TH1F("h1MCPtLambdaFromSigma", "#Lambda^{0};p_{t} (GeV/c)",240,0,12);
941 fListHist->Add(fHistMCPtLambdaFromSigma);
943 fHistMCPtAntiLambdaFromSigma = new TH1F("h1MCPtAntiLambdaFromSigma", "#Lambda^{0};p_{t} (GeV/c)",240,0,12);
944 fListHist->Add(fHistMCPtAntiLambdaFromSigma);
946 // Multiple reconstruction studies
947 fHistNTimesRecK0s = new TH1F("h1NTimesRecK0s","number of times a K0s is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
948 fListHist->Add(fHistNTimesRecK0s);
950 fHistNTimesRecLambda = new TH1F("h1NTimesRecLambda","number of times a Lambda is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
951 fListHist->Add(fHistNTimesRecLambda);
953 fHistNTimesRecAntiLambda = new TH1F("h1NTimesRecAntiLambda","number of times an AntiLambda is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
954 fListHist->Add(fHistNTimesRecAntiLambda);
956 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);
957 fListHist->Add(fHistNTimesRecK0sVsPt);
959 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);
960 fListHist->Add(fHistNTimesRecLambdaVsPt);
962 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);
963 fListHist->Add(fHistNTimesRecAntiLambdaVsPt);
965 //***********************************
966 // Reconstructed particles histograms
967 //***********************************
970 fHistNumberEvents = new TH1F("h1NumberEvents", "Number of events; index;Number of Events",10,0,10);
971 fListHist->Add(fHistNumberEvents);
974 fHistTrackPerEvent = new TH1F("h1TrackPerEvent", "Tracks per event;Number of Tracks;Number of Events",10000,0,10000);
975 fListHist->Add(fHistTrackPerEvent);
977 fHistTPCMult = new TH1F("h1HistTPCMult", "TPC tracks per event;Number of Tracks;Number of Events",10000,0,10000);
978 fListHist->Add(fHistTPCMult);
981 fHistTrackletPerEvent = new TH1F("h1TrackletPerEvent", "Number of tracklets;Number of tracklets per events;Number of events",1000,0,1000);
982 fListHist->Add(fHistTrackletPerEvent);
984 fHistMCDaughterTrack = new TH1F("h1MCDaughterTrack","Distribution of mc id for daughters;id tags;Counts",15,0,15);
985 fListHist->Add(fHistMCDaughterTrack);
987 fHistTPCTracks = new TH1F("h1TPCTracks","Distribution of TPC tracks;Number of TPC tracks:Number of events",1000,0,10000);
988 fListHist->Add(fHistTPCTracks);
991 fHistSPDPrimaryVertexZ = new TH1F("h1SPDPrimaryVertexZ", "SPD Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
992 fListHist->Add(fHistSPDPrimaryVertexZ);
994 fHistPrimaryVertexX = new TH1F("h1PrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
995 fListHist->Add(fHistPrimaryVertexX);
997 fHistPrimaryVertexY = new TH1F("h1PrimaryVertexY", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
998 fListHist->Add(fHistPrimaryVertexY);
1000 fHistPrimaryVertexZ = new TH1F("h1PrimaryVertexZ", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
1001 fListHist->Add(fHistPrimaryVertexZ);
1004 // Primary vertex resolution
1005 fHistPrimaryVertexResX = new TH1F("h1PrimaryVertexResX", "Primary Vertex Resolution X;Primary Vertex Resolution X (cm);Events",100,-0.25,0.25);
1006 fListHist->Add(fHistPrimaryVertexResX);
1008 fHistPrimaryVertexResY = new TH1F("h1PrimaryVertexResY", "Primary Vertex Resolution Y;Primary Vertex Resolution Y (cm);Events",100,-0.25,0.25);
1009 fListHist->Add(fHistPrimaryVertexResY);
1011 fHistPrimaryVertexResZ = new TH1F("h1PrimaryVertexResZ", "Primary Vertex Resolution Z;Primary Vertex Resolution Z (cm);Events",200,-0.25,0.25);
1012 fListHist->Add(fHistPrimaryVertexResZ);
1015 // Primary Vertex in events with V0 candidates:
1016 fHistPrimaryVertexPosXV0events = new TH1F("h1PrimaryVertexPosXV0events", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
1017 fListHist->Add(fHistPrimaryVertexPosXV0events);
1018 fHistPrimaryVertexPosYV0events = new TH1F("h1PrimaryVertexPosYV0events", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
1019 fListHist->Add(fHistPrimaryVertexPosYV0events);
1020 fHistPrimaryVertexPosZV0events = new TH1F("h1PrimaryVertexPosZV0events", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20.0,20.0);
1021 fListHist->Add(fHistPrimaryVertexPosZV0events);
1024 fHistDaughterPt = new TH2F("h2DaughterPt", "Daughter Pt;Positive Daughter Pt; Negative Daughter Pt",200,0,2,200,0,2);
1025 fListHist->Add(fHistDaughterPt);
1027 //////K0s///////////////// 2D histos: cut vs on fly status////
1029 fHistDcaPosToPrimVertexK0 = new TH2F("h2DcaPosToPrimVertexK0", "Positive V0 daughter;dca(cm);Status",100,0,10,2,-0.5,1.5);
1030 fListHist->Add(fHistDcaPosToPrimVertexK0);
1032 fHistDcaNegToPrimVertexK0 = new TH2F("h2DcaNegToPrimVertexK0", "Negative V0 daughter;dca(cm);Status",100,0,10,2,-0.5,1.5);
1033 fListHist->Add(fHistDcaNegToPrimVertexK0);
1036 fHistRadiusV0K0 = new TH2F("h2RadiusV0K0", "Radius;Radius(cm);Status",500,0,500,2,-0.5,1.5);
1037 fListHist->Add(fHistRadiusV0K0);
1039 fHistDecayLengthV0K0 = new TH2F("h2DecayLengthV0K0", "V0s decay Length;decay length(cm);Status", 500, 0, 500,2,-0.5,1.5);
1040 fListHist->Add(fHistDecayLengthV0K0);
1042 fHistDcaV0DaughtersK0 = new TH2F("h2DcaV0DaughtersK0", "DCA between daughters;dca(cm);Status", 300, 0, 3.0,2,-0.5,1.5);
1043 fListHist->Add(fHistDcaV0DaughtersK0);
1045 fHistChi2K0 = new TH2F("h2Chi2K0", "V0s chi2;chi2;Status", 1000, 0, 0.1,2,-0.5,1.5);
1046 fListHist->Add(fHistChi2K0);
1048 fHistCosPointAngleK0 = new TH2F("h2CosPointAngleK0", "Cosine of V0's pointing angle", 200,0.99,1.01,2,-0.5,1.5);
1049 fListHist->Add(fHistCosPointAngleK0);
1052 ////////////K0s///////////////// 2D histos: cut vs mass////
1055 fHistDcaPosToPrimVertexK0vsMassK0 = new TH2F("h2DcaPosToPrimVertexK0vsMassK0", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,200,0.4,0.6);
1056 fListHist->Add(fHistDcaPosToPrimVertexK0vsMassK0);
1058 fHistDcaNegToPrimVertexK0vsMassK0 = new TH2F("h2DcaNegToPrimVertexK0vsMassK0", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,200,0.4,0.6);
1059 fListHist->Add(fHistDcaNegToPrimVertexK0vsMassK0);
1062 fHistRadiusV0K0vsMassK0 = new TH2F("h2RadiusV0K0vsMassK0", "Radius;Radius(cm);K0s inv. mass",110,0,110,200,0.4,0.6);
1063 fListHist->Add(fHistRadiusV0K0vsMassK0);
1065 fHistDecayLengthV0K0vsMassK0 = new TH2F("h2DecayLengthV0K0vsMassK0", "V0s decay Length;decay length(cm);K0s inv. mass", 100, 0, 100,200,0.4,0.6);
1066 fListHist->Add(fHistDecayLengthV0K0vsMassK0);
1068 fHistDcaV0DaughtersK0vsMassK0 = new TH2F("h2DcaV0DaughtersK0vsMassK0", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,200,0.4,0.6);
1069 fListHist->Add(fHistDcaV0DaughtersK0vsMassK0);
1072 fHistCosPointAngleK0vsMassK0 = new TH2F("h2CosPointAngleK0vsMassK0", "Cosine of V0's pointing angle", 200,0.997,1.007,200,0.4,0.6);
1073 fListHist->Add(fHistCosPointAngleK0vsMassK0);
1076 fHistDcaPosToPrimVertexK0vsMassK0pt1 = new TH2F("h2DcaPosToPrimVertexK0vsMassK0pt1", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,200,0.4,0.6);
1077 fListHist->Add(fHistDcaPosToPrimVertexK0vsMassK0pt1);
1079 fHistDcaNegToPrimVertexK0vsMassK0pt1 = new TH2F("h2DcaNegToPrimVertexK0vsMassK0pt1", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,200,0.4,0.6);
1080 fListHist->Add(fHistDcaNegToPrimVertexK0vsMassK0pt1);
1082 fHistRadiusV0K0vsMassK0pt1 = new TH2F("h2RadiusV0K0vsMassK0pt1", "Radius;Radius(cm);K0s inv. mass",110,0,110,200,0.4,0.6);
1083 fListHist->Add(fHistRadiusV0K0vsMassK0pt1);
1085 fHistDecayLengthV0K0vsMassK0pt1 = new TH2F("h2DecayLengthV0K0vsMassK0pt1", "V0s decay Length;decay length(cm);K0s inv. mass",100,0,100,200,0.4,0.6);
1086 fListHist->Add(fHistDecayLengthV0K0vsMassK0pt1);
1088 fHistDcaV0DaughtersK0vsMassK0pt1 = new TH2F("h2DcaV0DaughtersK0vsMassK0pt1", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,200,0.4,0.6);
1089 fListHist->Add(fHistDcaV0DaughtersK0vsMassK0pt1);
1091 fHistCosPointAngleK0vsMassK0pt1 = new TH2F("h2CosPointAngleK0vsMassK0pt1", "Cosine of V0's pointing angle", 200,0.997,1.007,200,0.4,0.6);
1092 fListHist->Add(fHistCosPointAngleK0vsMassK0pt1);
1095 fHistDcaPosToPrimVertexK0vsMassK0pt2 = new TH2F("h2DcaPosToPrimVertexK0vsMassK0pt2", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,200,0.4,0.6);
1096 fListHist->Add(fHistDcaPosToPrimVertexK0vsMassK0pt2);
1098 fHistDcaNegToPrimVertexK0vsMassK0pt2 = new TH2F("h2DcaNegToPrimVertexK0vsMassK0pt2", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,200,0.4,0.6);
1099 fListHist->Add(fHistDcaNegToPrimVertexK0vsMassK0pt2);
1101 fHistRadiusV0K0vsMassK0pt2 = new TH2F("h2RadiusV0K0vsMassK0pt2", "Radius;Radius(cm);K0s inv. mass",110,0,110,200,0.4,0.6);
1102 fListHist->Add(fHistRadiusV0K0vsMassK0pt2);
1104 fHistDecayLengthV0K0vsMassK0pt2 = new TH2F("h2DecayLengthV0K0vsMassK0pt2", "V0s decay Length;decay length(cm);K0s inv. mass", 100, 0, 100,200,0.4,0.6);
1105 fListHist->Add(fHistDecayLengthV0K0vsMassK0pt2);
1107 fHistDcaV0DaughtersK0vsMassK0pt2 = new TH2F("h2DcaV0DaughtersK0vsMassK0pt2", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,200,0.4,0.6);
1108 fListHist->Add(fHistDcaV0DaughtersK0vsMassK0pt2);
1110 fHistCosPointAngleK0vsMassK0pt2 = new TH2F("h2CosPointAngleK0vsMassK0pt2", "Cosine of V0's pointing angle", 200,0.997,1.007,200,0.4,0.6);
1111 fListHist->Add(fHistCosPointAngleK0vsMassK0pt2);
1114 fHistDcaPosToPrimVertexK0vsMassK0pt3 = new TH2F("h2DcaPosToPrimVertexK0vsMassK0pt3", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,200,0.4,0.6);
1115 fListHist->Add(fHistDcaPosToPrimVertexK0vsMassK0pt3);
1117 fHistDcaNegToPrimVertexK0vsMassK0pt3 = new TH2F("h2DcaNegToPrimVertexK0vsMassK0pt3", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,200,0.4,0.6);
1118 fListHist->Add(fHistDcaNegToPrimVertexK0vsMassK0pt3);
1120 fHistRadiusV0K0vsMassK0pt3 = new TH2F("h2RadiusV0K0vsMassK0pt3", "Radius;Radius(cm);K0s inv. mass",110,0,110,200,0.4,0.6);
1121 fListHist->Add(fHistRadiusV0K0vsMassK0pt3);
1123 fHistDecayLengthV0K0vsMassK0pt3 = new TH2F("h2DecayLengthV0K0vsMassK0pt3", "V0s decay Length;decay length(cm);K0s inv. mass", 100, 0, 100,200,0.4,0.6);
1124 fListHist->Add(fHistDecayLengthV0K0vsMassK0pt3);
1126 fHistDcaV0DaughtersK0vsMassK0pt3 = new TH2F("h2DcaV0DaughtersK0vsMassK0pt3", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,200,0.4,0.6);
1127 fListHist->Add(fHistDcaV0DaughtersK0vsMassK0pt3);
1129 fHistCosPointAngleK0vsMassK0pt3 = new TH2F("h2CosPointAngleK0vsMassK0pt3", "Cosine of V0's pointing angle", 200,0.997,1.007,200,0.4,0.6);
1130 fListHist->Add(fHistCosPointAngleK0vsMassK0pt3);
1131 } //end QA condition
1132 //////////Lambda////////////// 2D histos: cut vs on fly status////
1134 fHistDcaPosToPrimVertexL = new TH2F("h2DcaPosToPrimVertexL", "Positive V0 daughter;dca(cm);Status",100,0,10,2,-0.5,1.5);
1135 fListHist->Add(fHistDcaPosToPrimVertexL);
1137 fHistDcaNegToPrimVertexL = new TH2F("h2DcaNegToPrimVertexL", "Negative V0 daughter;dca(cm);Status",100,0,10,2,-0.5,1.5);
1138 fListHist->Add(fHistDcaNegToPrimVertexL);
1140 fHistRadiusV0L = new TH2F("h2RadiusV0L", "Radius;Radius(cm);Status",100,0,110,2,-0.5,1.5);
1141 fListHist->Add(fHistRadiusV0L);
1143 fHistDecayLengthV0L = new TH2F("h2DecayLengthV0L", "V0s decay Length;decay length(cm);Status", 500, 0, 500,2,-0.5,1.5);
1144 fListHist->Add(fHistDecayLengthV0L);
1146 fHistDcaV0DaughtersL = new TH2F("h2DcaV0DaughtersL", "DCA between daughters;dca(cm);Status", 300, 0, 3.0,2,-0.5,1.5);
1147 fListHist->Add(fHistDcaV0DaughtersL);
1149 fHistChi2L = new TH2F("h2Chi2L", "V0s chi2;chi2;Status", 100, 0, 0.10,2,-0.5,1.5);
1150 fListHist->Add(fHistChi2L);
1152 fHistCosPointAngleL = new TH2F("h2CosPointAngleL", "Cosine of V0's pointing angle", 200,0.99,1.01,2,-0.5,1.5);
1153 fListHist->Add(fHistCosPointAngleL);
1155 fHistcTauL = new TH1F("h1cTauL","cTaou of Lambdas",100,0,100);
1156 fListHist->Add(fHistcTauL);
1157 //////////Lambda////////////// 2D histos: cut vs mass////
1158 fHistDcaPosToPrimVertexLvsMassL = new TH2F("h2DcaPosToPrimVertexLvsMassL", "Positive V0 daughter;dca(cm);Status",100,0,10,140, 1.06, 1.2);
1159 fListHist->Add(fHistDcaPosToPrimVertexLvsMassL);
1161 fHistDcaNegToPrimVertexLvsMassL = new TH2F("h2DcaNegToPrimVertexLvsMassL", "Negative V0 daughter;dca(cm);Status",100,0,10,140, 1.06, 1.2);
1162 fListHist->Add(fHistDcaNegToPrimVertexLvsMassL);
1165 fHistRadiusV0LvsMassL = new TH2F("h2RadiusV0LvsMassL", "Radius;Radius(cm);Status",110,0,110,140, 1.06, 1.2);
1166 fListHist->Add(fHistRadiusV0LvsMassL);
1168 fHistDecayLengthV0LvsMassL = new TH2F("h2DecayLengthV0LvsMassL", "V0s decay Length;decay length(cm);Status", 120, 0, 120,140, 1.06, 1.2);
1169 fListHist->Add(fHistDecayLengthV0LvsMassL);
1171 fHistDcaV0DaughtersLvsMassL = new TH2F("h2DcaV0DaughtersLvsMassL", "DCA between daughters;dca(cm);Status", 110, 0, 1.1,140, 1.06, 1.2);
1172 fListHist->Add(fHistDcaV0DaughtersLvsMassL);
1174 fHistCosPointAngleLvsMassL = new TH2F("h2CosPointAngleLvsMassL", "Cosine of V0's pointing angle", 200,0.997,1.007,140, 1.06, 1.2);
1175 fListHist->Add(fHistCosPointAngleLvsMassL);
1177 fHistCosPointAngleLvsMassVsPtsigL = new TH3F("h3McCosPointAngleLvsMassVsPtsigL", "Cosine of V0's pointing angle",3,0,12, 2,00.997,1.007,140, 1.06, 1.2);
1178 fListHist->Add(fHistCosPointAngleLvsMassVsPtsigL);
1179 fHistCosPointAngleLvsMassVsPtbackL = new TH3F("h3McCosPointAngleLvsMassVsPtbackL", "Cosine of V0's pointing angle",3,0,12, 20,0.997,1.007,140, 1.06, 1.2);
1180 fListHist->Add(fHistCosPointAngleLvsMassVsPtbackL);
1185 fHistDcaPosToPrimVertexLambdaVsMasspt1 = new TH2F("h2DcaPosToPrimVertexLambdaVsMasspt1", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1186 fListHist->Add(fHistDcaPosToPrimVertexLambdaVsMasspt1);
1188 fHistDcaNegToPrimVertexLambdaVsMasspt1 = new TH2F("h2DcaNegToPrimVertexLambdaVsMasspt1", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1189 fListHist->Add(fHistDcaNegToPrimVertexLambdaVsMasspt1);
1191 fHistRadiusV0LambdaVsMasspt1 = new TH2F("h2RadiusV0LambdaVsMasspt1", "Radius;Radius(cm);K0s inv. mass",110,0,110,140,1.06,1.2);
1192 fListHist->Add(fHistRadiusV0LambdaVsMasspt1);
1194 fHistDecayLengthV0LambdaVsMasspt1 = new TH2F("h2DecayLengthV0LambdaVsMasspt1", "V0s decay Length;decay length(cm);K0s inv. mass",100,0,100,140,1.06,1.2);
1195 fListHist->Add(fHistDecayLengthV0LambdaVsMasspt1);
1197 fHistDcaV0DaughtersLambdaVsMasspt1 = new TH2F("h2DcaV0DaughtersLambdaVsMasspt1", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,140,1.06,1.2);
1198 fListHist->Add(fHistDcaV0DaughtersLambdaVsMasspt1);
1200 fHistCosPointAngleLambdaVsMasspt1 = new TH2F("h2CosPointAngleLambdaVsMasspt1", "Cosine of V0's pointing angle", 200,0.997,1.007,140,1.06,1.2);
1201 fListHist->Add(fHistCosPointAngleLambdaVsMasspt1);
1204 fHistDcaPosToPrimVertexLambdaVsMasspt2 = new TH2F("h2DcaPosToPrimVertexLambdaVsMasspt2", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1205 fListHist->Add(fHistDcaPosToPrimVertexLambdaVsMasspt2);
1207 fHistDcaNegToPrimVertexLambdaVsMasspt2 = new TH2F("h2DcaNegToPrimVertexLambdaVsMasspt2", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1208 fListHist->Add(fHistDcaNegToPrimVertexLambdaVsMasspt2);
1210 fHistRadiusV0LambdaVsMasspt2 = new TH2F("h2RadiusV0LambdaVsMasspt2", "Radius;Radius(cm);K0s inv. mass",110,0,110,140,1.06,1.2);
1211 fListHist->Add(fHistRadiusV0LambdaVsMasspt2);
1213 fHistDecayLengthV0LambdaVsMasspt2 = new TH2F("h2DecayLengthV0LambdaVsMasspt2", "V0s decay Length;decay length(cm);K0s inv. mass", 100, 0, 100,140,1.06,1.2);
1214 fListHist->Add(fHistDecayLengthV0LambdaVsMasspt2);
1216 fHistDcaV0DaughtersLambdaVsMasspt2 = new TH2F("h2DcaV0DaughtersLambdaVsMasspt2", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,140,1.06,1.2);
1217 fListHist->Add(fHistDcaV0DaughtersLambdaVsMasspt2);
1219 fHistCosPointAngleLambdaVsMasspt2 = new TH2F("h2CosPointAngleLambdaVsMasspt2", "Cosine of V0's pointing angle", 200,0.997,1.007,140,1.06,1.2);
1220 fListHist->Add(fHistCosPointAngleLambdaVsMasspt2);
1223 fHistDcaPosToPrimVertexLambdaVsMasspt3 = new TH2F("h2DcaPosToPrimVertexLambdaVsMasspt3", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1224 fListHist->Add(fHistDcaPosToPrimVertexLambdaVsMasspt3);
1226 fHistDcaNegToPrimVertexLambdaVsMasspt3 = new TH2F("h2DcaNegToPrimVertexLambdaVsMasspt3", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1227 fListHist->Add(fHistDcaNegToPrimVertexLambdaVsMasspt3);
1229 fHistRadiusV0LambdaVsMasspt3 = new TH2F("h2RadiusV0LambdaVsMasspt3", "Radius;Radius(cm);K0s inv. mass",110,0,110,140,1.06,1.2);
1230 fListHist->Add(fHistRadiusV0LambdaVsMasspt3);
1232 fHistDecayLengthV0LambdaVsMasspt3 = new TH2F("h2DecayLengthV0LambdaVsMasspt3", "V0s decay Length;decay length(cm);K0s inv. mass", 100, 0, 100,140,1.06,1.2);
1233 fListHist->Add(fHistDecayLengthV0LambdaVsMasspt3);
1235 fHistDcaV0DaughtersLambdaVsMasspt3 = new TH2F("h2DcaV0DaughtersLambdaVsMasspt3", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,140,1.06,1.2);
1236 fListHist->Add(fHistDcaV0DaughtersLambdaVsMasspt3);
1238 fHistCosPointAngleLambdaVsMasspt3 = new TH2F("h2CosPointAngleLambdaVsMasspt3", "Cosine of V0's pointing angle", 200,0.997,1.007,140,1.06,1.2);
1239 fListHist->Add(fHistCosPointAngleLambdaVsMasspt3);
1240 } // end QA condition
1241 //////////AntiLambda////////////// 2D histos: cut vs on fly status////
1243 fHistDcaPosToPrimVertexAntiL = new TH2F("h2DcaPosToPrimVertexAntiL", "Positive V0 daughter;dca(cm);Status",100,0,10,2,-0.5,1.5);
1244 fListHist->Add(fHistDcaPosToPrimVertexAntiL);
1246 fHistDcaNegToPrimVertexAntiL = new TH2F("h2DcaNegToPrimVertexAntiL", "Negative V0 daughter;dca(cm);Status",100,0,10,2,-0.5,1.5);
1247 fListHist->Add(fHistDcaNegToPrimVertexAntiL);
1250 fHistRadiusV0AntiL = new TH2F("h2RadiusV0AntiL", "Radius;Radius(cm);Status",100,0,110,2,-0.5,1.5);
1251 fListHist->Add(fHistRadiusV0AntiL);
1253 fHistDecayLengthV0AntiL = new TH2F("h2DecayLengthV0AntiL", "V0s decay Length;decay length(cm);Status", 500, 0, 500,2,-0.5,1.5);
1254 fListHist->Add(fHistDecayLengthV0AntiL);
1256 fHistDcaV0DaughtersAntiL = new TH2F("h2DcaV0DaughtersAntiL", "DCA between daughters;dca(cm);Status", 300, 0, 3.0,2,-0.5,1.5);
1257 fListHist->Add(fHistDcaV0DaughtersAntiL);
1259 fHistChi2AntiL = new TH2F("h2Chi2AntiL", "V0s chi2;chi2;Status", 100, 0, 0.10,2,-0.5,1.5);
1260 fListHist->Add(fHistChi2AntiL);
1262 fHistCosPointAngleAntiL = new TH2F("h2CosPointAngleAntiL", "Cosine of V0's pointing angle", 200,0.99,1.01,2,-0.5,1.5);
1263 fListHist->Add(fHistCosPointAngleAntiL);
1265 //////////AntiLambda////////////// 2D histos: cut vs mass////
1267 fHistDcaPosToPrimVertexAntiLvsMass = new TH2F("h2DcaPosToPrimVertexAntiLvsMass", "Positive V0 daughter;dca(cm);Status",100,0,10,140, 1.06, 1.2);
1268 fListHist->Add(fHistDcaPosToPrimVertexAntiLvsMass);
1270 fHistDcaNegToPrimVertexAntiLvsMass = new TH2F("h2DcaNegToPrimVertexAntiLvsMass", "Negative V0 daughter;dca(cm);Status",100,0,10,140, 1.06, 1.2);
1271 fListHist->Add(fHistDcaNegToPrimVertexAntiLvsMass);
1274 fHistRadiusV0AntiLvsMass = new TH2F("h2RadiusV0AntiLvsMass", "Radius;Radius(cm);Status",110,0,110,140, 1.06, 1.2);
1275 fListHist->Add(fHistRadiusV0AntiLvsMass);
1277 fHistDecayLengthV0AntiLvsMass = new TH2F("h2DecayLengthV0AntiLvsMass", "V0s decay Length;decay length(cm);Status", 120, 0, 120,140, 1.06, 1.2);
1278 fListHist->Add(fHistDecayLengthV0AntiLvsMass);
1280 fHistDcaV0DaughtersAntiLvsMass = new TH2F("h2DcaV0DaughtersAntiLvsMass", "DCA between daughters;dca(cm);Status", 110, 0, 1.1,140, 1.06, 1.2);
1281 fListHist->Add(fHistDcaV0DaughtersAntiLvsMass);
1283 fHistCosPointAngleAntiLvsMass = new TH2F("h2CosPointAngleAntiLvsMass", "Cosine of V0's pointing angle", 200,0.997,1.007,140, 1.06, 1.2);
1284 fListHist->Add(fHistCosPointAngleAntiLvsMass);
1287 fHistDcaPosToPrimVertexAntiLVsMasspt1 = new TH2F("h2DcaPosToPrimVertexAntiLVsMasspt1", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1288 fListHist->Add(fHistDcaPosToPrimVertexAntiLVsMasspt1);
1290 fHistDcaNegToPrimVertexAntiLVsMasspt1 = new TH2F("h2DcaNegToPrimVertexAntiLVsMasspt1", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1291 fListHist->Add(fHistDcaNegToPrimVertexAntiLVsMasspt1);
1293 fHistRadiusV0AntiLVsMasspt1 = new TH2F("h2RadiusV0AntiLVsMasspt1", "Radius;Radius(cm);K0s inv. mass",110,0,110,140,1.06,1.2);
1294 fListHist->Add(fHistRadiusV0AntiLVsMasspt1);
1296 fHistDecayLengthV0AntiLVsMasspt1 = new TH2F("h2DecayLengthV0AntiLVsMasspt1", "V0s decay Length;decay length(cm);K0s inv. mass",100,0,100,140,1.06,1.2);
1297 fListHist->Add(fHistDecayLengthV0AntiLVsMasspt1);
1299 fHistDcaV0DaughtersAntiLVsMasspt1 = new TH2F("h2DcaV0DaughtersAntiLVsMasspt1", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,140,1.06,1.2);
1300 fListHist->Add(fHistDcaV0DaughtersAntiLVsMasspt1);
1302 fHistCosPointAngleAntiLVsMasspt1 = new TH2F("h2CosPointAngleAntiLVsMasspt1", "Cosine of V0's pointing angle", 200,0.997,1.007,140,1.06,1.2);
1303 fListHist->Add(fHistCosPointAngleAntiLVsMasspt1);
1306 fHistDcaPosToPrimVertexAntiLVsMasspt2 = new TH2F("h2DcaPosToPrimVertexAntiLVsMasspt2", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1307 fListHist->Add(fHistDcaPosToPrimVertexAntiLVsMasspt2);
1309 fHistDcaNegToPrimVertexAntiLVsMasspt2 = new TH2F("h2DcaNegToPrimVertexAntiLVsMasspt2", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1310 fListHist->Add(fHistDcaNegToPrimVertexAntiLVsMasspt2);
1312 fHistRadiusV0AntiLVsMasspt2 = new TH2F("h2RadiusV0AntiLVsMasspt2", "Radius;Radius(cm);K0s inv. mass",110,0,110,140,1.06,1.2);
1313 fListHist->Add(fHistRadiusV0AntiLVsMasspt2);
1315 fHistDecayLengthV0AntiLVsMasspt2 = new TH2F("h2DecayLengthV0AntiLVsMasspt2", "V0s decay Length;decay length(cm);K0s inv. mass", 100, 0, 100,140,1.06,1.2);
1316 fListHist->Add(fHistDecayLengthV0AntiLVsMasspt2);
1318 fHistDcaV0DaughtersAntiLVsMasspt2 = new TH2F("h2DcaV0DaughtersAntiLVsMasspt2", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,140,1.06,1.2);
1319 fListHist->Add(fHistDcaV0DaughtersAntiLVsMasspt2);
1321 fHistCosPointAngleAntiLVsMasspt2 = new TH2F("h2CosPointAngleAntiLVsMasspt2", "Cosine of V0's pointing angle", 200,0.997,1.007,140,1.06,1.2);
1322 fListHist->Add(fHistCosPointAngleAntiLVsMasspt2);
1325 fHistDcaPosToPrimVertexAntiLVsMasspt3 = new TH2F("h2DcaPosToPrimVertexAntiLVsMasspt3", "Positive V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1326 fListHist->Add(fHistDcaPosToPrimVertexAntiLVsMasspt3);
1328 fHistDcaNegToPrimVertexAntiLVsMasspt3 = new TH2F("h2DcaNegToPrimVertexAntiLVsMasspt3", "Negative V0 daughter;dca(cm);K0s inv. mass",500,0,10,140,1.06,1.2);
1329 fListHist->Add(fHistDcaNegToPrimVertexAntiLVsMasspt3);
1331 fHistRadiusV0AntiLVsMasspt3 = new TH2F("h2RadiusV0AntiLVsMasspt3", "Radius;Radius(cm);K0s inv. mass",110,0,110,140,1.06,1.2);
1332 fListHist->Add(fHistRadiusV0AntiLVsMasspt3);
1334 fHistDecayLengthV0AntiLVsMasspt3 = new TH2F("h2DecayLengthV0AntiLVsMasspt3", "V0s decay Length;decay length(cm);K0s inv. mass", 100, 0, 100,140,1.06,1.2);
1335 fListHist->Add(fHistDecayLengthV0AntiLVsMasspt3);
1337 fHistDcaV0DaughtersAntiLVsMasspt3 = new TH2F("h2DcaV0DaughtersAntiLVsMasspt3", "DCA between daughters;dca(cm);K0s inv. mass", 110, 0, 1.1,140,1.06,1.2);
1338 fListHist->Add(fHistDcaV0DaughtersAntiLVsMasspt3);
1340 fHistCosPointAngleAntiLVsMasspt3 = new TH2F("h2CosPointAngleAntiLVsMasspt3", "Cosine of V0's pointing angle", 200,0.997,1.007,140,1.06,1.2);
1341 fListHist->Add(fHistCosPointAngleAntiLVsMasspt3);
1342 } //end QA condition for AntiLambda
1345 if (!fHistV0Multiplicity) {
1346 if (fCollidingSystems)
1347 fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of Offline V0s;Events", 200, 0, 40000);
1349 fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of Offline V0s;Events", 10, 0, 10);
1350 fListHist->Add(fHistV0Multiplicity);
1355 fHistMassK0 = new TH1F("h1MassK0", "K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 200, 0.4, 0.6);
1356 fListHist->Add(fHistMassK0);
1358 fHistMassLambda = new TH1F("h1MassLambda", "#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});Counts", 150, 1.05, 1.2);
1359 fListHist->Add(fHistMassLambda);
1361 fHistMassAntiLambda = new TH1F("h1MassAntiLambda", "#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 150, 1.05, 1.2);
1362 fListHist->Add(fHistMassAntiLambda);
1364 /* // invariant mass vs radius
1365 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};
1366 Int_t lNbinRadius = 9;
1367 Int_t lNbinInvMassLambda = 300;
1369 fHistMassVsRadiusK0 = new TH2F("h2MassVsRadiusK0", "K^{0} candidates;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",200,0,200, 200, 0.4, 0.6);
1370 fListHist->Add(fHistMassVsRadiusK0);
1372 //fHistMassVsRadiusLambda = new TH2F("h2MassVsRadiusLambda", "#Lambda candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
1373 fHistMassVsRadiusLambda = new TH2F("h2MassVsRadiusLambda", "#Lambda candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",200,0,200, 140, 1.06, 1.2);
1374 fListHist->Add(fHistMassVsRadiusLambda);
1377 //fHistMassVsRadiusAntiLambda = new TH2F("h2MassVsRadiusAntiLambda", "#bar{#Lambda} candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
1378 fHistMassVsRadiusAntiLambda = new TH2F("h2MassVsRadiusAntiLambda", "#bar{#Lambda} candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",200,0,200, 140, 1.06, 1.2);
1379 fListHist->Add(fHistMassVsRadiusAntiLambda);
1383 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);
1384 fListHist->Add(fHistPtVsMassK0);
1386 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);
1387 fListHist->Add(fHistPtVsMassLambda);
1389 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);
1390 fListHist->Add(fHistPtVsMassAntiLambda);
1394 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);
1395 fListHist->Add(fHistPtVsMassK0Rap3);
1397 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);
1398 fListHist->Add(fHistPtVsMassLambdaRap3);
1400 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);
1401 fListHist->Add(fHistPtVsMassAntiLambdaRap3);
1404 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1406 ///Armenteros Podolansky
1407 fHistArmenterosPodolanski = new TH2F("h2ArmenterosPodolanski","Armenteros-Podolanski phase space;#alpha;p_{t} arm",100,-1.0,1.0,50,0,0.5);
1408 fListHist->Add(fHistArmenterosPodolanski);
1410 ///Inv. Mass K0s vs Inv. Mass. Lambda
1411 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);
1412 fListHist->Add(fHistK0sMassVsLambdaMass);
1414 //dE/dx vs P daughters
1415 fHistTPCsigPLambda = new TH2F("h2TPCsignalVsPLambda","TPC signal Vs p_{t} daughters; p (GeV/c);TPC signal",1000,0,2,1000,0,1000);
1416 fListHist->Add(fHistTPCsigPLambda);
1419 fHistTPCsigPAntiLambda = new TH2F("h2TPCsignalVsPAntiLambda","TPC signal Vs p_{t} daughters; p (GeV/c);TPC signal",1000,0,2,1000,0,1000);
1420 fListHist->Add(fHistTPCsigPAntiLambda);
1423 fHistNSigmaProton =new TH1F("h1NSigmaProton","Number of sigmas for proton;;Count",600,0,6);
1424 fListHist->Add(fHistNSigmaProton);
1428 fHistNsigmaPosPionAntiLambda = new TH1F("h1NsigmaPosPionAntiLambda", "Positive daughter of Antilambda;NsigmaPion;Counts",25,0,5);
1429 fListHist->Add(fHistNsigmaPosPionAntiLambda);
1431 fHistNsigmaNegProtonAntiLambda = new TH1F("h1NsigmaNegProtonAntiLambda", "Negative daughter of Antilambda;NsigmaProton;Counts",25,0,5);
1432 fListHist->Add(fHistNsigmaNegProtonAntiLambda);
1434 fHistNsigmaPosProtonLambda = new TH1F("h1NsigmaPosProtonLambda", "Positive daughter of Lambda;NsigmaProton;Counts",25,0,5);
1435 fListHist->Add(fHistNsigmaPosProtonLambda);
1437 fHistNsigmaNegPionLambda = new TH1F("h1NsigmaNegPionLambda", "Negative daughter of Lambda;NsigmaPion;Counts",25,0,5);
1438 fListHist->Add(fHistNsigmaNegPionLambda);
1440 fHistNsigmaPosProtonAntiLambda = new TH1F("h1NsigmaPosProtonAntiLambda", "Positive daughter of AntiLambda;NsigmaProton;Counts",25,0,5);
1441 fListHist->Add(fHistNsigmaPosProtonAntiLambda);
1443 fHistNsigmaNegPionAntiLambda = new TH1F("h1NsigmaNegPionAntiLambda", "Negative daughter of AntiLambda;NsigmaPion;Counts",25,0,5);
1444 fListHist->Add(fHistNsigmaNegPionAntiLambda);
1446 fHistNsigmaPosPionK0 = new TH1F("h1NsigmaPosPionK0", "Positive daughter of K0s;NsigmaPion;Counts",25,0,5);
1447 fListHist->Add(fHistNsigmaPosPionK0);
1449 fHistNsigmaNegPionK0 = new TH1F("h1NsigmaNegPionK0", "Negative daughter of K0s;NsigmaPion;Counts",25,0,5);
1450 fListHist->Add(fHistNsigmaNegPionK0);
1453 //********************************
1454 // Associated particles histograms
1455 //********************************
1458 fHistAsMcRapK0 = new TH1F("h1AsMcRapK0", "K^{0} associated;eta;Counts", 60, -1.5, 1.5);
1459 fListHist->Add(fHistAsMcRapK0);
1461 fHistAsMcRapLambda = new TH1F("h1AsMcRapLambda", "#Lambda^{0} associated;eta;Counts", 60, -1.5, 1.5);
1462 fListHist->Add(fHistAsMcRapLambda);
1464 fHistAsMcRapAntiLambda = new TH1F("h1AsMcRapAntiLambda", "#bar{#Lambda}^{0} associated;eta;Counts", 60, -1.5, 1.5);
1465 fListHist->Add(fHistAsMcRapAntiLambda);
1468 fHistAsMcPtK0 = new TH1F("h1AsMcPtK0", "K^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1469 fListHist->Add(fHistAsMcPtK0);
1471 fHistAsMcPtLambda = new TH1F("h1AsMcPtLambda", "#Lambda^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1472 fListHist->Add(fHistAsMcPtLambda);
1474 fHistAsMcPtAntiLambda = new TH1F("h1AsMcPtAntiLambda", "#AntiLambda^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1475 fListHist->Add(fHistAsMcPtAntiLambda);
1478 fHistAsMcPtZoomK0 = new TH1F("h1AsMcPtZoomK0", "K^{0} candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
1479 fListHist->Add(fHistAsMcPtZoomK0);
1481 fHistAsMcPtZoomLambda = new TH1F("h1AsMcPtZoomLambda", "#Lambda^{0} candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
1482 fListHist->Add(fHistAsMcPtZoomLambda);
1484 fHistAsMcPtZoomAntiLambda = new TH1F("h1AsMcPtZoomAntiLambda", "#AntiLambda^{0} candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
1485 fListHist->Add(fHistAsMcPtZoomAntiLambda);
1487 //Pt distribution Rap3
1488 fHistAsMcPtK0Rap3 = new TH1F("h1AsMcPtK0Rap3", "K^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1489 fListHist->Add(fHistAsMcPtK0Rap3);
1491 fHistAsMcPtLambdaRap3 = new TH1F("h1AsMcPtLambdaRap3", "#Lambda^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1492 fListHist->Add(fHistAsMcPtLambdaRap3);
1494 fHistAsMcPtAntiLambdaRap3 = new TH1F("h1AsMcPtAntiLambdaRap3", "#AntiLambda^{0} associated;p_{t} (GeV/c);Counts", 240,0,12);
1495 fListHist->Add(fHistAsMcPtAntiLambdaRap3);
1498 // Radius distribution
1499 fHistAsMcProdRadiusK0 = new TH1F("h1AsMcProdRadiusK0", "K^{0} associated;r (cm);Counts", 500, 0, 100);
1500 fListHist->Add(fHistAsMcProdRadiusK0);
1502 fHistAsMcProdRadiusLambda = new TH1F("h1AsMcProdRadiusLambda", "#Lambda^{0} associated;r (cm);Counts", 500, 0, 100);
1503 fListHist->Add(fHistAsMcProdRadiusLambda);
1505 fHistAsMcProdRadiusAntiLambda = new TH1F("h1AsMcProdRadiusAntiLambda", "#bar{#Lambda}^{0} associated;r (cm);Counts", 500, 0, 100);
1506 fListHist->Add(fHistAsMcProdRadiusAntiLambda);
1508 fHistAsMcProdRadiusXvsYK0s = new TH2F("h2AsMcProdRadiusXvsYK0s","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
1509 fListHist->Add(fHistAsMcProdRadiusXvsYK0s);
1511 fHistAsMcProdRadiusXvsYLambda = new TH2F("h2AsMcProdRadiusXvsYLambda","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
1512 fListHist->Add(fHistAsMcProdRadiusXvsYLambda);
1514 fHistAsMcProdRadiusXvsYAntiLambda = new TH2F("h2AsMcProdRadiusXvsYAntiLambda","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
1515 fListHist->Add(fHistAsMcProdRadiusXvsYAntiLambda);
1518 fHistPidMcMassK0 = new TH1F("h1PidMcMassK0", "K^{0} MC PId checked;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
1519 fListHist->Add(fHistPidMcMassK0);
1521 fHistPidMcMassLambda = new TH1F("h1PidMcMassLambda", "#Lambda^{0} MC PId checked;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1522 fListHist->Add(fHistPidMcMassLambda);
1524 fHistPidMcMassAntiLambda = new TH1F("h1PidMcMassAntiLambda", "#bar{#Lambda}^{0} MC PId checked;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1525 fListHist->Add(fHistPidMcMassAntiLambda);
1527 fHistAsMcMassK0 = new TH1F("h1AsMcMassK0", "K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
1528 fListHist->Add(fHistAsMcMassK0);
1530 fHistAsMcMassLambda = new TH1F("h1AsMcMassLambda", "#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1531 fListHist->Add(fHistAsMcMassLambda);
1533 fHistAsMcMassAntiLambda = new TH1F("h1AsMcMassAntiLambda", "#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1534 fListHist->Add(fHistAsMcMassAntiLambda);
1538 fHistAsMcMassK0Rap3 = new TH1F("h1AsMcMassK0Rap3", "K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
1539 fListHist->Add(fHistAsMcMassK0Rap3);
1541 fHistAsMcMassLambdaRap3 = new TH1F("h1AsMcMassLambdaRap3", "#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1542 fListHist->Add(fHistAsMcMassLambdaRap3);
1544 fHistAsMcMassAntiLambdaRap3 = new TH1F("h1AsMcMassAntiLambdaRap3", "#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
1545 fListHist->Add(fHistAsMcMassAntiLambdaRap3);
1550 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);
1551 fListHist->Add(fHistAsMcPtVsMassK0);
1553 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);
1554 fListHist->Add(fHistAsMcPtVsMassLambda);
1556 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);
1557 fListHist->Add(fHistAsMcPtVsMassAntiLambda);
1560 //Pt versus Mass Rap3
1561 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);
1562 fListHist->Add(fHistAsMcPtVsMassK0Rap3);
1564 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);
1565 fListHist->Add(fHistAsMcPtVsMassLambdaRap3);
1567 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);
1568 fListHist->Add(fHistAsMcPtVsMassAntiLambdaRap3);
1574 // invariant mass vs radius
1575 //fHistAsMcMassVsRadiusK0 = new TH2F("h2AsMcMassVsRadiusK0", "K^{0} associated;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 500, 0.47, 0.52);
1576 fHistAsMcMassVsRadiusK0 = new TH2F("h2AsMcMassVsRadiusK0", "K^{0} associated;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",200,0,200, 500, 0.47, 0.52);
1577 fListHist->Add(fHistAsMcMassVsRadiusK0);
1579 //fHistAsMcMassVsRadiusLambda = new TH2F("h2AsMcMassVsRadiusLambda", "#Lambda associated;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, lNbinInvMassLambda, 1.10, 1.13);
1580 fHistAsMcMassVsRadiusLambda = new TH2F("h2AsMcMassVsRadiusLambda", "#Lambda associated;radius (cm);M(p#pi^{-}) (GeV/c^{2})",200,0,200, 1.10, 1.13);
1581 fListHist->Add(fHistAsMcMassVsRadiusLambda);
1583 //fHistAsMcMassVsRadiusAntiLambda = new TH2F("h2AsMcMassVsRadiusAntiLambda", "#bar{#Lambda} associated;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius,lNbinInvMassLambda , 1.10, 1.13);
1584 fHistAsMcMassVsRadiusAntiLambda = new TH2F("h2AsMcMassVsRadiusAntiLambda", "#bar{#Lambda} associated;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",200,0,200 , 1.10, 1.13);
1585 fListHist->Add(fHistAsMcMassVsRadiusAntiLambda);
1587 // Position Resolution
1588 fHistAsMcResxK0 = new TH1F("h1AsMcResxK0", "K^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1589 fListHist->Add(fHistAsMcResxK0);
1590 fHistAsMcResyK0 = new TH1F("h1AsMcResyK0", "K^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1591 fListHist->Add(fHistAsMcResyK0);
1592 fHistAsMcReszK0 = new TH1F("h1AsMcReszK0", "K^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1593 fListHist->Add(fHistAsMcReszK0);
1594 fHistAsMcResrVsRadiusK0 = new TH2F("h2AsMcResrVsRadiusK0", "K^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50., 50, -0.25, 0.25);
1595 fListHist->Add(fHistAsMcResrVsRadiusK0);
1596 fHistAsMcReszVsRadiusK0 = new TH2F("h2AsMcReszVsRadiusK0", "K^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1597 fListHist->Add(fHistAsMcReszVsRadiusK0);
1599 fHistAsMcResxLambda = new TH1F("h1AsMcResxLambda", "#Lambda^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1600 fListHist->Add(fHistAsMcResxLambda);
1601 fHistAsMcResyLambda = new TH1F("h1AsMcResyLambda", "#Lambda^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1602 fListHist->Add(fHistAsMcResyLambda);
1603 fHistAsMcReszLambda = new TH1F("h1AsMcReszLambda", "#Lambda^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1604 fListHist->Add(fHistAsMcReszLambda);
1605 fHistAsMcResrVsRadiusLambda = new TH2F("h2AsMcResrVsRadiusLambda", "#Lambda^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1606 fListHist->Add(fHistAsMcResrVsRadiusLambda);
1607 fHistAsMcReszVsRadiusLambda = new TH2F("h2AsMcReszVsRadiusLambda", "#Lambda^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1608 fListHist->Add(fHistAsMcReszVsRadiusLambda);
1610 fHistAsMcResxAntiLambda = new TH1F("h1AsMcResxAntiLambda", "#bar{#Lambda}^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
1611 fListHist->Add(fHistAsMcResxAntiLambda);
1612 fHistAsMcResyAntiLambda = new TH1F("h1AsMcResyAntiLambda", "#bar{#Lambda}^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
1613 fListHist->Add(fHistAsMcResyAntiLambda);
1614 fHistAsMcReszAntiLambda = new TH1F("h1AsMcReszAntiLambda", "#bar{#Lambda}^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
1615 fListHist->Add(fHistAsMcReszAntiLambda);
1616 fHistAsMcResrVsRadiusAntiLambda = new TH2F("h2AsMcResrVsRadiusAntiLambda", "#bar{#Lambda}^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1617 fListHist->Add(fHistAsMcResrVsRadiusAntiLambda);
1618 fHistAsMcReszVsRadiusAntiLambda = new TH2F("h2AsMcReszVsRadiusAntiLambda", "#bar{#Lambda}^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
1619 fListHist->Add(fHistAsMcReszVsRadiusAntiLambda);
1622 fHistAsMcResPtK0 = new TH1F("h1AsMcResPtK0","Pt Resolution K^{0};#Delta Pt;Counts",200,-1,1);
1623 fListHist->Add(fHistAsMcResPtK0);
1625 fHistAsMcResPtLambda = new TH1F("h1AsMcResPtLambda","Pt Resolution #Lambda^{0};#Delta Pt;Counts",200,-1,1);
1626 fListHist->Add(fHistAsMcResPtLambda);
1628 fHistAsMcResPtAntiLambda = new TH1F("h1AsMcResPtAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Counts",200,-1,1);
1629 fListHist->Add(fHistAsMcResPtAntiLambda);
1632 fHistAsMcResPtVsRapK0 = new TH2F("h2AsMcResPtVsRapK0","Pt Resolution K^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
1633 fListHist->Add(fHistAsMcResPtVsRapK0);
1635 fHistAsMcResPtVsRapLambda = new TH2F("h2AsMcResPtVsRapLambda","Pt Resolution #Lambda^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
1636 fListHist->Add(fHistAsMcResPtVsRapLambda);
1638 fHistAsMcResPtVsRapAntiLambda = new TH2F("h2AsMcResPtVsRapAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
1639 fListHist->Add(fHistAsMcResPtVsRapAntiLambda);
1641 fHistAsMcResPtVsPtK0 = new TH2F("h2AsMcResPtVsPtK0","Pt Resolution K^{0};#Delta Pt;Pt",600,-0.15,0.15,240,0,12);
1642 fListHist->Add(fHistAsMcResPtVsPtK0);
1644 fHistAsMcResPtVsPtLambda = new TH2F("h2AsMcResPtVsPtLambda","Pt Resolution #Lambda^{0};#Delta Pt;Pt",600,-0.15,0.15,240,0,12);
1645 fListHist->Add(fHistAsMcResPtVsPtLambda);
1647 fHistAsMcResPtVsPtAntiLambda = new TH2F("h2AsMcResPtVsPtAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Pt",300,-0.15,0.15,240,0,12);
1648 fListHist->Add(fHistAsMcResPtVsPtAntiLambda);
1650 // pdgcode of mother
1651 fHistAsMcMotherPdgCodeK0s = new TH1F("h1AsMcMotherPdgCodeK0s","Mother of Associated K^{0};mother;counts",11,0,11);
1652 fListHist->Add(fHistAsMcMotherPdgCodeK0s);
1654 fHistAsMcMotherPdgCodeLambda = new TH1F("h1AsMcMotherPdgCodeLambda","Mother of Associated #Lambda^{0};mother;counts",11,0,11);
1655 fListHist->Add(fHistAsMcMotherPdgCodeLambda);
1657 fHistAsMcMotherPdgCodeAntiLambda = new TH1F("h1AsMcMotherPdgCodeAntiLambda","Mother of Associated #bar{#Lambda}^{0};mother;counts",11,0,11);
1658 fListHist->Add(fHistAsMcMotherPdgCodeAntiLambda);
1660 // Pt distribution Lambda from Sigma
1661 fHistAsMcPtLambdaFromSigma = new TH1F("h1AsMcPtLambdaFromSigma","#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1662 fListHist->Add(fHistAsMcPtLambdaFromSigma);
1664 fHistAsMcPtAntiLambdaFromSigma = new TH1F("h1AsMcPtAntiLambdaFromSigma","#bar{#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1665 fListHist->Add(fHistAsMcPtAntiLambdaFromSigma);
1667 // Associated secondary particles:
1668 // Pt and rapidity distribution
1669 fHistAsMcSecondaryPtVsRapK0s = new TH2F("h2AsMcSecondaryPtVsRapK0s", "K^{0} associated secondary;p_{t} (GeV/c);rapidity",240,0,12,30,-1.5,1.5);
1670 fListHist->Add(fHistAsMcSecondaryPtVsRapK0s);
1672 fHistAsMcSecondaryPtVsRapLambda = new TH2F("h2AsMcSecondaryPtVsRapLambda", "#Lambda^{0} associated secondary;p_{t} (GeV/c);rapidity",240,0,12,30,-1.5,1.5);
1673 fListHist->Add(fHistAsMcSecondaryPtVsRapLambda);
1675 fHistAsMcSecondaryPtVsRapAntiLambda = new TH2F("h2AsMcSecondaryPtVsRapAntiLambda", "#bar{#Lambda}^{0} associated secondary;p_{t} (GeV/c);rapidity",240,0,12,30,-1.5,1.5);
1676 fListHist->Add(fHistAsMcSecondaryPtVsRapAntiLambda);
1678 // Production radius
1679 fHistAsMcSecondaryProdRadiusK0s = new TH1F("h1AsMcSecondaryProdRadiusK0s", "K^{0} Production Radius;r (cm);Count", 170, -2, 15);
1680 fListHist->Add(fHistAsMcSecondaryProdRadiusK0s);
1682 fHistAsMcSecondaryProdRadiusLambda = new TH1F("h1AsMcSecondaryProdRadiusLambda", "#Lambda^{0} Production Radius;r (cm);Count", 170, -2, 15);
1683 fListHist->Add(fHistAsMcSecondaryProdRadiusLambda);
1685 fHistAsMcSecondaryProdRadiusAntiLambda = new TH1F("h1AsMcSecondaryProdRadiusAntiLambda", "#bar{#Lambda}^{0} Production Radius;r (cm);Count", 170, -2, 15);
1686 fListHist->Add(fHistAsMcSecondaryProdRadiusAntiLambda);
1688 fHistAsMcSecondaryProdRadiusXvsYK0s = new TH2F("h2AsMcSecondaryProdRadiusXvsYK0s","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1689 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYK0s);
1691 fHistAsMcSecondaryProdRadiusXvsYLambda = new TH2F("h2AsMcSecondaryProdRadiusXvsYLambda","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1692 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYLambda);
1694 fHistAsMcSecondaryProdRadiusXvsYAntiLambda = new TH2F("h2AsMcSecondaryProdRadiusXvsYAntiLambda","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
1695 fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYAntiLambda);
1697 fHistAsMcSecondaryMotherPdgCodeK0s = new TH1F("h1AsMcSecondaryMotherPdgCodeK0s","Mother of Associated Secondary K^{0};mother;counts",11,0,11);
1698 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeK0s);
1700 fHistAsMcSecondaryMotherPdgCodeLambda = new TH1F("h1AsMcSecondaryMotherPdgCodeLambda","Mother of Associated Secondary #Lambda^{0};mother;counts",11,0,11);
1701 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeLambda);
1703 fHistAsMcSecondaryMotherPdgCodeAntiLambda = new TH1F("h1AsMcSecondaryMotherPdgCodeAntiLambda","Mother of Associated Secondary #bar{#Lambda}^{0};mother;counts",11,0,11);
1704 fListHist->Add(fHistAsMcSecondaryMotherPdgCodeAntiLambda);
1706 // Pt distribution Lambda from Sigma
1707 fHistAsMcSecondaryPtLambdaFromSigma = new TH1F("h1AsMcSecondaryPtLambdaFromSigma","#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1708 fListHist->Add(fHistAsMcSecondaryPtLambdaFromSigma);
1710 fHistAsMcSecondaryPtAntiLambdaFromSigma = new TH1F("h1AsMcSecondaryPtAntiLambdaFromSigma","#bar{#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",240,0,12);
1711 fListHist->Add(fHistAsMcSecondaryPtAntiLambdaFromSigma);
1712 PostData(1, fListHist);
1713 PostData(2, fCentrSelector);
1714 PostData(3, fTracksCuts);
1717 //________________________________________________________________________
1718 void AliAnalysisTaskPerformanceStrange::UserExec(Option_t *)
1721 // Called for each event
1723 AliStack* stack = NULL;
1724 // TClonesArray *mcArray = NULL;
1725 TArrayF mcPrimaryVtx;
1727 fESD=(AliESDEvent *)InputEvent();
1730 Printf("ERROR: fESD not available");
1734 AliVEvent* lEvent = InputEvent();
1737 Printf("ERROR: Event not available");
1745 if (fUsePID.Contains("withPID")) {
1746 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
1747 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
1748 fPIDResponse = inputHandler->GetPIDResponse();
1751 fHistNumberEvents->Fill(0.5);
1753 //******************
1754 // Trigger Selection ! Warning Works only for ESD, add protection in case of AOD loop
1755 //******************
1757 Bool_t isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()& AliVEvent::kMB);
1758 if (!isSelected) return;
1760 fHistNumberEvents->Fill(1.5);
1763 // Centrality selection
1765 static AliESDtrackCuts * trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
1766 Bool_t isCentralitySelected = fCentrSelector->IsCentralityBinSelected(fESD,trackCuts);
1767 if(!isCentralitySelected) return;
1769 // Done by the AliPhysicsSelection Task ! Only the selected events are passed to this task
1771 AliESDtrackCuts *TestTrackCuts = new AliESDtrackCuts();
1772 TestTrackCuts->SetRequireTPCRefit(kTRUE);
1773 TestTrackCuts->SetRequireITSRefit(kFALSE);
1774 // mytracksCuts->SetMinNClustersTPC(nbMinTPCclusters);
1775 TestTrackCuts->SetMinNCrossedRowsTPC(70);
1776 TestTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
1778 AliESDtrack *track = 0x0;
1779 Double_t trackP[3] = {0,0,0};
1780 for (int i = 0; i<fESD->GetNumberOfTracks();i++){
1781 track = fESD->GetTrack(i);
1782 track->GetInnerPxPyPz(trackP);
1783 TestTrackCuts->SetRequireITSRefit(kFALSE);
1784 if(TestTrackCuts->IsSelected(track)) fHistPtTracks->Fill(trackP[2]);
1785 TestTrackCuts->SetRequireITSRefit(kTRUE);
1786 if(TestTrackCuts->IsSelected(track)) fHistPtTracksITSRefit->Fill(trackP[2]);
1790 // Remove Events with no tracks
1791 //if (!(fESD->GetNumberOfTracks())) return;
1793 fHistNumberEvents->Fill(2.5);
1794 // fHistTrackPerEvent->Fill(fESD->GetNumberOfTracks());
1796 //*************************************
1798 //*************************************
1801 Double_t lCutRap = 0.5;
1803 // cut Pseudorapidity:
1805 Double_t lCutPseudorap = 0.8;
1807 // Cut AliKF Chi2 for Reconstructed particles
1808 // Double_t cutChi2KF = 1E3;
1811 Double_t lLimitPPID = 1.0;
1812 Float_t cutNSigmaLowP = 1E3;
1813 Float_t cutNSigmaHighP = 1E3;
1814 if (fUsePID.Contains("withPID")) {
1815 cutNSigmaLowP = 3.0;
1816 cutNSigmaHighP = 3.0;
1820 // Cut Daughters pt (GeV/c):
1821 //Double_t cutMinPtDaughter = 0.160;
1823 // Cut primary vertex:
1824 Double_t cutPrimVertex = 10.0;
1827 Double_t cutcTauL = 3*7.89;
1828 Double_t cutcTauK0s = 3*2.68;
1830 // Min number of TPC clusters:
1831 // Int_t nbMinTPCclusters = 80;
1836 Int_t LambdaPID = 0;
1837 Int_t AntiLambdaPID = 0;
1840 //////******************************************
1841 ////// Access MC: ******************************
1842 //////******************************************
1845 if(fAnalysisType == "ESD") {
1846 AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1847 if (!eventHandler) {
1848 Printf("ERROR: Could not retrieve MC event handler");
1851 AliMCEvent* mcEvent = eventHandler->MCEvent();
1853 Printf("ERROR: Could not retrieve MC event");
1856 stack = mcEvent->Stack();
1858 Printf("ERROR: Could not retrieve stack");
1862 AliGenEventHeader* mcHeader=mcEvent->GenEventHeader();
1863 if(!mcHeader) return;
1864 mcHeader->PrimaryVertex(mcPrimaryVtx);
1866 if (TMath::Abs(mcPrimaryVtx.At(2)) > cutPrimVertex) return; /// cut on z of prim. vertex !!!!!!
1870 // PID parameters for MC simulations:
1871 fAlephParameters[0] = 2.15898e+00/50.;
1872 fAlephParameters[1] = 1.75295e+01;
1873 fAlephParameters[2] = 3.40030e-09;
1874 fAlephParameters[3] = 1.96178e+00;
1875 fAlephParameters[4] = 3.91720e+00;
1880 //**********************************************
1882 //**********************************************
1884 Double_t lmcPrimVtxR = 0;
1886 Int_t lNbMCPrimary = 0;
1887 Int_t lNbMCPart = 0;
1889 Int_t lPdgcodeCurrentPart = 0;
1890 Double_t lRapCurrentPart = 0;
1891 Double_t lPtCurrentPart = 0;
1893 Int_t lComeFromSigma = 0;
1896 // Production Radius
1897 Double_t mcPosX = 0.0, mcPosY = 0.0, mcPosZ = 0.0;
1898 Double_t mcPosR = 0.0;
1901 Double_t mcDecayPosX = 0, mcDecayPosY = 0, mcDecayPosR = 0;
1903 // current mc particle 's mother
1904 Int_t iCurrentMother = 0, lPdgCurrentMother = 0;
1905 // Bool_t lCurrentMotherIsPrimary;
1907 // current mc particles 's daughter:
1908 Int_t lPdgCurrentDaughter0 = 0, lPdgCurrentDaughter1 = 0;
1910 // variables for multiple reconstruction studies:
1911 Int_t id0 = 0, id1 = 0;
1912 //Int_t lLabelTrackN = 0, lLabelTrackP = 0;
1913 //Int_t lPartNMother = 0, lPartPMother = 0;
1914 //Int_t lPartPMotherPDGcode = 0;
1915 Int_t lNtimesReconstructedK0s = 0, lNtimesReconstructedLambda = 0, lNtimesReconstructedAntiLambda = 0;
1916 // Int_t lNtimesReconstructedK0sMI = 0, lNtimesReconstructedLambdaMI = 0, lNtimesReconstructedAntiLambdaMI = 0;
1918 ////********************************
1919 ////Start loop over MC particles****
1920 ////********************************
1925 fHistMCPrimaryVertexX->Fill(mcPrimaryVtx.At(0));
1926 fHistMCPrimaryVertexY->Fill(mcPrimaryVtx.At(1));
1927 fHistMCPrimaryVertexZ->Fill(mcPrimaryVtx.At(2));
1929 lmcPrimVtxR = TMath::Sqrt(mcPrimaryVtx.At(0)*mcPrimaryVtx.At(0)+mcPrimaryVtx.At(1)*mcPrimaryVtx.At(1));
1932 if(fAnalysisType == "ESD") {
1934 lNbMCPrimary = stack->GetNprimary();
1935 lNbMCPart = stack->GetNtrack();
1937 fHistMCMultiplicityPrimary->Fill(lNbMCPrimary);
1938 fHistMCMultiplicityTracks->Fill(lNbMCPart);
1941 for (Int_t iMc = 0; iMc < (stack->GetNtrack()); iMc++) {
1942 TParticle *p0 = stack->Particle(iMc);
1944 //Printf("ERROR: particle with label %d not found in stack (mc loop)", iMc);
1947 lPdgcodeCurrentPart = p0->GetPdgCode();
1949 // Keep only K0s, Lambda and AntiLambda, Xi and Phi:
1950 if ( (lPdgcodeCurrentPart != 310 ) && (lPdgcodeCurrentPart != 3122 ) && (lPdgcodeCurrentPart != -3122 ) && (lPdgcodeCurrentPart != 3312 ) && (lPdgcodeCurrentPart != -3312) && (lPdgcodeCurrentPart != -333) ) continue;
1952 lRapCurrentPart = MyRapidity(p0->Energy(),p0->Pz());
1953 //lEtaCurrentPart = p0->Eta();
1954 lPtCurrentPart = p0->Pt();
1955 iCurrentMother = p0->GetFirstMother();
1957 // lPdgCurrentMother = stack->Particle(iCurrentMother)->GetPdgCode();
1958 if (iCurrentMother == -1){lPdgCurrentMother=0; } else {lPdgCurrentMother = stack->Particle(iCurrentMother)->GetPdgCode();}
1963 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
1965 id0 = p0->GetDaughter(0);
1966 id1 = p0->GetDaughter(1);
1968 // Decay Radius and Production Radius
1969 if ( id0 <= lNbMCPart && id0 > 0 && id1 <= lNbMCPart && id1 > 0) {
1970 TParticle *pDaughter0 = stack->Particle(id0);
1971 TParticle *pDaughter1 = stack->Particle(id1);
1972 lPdgCurrentDaughter0 = pDaughter0->GetPdgCode();
1973 lPdgCurrentDaughter1 = pDaughter1->GetPdgCode();
1975 mcDecayPosX = pDaughter0->Vx();
1976 mcDecayPosY = pDaughter0->Vy();
1977 mcDecayPosR = TMath::Sqrt(mcDecayPosX*mcDecayPosX+mcDecayPosY*mcDecayPosY);
1980 //Printf("ERROR: particle with label %d and/or %d not found in stack (mc loop)", id0,id1);
1984 if (lPdgcodeCurrentPart==310) {
1985 fHistMCtracksProdRadiusK0s->Fill(mcPosX,mcPosY);
1986 fHistMCtracksDecayRadiusK0s->Fill(mcDecayPosR);
1988 if (TMath::Abs(lRapCurrentPart) < 0.3) fHistMCPtAllK0sRap3->Fill(lPtCurrentPart);
1990 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllK0s->Fill(lPtCurrentPart);
1992 else if (lPdgcodeCurrentPart==3122) {
1993 fHistMCtracksProdRadiusLambda->Fill(mcPosX,mcPosY);
1994 fHistMCtracksDecayRadiusLambda->Fill(mcDecayPosR);
1996 if (TMath::Abs(lRapCurrentPart) < 0.3) fHistMCPtAllLambdaRap3->Fill(lPtCurrentPart);
1998 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllLambda->Fill(lPtCurrentPart);
2000 else if (lPdgcodeCurrentPart==-3122) {
2001 fHistMCtracksProdRadiusAntiLambda->Fill(mcPosX,mcPosY);
2002 fHistMCtracksDecayRadiusAntiLambda->Fill(mcDecayPosR);
2004 if (TMath::Abs(lRapCurrentPart) < 0.3) fHistMCPtAllAntiLambdaRap3->Fill(lPtCurrentPart);
2006 if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllAntiLambda->Fill(lPtCurrentPart);
2009 if ( ( ( TMath::Abs(lPdgCurrentMother) == 3212) ||
2010 ( TMath::Abs(lPdgCurrentMother) == 3224) ||
2011 ( TMath::Abs(lPdgCurrentMother) == 3214) ||
2012 ( TMath::Abs(lPdgCurrentMother) == 3114) )
2013 && ( iCurrentMother <= lNbMCPrimary )
2014 ) lComeFromSigma = 1;
2015 else lComeFromSigma = 0;
2017 //*********************************************
2018 // Now keep only primary particles
2019 // if ( ( iMc > lNbMCPrimary ) && (!lComeFromSigma) ) continue;
2021 //*************************************//
2022 // new definition of primary particles //
2023 //*************************************//
2028 Double_t ProdDistance = 0;
2031 dx = ( (mcPrimaryVtx.At(0)) - (p0->Vx()) );
2032 dy = ( (mcPrimaryVtx.At(1)) - (p0->Vy()) );
2033 dz = ( (mcPrimaryVtx.At(2)) - (p0->Vz()) );
2035 ProdDistance = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
2037 if (ProdDistance > 0.001) continue; // secondary V0
2041 lNtimesReconstructedK0s = 0; lNtimesReconstructedLambda = 0; lNtimesReconstructedAntiLambda = 0;
2045 if (lPdgcodeCurrentPart==310) {
2046 fHistMCRapK0s->Fill(lRapCurrentPart);
2047 if (lPtCurrentPart < 0.2 && lPtCurrentPart < 3.0)
2048 fHistMCRapInPtRangeK0s->Fill(lRapCurrentPart);
2051 if (lPdgcodeCurrentPart==3122) {
2052 fHistMCRapLambda->Fill(lRapCurrentPart);
2053 if (lPtCurrentPart < 0.6 && lPtCurrentPart < 3.5)
2054 fHistMCRapInPtRangeLambda->Fill(lRapCurrentPart);
2057 if (lPdgcodeCurrentPart==-3122) {
2058 fHistMCRapAntiLambda->Fill(lRapCurrentPart);
2059 if (lPtCurrentPart < 0.6 && lPtCurrentPart < 3.5)
2060 fHistMCRapInPtRangeAntiLambda->Fill(lRapCurrentPart);
2063 if (lPdgcodeCurrentPart==3312 || lPdgcodeCurrentPart==-3312) {
2064 fHistMCRapXi->Fill(lRapCurrentPart);
2065 if (lPtCurrentPart < 0.6 && lPtCurrentPart < 3.0)
2066 fHistMCRapInPtRangeXi->Fill(lRapCurrentPart);
2069 if (lPdgcodeCurrentPart==333) {
2070 fHistMCRapPhi->Fill(lRapCurrentPart);
2071 if (lPtCurrentPart < 0.7 && lPtCurrentPart < 3.0)
2072 fHistMCRapInPtRangePhi->Fill(lRapCurrentPart);
2076 if (TMath::Abs(lRapCurrentPart) > lCutRap) continue;
2078 if (lPdgcodeCurrentPart==310) {
2079 fHistMCProdRadiusK0s->Fill(mcPosR);
2081 fHistMCPtK0s->Fill(lPtCurrentPart);
2083 if (TMath::Abs(lRapCurrentPart) < 0.3) fHistMCPtK0sRap3->Fill(lPtCurrentPart);
2086 fHistNTimesRecK0s->Fill(lNtimesReconstructedK0s);
2087 fHistNTimesRecK0sVsPt->Fill(lPtCurrentPart,lNtimesReconstructedK0s);
2090 if (lPdgcodeCurrentPart==3122) {
2091 fHistMCProdRadiusLambda->Fill(mcPosR);
2093 fHistMCPtLambda->Fill(lPtCurrentPart);
2095 if (TMath::Abs(lRapCurrentPart) < 0.3) fHistMCPtLambdaRap3->Fill(lPtCurrentPart);
2097 fHistNTimesRecLambda->Fill(lNtimesReconstructedLambda);
2098 fHistNTimesRecLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedLambda);
2099 if (lComeFromSigma) fHistMCPtLambdaFromSigma->Fill(lPtCurrentPart);
2101 //printf("found Lambda MC pT=%e\n",lPtCurrentPart);
2102 //printf("found Lambda MC Plabel=%d PPDGcode=%d Nlabel=%d NPDGcode=%d\n\n",id0,lPdgCurrentDaughter0,id1,lPdgCurrentDaughter1);
2106 if (lPdgcodeCurrentPart==-3122) {
2107 fHistMCProdRadiusAntiLambda->Fill(mcPosR);
2109 fHistMCPtAntiLambda->Fill(lPtCurrentPart);
2111 if (TMath::Abs(lRapCurrentPart) < 0.3) fHistMCPtAntiLambdaRap3->Fill(lPtCurrentPart);
2114 fHistNTimesRecAntiLambda->Fill(lNtimesReconstructedAntiLambda);
2115 fHistNTimesRecAntiLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambda);
2116 if (lComeFromSigma) fHistMCPtAntiLambdaFromSigma->Fill(lPtCurrentPart);
2118 //printf("found Lambda MC pT=%e\n",lPtCurrentPart);
2119 //printf("found Lambda MC Plabel=%d PPDGcode=%d Nlabel=%d NPDGcode=%d\n\n",id0,lPdgCurrentDaughter0,id1,lPdgCurrentDaughter1);
2124 } // end loop ESD MC
2126 } // end ESD condition
2129 } // End Loop over MC condition
2135 //************************************
2137 //************************************
2139 Double_t lLambdaMass = 1.115683; //PDG
2140 Double_t lPLambda = 0;
2141 Double_t lPAntiLambda = 0;
2143 Double_t lMagneticField = 999;
2146 Int_t nv0sTot= 0, nv0s = 0;
2149 Double_t lV0Position[3];
2151 Double_t lDcaPosToPrimVertex = 0;
2152 Double_t lDcaNegToPrimVertex = 0;
2153 Double_t lDcaV0Daughters = 0;
2154 Double_t lV0cosPointAngle = 0;
2155 Double_t lChi2V0 = 0;
2156 Double_t lV0DecayLength = 0;
2157 Double_t lV0Radius = 0;
2158 Double_t lDcaV0ToPrimVertex = 0;
2159 Double_t lcTauLambda = 0;
2160 Double_t lcTauAntiLambda = 0;
2161 Double_t lcTauK0s = 0;
2162 Int_t lOnFlyStatus = 0;
2163 //Float_t tdcaPosToPrimVertexXYZ[2], tdcaNegToPrimVertexXYZ[2]; // ..[0] = Impact parameter in XY plane and ..[1] = Impact parameter in Z
2164 //Double_t tdcaDaughterToPrimVertex[2]; // ..[0] = Pos and ..[1] = Neg
2168 Double_t lInvMassK0s = 0, lInvMassLambda = 0, lInvMassAntiLambda = 0;
2169 Double_t lPtK0s = 0, lPtLambda = 0, lPtAntiLambda = 0;
2170 Double_t lRapK0s = 0, lRapLambda = 0, lRapAntiLambda = 0;
2171 // Double_t lEtaK0s = 0, lEtaLambda = 0, lEtaAntiLambda = 0;
2172 Double_t lAlphaV0 = 0, lPtArmV0 = 0;
2174 Double_t lPzK0s = 0, lPzLambda = 0, lPzAntiLambda = 0;
2177 Double_t lV0Eta = 999;
2179 // to study Associated V0s:
2180 Int_t lIndexTrackPos = 0, lIndexTrackNeg = 0;
2181 UInt_t lLabelTrackPos = 0, lLabelTrackNeg = 0;
2182 Int_t lCheckPIdK0Short = 0, lCheckMcK0Short = 0;
2183 Int_t lCheckPIdLambda = 0, lCheckMcLambda = 0;
2184 Int_t lCheckPIdAntiLambda = 0, lCheckMcAntiLambda = 0;
2185 Int_t lCheckSecondaryK0s = 0, lCheckSecondaryLambda = 0, lCheckSecondaryAntiLambda = 0;
2186 Int_t lCheckGamma = 0;
2187 Double_t mcPosMotherX = 0, mcPosMotherY = 0, mcPosMotherZ = 0;
2188 Double_t mcPosMotherR = 0;
2189 Double_t mcMotherPt = 0;
2191 Int_t lIndexPosMother = 0;
2192 Int_t lIndexNegMother = 0;
2193 Int_t lIndexMotherOfMother = 0;
2194 Int_t lPDGCodePosDaughter = 0;
2195 Int_t lPDGCodeNegDaughter = 0;
2196 Int_t lPdgcodeMother = 0;
2197 Int_t lPdgcodeMotherOfMother = 0;
2199 // Reconstructed position
2200 Double_t rcPosXK0s = 0, rcPosYK0s = 0, rcPosZK0s = 0;
2201 Double_t rcPosRK0s = 0;
2202 Double_t rcPosXLambda = 0, rcPosYLambda = 0, rcPosZLambda = 0;
2203 Double_t rcPosRLambda = 0;
2204 Double_t rcPosXAntiLambda = 0, rcPosYAntiLambda = 0, rcPosZAntiLambda = 0;
2205 Double_t rcPosRAntiLambda = 0;
2208 Double_t deltaPtK0s = 0, deltaPtLambda = 0, deltaPtAntiLambda = 0;
2211 AliESDtrack *myTrackPos = NULL;
2212 AliESDtrack *myTrackNeg = NULL;
2213 // AliVParticle *lVPartPos = NULL;
2214 // AliVParticle *lVPartNeg = NULL;
2217 //Double_t lPosMom = 0;
2218 //Double_t lNegMom = 0;
2219 // Double_t lPmom = 0;
2220 // Double_t lPLambda = 0;
2222 // Daughters' momentum:
2223 Double_t lMomPos[3] = {999,999,999};
2224 Double_t lMomNeg[3] = {999,999,999};
2225 Double_t lPtPos = 999, lPtNeg = 999;
2226 Double_t lPPos = 999, lPNeg = 999;
2228 // Inner Wall parameters:
2229 Double_t lMomInnerWallPos =999, lMomInnerWallNeg = 999;
2231 // AliKF Chi2 and Armenteros variables
2232 // Double_t lChi2KFK0s = 0, lChi2KFLambda = 0, lChi2KFAntiLambda = 0;
2233 // Double_t lAlphaV0K0s = 0, lAlphaV0Lambda = 0, lAlphaV0AntiLambda = 0;
2234 //Double_t lPtArmV0K0s = 0, lPtArmV0Lambda = 0, lPtArmV0AntiLambda = 0;
2235 // Double_t lQlPos = 0, lQlNeg = 0;
2239 Float_t nSigmaPosPion = 0;
2240 Float_t nSigmaNegPion = 0;
2242 Float_t nSigmaPosProton = 0;
2243 Float_t nSigmaNegProton = 0;
2246 Int_t lCheckPIDK0sPosDaughter = 0, lCheckPIDK0sNegDaughter = 0;
2247 Int_t lCheckPIDLambdaPosDaughter = 0, lCheckPIDLambdaNegDaughter = 0;
2248 Int_t lCheckPIDAntiLambdaPosDaughter = 0, lCheckPIDAntiLambdaNegDaughter = 0;
2252 //****************************************************
2253 // Primary Vertex cuts &
2254 // Magnetic field and Quality tracks cuts
2255 //****************************************************
2257 Double_t lPrimaryVtxPosition[3];
2258 Double_t lPrimaryVtxCov[6];
2259 Double_t lPrimaryVtxChi2 = 999;
2260 Double_t lResPrimaryVtxX = 999;
2261 Double_t lResPrimaryVtxY = 999;
2262 Double_t lResPrimaryVtxZ = 999;
2264 AliAODVertex *myPrimaryVertex = NULL;
2265 //const AliVVertex *mySPDPrimaryVertex = NULL;
2268 const AliMultiplicity *myMultiplicty = ((AliESDEvent*)fESD)->GetMultiplicity();
2270 if(fAnalysisType == "ESD") {
2272 // Best Primary Vertex:
2274 const AliESDVertex *myBestPrimaryVertex = ((AliESDEvent*)fESD)->GetPrimaryVertex();
2275 myBestPrimaryVertex = ((AliESDEvent*)fESD)->GetPrimaryVertex();
2276 if (!myBestPrimaryVertex) return;
2277 if (!myBestPrimaryVertex->GetStatus()) return;
2279 fHistNumberEvents->Fill(3.5);
2281 myBestPrimaryVertex->GetXYZ(lPrimaryVtxPosition);
2282 myBestPrimaryVertex->GetCovMatrix(lPrimaryVtxCov);
2284 if ( ( TMath::Abs(lPrimaryVtxPosition[2]) ) > cutPrimVertex) return ; //// cut on z of prim. vertex!!!!!
2286 fHistNumberEvents->Fill(4.5);
2288 lPrimaryVtxChi2 = myBestPrimaryVertex->GetChi2toNDF();
2289 lResPrimaryVtxX = myBestPrimaryVertex->GetXRes();
2290 lResPrimaryVtxY = myBestPrimaryVertex->GetYRes();
2291 lResPrimaryVtxZ = myBestPrimaryVertex->GetZRes();
2293 // remove TPC-only primary vertex : retain only events with tracking + SPD vertex
2295 const AliESDVertex *mySPDPrimaryVertex = ((AliESDEvent*)fESD)->GetPrimaryVertexSPD();
2296 if (!mySPDPrimaryVertex) return;
2298 fHistSPDPrimaryVertexZ->Fill(mySPDPrimaryVertex->GetZ());
2300 const AliESDVertex *myPrimaryVertexTracking = ((AliESDEvent*)fESD)->GetPrimaryVertexTracks();
2301 if (!myPrimaryVertexTracking) return;
2303 if (!mySPDPrimaryVertex->GetStatus() && !myPrimaryVertexTracking->GetStatus() ) return;
2305 fHistNumberEvents->Fill(5.5);
2306 fHistTrackPerEvent->Fill(fESD->GetNumberOfTracks());
2308 myPrimaryVertex = new AliAODVertex(lPrimaryVtxPosition, lPrimaryVtxCov, lPrimaryVtxChi2, NULL, -1, AliAODVertex::kPrimary);
2309 if (!myPrimaryVertex) return;
2312 // Number of Tracklets:
2314 fHistTrackletPerEvent->Fill(myMultiplicty->GetNumberOfTracklets());
2316 lMagneticField = ((AliESDEvent*)fESD)->GetMagneticField();
2318 fHistTPCTracks->Fill(AliESDtrackCuts::GetReferenceMultiplicity((AliESDEvent*)fESD, kTRUE));
2320 //////simple chack for multiplicity////////////////////////////////////////////////////////
2324 for (Int_t jTracks=0;jTracks<fESD->GetNumberOfTracks();jTracks++){
2326 AliESDtrack* tPCtrack=fESD->GetTrack(jTracks);
2329 tPCtrack->GetImpactParameters(xy,z);
2330 if ((fTracksCuts->IsSelected(tPCtrack))&&(xy<1.0)&&(z<1.0)) {i=i+1;}
2334 fHistTPCMult->Fill(i);
2336 /////////////////////////////////////////////////////////////////////////////////////////
2341 fHistPrimaryVertexX->Fill(lPrimaryVtxPosition[0]);
2342 fHistPrimaryVertexY->Fill(lPrimaryVtxPosition[1]);
2343 fHistPrimaryVertexZ->Fill(lPrimaryVtxPosition[2]);
2344 //Double_t lrcPrimVtxR = TMath::Sqrt(lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]+lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]);
2346 fHistPrimaryVertexResX->Fill(lResPrimaryVtxX);
2347 fHistPrimaryVertexResY->Fill(lResPrimaryVtxY);
2348 fHistPrimaryVertexResZ->Fill(lResPrimaryVtxZ);
2350 //***********************
2351 // AliKF Primary Vertex
2353 AliKFVertex primaryVtxKF( *myPrimaryVertex );
2354 AliKFParticle::SetField(lMagneticField);
2359 //***Rerun the V0 finder
2361 // fESD->ResetV0s();
2362 // AliV0vertexer v0Vertexer;
2363 // v0Vertexer.SetCuts(fCuts);
2364 // v0Vertexer.Tracks2V0vertices(fESD);
2366 ////*************************
2367 //// V0 loop ****************
2368 ////*************************
2370 nv0sTot = fESD->GetNumberOfV0s();
2371 if (!nv0sTot) fHistNumberEvents->Fill(6.5);
2373 for (Int_t iV0 = 0; iV0 < nv0sTot; iV0++) {
2375 lIndexPosMother = 0; lIndexNegMother = 0; lIndexMotherOfMother = 0;
2376 lCheckPIdK0Short = 0; lCheckMcK0Short = 0; lCheckSecondaryK0s = 0;
2377 lCheckPIdLambda = 0; lCheckMcLambda = 0; lCheckSecondaryLambda = 0;
2378 lCheckPIdAntiLambda = 0; lCheckMcAntiLambda = 0; lCheckSecondaryAntiLambda = 0;
2379 lComeFromSigma = 0;lCheckGamma = 0;
2382 if(fAnalysisType == "ESD") {
2385 AliESDv0 *v0 = ((AliESDEvent*)fESD)->GetV0(iV0);
2388 // if ((v0->Pt())<0.6) continue;
2391 fHistPrimaryVertexPosXV0events->Fill(lPrimaryVtxPosition[0]);
2392 fHistPrimaryVertexPosYV0events->Fill(lPrimaryVtxPosition[1]);
2393 fHistPrimaryVertexPosZV0events->Fill(lPrimaryVtxPosition[2]);
2396 lIndexTrackPos = TMath::Abs(v0->GetPindex());
2397 lIndexTrackNeg = TMath::Abs(v0->GetNindex());
2398 AliESDtrack *myTrackPosTest = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackPos);
2399 AliESDtrack *myTrackNegTest = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackNeg);
2400 if (!myTrackPosTest || !myTrackNegTest) {
2401 Printf("strange analysis::UserExec:: Error:Could not retreive one of the daughter track\n");
2405 if ((Int_t)myTrackPosTest->GetSign() == (Int_t)myTrackNegTest->GetSign()){
2409 // VO's main characteristics to check the reconstruction cuts
2410 lOnFlyStatus = v0->GetOnFlyStatus();
2411 lChi2V0 = v0->GetChi2V0();
2412 lDcaV0Daughters = v0->GetDcaV0Daughters();
2413 lDcaV0ToPrimVertex = v0->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lPrimaryVtxPosition[2]);
2414 lV0cosPointAngle = v0->GetV0CosineOfPointingAngle(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1], lPrimaryVtxPosition[2]);
2416 v0->GetXYZ(lV0Position[0], lV0Position[1], lV0Position[2]);
2418 lV0Radius = TMath::Sqrt(lV0Position[0]*lV0Position[0]+lV0Position[1]*lV0Position[1]);
2419 lV0DecayLength = TMath::Sqrt(TMath::Power(lV0Position[0] - lPrimaryVtxPosition[0],2) +
2420 TMath::Power(lV0Position[1] - lPrimaryVtxPosition[1],2) +
2421 TMath::Power(lV0Position[2] - lPrimaryVtxPosition[2],2 ));
2424 if( myTrackPosTest->GetSign() ==1){
2426 myTrackPos = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackPos);
2427 myTrackNeg = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackNeg);
2429 // Daughters' momentum;
2430 v0->GetPPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
2431 v0->GetNPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
2434 if( myTrackPosTest->GetSign() ==-1){
2436 myTrackPos = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackNeg);
2437 myTrackNeg = ((AliESDEvent*)fESD)->GetTrack(lIndexTrackPos);
2440 // Daughters' momentum;
2441 v0->GetPPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
2442 v0->GetNPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
2445 lLabelTrackPos = (UInt_t)TMath::Abs(myTrackPos->GetLabel());
2446 lLabelTrackNeg = (UInt_t)TMath::Abs(myTrackNeg->GetLabel());
2448 // Daughters Pt and P:
2449 lPtPos = TMath::Sqrt(lMomPos[0]*lMomPos[0] + lMomPos[1]*lMomPos[1]);
2450 lPtNeg = TMath::Sqrt(lMomNeg[0]*lMomNeg[0] + lMomNeg[1]*lMomNeg[1]);
2452 lPPos = TMath::Sqrt(lMomPos[0]*lMomPos[0] + lMomPos[1]*lMomPos[1] + lMomPos[2]*lMomPos[2]);
2453 lPNeg = TMath::Sqrt(lMomNeg[0]*lMomNeg[0] + lMomNeg[1]*lMomNeg[1] + lMomNeg[2]*lMomNeg[2]);
2456 // lPosMom = myTrackPos->GetInnerParam()->GetP();
2458 // lNegMom = myTrackNeg->GetInnerParam()->GetP();
2460 // lPmom = TMath::Sqrt(lMomPos[0]*lMomPos[0]+lMomPos[1]*lMomPos[1]+lMomPos[2]+lMomPos[2]);
2464 // Inner Wall parameter:
2465 const AliExternalTrackParam *myInnerWallTrackPos = myTrackPos->GetInnerParam();
2467 if (myInnerWallTrackPos) {lMomInnerWallPos = myInnerWallTrackPos->GetP();}
2470 const AliExternalTrackParam *myInnerWallTrackNeg = myTrackNeg->GetInnerParam();
2472 if (myInnerWallTrackNeg) {lMomInnerWallNeg = myInnerWallTrackNeg->GetP();}
2476 // DCA between daughter and Primary Vertex:
2477 if (myTrackPos) lDcaPosToPrimVertex = TMath::Abs(myTrackPos->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lMagneticField) );
2479 if (myTrackNeg) lDcaNegToPrimVertex = TMath::Abs(myTrackNeg->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lMagneticField) );
2481 // Quality tracks cuts:
2482 if ( !(fTracksCuts->IsSelected(myTrackPos)) || !(fTracksCuts->IsSelected(myTrackNeg)) )
2485 if ( ( TMath::Abs(myTrackPos->Eta()) > lCutPseudorap ) || ( TMath::Abs(myTrackNeg->Eta()) > lCutPseudorap ) ) {continue;}
2487 // Armenteros variables:
2488 lAlphaV0 = v0->AlphaV0();
2489 lPtArmV0 = v0->PtArmV0();
2493 //////////////////////////////////////////////////////////////////////////
2495 v0->ChangeMassHypothesis(310);
2496 lInvMassK0s = v0->GetEffMass();
2500 v0->ChangeMassHypothesis(3122);
2501 lInvMassLambda = v0->GetEffMass();
2502 lPtLambda = v0->Pt();
2503 lPzLambda = v0->Pz();
2506 v0->ChangeMassHypothesis(-3122);
2507 lInvMassAntiLambda = v0->GetEffMass();
2508 lPtAntiLambda = v0->Pt();
2509 lPzAntiLambda = v0->Pz();
2513 lRapK0s = v0->Y(310);
2514 lRapLambda = v0->Y(3122);
2515 lRapAntiLambda = v0->Y(-3122);
2517 if (lPtK0s==0) {continue;}
2518 if (lPtLambda==0) {continue;}
2520 if (lPtAntiLambda==0) {continue;}
2522 ///////////////////////////////////////////////////////////////////////
2524 // PID new method July 2011
2525 if (fUsePID.Contains("withPID")) {
2526 // nSigmaPosPion = TMath::Abs(fESDpid->NumberOfSigmasTPC(myTrackPos,AliPID::kPion));
2527 nSigmaPosPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(myTrackPos, AliPID::kPion));
2528 // nSigmaNegPion = TMath::Abs(fESDpid->NumberOfSigmasTPC(myTrackNeg,AliPID::kPion));
2529 nSigmaNegPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(myTrackNeg, AliPID::kPion));
2530 // nSigmaPosProton = TMath::Abs(fESDpid->NumberOfSigmasTPC(myTrackPos,AliPID::kProton));
2531 nSigmaPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(myTrackPos, AliPID::kProton));
2532 // nSigmaNegProton = TMath::Abs(fESDpid->NumberOfSigmasTPC(myTrackNeg,AliPID::kProton));
2533 nSigmaNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(myTrackNeg, AliPID::kProton));
2537 nSigmaPosPion = 0; nSigmaNegPion =0; nSigmaPosProton = 0; nSigmaNegProton= 0;
2542 // Monte-Carlo particle associated to reconstructed particles:
2544 //if (lLabelTrackPos < 0 || lLabelTrackNeg < 0) continue;
2545 TParticle *lMCESDPartPos = stack->Particle(lLabelTrackPos);
2546 if(!lMCESDPartPos) {
2547 // Printf("no MC particle for positive and/or negative daughter\n");
2550 TParticle *lMCESDPartNeg = stack->Particle(lLabelTrackNeg);
2551 if (!lMCESDPartNeg) { continue;}
2552 lPDGCodePosDaughter = lMCESDPartPos->GetPdgCode();
2553 lPDGCodeNegDaughter = lMCESDPartNeg->GetPdgCode();
2554 lIndexPosMother = lMCESDPartPos->GetFirstMother();
2555 lIndexNegMother = lMCESDPartNeg->GetFirstMother();
2557 //////////////////////////////
2558 // if (lIndexPosMother == -1) {
2559 // if (negPiKF) delete negPiKF; negPiKF=NULL;
2560 // if (posPiKF) delete posPiKF; posPiKF=NULL;
2561 // if (posPKF) delete posPKF; posPKF=NULL;
2562 // if (negAPKF) delete negAPKF; negAPKF=NULL;
2566 if (lIndexPosMother == -1) {
2570 lIndexMotherOfMother = 0;
2586 TParticle *lMCESDMother = stack->Particle(lIndexPosMother);
2587 if (!lMCESDMother) { continue;}
2588 lPdgcodeMother = lMCESDMother->GetPdgCode();
2589 lIndexMotherOfMother = lMCESDMother->GetFirstMother();
2590 if (lIndexMotherOfMother ==-1) lPdgcodeMotherOfMother = 0;
2592 TParticle *lMCESDMotherOfMother = stack->Particle(lIndexMotherOfMother);
2593 if (!lMCESDMotherOfMother) { continue;}
2594 lPdgcodeMotherOfMother = lMCESDMotherOfMother->GetPdgCode();
2597 mcPosX = lMCESDPartPos->Vx();
2598 mcPosY = lMCESDPartPos->Vy();
2599 mcPosZ = lMCESDPartPos->Vz();
2600 mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
2601 mcPosMotherX = lMCESDMother->Vx();
2602 mcPosMotherY = lMCESDMother->Vy();
2603 mcPosMotherZ = lMCESDMother->Vz();
2604 mcPosMotherR = TMath::Sqrt(mcPosMotherX*mcPosMotherX+mcPosMotherY*mcPosMotherY);
2606 mcMotherPt = lMCESDMother->Pt();
2609 } // end ESD condition
2617 if(!lOnFlyStatus) nv0s++;
2618 // else if(lOnFlyStatus) nv0sMI++;
2620 // Daughter momentum cut: ! FIX it in case of AOD !
2621 //if ( (lPtPos < cutMinPtDaughter ) ||
2622 // (lPtNeg < cutMinPtDaughter )
2625 // Look for associated particles:
2627 if( (lIndexPosMother==-1) || (lIndexNegMother==-1) ) {
2628 fHistMCDaughterTrack->Fill(1);
2631 else if( ( (lPDGCodePosDaughter==+211) && (lPDGCodeNegDaughter==-211) ) )
2633 lCheckPIdK0Short = 1;
2634 fHistMCDaughterTrack->Fill(3);
2635 if ( (lIndexPosMother==lIndexNegMother) &&
2636 (lPdgcodeMother==310) ) {
2639 //if (lIndexPosMother <= lNbMCPrimary) lCheckMcK0Short = 1;
2640 //else lCheckSecondaryK0s = 1;
2645 Double_t ProdDistance = 0;
2647 dx = ( (mcPrimaryVtx.At(0)) - (mcPosMotherX) );
2648 dy = ( (mcPrimaryVtx.At(1)) - (mcPosMotherY) );
2649 dz = ( (mcPrimaryVtx.At(2)) - (mcPosMotherZ) );
2651 ProdDistance = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
2653 if (ProdDistance < 0.001) lCheckMcK0Short = 1;
2654 else lCheckSecondaryK0s = 1;
2658 else if( ( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211) ) )
2660 lCheckPIdLambda = 1;
2661 fHistMCDaughterTrack->Fill(5);
2662 if ( (lIndexPosMother==lIndexNegMother) &&
2663 (lPdgcodeMother==3122) ){
2664 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2665 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2666 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2667 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2668 ) lComeFromSigma = 1;
2669 else lComeFromSigma = 0;
2672 // if ( (lIndexPosMother <= lNbMCPrimary) ||
2673 // ( ( lIndexPosMother > lNbMCPrimary) && (lComeFromSigma) )
2674 // ) lCheckMcLambda = 1;
2675 // else lCheckSecondaryLambda = 1;
2680 Double_t ProdDistance = 0;
2682 dx = ( (mcPrimaryVtx.At(0)) - (mcPosMotherX) );
2683 dy = ( (mcPrimaryVtx.At(1)) - (mcPosMotherY) );
2684 dz = ( (mcPrimaryVtx.At(2)) - (mcPosMotherZ) );
2686 ProdDistance = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
2688 if (ProdDistance < 0.001) lCheckMcLambda = 1;
2689 else lCheckSecondaryLambda = 1;
2694 else if( ( (lPDGCodePosDaughter==211) && (lPDGCodeNegDaughter==-2212) ) )
2696 lCheckPIdAntiLambda = 1;
2697 fHistMCDaughterTrack->Fill(7);
2698 if ( (lIndexPosMother==lIndexNegMother) &&
2699 (lPdgcodeMother==-3122) ) {
2700 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2701 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2702 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2703 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2704 ) lComeFromSigma = 1;
2705 else lComeFromSigma = 0;
2707 // if ( (lIndexPosMother <= lNbMCPrimary) ||
2708 // ( ( lIndexPosMother > lNbMCPrimary) && (lComeFromSigma) )
2709 // ) lCheckMcAntiLambda = 1;
2710 // else lCheckSecondaryAntiLambda = 1;
2715 Double_t ProdDistance = 0;
2717 dx = ( (mcPrimaryVtx.At(0)) - (mcPosMotherX) );
2718 dy = ( (mcPrimaryVtx.At(1)) - (mcPosMotherY) );
2719 dz = ( (mcPrimaryVtx.At(2)) - (mcPosMotherZ) );
2721 ProdDistance = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
2723 if (ProdDistance < 0.001) lCheckMcAntiLambda = 1;
2724 else lCheckSecondaryAntiLambda = 1;
2730 else if ( (lPDGCodePosDaughter==-11) &&
2731 (lPDGCodeNegDaughter==11) &&
2732 (lPdgcodeMother==22 ) )
2735 } // end "look for associated particles
2737 /////////////////////////////////////
2738 // PID condition for daughters tracks
2739 //////////////////////////////////////
2741 lCheckPIDK0sPosDaughter = 0, lCheckPIDK0sNegDaughter = 0;
2742 lCheckPIDLambdaPosDaughter = 0, lCheckPIDLambdaNegDaughter = 0;
2743 lCheckPIDAntiLambdaPosDaughter = 0, lCheckPIDAntiLambdaNegDaughter = 0;
2745 if (lMomInnerWallPos < lLimitPPID) {
2746 if (nSigmaPosPion < cutNSigmaLowP) {
2747 lCheckPIDK0sPosDaughter = 1;
2748 lCheckPIDAntiLambdaPosDaughter = 1;
2750 if (nSigmaPosProton < cutNSigmaLowP) lCheckPIDLambdaPosDaughter = 1;
2753 else if (lMomInnerWallPos > lLimitPPID) {
2754 if (nSigmaPosPion < cutNSigmaHighP) {
2755 lCheckPIDK0sPosDaughter = 1;
2756 lCheckPIDAntiLambdaPosDaughter = 1;
2758 if (nSigmaPosProton < cutNSigmaHighP) lCheckPIDLambdaPosDaughter = 1;
2761 if (lMomInnerWallNeg < lLimitPPID) {
2762 if (nSigmaNegPion < cutNSigmaLowP) {
2763 lCheckPIDK0sNegDaughter = 1;
2764 lCheckPIDLambdaNegDaughter = 1;
2766 if (nSigmaNegProton < cutNSigmaLowP) lCheckPIDAntiLambdaNegDaughter = 1;
2769 else if (lMomInnerWallNeg > lLimitPPID) {
2770 if (nSigmaNegPion < cutNSigmaHighP) {
2771 lCheckPIDK0sNegDaughter = 1;
2772 lCheckPIDLambdaNegDaughter = 1;
2774 if (nSigmaNegProton < cutNSigmaHighP) lCheckPIDAntiLambdaNegDaughter = 1;
2779 ///////////////values for cuts/////////////////////////////////////////////////////////////////////////////////////////
2780 if ((lDcaPosToPrimVertex < 0.1) || (lDcaNegToPrimVertex < 0.1) || (lDcaV0Daughters > 1.00) ||
2781 (lV0cosPointAngle < 0.998) || (lV0Radius < 0.9) || (lV0Radius > 100) )
2786 if (negPiKF) delete negPiKF; negPiKF=NULL;
2787 if (posPiKF) delete posPiKF; posPiKF=NULL;
2788 if (posPKF) delete posPKF; posPKF=NULL;
2789 if (negAPKF) delete negAPKF; negAPKF=NULL;
2792 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2796 /////////////////////////////////
2797 //PID for Lambda and AntiLambda
2798 /////////////////////////////////
2800 if(fUsePID.Contains("withPID") && (lCheckPIDAntiLambdaNegDaughter==0) && (lCheckPIDLambdaPosDaughter==1)) LambdaPID = 1;
2804 if(fUsePID.Contains("withPID") && (lCheckPIDLambdaPosDaughter==0) && (lCheckPIDAntiLambdaNegDaughter==1)) AntiLambdaPID = 1;
2806 else AntiLambdaPID =0;
2809 ///////////////////////////////////////////////////////////////////////////////////////////
2810 // if ((LambdaPID==1 && lPosMom <=1) || (lPosMom>1) || !(fUsePID.Contains("withPID"))){
2811 // if ((TMath::Abs(lRapLambda) < lCutRap) && lOnFlyStatus==0) {
2812 // fHistTPCsigPLambda->Fill(lPosMom,myTrackPos->GetTPCsignal());
2814 // TestTrackCuts->SetRequireITSRefit(kFALSE);
2815 // if(TestTrackCuts->IsSelected(myTrackPos)) fHistPtTracksP->Fill(V0mom[2]);
2816 // TestTrackCuts->SetRequireITSRefit(kTRUE);
2817 // if(TestTrackCuts->IsSelected(myTrackPos)) fHistPtTracksPITSRefit->Fill(V0mom[2]);
2822 // if ((AntiLambdaPID==1 && lNegMom <=1) || (lNegMom>1) || !(fUsePID.Contains("withPID"))){
2823 // if ((TMath::Abs(lRapAntiLambda) < lCutRap) && lOnFlyStatus==0) {
2824 // fHistTPCsigPAntiLambda->Fill(lNegMom,myTrackNeg->GetTPCsignal());
2828 ///////////////////////////////////////////////////////////////////////////////////////////////
2831 lPLambda = TMath::Sqrt(lPzLambda*lPzLambda + lPtLambda*lPtLambda);
2833 lPAntiLambda = TMath::Sqrt(lPzAntiLambda*lPzAntiLambda + lPtAntiLambda*lPtAntiLambda);
2835 lPK0s = TMath::Sqrt(lPzK0s*lPzK0s + lPtK0s*lPtK0s);
2837 // lcTau = (lV0DecayLength*lLambdaMass)/lPLambda;
2840 lcTauLambda = (lV0DecayLength*lInvMassLambda)/lPLambda;
2842 //ctau for antilambda
2843 lcTauAntiLambda = (lV0DecayLength*lInvMassAntiLambda)/lPAntiLambda;
2846 lcTauK0s = (lV0DecayLength*lInvMassK0s)/lPK0s;
2849 //*****************************
2850 // filling histograms
2851 //*****************************
2853 if (lPLambda <1 && lOnFlyStatus==0 ){
2854 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0);
2855 fHistcTauL->Fill(lcTauLambda);
2864 if (lcTauK0s< cutcTauK0s) {
2866 if (TMath::Abs(lRapK0s) < lCutRap ) {
2868 //////2D histos: cut vs on fly status/////////////////////
2870 fHistDcaPosToPrimVertexK0->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
2871 fHistDcaNegToPrimVertexK0->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
2872 fHistRadiusV0K0->Fill(lV0Radius,lOnFlyStatus);
2873 fHistDecayLengthV0K0->Fill(lV0DecayLength,lOnFlyStatus);
2874 fHistDcaV0DaughtersK0->Fill(lDcaV0Daughters,lOnFlyStatus);
2875 fHistChi2K0->Fill(lChi2V0,lOnFlyStatus);
2876 fHistCosPointAngleK0->Fill(lV0cosPointAngle,lOnFlyStatus);
2878 //////2D histos: cut vs mass/////////////////////
2880 if (lOnFlyStatus==0){
2883 fHistMassK0->Fill(lInvMassK0s);
2884 fHistMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
2885 fHistPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
2887 if (TMath::Abs(lRapK0s) < 0.3 ) fHistPtVsMassK0Rap3->Fill(lInvMassK0s,lPtK0s);
2889 fHistDcaPosToPrimVertexK0vsMassK0->Fill(lDcaPosToPrimVertex,lInvMassK0s);
2890 fHistDcaNegToPrimVertexK0vsMassK0->Fill(lDcaNegToPrimVertex,lInvMassK0s);
2891 fHistRadiusV0K0vsMassK0->Fill(lV0Radius,lInvMassK0s);
2892 fHistDecayLengthV0K0vsMassK0->Fill(lV0DecayLength,lInvMassK0s);
2893 fHistDcaV0DaughtersK0vsMassK0->Fill(lDcaV0Daughters,lInvMassK0s);
2894 fHistCosPointAngleK0vsMassK0->Fill(lV0cosPointAngle,lInvMassK0s);
2896 if (lPtK0s>0 && lPtK0s <3){
2897 fHistDcaPosToPrimVertexK0vsMassK0pt1->Fill(lDcaPosToPrimVertex,lInvMassK0s);
2898 fHistDcaNegToPrimVertexK0vsMassK0pt1->Fill(lDcaNegToPrimVertex,lInvMassK0s);
2899 fHistRadiusV0K0vsMassK0pt1->Fill(lV0Radius,lInvMassK0s);
2900 fHistDecayLengthV0K0vsMassK0pt1->Fill(lV0DecayLength,lInvMassK0s);
2901 fHistDcaV0DaughtersK0vsMassK0pt1->Fill(lDcaV0Daughters,lInvMassK0s);
2902 fHistCosPointAngleK0vsMassK0pt1->Fill(lV0cosPointAngle,lInvMassK0s);
2904 if (lPtK0s > 3 && lPtK0s < 6){
2905 fHistDcaPosToPrimVertexK0vsMassK0pt2->Fill(lDcaPosToPrimVertex,lInvMassK0s);
2906 fHistDcaNegToPrimVertexK0vsMassK0pt2->Fill(lDcaNegToPrimVertex,lInvMassK0s);
2907 fHistRadiusV0K0vsMassK0pt2->Fill(lV0Radius,lInvMassK0s);
2908 fHistDecayLengthV0K0vsMassK0pt2->Fill(lV0DecayLength,lInvMassK0s);
2909 fHistDcaV0DaughtersK0vsMassK0pt2->Fill(lDcaV0Daughters,lInvMassK0s);
2910 fHistCosPointAngleK0vsMassK0pt2->Fill(lV0cosPointAngle,lInvMassK0s);
2912 if (lPtK0s > 6 && lPtK0s < 10){
2913 fHistDcaPosToPrimVertexK0vsMassK0pt3->Fill(lDcaPosToPrimVertex,lInvMassK0s);
2914 fHistDcaNegToPrimVertexK0vsMassK0pt3->Fill(lDcaNegToPrimVertex,lInvMassK0s);
2915 fHistRadiusV0K0vsMassK0pt3->Fill(lV0Radius,lInvMassK0s);
2916 fHistDecayLengthV0K0vsMassK0pt3->Fill(lV0DecayLength,lInvMassK0s);
2917 fHistDcaV0DaughtersK0vsMassK0pt3->Fill(lDcaV0Daughters,lInvMassK0s);
2918 fHistCosPointAngleK0vsMassK0pt3->Fill(lV0cosPointAngle,lInvMassK0s);
2922 } // if rap. condition
2931 if (lcTauLambda < cutcTauL){
2933 if ((LambdaPID==1 && lMomInnerWallPos <=1 ) || (lMomInnerWallPos > 1) || !(fUsePID.Contains("withPID") )){
2935 if (TMath::Abs(lRapLambda) < lCutRap) {
2937 //////2D histos: cut vs on fly status/////////////////////
2939 fHistDcaPosToPrimVertexL->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
2940 fHistDcaNegToPrimVertexL->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
2941 fHistRadiusV0L->Fill(lV0Radius,lOnFlyStatus);
2942 fHistDecayLengthV0L->Fill(lV0DecayLength,lOnFlyStatus);
2943 fHistDcaV0DaughtersL->Fill(lDcaV0Daughters,lOnFlyStatus);
2944 fHistChi2L->Fill(lChi2V0,lOnFlyStatus);
2945 fHistCosPointAngleL->Fill(lV0cosPointAngle,lOnFlyStatus);
2947 //////2D histos: cut vs mass/////////////////////
2949 if (lOnFlyStatus==0){
2950 fHistMassLambda->Fill(lInvMassLambda);
2951 fHistMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
2952 fHistPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
2954 if (TMath::Abs(lRapLambda) < 0.3 ) fHistPtVsMassLambdaRap3->Fill(lInvMassLambda,lPtLambda);
2956 if(lPtLambda <=1) fHistNSigmaProton->Fill(nSigmaPosProton);
2958 fHistDcaPosToPrimVertexLvsMassL->Fill(lDcaPosToPrimVertex,lInvMassLambda);
2959 fHistDcaNegToPrimVertexLvsMassL->Fill(lDcaNegToPrimVertex,lInvMassLambda);
2960 fHistRadiusV0LvsMassL->Fill(lV0Radius,lInvMassLambda);
2961 fHistDecayLengthV0LvsMassL->Fill(lV0DecayLength,lInvMassLambda);
2962 fHistDcaV0DaughtersLvsMassL->Fill(lDcaV0Daughters,lInvMassLambda);
2963 fHistCosPointAngleLvsMassL->Fill(lV0cosPointAngle,lInvMassLambda);
2966 if (lPtLambda>0 && lPtLambda <3){
2967 fHistDcaPosToPrimVertexLambdaVsMasspt1->Fill(lDcaPosToPrimVertex,lInvMassLambda);
2968 fHistDcaNegToPrimVertexLambdaVsMasspt1->Fill(lDcaNegToPrimVertex,lInvMassLambda);
2969 fHistRadiusV0LambdaVsMasspt1->Fill(lV0Radius,lInvMassLambda);
2970 fHistDecayLengthV0LambdaVsMasspt1->Fill(lV0DecayLength,lInvMassLambda);
2971 fHistDcaV0DaughtersLambdaVsMasspt1->Fill(lDcaV0Daughters,lInvMassLambda);
2972 fHistCosPointAngleLambdaVsMasspt1->Fill(lV0cosPointAngle,lInvMassLambda);
2974 if (lPtLambda > 3 && lPtLambda < 6){
2975 fHistDcaPosToPrimVertexLambdaVsMasspt2->Fill(lDcaPosToPrimVertex,lInvMassLambda);
2976 fHistDcaNegToPrimVertexLambdaVsMasspt2->Fill(lDcaNegToPrimVertex,lInvMassLambda);
2977 fHistRadiusV0LambdaVsMasspt2->Fill(lV0Radius,lInvMassLambda);
2978 fHistDecayLengthV0LambdaVsMasspt2->Fill(lV0DecayLength,lInvMassLambda);
2979 fHistDcaV0DaughtersLambdaVsMasspt2->Fill(lDcaV0Daughters,lInvMassLambda);
2980 fHistCosPointAngleLambdaVsMasspt2->Fill(lV0cosPointAngle,lInvMassLambda);
2982 if (lPtLambda > 6 && lPtLambda < 10){
2983 fHistDcaPosToPrimVertexLambdaVsMasspt3->Fill(lDcaPosToPrimVertex,lInvMassLambda);
2984 fHistDcaNegToPrimVertexLambdaVsMasspt3->Fill(lDcaNegToPrimVertex,lInvMassLambda);
2985 fHistRadiusV0LambdaVsMasspt3->Fill(lV0Radius,lInvMassLambda);
2986 fHistDecayLengthV0LambdaVsMasspt3->Fill(lV0DecayLength,lInvMassLambda);
2987 fHistDcaV0DaughtersLambdaVsMasspt3->Fill(lDcaV0Daughters,lInvMassLambda);
2988 fHistCosPointAngleLambdaVsMasspt3->Fill(lV0cosPointAngle,lInvMassLambda);
2992 } //end of Rap condition
2993 } // end of PID condition
2994 } // end ctau condition
2997 //////////////////////////////
2998 // Anti Lambda ///////////////
2999 //////////////////////////////
3001 if (lcTauAntiLambda < cutcTauL){
3003 if ((AntiLambdaPID==1 && lMomInnerWallNeg <=1) || (lMomInnerWallNeg>1) || !(fUsePID.Contains("withPID"))){
3005 if (TMath::Abs(lRapAntiLambda) < lCutRap) {
3007 //////2D histos: cut vs on fly status/////////////////////
3009 fHistDcaPosToPrimVertexAntiL->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
3010 fHistDcaNegToPrimVertexAntiL->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
3011 fHistRadiusV0AntiL->Fill(lV0Radius,lOnFlyStatus);
3012 fHistDecayLengthV0AntiL->Fill(lV0DecayLength,lOnFlyStatus);
3013 fHistDcaV0DaughtersAntiL->Fill(lDcaV0Daughters,lOnFlyStatus);
3014 fHistChi2AntiL->Fill(lChi2V0,lOnFlyStatus);
3015 fHistCosPointAngleAntiL->Fill(lV0cosPointAngle,lOnFlyStatus);
3017 //////2D histos: cut vs mass/////////////////////
3019 if (lOnFlyStatus==0){
3021 fHistMassAntiLambda->Fill(lInvMassAntiLambda);
3022 fHistMassVsRadiusAntiLambda->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
3023 fHistPtVsMassAntiLambda->Fill(lInvMassAntiLambda,lPtAntiLambda);
3025 if (TMath::Abs(lRapAntiLambda) < 0.3) fHistPtVsMassAntiLambdaRap3->Fill(lInvMassAntiLambda,lPtAntiLambda);
3028 fHistDcaPosToPrimVertexAntiLvsMass->Fill(lDcaPosToPrimVertex,lInvMassAntiLambda);
3029 fHistDcaNegToPrimVertexAntiLvsMass->Fill(lDcaNegToPrimVertex,lInvMassAntiLambda);
3030 fHistRadiusV0AntiLvsMass->Fill(lV0Radius,lInvMassAntiLambda);
3031 fHistDecayLengthV0AntiLvsMass->Fill(lV0DecayLength,lInvMassAntiLambda);
3032 fHistDcaV0DaughtersAntiLvsMass->Fill(lDcaV0Daughters,lInvMassAntiLambda);
3033 fHistCosPointAngleAntiLvsMass->Fill(lV0cosPointAngle,lInvMassAntiLambda);
3036 if (lPtAntiLambda>0 && lPtAntiLambda <3){
3037 fHistDcaPosToPrimVertexAntiLVsMasspt1->Fill(lDcaPosToPrimVertex,lInvMassAntiLambda);
3038 fHistDcaNegToPrimVertexAntiLVsMasspt1->Fill(lDcaNegToPrimVertex,lInvMassAntiLambda);
3039 fHistRadiusV0AntiLVsMasspt1->Fill(lV0Radius,lInvMassAntiLambda);
3040 fHistDecayLengthV0AntiLVsMasspt1->Fill(lV0DecayLength,lInvMassAntiLambda);
3041 fHistDcaV0DaughtersAntiLVsMasspt1->Fill(lDcaV0Daughters,lInvMassAntiLambda);
3042 fHistCosPointAngleAntiLVsMasspt1->Fill(lV0cosPointAngle,lInvMassAntiLambda);
3044 if (lPtAntiLambda > 3 && lPtAntiLambda < 6){
3045 fHistDcaPosToPrimVertexAntiLVsMasspt2->Fill(lDcaPosToPrimVertex,lInvMassAntiLambda);
3046 fHistDcaNegToPrimVertexAntiLVsMasspt2->Fill(lDcaNegToPrimVertex,lInvMassAntiLambda);
3047 fHistRadiusV0AntiLVsMasspt2->Fill(lV0Radius,lInvMassAntiLambda);
3048 fHistDecayLengthV0AntiLVsMasspt2->Fill(lV0DecayLength,lInvMassAntiLambda);
3049 fHistDcaV0DaughtersAntiLVsMasspt2->Fill(lDcaV0Daughters,lInvMassAntiLambda);
3050 fHistCosPointAngleAntiLVsMasspt2->Fill(lV0cosPointAngle,lInvMassAntiLambda);
3052 if (lPtAntiLambda > 6 && lPtAntiLambda < 10){
3053 fHistDcaPosToPrimVertexAntiLVsMasspt3->Fill(lDcaPosToPrimVertex,lInvMassAntiLambda);
3054 fHistDcaNegToPrimVertexAntiLVsMasspt3->Fill(lDcaNegToPrimVertex,lInvMassAntiLambda);
3055 fHistRadiusV0AntiLVsMasspt3->Fill(lV0Radius,lInvMassAntiLambda);
3056 fHistDecayLengthV0AntiLVsMasspt3->Fill(lV0DecayLength,lInvMassAntiLambda);
3057 fHistDcaV0DaughtersAntiLVsMasspt3->Fill(lDcaV0Daughters,lInvMassAntiLambda);
3058 fHistCosPointAngleAntiLVsMasspt3->Fill(lV0cosPointAngle,lInvMassAntiLambda);
3062 } //end of Rap condition
3063 } // end of PID condition
3069 // Histo versus Rap and armenteros plot
3071 if (lCheckMcK0Short) fHistAsMcRapK0->Fill(lRapK0s);
3072 if (lCheckMcLambda) fHistAsMcRapLambda->Fill(lRapLambda);
3073 if (lCheckMcAntiLambda) fHistAsMcRapLambda->Fill(lRapAntiLambda);
3074 // fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0);
3075 if ((TMath::Abs(lRapK0s) < lCutRap)&&(TMath::Abs(lRapLambda) < lCutRap)) fHistK0sMassVsLambdaMass->Fill(lInvMassK0s,lInvMassLambda);
3079 ///////////////////////////////////////////////////
3080 // K0s associated histograms in |rap| < lCutRap:
3081 ///////////////////////////////////////////////////
3084 if (lcTauK0s< cutcTauK0s) {
3086 if (TMath::Abs(lRapK0s) < lCutRap) {
3088 fHistNsigmaPosPionK0->Fill(nSigmaPosPion);
3089 fHistNsigmaNegPionK0->Fill(nSigmaNegPion);
3091 switch (lOnFlyStatus){
3095 // fHistMultVsPtVsMassK0->Fill(multiplicity ,lInvMassK0s,lPtK0s);
3096 if(lCheckPIdK0Short) fHistPidMcMassK0->Fill(lInvMassK0s);
3097 if(lCheckMcK0Short) {
3098 fHistAsMcMassK0->Fill(lInvMassK0s);
3099 fHistAsMcPtK0->Fill(lPtK0s);
3100 fHistAsMcPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
3102 if (TMath::Abs(lRapK0s) < 0.3){
3103 fHistAsMcMassK0Rap3->Fill(lInvMassK0s);
3104 fHistAsMcPtK0Rap3->Fill(lPtK0s);
3105 fHistAsMcPtVsMassK0Rap3->Fill(lInvMassK0s,lPtK0s);
3109 if (lPtK0s <= 1) fHistAsMcPtZoomK0->Fill(lPtK0s);
3110 fHistAsMcMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
3111 fHistAsMcResxK0->Fill(rcPosXK0s-mcPosX);
3112 fHistAsMcResyK0->Fill(rcPosYK0s-mcPosY);
3113 fHistAsMcReszK0->Fill(rcPosZK0s-mcPosZ);
3114 fHistAsMcResrVsRadiusK0->Fill(rcPosRK0s,rcPosRK0s-mcPosR);
3115 fHistAsMcReszVsRadiusK0->Fill(rcPosZK0s,rcPosZK0s-mcPosZ);
3116 fHistAsMcProdRadiusK0->Fill(mcPosMotherR);
3117 fHistAsMcProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
3118 fHistAsMcResPtK0->Fill(deltaPtK0s);
3119 fHistAsMcResPtVsRapK0->Fill(deltaPtK0s,lRapK0s);
3120 fHistAsMcResPtVsPtK0->Fill(deltaPtK0s,lPtK0s);
3122 else if (lCheckSecondaryK0s) {
3123 fHistAsMcSecondaryPtVsRapK0s->Fill(lPtK0s,lRapK0s);
3124 fHistAsMcSecondaryProdRadiusK0s->Fill(mcPosMotherR);
3125 fHistAsMcSecondaryProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
3126 switch (lPdgcodeMotherOfMother) {
3127 case 130 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(0.5);break; // K0L
3128 case 321 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(1.5);break; // K+
3129 case -321 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(2.5);break; // K-
3130 case -3122 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(3.5);break; //AntiLambda
3131 default : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(6.5);break;
3137 } // end rapidity condition
3140 ///////////////////////////////////////////////////
3141 // Associated Lambda histograms in |rap| < lCutRap
3142 ////////////////////////////////////////////////////
3144 if (lcTauLambda < cutcTauL){
3146 // if ((LambdaPID==1 && lMomInnerWallPos <=1) || (lMomInnerWallPos>1) || !(fUsePID.Contains("withPID"))){
3148 if (TMath::Abs(lRapLambda) < lCutRap) {
3150 fHistNsigmaPosProtonLambda->Fill(nSigmaPosProton);
3151 fHistNsigmaNegPionLambda->Fill(nSigmaNegPion);
3152 switch (lOnFlyStatus){
3155 // fHistMultVsPtVsMassLambda->Fill(multiplicity ,lInvMassLambda,lPtLambda);
3156 if(lCheckPIdLambda) fHistPidMcMassLambda->Fill(lInvMassLambda);
3158 if(lCheckMcLambda) {
3160 fHistAsMcMassLambda->Fill(lInvMassLambda);
3161 fHistAsMcPtLambda->Fill(lPtLambda);
3162 fHistCosPointAngleLvsMassVsPtsigL->Fill(lPtLambda,lV0cosPointAngle,lInvMassLambda);
3163 fHistAsMcPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
3165 if (TMath::Abs(lRapLambda) < 0.3) {
3166 fHistAsMcMassLambdaRap3->Fill(lInvMassLambda);
3167 fHistAsMcPtLambdaRap3->Fill(lPtLambda);
3168 fHistAsMcPtVsMassLambdaRap3->Fill(lInvMassLambda,lPtLambda);
3172 if (lPtLambda <= 1) fHistAsMcPtZoomLambda->Fill(lPtLambda);
3173 fHistAsMcMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
3174 fHistAsMcResxLambda->Fill(rcPosXLambda-mcPosX);
3175 fHistAsMcResyLambda->Fill(rcPosYLambda-mcPosY);
3176 fHistAsMcReszLambda->Fill(rcPosZLambda-mcPosZ);
3177 fHistAsMcResrVsRadiusLambda->Fill(rcPosRLambda,rcPosRLambda-mcPosR);
3178 fHistAsMcReszVsRadiusLambda->Fill(rcPosZLambda,rcPosZLambda-mcPosZ);
3179 fHistAsMcProdRadiusLambda->Fill(mcPosMotherR);
3180 fHistAsMcProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
3181 fHistAsMcResPtLambda->Fill(deltaPtLambda);
3182 fHistAsMcResPtVsRapLambda->Fill(deltaPtLambda,lRapLambda);
3183 fHistAsMcResPtVsPtLambda->Fill(deltaPtLambda,lPtLambda);
3184 if (lComeFromSigma) fHistAsMcPtLambdaFromSigma->Fill(lPtLambda);
3185 switch (lPdgcodeMotherOfMother) {
3186 case 3222 : fHistAsMcMotherPdgCodeLambda->Fill(0.5); break; // Sigma +
3187 case 3212 : fHistAsMcMotherPdgCodeLambda->Fill(1.5); break; // Sigma 0
3188 case 3112 : fHistAsMcMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
3189 case 3224 : fHistAsMcMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
3190 case 3214 : fHistAsMcMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
3191 case 3114 : fHistAsMcMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
3192 case 3322 : fHistAsMcMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
3193 case 3312 : fHistAsMcMotherPdgCodeLambda->Fill(7.5); break; // Xi -
3194 case 3334 : fHistAsMcMotherPdgCodeLambda->Fill(8.5); break; // Omega
3195 case -1 : fHistAsMcMotherPdgCodeLambda->Fill(9.5); break;
3196 default : fHistAsMcMotherPdgCodeLambda->Fill(10.5);break;
3199 //printf("found Lambda RC dcaPos=%e dcaNeg=%e dcaDau=%e cosP=%e pT=%e mass=%e\n",lDcaPosToPrimVertex ,lDcaNegToPrimVertex ,lDcaV0Daughters,lV0cosPointAngle,lPtLambda,lInvMassLambda);
3200 //printf("found Lambda RC Pindex=%d Nindex=%d Plabel=%d Nlabel=%d\n\n",lIndexTrackPos,lIndexTrackNeg,lLabelTrackPos,lLabelTrackNeg);
3204 else if (lCheckSecondaryLambda) {
3205 fHistAsMcSecondaryPtVsRapLambda->Fill(lPtLambda,lRapLambda);
3206 fHistAsMcSecondaryProdRadiusLambda->Fill(mcPosMotherR);
3207 fHistAsMcSecondaryProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
3208 if (lComeFromSigma) fHistAsMcSecondaryPtLambdaFromSigma->Fill(lPtLambda);
3209 printf(" lPdgcodeMotherOfMother= %d",lPdgcodeMotherOfMother);
3210 switch (lPdgcodeMotherOfMother) {
3211 case 3222 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(0.5); break;// Sigma +
3212 case 3212 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(1.5); break;// Sigma 0
3213 case 3112 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
3214 case 3224 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
3215 case 3214 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
3216 case 3114 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
3217 case 3322 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
3218 case 3312 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(7.5); break; // Xi -
3219 case 3334 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(8.5); break; // Omega
3220 case -1 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(9.5); break;
3221 default : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(10.5);break;
3225 if(!lCheckMcLambda)fHistCosPointAngleLvsMassVsPtbackL->Fill(lPtLambda,lV0cosPointAngle,lInvMassLambda);
3229 } // end rapidity condition
3230 // }// end PID condition
3231 }// end ctau condition
3233 ////////////////////////////////////////////////////////
3234 // Associated AntiLambda histograms in |rap| < lCutRap
3235 ////////////////////////////////////////////////////////
3237 if (lcTauAntiLambda < cutcTauL){
3239 // if ((AntiLambdaPID==1 && lMomInnerWallNeg <=1) || (lMomInnerWallNeg>1) || !(fUsePID.Contains("withPID"))){
3241 if (TMath::Abs(lRapAntiLambda) < lCutRap) {
3243 fHistNsigmaPosProtonAntiLambda->Fill(nSigmaPosProton);
3244 fHistNsigmaNegPionAntiLambda->Fill(nSigmaNegPion);
3245 switch (lOnFlyStatus){
3248 // fHistMultVsPtVsMassAntiLambda->Fill(multiplicity ,lInvMassAntiLambda,lPtAntiLambda);
3249 if(lCheckPIdAntiLambda) fHistPidMcMassAntiLambda->Fill(lInvMassAntiLambda);
3251 if(lCheckMcAntiLambda) {
3253 fHistAsMcMassAntiLambda->Fill(lInvMassAntiLambda);
3254 fHistAsMcPtAntiLambda->Fill(lPtAntiLambda);
3255 fHistAsMcPtVsMassAntiLambda->Fill(lInvMassAntiLambda,lPtAntiLambda);
3257 if (TMath::Abs(lRapAntiLambda) < 0.3) {
3258 fHistAsMcMassAntiLambdaRap3->Fill(lInvMassAntiLambda);
3259 fHistAsMcPtAntiLambdaRap3->Fill(lPtAntiLambda);
3260 fHistAsMcPtVsMassAntiLambdaRap3->Fill(lInvMassAntiLambda,lPtAntiLambda);
3264 if (lPtAntiLambda <= 1) fHistAsMcPtZoomAntiLambda->Fill(lPtAntiLambda);
3265 fHistAsMcMassVsRadiusAntiLambda->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
3266 fHistAsMcResxAntiLambda->Fill(rcPosXAntiLambda-mcPosX);
3267 fHistAsMcResyAntiLambda->Fill(rcPosYAntiLambda-mcPosY);
3268 fHistAsMcReszAntiLambda->Fill(rcPosZAntiLambda-mcPosZ);
3269 fHistAsMcResrVsRadiusAntiLambda->Fill(rcPosRAntiLambda,rcPosRAntiLambda-mcPosR);
3270 fHistAsMcReszVsRadiusAntiLambda->Fill(rcPosZAntiLambda,rcPosZAntiLambda-mcPosZ);
3271 fHistAsMcProdRadiusAntiLambda->Fill(mcPosMotherR);
3272 fHistAsMcProdRadiusXvsYAntiLambda->Fill(mcPosMotherX,mcPosMotherY);
3273 fHistAsMcResPtAntiLambda->Fill(deltaPtAntiLambda);
3274 fHistAsMcResPtVsRapAntiLambda->Fill(deltaPtAntiLambda,lRapAntiLambda);
3275 fHistAsMcResPtVsPtAntiLambda->Fill(deltaPtAntiLambda,lPtAntiLambda);
3276 if (lComeFromSigma) fHistAsMcPtAntiLambdaFromSigma->Fill(lPtAntiLambda);
3277 switch (lPdgcodeMotherOfMother) {
3278 case 3222 : fHistAsMcMotherPdgCodeAntiLambda->Fill(0.5); break; // Sigma +
3279 case 3212 : fHistAsMcMotherPdgCodeAntiLambda->Fill(1.5); break; // Sigma 0
3280 case 3112 : fHistAsMcMotherPdgCodeAntiLambda->Fill(2.5); break;// Sigma -
3281 case 3224 : fHistAsMcMotherPdgCodeAntiLambda->Fill(3.5); break;// Sigma(1385) +
3282 case 3214 : fHistAsMcMotherPdgCodeAntiLambda->Fill(4.5); break;// Sigma(1385) 0
3283 case 3114 : fHistAsMcMotherPdgCodeAntiLambda->Fill(5.5); break;// Sigma(1385) -
3284 case 3322 : fHistAsMcMotherPdgCodeAntiLambda->Fill(6.5); break; // Xi 0
3285 case 3312 : fHistAsMcMotherPdgCodeAntiLambda->Fill(7.5); break; // Xi -
3286 case 3334 : fHistAsMcMotherPdgCodeAntiLambda->Fill(8.5); break; // Omega
3288 case -1 : fHistAsMcMotherPdgCodeAntiLambda->Fill(9.5); break;
3289 default : fHistAsMcMotherPdgCodeAntiLambda->Fill(10.5);break;
3292 //printf("found AntiLambda RC dcaPos=%e dcaNeg=%e dcaDau=%e cosP=%e pT=%e mass=%e\n",lDcaPosToPrimVertex ,lDcaNegToPrimVertex ,lDcaV0Daughters,lV0cosPointAngle,lPtAntiLambda,lInvMassAntiLambda);
3293 //printf("found AntiLambda RC Pindex=%d Nindex=%d Plabel=%d Nlabel=%d\n\n",lIndexTrackPos,lIndexTrackNeg,lLabelTrackPos,lLabelTrackNeg);
3297 else if (lCheckSecondaryAntiLambda) {
3298 fHistAsMcSecondaryPtVsRapAntiLambda->Fill(lPtAntiLambda,lRapAntiLambda);
3299 fHistAsMcSecondaryProdRadiusAntiLambda->Fill(mcPosMotherR);
3300 fHistAsMcSecondaryProdRadiusXvsYAntiLambda->Fill(mcPosMotherX,mcPosMotherY);
3301 if (lComeFromSigma) fHistAsMcSecondaryPtAntiLambdaFromSigma->Fill(lPtAntiLambda);
3302 printf(" lPdgcodeMotherOfMother= %d",lPdgcodeMotherOfMother);
3303 switch (lPdgcodeMotherOfMother) {
3304 case 3222 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(0.5); break;// Sigma +
3305 case 3212 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(1.5); break;// Sigma 0
3306 case 3112 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(2.5); break;// Sigma -
3307 case 3224 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(3.5); break;// Sigma(1385) +
3308 case 3214 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(4.5); break;// Sigma(1385) 0
3309 case 3114 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(5.5); break;// Sigma(1385) -
3310 case 3322 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(6.5); break; // Xi 0
3311 case 3312 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(7.5); break; // Xi -
3312 case 3334 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(8.5); break; // Omega
3313 case -1 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(9.5); break;
3314 default : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(10.5);break;
3320 } // end rapidity condition
3321 // }// end PID condition
3326 // if (primaryVtxKF) delete primaryVtxKF;primaryVtxKF=NULL ;
3329 fHistV0Multiplicity->Fill(nv0s);
3330 // fHistV0MultiplicityMI->Fill(nv0sMI);
3332 if (fAnalysisType == "ESD") { if(myPrimaryVertex) delete myPrimaryVertex; }
3333 if (fAnalysisType == "ESD") { if(TestTrackCuts) delete TestTrackCuts; }
3339 //________________________________________________________________________
3340 void AliAnalysisTaskPerformanceStrange::Terminate(Option_t *)
3342 // Draw result to the screen
3343 // Called once at the end of the query
3345 TList *cRetrievedList = 0x0;
3346 cRetrievedList = (TList*)GetOutputData(1);
3348 if(!cRetrievedList){
3349 AliWarning("ERROR - AliAnalysisTaskPerformanceStrange: output data container list not available\n"); return;
3353 fHistV0Multiplicity = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0Multiplicity"));
3354 if (!fHistV0Multiplicity) {
3355 Printf("ERROR: fHistV0Multiplicity not available");
3359 fHistV0MultiplicityMI = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityMI"));
3360 if (!fHistV0MultiplicityMI) {
3361 Printf("ERROR: fHistV0MultiplicityMI not available");
3365 TCanvas *canPerformanceStrange = new TCanvas("AliAnalysisTaskCheckV0","Multiplicity",10,10,510,510);
3366 canPerformanceStrange->Divide(2,1);
3367 if (fHistV0Multiplicity->GetMaximum() > 0.) canPerformanceStrange->cd(1)->SetLogy();
3368 fHistV0Multiplicity->SetMarkerStyle(25);
3369 fHistV0Multiplicity->DrawCopy("E");
3370 if (fHistV0MultiplicityMI->GetMaximum() > 0.) canPerformanceStrange->cd(2)->SetLogy();
3371 fHistV0MultiplicityMI->SetMarkerStyle(24);
3372 fHistV0MultiplicityMI->DrawCopy("E");
3378 //----------------------------------------------------------------------------
3380 Double_t AliAnalysisTaskPerformanceStrange::MyRapidity(Double_t rE, Double_t rPz) const
3382 // Local calculation for rapidity
3383 return 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
3385 //----------------------------------------------------------------------------