1 /**************************************************************************
2 * Authors : Simone Schuchmann *
3 * Contributors are mentioned in the code where appropriate. *
5 * Permission to use, copy, modify and distribute this software and its *
6 * documentation strictly for non-commercial purposes is hereby granted *
7 * without fee, provided that the above copyright notice appears in all *
8 * copies and that both the copyright notice and this permission notice *
9 * appear in the supporting documentation. The authors make no claims *
10 * about the suitability of this software for any purpose. It is *
11 * provided "as is" without express or implied warranty. *
12 **************************************************************************/
14 //-----------------------------------------------------------------
15 // AliAnalysisTaskV0ForRAA class
16 // This task is for analysing Lambda and K0s pt spectra in PbPb and
17 // pp as well as with MC. The flag for pp and MC must be set
18 // accordingly, default is PbPb data.
19 // It works with ESD files only.
20 //-----------------------------------------------------------------
23 #define AliAnalysisTaskV0ForRAA_cxx
26 #include "AliAnalysisTaskV0ForRAA.h"
28 #include "Riostream.h"
33 //#include "TH3.h"//xxx
34 #include "TLorentzVector.h"
36 #include "AliAnalysisTaskSE.h"
37 #include "AliAnalysisManager.h"
38 #include "AliESDInputHandler.h"
39 #include "AliMCEventHandler.h"
41 #include "AliESDVZERO.h"
42 #include "AliMultiplicity.h"
43 #include "AliCentrality.h"
45 #include "AliKFParticle.h"
46 #include "AliKFVertex.h"
47 #include "AliESDtrackCuts.h"
48 #include "AliESDpid.h"
50 #include "AliESDEvent.h"
51 #include "AliMCEvent.h"
53 #include "AliGenEventHeader.h"
56 ClassImp(AliAnalysisTaskV0ForRAA)
58 //________________________________________________________________________
59 AliAnalysisTaskV0ForRAA::AliAnalysisTaskV0ForRAA()
60 :AliAnalysisTaskSE("default_AliAnalysisTaskV0ForRAA"),
66 fESDTrackCutsCharged(0),
67 fESDTrackCutsLowPt(0),
81 fHistOneHitWithSDD(0),
83 fHistPrimVtxZESDVSNContributors(0),
84 fHistPrimVtxZESDTPCVSNContributors(0),
85 fHistPrimVtxZESDSPDVSNContributors(0),
87 fHistPrimVtxZESDTPC(0),
88 fHistPrimVtxZESDSPD(0),
91 fHistMuliplicityRaw(0),
94 fHistMultiplicityPrimary(0),
96 fHistPiPiK0sVsLambdaMass(0),
97 fHistPiPiK0sVsALambdaMass(0),
98 fHistPiPK0sVsLambdaMass(0),
99 fHistPiAPK0sVsALambdaMass(0),
100 fHistPiPALambdaVsLambdaMass(0),
101 fHistPiAPLambdaVsALambdaMass(0),
102 //-----------K0 histos -------------------//
104 fHistPiPiMassVSPt(0),
105 fHistPiPiMassVSPtMCTruth(0),
108 // fHistPiPiMassVSAlpha(0),
109 fHistPiPiRadiusXY(0),
110 fHistPiPiCosPointAng(0),
111 fHistPiPiDCADaughterPosToPrimVtxVSMass(0),
112 fHistPiPiDecayLengthVsPt(0),
113 fHistPiPiDecayLengthVsMass(0),
114 fHistPiPiDecayLengthVsCtau(0),
115 fHistPiPiDCADaughters(0),
116 // fHistPiPiPtDaughters(0),
117 fHistPiPiDCAVSMass(0),
118 //fHistPiPiDCAZPos(0),
119 //fHistPiPiDCAZNeg(0),
120 fHistPiPiTrackLengthPosVsMass(0),
121 fHistPiPiTrackLengthNegVsMass(0),
122 fHistPiPiMonitorCuts(0),
123 fHistPiPiMonitorMCCuts(0),
124 fHistPiPiDecayLengthResolution(0),
125 fHistNclsITSPosK0(0),
126 fHistNclsITSNegK0(0),
127 fHistNclsTPCPosK0(0),
128 fHistNclsTPCNegK0(0),
129 fHistChi2PerNclsITSPosK0(0),
130 fHistChi2PerNclsITSNegK0(0),
131 fHistNCRowsTPCPosK0(0),
132 fHistNCRowsTPCNegK0(0),
133 fHistRatioFoundOverFinableTPCK0Pos(0),
134 fHistRatioFoundOverFinableTPCK0Neg(0),
135 //------------MC only histos-----------
136 fHistPrimVtxZESDVSNContributorsMC(0),
137 fHistPrimVtxZESDTPCVSNContributorsMC(0),
138 fHistPrimVtxZESDSPDVSNContributorsMC(0),
152 // fHistPiPiOmega(0),
153 // fHistPiPiKStar(0),
154 // fHistPiPiNoMother(0),
158 // fHistPiPiSigma(0),
160 // fHistPiPiDelta(0),
172 // fHistPiPNoMother(0),
175 //cosine of pointing angle of Xi vs pt histos
176 fHistPiPCosPointAngXiVsPt(0),
177 fHistPiAPCosPointAngXiVsPt(0),
178 fHistPiPMassVSPtSecXiMCTruth(0),
179 fHistPiPMassVSPtSecOmegaMCTruth(0),
180 fHistPiAPMassVSPtSecXiMCTruth(0),
181 fHistPiAPMassVSPtSecOmegaMCTruth(0),
182 // fHistUserPtShift(0),
183 // fHistPiPiPhiPosVsPtPosVsMass(0),//xxx
184 // fHistPiPPhiPosVsPtPosVsMass(0),//xxx
185 // fHistPiAPPhiPosVsPtPosVsMass(0),//xxx
186 //selection booleans and values
190 fSelectMBMotherMC(0),
191 fCheckNegLabelReco(0),
194 fUseCentralityBin(0),
195 fUseCentralityRange(0),
218 fMoreNclsThanRows(0),
219 fMoreNclsThanFindable(0),
220 fMoreNclsThanFindableMax(0),
221 fRatioFoundOverFindable(0),
222 fRatioMaxCRowsOverFindable(0),
223 fChi2PerClusterITS(0),
224 fDistanceTPCInner(0),
229 fSwitchCaseITSCls(0),
230 fCutMITrackLength(0),
233 fCutMITrackLengthLengthF(0),
234 fCutMICrossedRLengthF(0),
237 fEtaCutMCDaughters(0),
238 fEtaCutMCDaughtersVal(0),
247 fExcludeLambdaFromK0s(0),
248 fExcludeK0sFromLambda(0),
249 fExcludePhotonsFromK0s(0),
250 fExcludePhotonsFromLambda(0),
261 fDCADaughtersToVtxLarge(0),
262 fDCADaughtersToVtxSmall(0),
270 fOpengAngleDaughters(0),
292 DefineOutput(1,TList::Class());
293 // define defaults for globals
295 fShift = kFALSE; // shift in charge/pt yes/no
296 fDeltaInvP = 0.00; // shift value
300 fMCTruthMode = kFALSE;
303 fUseCentralityBin = 0;
304 fUseCentralityRange =0;
307 fRejectPileUpSPD = kFALSE;
311 fSelectInjected = kFALSE;
312 fSelectMBMotherMC = kFALSE;
313 fCheckNegLabelReco = kFALSE;
314 fOnlyFoundRecoV0= kFALSE;
316 fVertexZCut = 100000.0;
321 //----- define defaults for V0 and track cuts ----//
330 fTPCrefitLpt = kTRUE;
333 fUsePIDPion = kFALSE;
334 fMoreNclsThanRows = kFALSE;
335 fMoreNclsThanFindable = kFALSE;
336 fMoreNclsThanFindableMax = kFALSE;
337 fRatioFoundOverFindable = -1.0;
338 fRatioMaxCRowsOverFindable = 1000.0;
341 fChi2PerClusterITS = 100000.0;
342 fDistanceTPCInner = -1.0;
344 fMaxNCLSITSPos = 1000;
346 fMaxNCLSITSNeg = 1000;
347 fSwitchCaseITSCls = kFALSE;
349 fCutMITrackLength = kFALSE;
350 fCutMICrossedR = kFALSE;
351 fCutMITPCncls = kFALSE;
352 fCutMITrackLengthLengthF = 1.0;
353 fCutMICrossedRLengthF = 0.85;
372 fExcludeLambdaFromK0s = -1.0;
373 fExcludeK0sFromLambda = -1.0;
374 fExcludePhotonsFromK0s = -1.0;
375 fExcludePhotonsFromLambda = -1.0;
377 fEtaCutMCDaughters = kFALSE;
378 fEtaCutMCDaughtersVal = 50.0;
382 fDCAToVertexK0 = 10000.0;
383 fDCAToVertexL = 10000.0;
390 fDCADaughtersL=10000.0;
391 fDCADaughtersAL=10000.0;
392 fDCADaughtersK0=10000.0;
394 fDCADaughtersToVtxLarge=-1.0;
395 fDCADaughtersToVtxSmall=-1.0;
397 fDecayRadXYMin = -100000.0;
398 fDecayRadXYMax = 1000000.0;
399 fPtDecRadMin = 1000000.0;
400 fDecayLengthMax = 100000.0;
401 fDecayLengthMin = -1000000.0;
403 fDecRadCutITSMin = 0.0000;
404 fDecRadCutITSMax = 10000.0;
408 fCPAPtCutK0 = 1000.0;
409 fCPAPtCutL = -1000.0;//xxx
410 fOpengAngleDaughters = -1.0;
420 fK0sLowMassCut = 0.25;
421 fK0sHighMassCut = 0.75;
424 fLHighMassCut = 1.25;
427 fSetFillDetAL = kFALSE;
429 fSetPtDepHist=kFALSE;
433 //---- histograms ----//
434 for(Int_t j=0;j<2;j++){
435 fHistArmenteros[j]=NULL;
436 fHistV0RadiusZ[j] =NULL;
437 fHistV0RadiusZVSPt[j] =NULL;
438 fHistV0RadiusXY[j] =NULL;
439 fHistV0RadiusXYVSY[j] =NULL;
442 fHistPiPMass[j]=NULL;
443 fHistPiPMassVSPt[j]=NULL;
444 fHistPiPMassVSY[j] = NULL;
445 fHistPiPMassVSPtMCTruth[j]=NULL;
446 fHistPiPRadiusXY[j]=NULL;
447 fHistPiPCosPointAng[j]=NULL;
448 fHistPiPDecayLengthVsPt[j]=NULL;
449 fHistPiPDecayLengthVsMass[j]=NULL;
450 fHistPiPDecayLengthVsCtau[j]=NULL;
451 fHistPiPDCADaughterPosToPrimVtxVSMass[j]=NULL;
452 fHistPiPDCADaughterNegToPrimVtxVSMass[j]=NULL;
453 fHistPiPMassVSPtSecSigma[j]=NULL;
454 fHistPiPMassVSPtSecXi[j]=NULL;
455 fHistPiPMassVSPtSecOmega[j]=NULL;
456 fHistPiPMassVSYSecXi[j]=NULL;
457 fHistPiPXi0PtVSLambdaPt[j]=NULL;
458 fHistPiPXiMinusPtVSLambdaPt[j]=NULL;
459 fHistPiPOmegaPtVSLambdaPt[j]=NULL;
460 fHistPiPDCADaughters[j]=NULL;
461 // fHistPiPPtDaughters[j]=NULL;
462 fHistPiPPtVSY[j]=NULL;
463 fHistPiPDCAVSMass[j]=NULL;
464 fHistPiPMonitorCuts[j] =NULL;
465 fHistPiPMonitorMCCuts[j] =NULL;
466 fHistPiPDecayLengthResolution[j] =NULL;
467 // fHistPiPDCAZPos[j] =NULL;
468 //fHistPiPDCAZNeg[j] =NULL;
469 fHistPiPTrackLengthPosVsMass[j] = NULL;
470 fHistPiPTrackLengthNegVsMass[j] = NULL;
473 fHistPiAPMass[j]=NULL;
474 fHistPiAPMassVSPt[j]=NULL;
475 fHistPiAPMassVSY[j] = NULL;
476 fHistPiAPMassVSPtMCTruth[j]=NULL;
477 fHistPiAPRadiusXY[j]=NULL;
478 fHistPiAPCosPointAng[j]=NULL;
479 fHistPiAPDecayLengthVsPt[j]=NULL;
480 fHistPiAPDecayLengthVsMass[j]=NULL;
481 fHistPiAPDecayLengthVsCtau[j]=NULL;
482 fHistPiAPDCADaughterPosToPrimVtxVSMass[j]=NULL;
483 fHistPiAPDCADaughterNegToPrimVtxVSMass[j]=NULL;
484 fHistPiAPMassVSPtSecSigma[j]=NULL;
485 fHistPiAPMassVSPtSecXi[j]=NULL;
486 fHistPiAPMassVSPtSecOmega[j]=NULL;
487 fHistPiAPMassVSYSecXi[j]=NULL;
488 fHistPiAPXi0PtVSLambdaPt[j]=NULL;
489 fHistPiAPXiMinusPtVSLambdaPt[j]=NULL;
490 fHistPiAPOmegaPtVSLambdaPt[j] =NULL;
491 fHistPiAPDCADaughters[j]=NULL;
492 // fHistPiAPPtDaughters[j]=NULL;
493 fHistPiAPPtVSY[j]=NULL;
494 fHistPiAPDCAVSMass[j]=NULL;
495 fHistPiAPMonitorCuts[j] =NULL;
496 fHistPiAPMonitorMCCuts[j] =NULL;
497 fHistPiAPDecayLengthResolution[j] =NULL;
498 // fHistPiAPDCAZPos[j] =NULL;
499 //fHistPiAPDCAZNeg[j] =NULL;
500 fHistPiAPTrackLengthPosVsMass[j] = NULL;
501 fHistPiAPTrackLengthNegVsMass[j] = NULL;
504 fHistDedxSecProt[j]=NULL;
505 fHistDedxSecAProt[j]=NULL;
506 fHistDedxSecPiMinus[j]=NULL;
507 fHistDedxSecPiPlus[j]=NULL;
508 fHistDedxProt[j]=NULL;
509 fHistDedxAProt[j]=NULL;
510 fHistDedxPiMinus[j]=NULL;
511 fHistDedxPiPlus[j]=NULL;
512 fHistNclsITS[j]=NULL;
513 fHistNclsTPC[j]=NULL;
514 fHistNclsITSPosL[j]=NULL;
515 fHistNclsITSNegL[j]=NULL;
516 fHistNclsTPCPosL[j]=NULL;
517 fHistNclsTPCNegL[j]=NULL;
518 fHistChi2PerNclsITSPosL[j]=NULL;
519 fHistChi2PerNclsITSNegL[j]=NULL;
520 fHistNCRowsTPCPosL[j]=NULL;
521 fHistNCRowsTPCNegL[j]=NULL;
522 fHistRatioFoundOverFinableTPCLPos[j]=NULL;
523 fHistRatioFoundOverFinableTPCLNeg[j]=NULL;
524 fHistPiPiEtaDMC[j] = NULL;
525 fHistPiPiEtaDReco[j] = NULL;
526 fHistPiPEtaDMC[j] = NULL;
527 fHistPiPEtaDReco[j] = NULL;
531 //________________________________________________________________________
532 AliAnalysisTaskV0ForRAA::AliAnalysisTaskV0ForRAA(const char *name)
533 :AliAnalysisTaskSE(name),
539 fESDTrackCutsCharged(0),
540 fESDTrackCutsLowPt(0),
553 fHistITSLayerHits(0),
554 fHistOneHitWithSDD(0),
556 fHistPrimVtxZESDVSNContributors(0),
557 fHistPrimVtxZESDTPCVSNContributors(0),
558 fHistPrimVtxZESDSPDVSNContributors(0),
560 fHistPrimVtxZESDTPC(0),
561 fHistPrimVtxZESDSPD(0),
564 fHistMuliplicityRaw(0),
567 fHistMultiplicityPrimary(0),
569 fHistPiPiK0sVsLambdaMass(0),
570 fHistPiPiK0sVsALambdaMass(0),
571 fHistPiPK0sVsLambdaMass(0),
572 fHistPiAPK0sVsALambdaMass(0),
573 fHistPiPALambdaVsLambdaMass(0),
574 fHistPiAPLambdaVsALambdaMass(0),
575 //-----------K0 histos -------------------//
577 fHistPiPiMassVSPt(0),
578 fHistPiPiMassVSPtMCTruth(0),
582 // fHistPiPiMassVSAlpha(0),
583 fHistPiPiRadiusXY(0),
584 fHistPiPiCosPointAng(0),
585 fHistPiPiDCADaughterPosToPrimVtxVSMass(0),
586 fHistPiPiDecayLengthVsPt(0),
587 fHistPiPiDecayLengthVsMass(0),
588 fHistPiPiDecayLengthVsCtau(0),
589 fHistPiPiDCADaughters(0),
590 // fHistPiPiPtDaughters(0),
591 fHistPiPiDCAVSMass(0),
592 // fHistPiPiDCAZPos(0),
593 //fHistPiPiDCAZNeg(0),
594 fHistPiPiTrackLengthPosVsMass(0),
595 fHistPiPiTrackLengthNegVsMass(0),
596 fHistPiPiMonitorCuts(0),
597 fHistPiPiMonitorMCCuts(0),
598 fHistPiPiDecayLengthResolution(0),
599 fHistNclsITSPosK0(0),
600 fHistNclsITSNegK0(0),
601 fHistNclsTPCPosK0(0),
602 fHistNclsTPCNegK0(0),
603 fHistChi2PerNclsITSPosK0(0),
604 fHistChi2PerNclsITSNegK0(0),
605 fHistNCRowsTPCPosK0(0),
606 fHistNCRowsTPCNegK0(0),
607 fHistRatioFoundOverFinableTPCK0Pos(0),
608 fHistRatioFoundOverFinableTPCK0Neg(0),
609 //------------MC only histos-----------
610 fHistPrimVtxZESDVSNContributorsMC(0),
611 fHistPrimVtxZESDTPCVSNContributorsMC(0),
612 fHistPrimVtxZESDSPDVSNContributorsMC(0),
626 // fHistPiPiOmega(0),
627 // fHistPiPiKStar(0),
628 // fHistPiPiNoMother(0),
632 // fHistPiPiSigma(0),
634 // fHistPiPiDelta(0),
646 // fHistPiPNoMother(0),
649 //cosine of pointing angle of Xi vs pt histos
650 fHistPiPCosPointAngXiVsPt(0),
651 fHistPiAPCosPointAngXiVsPt(0),
652 fHistPiPMassVSPtSecXiMCTruth(0),
653 fHistPiPMassVSPtSecOmegaMCTruth(0),
654 fHistPiAPMassVSPtSecXiMCTruth(0),
655 fHistPiAPMassVSPtSecOmegaMCTruth(0),
656 // fHistUserPtShift(0),
657 //fHistPiPiPhiPosVsPtPosVsMass(0),//xxx
658 //fHistPiPPhiPosVsPtPosVsMass(0),//xxx
659 //fHistPiAPPhiPosVsPtPosVsMass(0),//xxx
660 //selection booleans and values
664 fSelectMBMotherMC(0),
665 fCheckNegLabelReco(0),
668 fUseCentralityBin(0),
669 fUseCentralityRange(0),
692 fMoreNclsThanRows(0),
693 fMoreNclsThanFindable(0),
694 fMoreNclsThanFindableMax(0),
695 fRatioFoundOverFindable(0),
696 fRatioMaxCRowsOverFindable(0),
697 fChi2PerClusterITS(0),
698 fDistanceTPCInner(0),
703 fSwitchCaseITSCls(0),
704 fCutMITrackLength(0),
707 fCutMITrackLengthLengthF(0),
708 fCutMICrossedRLengthF(0),
711 fEtaCutMCDaughters(0),
712 fEtaCutMCDaughtersVal(0),
721 fExcludeLambdaFromK0s(0),
722 fExcludeK0sFromLambda(0),
723 fExcludePhotonsFromK0s(0),
724 fExcludePhotonsFromLambda(0),
735 fDCADaughtersToVtxLarge(0),
736 fDCADaughtersToVtxSmall(0),
744 fOpengAngleDaughters(0),
766 DefineOutput(1,TList::Class());
767 // define defaults for globals
769 fShift = kFALSE; // shift in charge/pt yes/no
770 fDeltaInvP = 0.00; // shift value
774 fMCTruthMode = kFALSE;
777 fUseCentralityBin = 0;
778 fUseCentralityRange =0;
781 fRejectPileUpSPD = kFALSE;
785 fSelectInjected = kFALSE;
786 fSelectMBMotherMC = kFALSE;
787 fCheckNegLabelReco = kFALSE;
788 fOnlyFoundRecoV0= kFALSE;
790 fVertexZCut = 100000.0;
795 //----- define defaults for V0 and track cuts ----//
804 fTPCrefitLpt = kTRUE;
807 fUsePIDPion = kFALSE;
808 fMoreNclsThanRows = kFALSE;
809 fMoreNclsThanFindable = kFALSE;
810 fMoreNclsThanFindableMax = kFALSE;
811 fRatioFoundOverFindable = -1.0;
812 fRatioMaxCRowsOverFindable = 1000.0;
815 fChi2PerClusterITS = 100000.0;
816 fDistanceTPCInner = -1.0;
818 fMaxNCLSITSPos = 1000;
820 fMaxNCLSITSNeg = 1000;
821 fSwitchCaseITSCls = kFALSE;
823 fCutMITrackLength = kFALSE;
824 fCutMICrossedR = kFALSE;
825 fCutMITPCncls = kFALSE;
826 fCutMITrackLengthLengthF = 1.0;
827 fCutMICrossedRLengthF = 0.85;
846 fExcludeLambdaFromK0s = -1.0;
847 fExcludeK0sFromLambda = -1.0;
848 fExcludePhotonsFromK0s = -1.0;
849 fExcludePhotonsFromLambda = -1.0;
851 fEtaCutMCDaughters = kFALSE;
852 fEtaCutMCDaughtersVal = 50.0;
856 fDCAToVertexK0 = 10000.0;
857 fDCAToVertexL = 10000.0;
864 fDCADaughtersL=10000.0;
865 fDCADaughtersAL=10000.0;
866 fDCADaughtersK0=10000.0;
868 fDCADaughtersToVtxLarge=-1.0;
869 fDCADaughtersToVtxSmall=-1.0;
871 fDecayRadXYMin = -100000.0;
872 fDecayRadXYMax = 1000000.0;
873 fPtDecRadMin = 1000000.0;
874 fDecayLengthMax = 100000.0;
875 fDecayLengthMin = -1000000.0;
877 fDecRadCutITSMin = 0.0000;
878 fDecRadCutITSMax = 10000.0;
882 fCPAPtCutK0 = 1000.0;
883 fCPAPtCutL = -1000.0;//xxx
884 fOpengAngleDaughters = -1.0;
894 fK0sLowMassCut = 0.25;
895 fK0sHighMassCut = 0.75;
898 fLHighMassCut = 1.25;
901 fSetFillDetAL = kFALSE;
903 fSetPtDepHist=kFALSE;
907 //---- histograms ----//
908 for(Int_t j=0;j<2;j++){
909 fHistArmenteros[j]=NULL;
910 fHistV0RadiusZ[j] =NULL;
911 fHistV0RadiusZVSPt[j] =NULL;
912 fHistV0RadiusXY[j] =NULL;
913 fHistV0RadiusXYVSY[j] =NULL;
916 fHistPiPMass[j]=NULL;
917 fHistPiPMassVSPt[j]=NULL;
918 fHistPiPMassVSY[j] = NULL;
919 fHistPiPMassVSPtMCTruth[j]=NULL;
920 fHistPiPRadiusXY[j]=NULL;
921 fHistPiPCosPointAng[j]=NULL;
922 fHistPiPDecayLengthVsPt[j]=NULL;
923 fHistPiPDecayLengthVsMass[j]=NULL;
924 fHistPiPDecayLengthVsCtau[j]=NULL;
925 fHistPiPDCADaughterPosToPrimVtxVSMass[j]=NULL;
926 fHistPiPDCADaughterNegToPrimVtxVSMass[j]=NULL;
927 fHistPiPMassVSPtSecSigma[j]=NULL;
928 fHistPiPMassVSPtSecXi[j]=NULL;
929 fHistPiPMassVSPtSecOmega[j]=NULL;
930 fHistPiPMassVSYSecXi[j]=NULL;
931 fHistPiPXi0PtVSLambdaPt[j]=NULL;
932 fHistPiPXiMinusPtVSLambdaPt[j]=NULL;
933 fHistPiPOmegaPtVSLambdaPt[j]=NULL;
934 fHistPiPDCADaughters[j]=NULL;
935 // fHistPiPPtDaughters[j]=NULL;
936 fHistPiPPtVSY[j]=NULL;
937 fHistPiPDCAVSMass[j]=NULL;
938 fHistPiPMonitorCuts[j] =NULL;
939 fHistPiPMonitorMCCuts[j] =NULL;
940 fHistPiPDecayLengthResolution[j] =NULL;
941 // fHistPiPDCAZPos[j] =NULL;
942 //fHistPiPDCAZNeg[j] =NULL;
943 fHistPiPTrackLengthPosVsMass[j] = NULL;
944 fHistPiPTrackLengthNegVsMass[j] = NULL;
947 fHistPiAPMass[j]=NULL;
948 fHistPiAPMassVSPt[j]=NULL;
949 fHistPiAPMassVSY[j] = NULL;
950 fHistPiAPMassVSPtMCTruth[j]=NULL;
951 fHistPiAPRadiusXY[j]=NULL;
952 fHistPiAPCosPointAng[j]=NULL;
953 fHistPiAPDecayLengthVsPt[j]=NULL;
954 fHistPiAPDecayLengthVsMass[j]=NULL;
955 fHistPiAPDecayLengthVsCtau[j]=NULL;
956 fHistPiAPDCADaughterPosToPrimVtxVSMass[j]=NULL;
957 fHistPiAPDCADaughterNegToPrimVtxVSMass[j]=NULL;
958 fHistPiAPMassVSPtSecSigma[j]=NULL;
959 fHistPiAPMassVSPtSecXi[j]=NULL;
960 fHistPiAPMassVSPtSecOmega[j]=NULL;
961 fHistPiAPMassVSYSecXi[j]=NULL;
962 fHistPiAPXi0PtVSLambdaPt[j]=NULL;
963 fHistPiAPXiMinusPtVSLambdaPt[j]=NULL;
964 fHistPiAPOmegaPtVSLambdaPt[j] =NULL;
965 fHistPiAPDCADaughters[j]=NULL;
966 // fHistPiAPPtDaughters[j]=NULL;
967 fHistPiAPPtVSY[j]=NULL;
968 fHistPiAPDCAVSMass[j]=NULL;
969 fHistPiAPMonitorCuts[j] =NULL;
970 fHistPiAPMonitorMCCuts[j] =NULL;
971 fHistPiAPDecayLengthResolution[j] =NULL;
972 // fHistPiAPDCAZPos[j] =NULL;
973 //fHistPiAPDCAZNeg[j] =NULL;
974 fHistPiAPTrackLengthPosVsMass[j] = NULL;
975 fHistPiAPTrackLengthNegVsMass[j] = NULL;
978 fHistDedxSecProt[j]=NULL;
979 fHistDedxSecAProt[j]=NULL;
980 fHistDedxSecPiMinus[j]=NULL;
981 fHistDedxSecPiPlus[j]=NULL;
982 fHistDedxProt[j]=NULL;
983 fHistDedxAProt[j]=NULL;
984 fHistDedxPiMinus[j]=NULL;
985 fHistDedxPiPlus[j]=NULL;
986 fHistNclsITS[j]=NULL;
987 fHistNclsTPC[j]=NULL;
988 fHistNclsITSPosL[j]=NULL;
989 fHistNclsITSNegL[j]=NULL;
990 fHistNclsTPCPosL[j]=NULL;
991 fHistNclsTPCNegL[j]=NULL;
992 fHistChi2PerNclsITSPosL[j]=NULL;
993 fHistChi2PerNclsITSNegL[j]=NULL;
994 fHistNCRowsTPCPosL[j]=NULL;
995 fHistNCRowsTPCNegL[j]=NULL;
996 fHistRatioFoundOverFinableTPCLPos[j]=NULL;
997 fHistRatioFoundOverFinableTPCLNeg[j]=NULL;
998 fHistPiPiEtaDMC[j] = NULL;
999 fHistPiPiEtaDReco[j] = NULL;
1000 fHistPiPEtaDMC[j] = NULL;
1001 fHistPiPEtaDReco[j] = NULL;
1005 //_____________________________________________________
1006 AliAnalysisTaskV0ForRAA::~AliAnalysisTaskV0ForRAA()
1008 //---- Remove all pointers ----//
1009 if(fOutputContainer) delete fOutputContainer;fOutputContainer=0;
1010 if(fESDTrackCuts) delete fESDTrackCuts;fESDTrackCuts=0;
1011 if(fESDTrackCutsCharged) delete fESDTrackCutsCharged;fESDTrackCutsCharged=0;
1012 if(fESDTrackCutsLowPt) delete fESDTrackCutsLowPt; fESDTrackCutsLowPt=0;
1014 //________________________________________________________________________
1015 void AliAnalysisTaskV0ForRAA::UserCreateOutputObjects(){
1017 //--- esd track cuts V0 daughters ---//
1018 TString cutsname = "esdtrackcuts";
1019 // esd track cuts for pions high pt
1020 fESDTrackCuts = new AliESDtrackCuts(cutsname);
1021 fESDTrackCuts->SetMaxChi2PerClusterTPC(fChi2cls);
1022 fESDTrackCuts->SetMinNCrossedRowsTPC(fNcr);
1023 fESDTrackCuts->SetAcceptKinkDaughters(kFALSE);
1024 fESDTrackCuts->SetRequireTPCRefit(fTPCrefit);
1025 fESDTrackCuts->SetRequireSigmaToVertex(kFALSE);
1027 // esd track cuts for protons high pt
1028 TString cutsnameCh = cutsname;
1029 cutsnameCh +="_charged";
1030 fESDTrackCutsCharged = new AliESDtrackCuts(cutsnameCh);
1031 fESDTrackCutsCharged->SetMaxChi2PerClusterTPC(fChi2clsCh);
1032 fESDTrackCutsCharged->SetMinNCrossedRowsTPC(fNcrCh);
1033 fESDTrackCutsCharged->SetAcceptKinkDaughters(kFALSE);
1034 fESDTrackCutsCharged->SetRequireTPCRefit(fTPCrefitCh);
1035 fESDTrackCutsCharged->SetRequireSigmaToVertex(kFALSE);
1037 // esd track cuts for all low pt
1038 TString cutsnameLowPt = cutsname;
1039 cutsnameLowPt +="_lowpt";
1040 fESDTrackCutsLowPt = new AliESDtrackCuts(cutsnameLowPt);
1041 fESDTrackCutsLowPt->SetMaxChi2PerClusterTPC(fChi2clsLpt);
1042 fESDTrackCutsLowPt->SetMinNCrossedRowsTPC(fNcrLpt);
1043 fESDTrackCutsLowPt->SetAcceptKinkDaughters(kFALSE);
1044 fESDTrackCutsLowPt->SetRequireTPCRefit(fTPCrefitLpt);
1045 fESDTrackCutsLowPt->SetRequireSigmaToVertex(kFALSE);
1049 //create output objects
1052 //----------------- create output container -----------------//
1054 fOutputContainer = new TList() ;
1055 fOutputContainer->SetName(GetName()) ;
1056 fOutputContainer->SetOwner();
1058 Int_t mchist = 1;// for Data
1059 if((fMCMode && fMCTruthMode) || fMCTruthMode) mchist = 2;//for MC to create sec. Lambda histos
1061 //------------ create allways -----------------------//
1062 fHistNEvents = new TH1F("fHistNEvents","no of events before cuts =0, after cuts=1, after process =2",5,0.0,5.0);
1063 fOutputContainer->Add(fHistNEvents);
1065 fHistMuliplicity = new TH1F("fHistMuliplicity","V0 multiplicity",3000,0.0,30000);
1066 fOutputContainer->Add(fHistMuliplicity);
1068 fHistMuliplicityRaw = new TH1F("fHistMuliplicityRaw","V0 multiplicity before process",3000,0.0,30000);
1069 fOutputContainer->Add(fHistMuliplicityRaw);
1071 fHistMultiplicityPrimary = new TH1F("fHistMultiplicityPrimary","number of charged tracks",5000,0.0,20000);
1072 fOutputContainer->Add(fHistMultiplicityPrimary);
1074 fHistESDVertexZ= new TH1F("fHistESDVertexZ"," z vertex distr in cm",500,-50,50);
1075 fOutputContainer->Add(fHistESDVertexZ);
1077 fHistPrimVtxZESD = new TH1F("fHistPrimVtxZESD","z vertex pos ESD",250,-50,50);
1078 fOutputContainer->Add(fHistPrimVtxZESD);
1080 fHistPrimVtxZESDVSNContributors = new TH2F("fHistPrimVtxZESDVSNContributors","prim vtx pos z ESD vs no. of contributers TPC",250,-50,50,500,0.0,500.0);
1081 fOutputContainer->Add(fHistPrimVtxZESDVSNContributors);
1083 fHistNPrim = new TH1F("fHistNPrim","Number of contributers to vertex",2500,0.0,5000);
1084 fOutputContainer->Add(fHistNPrim);
1086 //------------------------ pp analysis only -------------------------//
1088 fHistITSLayerHits = new TH1F("fHistITSLayerHits","SDD layer -1=0,1=1,2=2 ... 5=5,0=nothing",7,-1.5,5.5);
1089 fOutputContainer->Add(fHistITSLayerHits);
1090 fHistOneHitWithSDD = new TH1F("fHistOneHitWithSDD","min one hit in SDD",2,-0.5,1.5);
1091 fOutputContainer->Add(fHistOneHitWithSDD);
1092 fHistPrimVtxZESDTPC = new TH1F("fHistPrimVtxZESDTPC","z vertex pos TPC",250,-50,50);
1093 fOutputContainer->Add(fHistPrimVtxZESDTPC);
1094 fHistPrimVtxZESDSPD = new TH1F("fHistPrimVtxZESDSPD","z vertex pos SPD",250,-50,50);
1095 fOutputContainer->Add(fHistPrimVtxZESDSPD);
1096 fHistPrimVtxZESDTPCVSNContributors = new TH2F("fHistPrimVtxZESDTPCVSNContributors","prim vtx pos z TPC vs no. of contributers TPC",250,-50,50,500,0.0,500.0);
1097 fOutputContainer->Add(fHistPrimVtxZESDTPCVSNContributors);
1098 fHistPrimVtxZESDSPDVSNContributors = new TH2F("fHistPrimVtxZESDSPDVSNContributors","prim vtx pos z SPD vs no. of contributers TPC",250,-50,50,500,0.0,500.0);
1099 fOutputContainer->Add(fHistPrimVtxZESDSPDVSNContributors);
1103 Double_t binsCent[12]={0.0,5.0,10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.0};
1104 fHistCentBinRaw = new TH1F("fHistCentBinRaw","centrality bin before cent selection",11,binsCent);
1105 fOutputContainer->Add(fHistCentBinRaw);
1106 fHistCentBin = new TH1F("fHistCentBin","centrality bin",11,binsCent);
1107 fOutputContainer->Add(fHistCentBin);
1111 // ------------------- add always ---------------------------//
1113 Double_t piForAx = 2.0*TMath::Pi();
1114 Int_t binsTHnV0K0s[4] = {150,100,50,18};
1115 Int_t binsTHnV0L[4] = {100,100,50,18};
1117 Int_t binsTHnV0DauEtaK0s[4] = {150,100,40,40};
1118 Int_t binsTHnV0DauEtaL[4] = {100,100,40,40};
1120 Int_t binsTHnV0DauPhiK0s[5] = {150, 18,18, 7,7};
1121 Int_t binsTHnV0DauPhiL[5] = {100, 18,18, 7,7};
1123 Double_t minK0s[4] = {0.35,0.0,-1.0,0.0};
1124 Double_t maxK0s[4] = {0.65,50.0,1.0,piForAx};
1125 Double_t minK0sDauEta[4] = {0.35, 0.0,-0.8,-0.8};
1126 Double_t maxK0sDauEta[4] = {0.65,50.0, 0.8, 0.8};
1127 Double_t minK0sDauPhi[5] = {0.35,0.0,0.0,-0.5,-0.5};
1128 Double_t maxK0sDauPhi[5] = {0.65,piForAx,piForAx,6.5,6.5};
1130 Double_t minL[4] = {1.07, 0.0,-1.0,0.0};
1131 Double_t maxL[4] = {1.17,50.0, 1.0,piForAx};
1132 Double_t minLDauEta[4] = {1.07, 0.0,-0.8,-0.8};
1133 Double_t maxLDauEta[4] = {1.17,50.0, 0.8, 0.8};
1134 Double_t minLDauPhi[5] = {1.07,0.0,0.0,-0.5,-0.5};
1135 Double_t maxLDauPhi[5] = {1.17,piForAx,piForAx,6.5, 6.5};
1138 char histTitK0s[255];
1139 snprintf(histTitK0s,255,"fTHnFK0s");
1141 snprintf(histTitL,255,"fTHnFL");
1142 char histTitAL[255];
1143 snprintf(histTitAL,255,"fTHnFAL");
1146 char histTitK0sDauEta[255];
1147 snprintf(histTitK0sDauEta,255,"fTHnFK0sDauEta");
1148 char histTitLDauEta[255];
1149 snprintf(histTitLDauEta,255,"fTHnFLDauEta");
1150 char histTitALDauEta[255];
1151 snprintf(histTitALDauEta,255,"fTHnFALDauEta");
1154 char histTitK0sDauPhi[255];
1155 snprintf(histTitK0sDauPhi,255,"fTHnFK0sDauPhi");
1156 char histTitLDauPhi[255];
1157 snprintf(histTitLDauPhi,255,"fTHnFLDauPhi");
1158 char histTitALDauPhi[255];
1159 snprintf(histTitALDauPhi,255,"fTHnFALDauPhi");
1162 snprintf(axTitK0s,255,"K^{0}_{s};m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta(V0);#phi(V0)");
1164 snprintf(axTitL,255,"#Lambda;m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta(V0);#phi(V0)");
1166 snprintf(axTitAL,255,"#bar{#Lambda};m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta(V0);#phi(V0)");
1169 char axTitK0sDauEta[255];
1170 snprintf(axTitK0sDauEta,255,"K^{0}_{s} daughter;m_{inv} (GeV/c^{2});p_{T} (Gev/c);#eta_{pos};#eta_{neg}");
1171 char axTitLDauEta[255];
1172 snprintf(axTitLDauEta,255,"#Lambda daughter;m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta_{pos};#eta_{neg}");
1173 char axTitALDauEta[255];
1174 snprintf(axTitALDauEta,255,"#bar{#Lambda} daughter;m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta_{pos};#eta_{neg}");
1177 char axTitK0sDauPhi[255];
1178 snprintf(axTitK0sDauPhi,255,"K^{0}_{s} daughter;m_{inv} (GeV/c^{2});#phi_{pos};#phi_{neg};ITS hits (pos);ITS hits (neg)");
1179 char axTitLDauPhi[255];
1180 snprintf(axTitLDauPhi,255,"#Lambda daughter;m_{inv} (GeV/c^{2});#phi_{pos};#phi_{neg};ITS hits (pos);ITS hits (neg)");
1181 char axTitALDauPhi[255];
1182 snprintf(axTitALDauPhi,255,"#bar{#Lambda} daughter;m_{inv} (GeV/c^{2});#phi_{pos};#phi_{neg};ITS hits (pos);ITS hits (neg)");
1185 fTHnFK0s = new THnF(histTitK0s,axTitK0s,4,binsTHnV0K0s,minK0s,maxK0s);
1186 // fTHnFK0s->Sumw2();
1187 fTHnFL = new THnF(histTitL ,axTitL ,4,binsTHnV0L,minL ,maxL);
1189 fTHnFAL = new THnF(histTitAL ,axTitAL ,4,binsTHnV0L,minL ,maxL);
1190 // fTHnFAL->Sumw2();
1193 fTHnFK0sDauEta = new THnF(histTitK0sDauEta,axTitK0sDauEta,4,binsTHnV0DauEtaK0s,minK0sDauEta,maxK0sDauEta);
1194 // fTHnFK0sDauEta->Sumw2();
1195 fTHnFLDauEta = new THnF(histTitLDauEta ,axTitLDauEta ,4,binsTHnV0DauEtaL,minLDauEta ,maxLDauEta);
1196 // fTHnFLDauEta->Sumw2();
1197 fTHnFALDauEta = new THnF(histTitALDauEta ,axTitALDauEta ,4,binsTHnV0DauEtaL,minLDauEta ,maxLDauEta);
1198 // fTHnFALDauEta->Sumw2();
1200 fTHnFK0sDauPhi = new THnF(histTitK0sDauPhi,axTitK0sDauPhi,5,binsTHnV0DauPhiK0s,minK0sDauPhi,maxK0sDauPhi);
1201 // fTHnFK0sDauPhi->Sumw2();
1202 fTHnFLDauPhi = new THnF(histTitLDauPhi ,axTitLDauPhi ,5,binsTHnV0DauPhiL,minLDauPhi ,maxLDauPhi);
1203 // fTHnFLDauPhi->Sumw2();
1204 fTHnFALDauPhi = new THnF(histTitALDauPhi ,axTitALDauPhi ,5,binsTHnV0DauPhiL,minLDauPhi ,maxLDauPhi);
1205 //fTHnFALDauPhi->Sumw2();
1208 fHistV0RadiusZ[0] = new TH2F("fHistV0RadiusZ","z of decay radius vs 2D radius",100,0.0,100.0,250,-125.0,125.0);
1209 fHistV0RadiusZVSPt[0] = new TH2F("fHistV0RadiusZVSPt","z of decay radius vs pt radius",500,0.0,50.0,125,0.0,125.0);
1210 fHistV0RadiusXY[0] = new TH2F("fHistV0RadiusXY","y vs x decay radius",250,-125.0,125.0,250,-125.0,125.0);
1211 fHistV0RadiusXYVSY[0] = new TH2F("fHistV0RadiusXYVSY","2D decay radius vs rap",100,-1,1,100,0.0,100.0);
1212 fHistArmenteros[0] = new TH2F("fHistArmenteros"," pi+pi- armenteros",nbMass,-1.,1.,500,0.,0.5);
1215 fHistPiPiK0sVsLambdaMass = new TH2F("fHistPiPiK0sVsLambdaMass","K0s mass vs Lambda mass for all pt for K0s",250,1.05,1.25,250,0.25,0.75);
1216 fHistPiPiK0sVsALambdaMass = new TH2F("fHistPiPiK0sVsALambdaMass","K0s mass vs ALambda mass for all pt for K0s",250,1.05,1.25,250,0.25,0.75);
1218 fHistPiPK0sVsLambdaMass = new TH2F("fHistPiPK0sVsLambdaMass","K0s mass vs Lambda mass for all pt for Lambda",250,1.05,1.25,250,0.25,0.75);
1220 fHistPiAPK0sVsALambdaMass = new TH2F("fHistPiAPK0sVsALambdaMass","K0s mass vs ALambda mass for all pt for ALambda",250,1.05,1.25,250,0.25,0.75);
1222 fHistPiPALambdaVsLambdaMass = new TH2F("fHistPiPALambdaVsLambdaMass","ALambda mass vs Lambda mass for Lambda",250,1.05,1.25,250,1.05,1.25);
1223 fHistPiAPLambdaVsALambdaMass = new TH2F("fHistPiAPLambdaVsALambdaMass","Lambda mass vs ALambda mass for ALambda",250,1.05,1.25,250,1.05,1.25);
1225 //-----K0s---------//
1226 fHistPiPiMass = new TH1F("fHistPiPiMass"," pi+pi- InvMass distribution",2*nbMass,0.,2.);
1227 fHistPiPiMassVSPt = new TH2F("fHistPiPiMassVSPt","pi+pi- InvMass distribution",nbMass,0.25,0.75,500,0.0,50.0);
1228 fHistPiPiMassVSPtMCTruth = new TH2F("fHistPiPiMassVSPtMCTruth","pi+pi- InvMass distribution vs pt MCTruth",nbMass,0.25,0.75,500,0.0,50.0);
1229 fHistPiPiMassVSY = new TH2F("fHistPiPiMassVSY","pi+pi- InvMass distribution vs rapidity",nbMass,0.25,0.75,200,-1.0,1.0);
1230 fHistPiPiPtVSY = new TH2F("fHistPiPiPtVSY","phi vs mass",100,-1,1,100,0.0,20);
1231 fHistPiPiDecayLengthVsPt = new TH2F("fHistPiPiDecayLengthVsPt","K0 decay length vs pt",500,0.0,50.0,220,0.0,110.0);
1232 fHistPiPiDecayLengthVsMass = new TH2F("fHistPiPiDecayLengthVsMass","K0s decay length vs mass",nbMass,0.25,0.75,220,0.0,110.0);
1233 // fHistPiPiPhiPosVsPtPosVsMass = new TH3F("fHistPiPiPhiPosVsPtPosVsMass","ctau K0s vs pt vs mass",250,0.25,0.75,120,0.0,60.0,200,0.0,20.0);//4.0);//xxx
1235 fHistPiPiDecayLengthVsCtau = new TH2F("fHistPiPiDecayLengthVsCtau","K0s ctau vs mass",nbMass,0.25,0.75,250,0.0,50.0);
1238 fHistPiPiDecayLengthVsCtau = new TH2F("fHistPiPiDecayLengthVsCtau","K0s ctau vs pt",200,0,20.0,250,0.0,50.0);
1241 fHistPiPiMonitorCuts = new TH1F("fHistPiPiMonitorCuts","K0 cut monitor",35,0.5,35.5);
1242 fHistPiPiMonitorMCCuts = new TH1F("fHistPiPiMonitorMCCuts","K0 cut monitor mc",35,0.5,35.5);
1244 //---------------Lambda--------------//
1245 fHistPiPMass[0] = new TH1F("fHistPiPMass"," p+pi- InvMass distribution",2*nbMass,0.,2.);
1246 fHistPiPMassVSPt[0] = new TH2F("fHistPiPMassVSPt","p+pi- InvMass distribution",nbMass,1.05,1.25,500,0.0,50.0);
1247 fHistPiPMassVSPtMCTruth[0] = new TH2F("fHistPiPMassVSPtMCTruth","p+pi- InvMass distribution vs pt MCTruth",nbMass,1.05,1.25,500,0.0,50.0);
1248 fHistPiPMassVSY[0] = new TH2F("fHistPiPMassVSY","p+pi- InvMass distribution vs rapidity",nbMass,1.05,1.25,200,-1.0,1.0);
1249 fHistPiPPtVSY[0] = new TH2F("fHistPiPPtVSY","p{t} vs y",100,-1,1,100,0.0,20);
1250 fHistPiPDecayLengthVsPt[0] = new TH2F("fHistPiPDecayLengthVsPt","#Lambda decay length vs pt",500,0.0,50.0,220,0.0,110.0);
1251 fHistPiPDecayLengthVsMass[0] = new TH2F("fHistPiPDecayLengthVsMass","#Lambda decay length vs mass",nbMass,1.05,1.25,220,0.0,110.0);
1252 // fHistPiPPhiPosVsPtPosVsMass = new TH3F("fHistPiPPhiPosVsPtPosVsMass","ctau L vs pt vs mass",200,1.05,1.25,120,0.0,60.0,200,0.0,20.0);//4.0);//xxx
1254 fHistPiPDecayLengthVsCtau[0] = new TH2F("fHistPiPDecayLengthVsCtau","L ctau vs mass",nbMass,1.05,1.25,250,0.0,50.0);
1257 fHistPiPDecayLengthVsCtau[0] = new TH2F("fHistPiPDecayLengthVsCtau","L ctau vs pt",500,0.0,50.0,250,0.0,50.0);
1260 fHistPiPMonitorCuts[0] = new TH1F("fHistPiPMonitorCuts","#Lambda cut monitor",35,0.5,35.5);
1261 fHistPiPMonitorMCCuts[0] = new TH1F("fHistPiPMonitorMCCuts","#Lambda cut monitor mc ",35,0.5,35.5);
1263 //-------------ALamda-------------//
1264 fHistPiAPMass[0] = new TH1F("fHistPiAPMass"," ap-pi+ InvMass distribution",2*nbMass,0.,2.);
1265 fHistPiAPMassVSPt[0] = new TH2F("fHistPiAPMassVSPt","p-pi+ InvMass distribution",nbMass,1.05,1.25,500,0.0,50.0);
1266 fHistPiAPMassVSPtMCTruth[0] = new TH2F("fHistPiAPMassVSPtMCTruth","p-pi+ InvMass distribution vs pt MCTruth",nbMass,1.05,1.25,500,0.0,50.0);
1267 fHistPiAPMassVSY[0] = new TH2F("fHistPiAPMassVSY","p-pi+ InvMass distribution vs rapidity",nbMass,1.05,1.25,200,-1.0,1.0);
1268 fHistPiAPPtVSY[0] = new TH2F("fHistPiAPPtVSY","p{t} vs y",100,-1,1,100,0.0,20);
1269 fHistPiAPDecayLengthVsPt[0] = new TH2F("fHistPiAPDecayLengthVsPt","#bar{#Lambda} decay length vs pt",500,0.0,50.0,220,0.0,110.0);
1270 fHistPiAPDecayLengthVsMass[0] = new TH2F("fHistPiAPDecayLengthVsMass","#bar{#Lambda} decay length vs mass",nbMass,1.05,1.25,220,0.0,110.0);
1271 // if(fMCTruthMode) fHistPiAPPhiPosVsPtPosVsMass = new TH3F("fHistPiAPPhiPosVsPtPosVsMass","ctau AL vs pt vs mass",200,1.05,1.25,120,0.0,60.0,200,0.0,20.0);//4.0);//xxx
1273 fHistPiAPDecayLengthVsCtau[0] = new TH2F("fHistPiAPDecayLengthVsCtau","AL ctau vs mass",nbMass,1.05,1.25,250,0.0,50.0);
1276 fHistPiAPDecayLengthVsCtau[0] = new TH2F("fHistPiAPDecayLengthVsCtau","AL ctau vs pt",500,0.0,50.0,250,0.0,50.0);
1279 fHistPiAPMonitorCuts[0] = new TH1F("fHistPiAPMonitorCuts","#bar{#Lambda} cut monitor",35,0.5,35.5);
1280 fHistPiAPMonitorMCCuts[0] = new TH1F("fHistPiAPMonitorMCCuts","#bar{#Lambda} cut monitor mc",35,0.5,35.5);
1282 // ---------------------------------------------for MC reco secondaries -----------------------------------------//
1284 fHistV0RadiusZ[1] = new TH2F("fHistV0RadiusZSec","z of decay radius vs 2D radius",100,0.0,100.0,250,-125.0,125.0);
1285 fHistV0RadiusZVSPt[1] = new TH2F("fHistV0RadiusZVSPtSec","z of decay radius vs pt radius",500,0.0,50.0,125,0.0,125.0);
1286 fHistV0RadiusXY[1] = new TH2F("fHistV0RadiusXYSec","y vs x decay radius",250,-125.0,125.0,250,-125.0,125.0);
1287 fHistV0RadiusXYVSY[1] = new TH2F("fHistV0RadiusXYVSYSec","2D decay radius vs rap",100,-1,1,100,0.0,100.0);
1288 fHistArmenteros[1] = new TH2F("fHistArmenterosSec"," pi+pi- armenteros",nbMass,-1.,1.,500,0.,0.5);
1290 //-----------------K0s------------//
1291 //--------------- Lambda----------//
1292 fHistPiPMass[1] = new TH1F("fHistPiPMassSec"," p+pi- InvMass distribution",2*nbMass,0.,2.);
1293 fHistPiPMassVSPt[1] = new TH2F("fHistPiPMassVSPtSec","p+pi- InvMass distribution",nbMass,1.05,1.25,500,0.0,50.0);
1294 fHistPiPMassVSPtMCTruth[1] = new TH2F("fHistPiPMassVSPtMCTruthSec","p+pi- InvMass distribution vs pt MCTruth",nbMass,1.05,1.25,500,0.0,50.0);
1295 fHistPiPMassVSY[1] = new TH2F("fHistPiPMassVSYSec","p+pi- InvMass distribution vs rapidity",nbMass,1.05,1.25,200,-1.0,1.0);
1296 fHistPiPPtVSY[1] = new TH2F("fHistPiPPtVSYSec","p{t} vs y",100,-1,1,100,0.0,20);
1297 fHistPiPDecayLengthVsPt[1] = new TH2F("fHistPiPDecayLengthVsPtSec","#Lambda decay length vs pt",500,0.0,50.0,220,0.0,110.0);
1298 fHistPiPDecayLengthVsMass[1] = new TH2F("fHistPiPDecayLengthVsMassSec","#Lambda decay length vs mass",nbMass,1.05,1.25,220,0.0,110.0);
1300 fHistPiPDecayLengthVsCtau[1] = new TH2F("fHistPiPDecayLengthVsCtauSec","L ctau vs mass",nbMass,1.05,1.25,250,0.0,50.0);
1303 fHistPiPDecayLengthVsCtau[1] = new TH2F("fHistPiPDecayLengthVsCtauSec","L ctau vs pt",500,0.0,50.0,250,0.0,50.0);
1306 fHistPiPMonitorCuts[1] = new TH1F("fHistPiPMonitorCutsSec","#Lambda cut monitor",35,0.5,35.5);
1307 fHistPiPMonitorMCCuts[1] = new TH1F("fHistPiPMonitorMCCutsSec","#Lambda cut monitor mc",35,0.5,35.5);
1309 //----------------ALambda---------//
1310 fHistPiAPMass[1] = new TH1F("fHistPiAPMassSec"," ap-pi+ InvMass distribution",2*nbMass,0.,2.);
1311 fHistPiAPMassVSPt[1] = new TH2F("fHistPiAPMassVSPtSec","p-pi+ InvMass distribution",nbMass,1.05,1.25,500,0.0,50.0);
1312 fHistPiAPMassVSPtMCTruth[1] = new TH2F("fHistPiAPMassVSPtMCTruthSec","p-pi+ InvMass distribution vs pt MCTruth",nbMass,1.05,1.25,500,0.0,50.0);
1313 fHistPiAPMassVSY[1] = new TH2F("fHistPiAPMassVSYSec","p-pi+ InvMass distribution vs rapidity",nbMass,1.05,1.25,200,-1.0,1.0);
1314 fHistPiAPPtVSY[1] = new TH2F("fHistPiAPPtVSYSec","p{t} vs y",100,-1,1,100,0.0,20);
1315 fHistPiAPDecayLengthVsPt[1] = new TH2F("fHistPiAPDecayLengthVsPtSec","#bar{#Lambda} decay length vs pt",500,0.0,50.0,220,0.0,110.0);
1316 fHistPiAPDecayLengthVsMass[1] = new TH2F("fHistPiAPDecayLengthVsMassSec","#bar{#Lambda} decay length vs mass",nbMass,1.05,1.25,220,0.0,110.0);
1318 fHistPiAPDecayLengthVsCtau[1] = new TH2F("fHistPiAPDecayLengthVsCtauSec","AL ctau vs mass",nbMass,1.05,1.25,250,0.0,50.0);
1321 fHistPiAPDecayLengthVsCtau[1] = new TH2F("fHistPiAPDecayLengthVsCtauSec","AL ctau vs pt",500,0.0,50.0,250,0.0,50.0);
1324 fHistPiAPMonitorCuts[1] = new TH1F("fHistPiAPMonitorCutsSec","#bar{#Lambda} cut monitor",35,0.5,35.5);
1325 fHistPiAPMonitorMCCuts[1] = new TH1F("fHistPiAPMonitorMCCutsSec","#bar{#Lambda} cut monitor mc",35,0.5,35.5);
1328 //add to output container
1329 //------------ K0s ------------------//
1330 fOutputContainer->Add(fHistPiPiMass);
1331 fOutputContainer->Add(fHistPiPiMassVSPt);
1332 fOutputContainer->Add(fHistPiPiMassVSPtMCTruth);
1333 fOutputContainer->Add(fHistPiPiMassVSY);
1334 fOutputContainer->Add(fHistPiPiPtVSY);
1335 fOutputContainer->Add(fHistPiPiDecayLengthVsPt);
1336 fOutputContainer->Add(fHistPiPiDecayLengthVsCtau);
1337 fOutputContainer->Add(fHistPiPiDecayLengthVsMass);
1338 fOutputContainer->Add(fHistPiPiMonitorCuts);
1339 fOutputContainer->Add(fHistPiPiMonitorMCCuts);
1340 fOutputContainer->Add(fHistPiPiK0sVsLambdaMass);
1341 fOutputContainer->Add(fHistPiPiK0sVsALambdaMass);
1342 fOutputContainer->Add(fTHnFK0s);
1343 fOutputContainer->Add(fTHnFK0sDauEta);
1344 fOutputContainer->Add(fTHnFK0sDauPhi);
1345 //fOutputContainer->Add(fHistPiPiPhiPosVsPtPosVsMass);//xxx
1347 // --------------- Lambda ---------------//
1348 fOutputContainer->Add(fHistPiPK0sVsLambdaMass);
1349 fOutputContainer->Add(fHistPiPALambdaVsLambdaMass);
1350 // fOutputContainer->Add(fHistPiPPhiPosVsPtPosVsMass);//xxx
1351 fOutputContainer->Add(fTHnFL);
1352 fOutputContainer->Add(fTHnFLDauEta);
1353 fOutputContainer->Add(fTHnFLDauPhi);
1355 // --------------- ALambda ---------------//
1356 fOutputContainer->Add(fHistPiAPK0sVsALambdaMass);
1357 fOutputContainer->Add(fHistPiAPLambdaVsALambdaMass);
1358 // if(fMCTruthMode) fOutputContainer->Add(fHistPiAPPhiPosVsPtPosVsMass);//xxx
1359 fOutputContainer->Add(fTHnFAL);
1360 fOutputContainer->Add(fTHnFALDauEta);
1361 fOutputContainer->Add(fTHnFALDauPhi);
1364 for(Int_t j=0;j<mchist;j++){
1365 fOutputContainer->Add(fHistArmenteros[j]);
1366 fOutputContainer->Add(fHistV0RadiusZ[j]);
1367 fOutputContainer->Add(fHistV0RadiusZVSPt[j]);
1368 fOutputContainer->Add(fHistV0RadiusXY[j]);
1369 fOutputContainer->Add(fHistV0RadiusXYVSY[j]);
1370 fOutputContainer->Add(fHistPiPMass[j]);
1371 fOutputContainer->Add(fHistPiAPMass[j]);
1372 fOutputContainer->Add(fHistPiPMassVSPt[j]);
1373 fOutputContainer->Add(fHistPiAPMassVSPt[j]);
1374 fOutputContainer->Add(fHistPiPMassVSPtMCTruth[j]);
1375 fOutputContainer->Add(fHistPiAPMassVSPtMCTruth[j]);
1376 fOutputContainer->Add(fHistPiPMassVSY[j]);
1377 fOutputContainer->Add(fHistPiAPMassVSY[j]);
1378 fOutputContainer->Add(fHistPiPPtVSY[j]);
1379 fOutputContainer->Add(fHistPiAPPtVSY[j]);
1380 fOutputContainer->Add(fHistPiPDecayLengthVsPt[j]);
1381 fOutputContainer->Add(fHistPiAPDecayLengthVsPt[j]);
1382 fOutputContainer->Add(fHistPiPDecayLengthVsCtau[j]);
1383 fOutputContainer->Add(fHistPiAPDecayLengthVsCtau[j]);
1384 fOutputContainer->Add(fHistPiPDecayLengthVsMass[j]);
1385 fOutputContainer->Add(fHistPiAPDecayLengthVsMass[j]);
1386 fOutputContainer->Add(fHistPiPMonitorCuts[j]);
1387 fOutputContainer->Add(fHistPiAPMonitorCuts[j]);
1388 fOutputContainer->Add(fHistPiPMonitorMCCuts[j]);
1389 fOutputContainer->Add(fHistPiAPMonitorMCCuts[j]);
1392 //----------------- for reco or data or mc data like MC reco only -----------------//
1393 if((fMCMode) || (!fMCTruthMode && !fMCMode)){
1395 fHistPiPiEtaDReco[0] = new TH2F("fHistPiPiEtaDRecoRaw","K0s daughters eta raw",300,-6,6,100,0,20);
1396 fOutputContainer->Add(fHistPiPiEtaDReco[0]);
1397 fHistPiPiEtaDReco[1] = new TH2F("fHistPiPiEtaDReco","K0s daughters eta after rap V0 cut pos",300,-3,3,300,-3.00,3.0);
1398 fOutputContainer->Add(fHistPiPiEtaDReco[1]);
1399 fHistPiPEtaDReco[0] = new TH2F("fHistPiPEtaDRecoRaw","#Lambda daughters eta raw",300,-6,6,100,0,20);
1400 fOutputContainer->Add(fHistPiPEtaDReco[0]);
1401 fHistPiPEtaDReco[1] = new TH2F("fHistPiPEtaDReco","#Lambda daughters eta after rap V0 cut neg",300,-3,3,300,-3.00,3.0);
1402 fOutputContainer->Add(fHistPiPEtaDReco[1]);
1404 //-------------K0---------------//
1405 // fHistPiPiMassVSAlpha = new TH2F("fHistPiPiMassVSAlpha"," alpha armenteros vs pi+pi- InvMass distribution",nbMass,0.25,0.75,500,-1.,1.);
1407 fHistPiPiDCADaughters = new TH2F("fHistPiPiDCADaughters","dca of K0 daughters",nbMass,0.25,0.75,250,0.0,2);
1408 fHistPiPiDCADaughterPosToPrimVtxVSMass = new TH2F("fHistPiPiDCADaughterPosToPrimVtxVSMass","pi+ DCA daughter to prim vtx vsinvmass",nbMass,0.25,0.75,250,0.0,10.0);
1409 fHistPiPiDCAVSMass = new TH2F("fHistPiPiDCAVSMass","pi+pi- dca vs pt",nbMass,0.25,0.75,250,0.0,5.0);
1410 fHistPiPiCosPointAng = new TH2F("fHistPiPiCosPointAng","K0 cosine of pointing angle vs mass ",nbMass,0.25,0.75,200,0.99,1.00);
1411 fHistPiPiRadiusXY = new TH2F("fHistPiPiRadiusXY","pi+pi- phi dist vs mass",nbMass,0.25,0.75,200,0.0,4.0);
1412 // fHistPiPiPtDaughters = new TH2F("fHistPiPiPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1413 // fHistPiPiDCAZPos = new TH2F("fHistPiPiDCAZPos","dca z of K0 pos daughters",nbMass,0.25,0.75,200,-20.0,20.0);
1414 //fHistPiPiDCAZNeg = new TH2F("fHistPiPiDCAZNeg","dca z of K0 neg daughters",nbMass,0.25,0.75,200,-20.0,20.0);
1415 fHistPiPiTrackLengthPosVsMass = new TH2F("fHistPiPiTrackLengthPosVsMass","track lenght of pos K0s daughter in TPC",nbMass,0.25,0.75,250,0.0,250.0);
1416 fHistPiPiTrackLengthNegVsMass = new TH2F("fHistPiPiTrackLengthNegVsMass","track lenght of neg K0s daughter in TPC",nbMass,0.25,0.75,250,0.0,250.0);
1418 else{//pt dependence
1419 fHistPiPiDCADaughters = new TH2F("fHistPiPiDCADaughters","dca of K0 daughters",500,0.0,50.0,250,0.0,2);
1420 fHistPiPiDCADaughterPosToPrimVtxVSMass = new TH2F("fHistPiPiDCADaughterPosToPrimVtxVSMass","pi+ DCA daughter to prim vtx vsinvmass",500,0.0,50.0,250,0.0,10.0);
1421 fHistPiPiDCAVSMass = new TH2F("fHistPiPiDCAVSMass","pi+pi- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1422 fHistPiPiCosPointAng = new TH2F("fHistPiPiCosPointAng","K0 cosine of pointing angle vs mass ",500,0.0,50.0,200,0.99,1.00);
1423 fHistPiPiRadiusXY = new TH2F("fHistPiPiRadiusXY","pi+pi- phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1424 // fHistPiPiDCAZPos = new TH2F("fHistPiPiDCAZPos","dca z of K0 pos daughters",500,0.0,50.0,200,-20.0,20.0);
1425 // fHistPiPiDCAZNeg = new TH2F("fHistPiPiDCAZNeg","dca z of K0 neg daughters",500,0.0,50.0,200,-20.0,20.0);
1426 fHistPiPiTrackLengthPosVsMass = new TH2F("fHistPiPiTrackLengthPosVsMass","track lenght of pos K0s daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1427 fHistPiPiTrackLengthNegVsMass = new TH2F("fHistPiPiTrackLengthNegVsMass","track lenght of neg K0s daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1430 //---------------Lambda-------------//
1432 fHistPiPDCADaughters[0] = new TH2F("fHistPiPDCADaughters","dca of #Lambda daughters",nbMass,1.05,1.25,250,0.0,2.0);
1433 fHistPiPDCADaughterPosToPrimVtxVSMass[0] = new TH2F("fHistPiPDCADaughterPosToPrimVtxVSMass","pos DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1434 fHistPiPDCADaughterNegToPrimVtxVSMass[0] = new TH2F("fHistPiPDCADaughterNegToPrimVtxVSMass","neg DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1435 fHistPiPDCAVSMass[0] = new TH2F("fHistPiPDCAVSMass","ppi- dca vs pt",nbMass,1.05,1.25,250,0.0,5.0);
1436 fHistPiPCosPointAng[0] = new TH2F("fHistPiPCosPointAng","#Lambda cosine of pointing angle vs mass ",nbMass,1.05,1.25,200,0.99,1.00);
1437 fHistPiPRadiusXY[0] = new TH2F("fHistPiPRadiusXY","pi-p+ phi dist vs mass",nbMass,1.05,1.25,200,0.0,4.0);
1438 // fHistPiPPtDaughters[0] = new TH2F("fHistPiPPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1439 // fHistPiPDCAZPos[0] = new TH2F("fHistPiPDCAZPos","dca z of Lambda pos daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1440 //fHistPiPDCAZNeg[0] = new TH2F("fHistPiPDCAZNeg","dca z of Lambda neg daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1441 fHistPiPTrackLengthPosVsMass[0] = new TH2F("fHistPiPTrackLengthPosVsMass","track length of pos Lambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1442 fHistPiPTrackLengthNegVsMass[0] = new TH2F("fHistPiPTrackLengthNegVsMass","track length of neg Lambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1444 else{//pt dependence
1445 fHistPiPDCADaughters[0] = new TH2F("fHistPiPDCADaughters","dca of #Lambda daughters",500,0.0,50.0,250,0.0,2.0);
1446 fHistPiPDCADaughterPosToPrimVtxVSMass[0] = new TH2F("fHistPiPDCADaughterPosToPrimVtxVSMass","pos DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1447 fHistPiPDCADaughterNegToPrimVtxVSMass[0] = new TH2F("fHistPiPDCADaughterNegToPrimVtxVSMass","neg DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1448 fHistPiPDCAVSMass[0] = new TH2F("fHistPiPDCAVSMass","ppi- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1449 fHistPiPCosPointAng[0] = new TH2F("fHistPiPCosPointAng","#Lambda cosine of pointing angle vs mass ",500,0.0,50.0,200,0.99,1.00);
1450 fHistPiPRadiusXY[0] = new TH2F("fHistPiPRadiusXY","pi-p+ phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1451 //fHistPiPDCAZPos[0] = new TH2F("fHistPiPDCAZPos","dca z of Lambda pos daughters",200,0.0,20.0,200,-20.0,20.0);
1452 //fHistPiPDCAZNeg[0] = new TH2F("fHistPiPDCAZNeg","dca z of Lambda neg daughters",200,0.0,20.0,200,-20.0,20.0);
1453 fHistPiPTrackLengthPosVsMass[0] = new TH2F("fHistPiPTrackLengthPosVsMass","track length of pos Lambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1454 fHistPiPTrackLengthNegVsMass[0] = new TH2F("fHistPiPTrackLengthNegVsMass","track length of neg Lambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1457 //-------------------AntiLambda-------------//
1459 fHistPiAPDCADaughters[0] = new TH2F("fHistPiAPDCADaughters","dca of #bar{#Lambda} daughters",nbMass,1.05,1.25,250,0.0,2.0);
1460 fHistPiAPDCADaughterPosToPrimVtxVSMass[0] = new TH2F("fHistPiAPDCADaughterPosToPrimVtxVSMass","pos DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1461 fHistPiAPDCADaughterNegToPrimVtxVSMass[0] = new TH2F("fHistPiAPDCADaughterNegToPrimVtxVSMass","neg DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1462 fHistPiAPDCAVSMass[0] = new TH2F("fHistPiAPDCAVSMass","pi+p- dca vs pt",nbMass,1.05,1.25,250,0.0,5.0);
1463 fHistPiAPCosPointAng[0] = new TH2F("fHistPiAPCosPointAng","#bar{#Lambda} cosine of pointing angle vs mass",nbMass,1.05,1.25,200,0.99,1.00);
1464 fHistPiAPRadiusXY[0] = new TH2F("fHistPiAPRadiusXY","pi+p- phi dist vs mass",nbMass,1.05,1.25,200,0.0,4.0);
1465 // fHistPiAPPtDaughters[0] = new TH2F("fHistPiAPPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1466 // fHistPiAPDCAZPos[0] = new TH2F("fHistPiAPDCAZPos","dca z of ALambda pos daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1467 //fHistPiAPDCAZNeg[0] = new TH2F("fHistPiAPDCAZNeg","dca z of ALambda neg daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1468 fHistPiAPTrackLengthPosVsMass[0] = new TH2F("fHistPiAPTrackLengthPosVsMass","track length of pos ALambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1469 fHistPiAPTrackLengthNegVsMass[0] = new TH2F("fHistPiAPTrackLengthNegVsMass","track length of neg ALambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1471 else{//pt dependence
1472 fHistPiAPDCADaughters[0] = new TH2F("fHistPiAPDCADaughters","dca of #bar{#Lambda} daughters",500,0.0,50.0,250,0.0,2.0);
1473 fHistPiAPDCADaughterPosToPrimVtxVSMass[0] = new TH2F("fHistPiAPDCADaughterPosToPrimVtxVSMass","pos DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1474 fHistPiAPDCADaughterNegToPrimVtxVSMass[0] = new TH2F("fHistPiAPDCADaughterNegToPrimVtxVSMass","neg DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1475 fHistPiAPDCAVSMass[0] = new TH2F("fHistPiAPDCAVSMass","pi+p- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1476 fHistPiAPCosPointAng[0] = new TH2F("fHistPiAPCosPointAng","#bar{#Lambda} cosine of pointing angle vs mass",500,0.0,50.0,200,0.99,1.00);
1477 fHistPiAPRadiusXY[0] = new TH2F("fHistPiAPRadiusXY","pi+p- phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1478 // fHistPiAPDCAZPos[0] = new TH2F("fHistPiAPDCAZPos","dca z of ALambda pos daughters",500,0.0,50.0,200,-20.0,20.0);
1479 //fHistPiAPDCAZNeg[0] = new TH2F("fHistPiAPDCAZNeg","dca z of ALambda neg daughters",500,0.0,50.0,200,-20.0,20.0);
1480 fHistPiAPTrackLengthPosVsMass[0] = new TH2F("fHistPiAPTrackLengthPosVsMass","track length of pos ALambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1481 fHistPiAPTrackLengthNegVsMass[0] = new TH2F("fHistPiAPTrackLengthNegVsMass","track length of neg ALambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1484 //------dedx--------//
1485 fHistDedxSecProt[0] = new TH2F("fHistDedxSecProt","proton", 250,0.0,5.0, 100, 0, 400);
1486 fHistDedxSecPiPlus[0] = new TH2F("fHistDedxSecPiPlus","pi plus", 250,0.0,5.0, 100, 0, 400);
1487 fHistDedxSecAProt[0] = new TH2F("fHistDedxSecAProt","antiproton", 250,0.0,5.0, 100, 0, 400);
1488 fHistDedxSecPiMinus[0] = new TH2F("fHistDedxSecPiMinus","pi minus", 250,0.0,5.0, 100, 0, 400);
1489 fHistDedxProt[0] = new TH2F("fHistDedxProt","proton", 250,0.0,5.0, 100, 0, 400);
1490 fHistDedxPiPlus[0] = new TH2F("fHistDedxPiPlus","pi plus", 250,0.0,5.0, 100, 0, 400);
1491 fHistDedxAProt[0] = new TH2F("fHistDedxAProt","antiproton", 250,0.0,5.0, 100, 0, 400);
1492 fHistDedxPiMinus[0] = new TH2F("fHistDedxPiMinus","pi minus", 250,0.0,5.0, 100, 0, 400);
1495 // ------------------------------------------ clusters --------------------------------------------------//
1496 fHistNclsITS[0] = new TH2F("fHistNclsITS","fHistNclsITS pos vs neg L",10,-0.5,9.5,10,-0.5,9.5);
1497 fHistNclsTPC[0] = new TH2F("fHistNclsTPC","ncls TPC neg vs crossed rows neg L",200,-0.5,199.5,200,-0.5,199.5);
1499 fHistNclsITS[1] = new TH2F("fHistNclsITSSec","fHistNclsITS pos vs neg K0",10,-0.5,9.5,10,-0.5,9.5);
1500 fHistNclsTPC[1] = new TH2F("fHistNclsTPCSec","ncls TPC neg vs crossed rows neg K0",200,-0.5,199.5,200,-0.5,199.5);
1504 fHistNclsITSPosK0 = new TH2F("fHistNclsITSPosK0","fHistNclsITSPos vs pt K0 pos",nbMass,0.25,0.75,7,-0.5,6.5);
1505 fHistNclsITSNegK0 = new TH2F("fHistNclsITSNegK0","fHistNclsITSNeg vs pt K0 neg",nbMass,0.25,0.75,7,-0.5,6.5);
1507 fHistNclsTPCPosK0 = new TH2F("fHistNclsTPCPosK0","K0 mass vs phi pos",nbMass,0.25,0.75,200,0.0,200.0);
1508 fHistNclsTPCNegK0 = new TH2F("fHistNclsTPCNegK0","K0 mass vs phi neg",nbMass,0.25,0.75,200,0.0,200.0);
1510 fHistChi2PerNclsITSPosK0 = new TH2F("fHistChi2PerNclsITSPosK0","chi2 per cluster ITS K0 pos",nbMass,0.25,0.75,250,0.0,25.0);
1511 fHistChi2PerNclsITSNegK0 = new TH2F("fHistChi2PerNclsITSNegK0","chi2 per cluster ITS K0 neg",nbMass,0.25,0.75,250,0.0,25.0);
1513 fHistNCRowsTPCPosK0 = new TH2F("fHistNCRowsTPCPosK0","n crossed rows vs K0 pos",nbMass,0.25,0.75,200,0.0,200.0);
1514 fHistNCRowsTPCNegK0 = new TH2F("fHistNCRowsTPCNegK0","n crossed rows vs K0 neg",nbMass,0.25,0.75,200,0.0,200.0);
1516 fHistRatioFoundOverFinableTPCK0Pos = new TH2F("fHistRatioFoundOverFinableTPCK0Pos","ncls found over findable K0 pos sec",nbMass,0.25,0.75,200,0.0,2.0);
1517 fHistRatioFoundOverFinableTPCK0Neg = new TH2F("fHistRatioFoundOverFinableTPCK0Neg","ncls found over findable K0 neg sec",nbMass,0.25,0.75,200,0.0,2.0);
1519 fHistNclsITSPosL[0] = new TH2F("fHistNclsITSPosL","fHistNclsITSPos vs pt L pos",nbMass,1.05,1.25,7,-0.5,6.5);
1520 fHistNclsITSNegL[0] = new TH2F("fHistNclsITSNegL","fHistNclsITSNeg vs pt L neg",nbMass,1.05,1.25,7,-0.5,6.5);
1522 fHistNclsTPCPosL[0] = new TH2F("fHistNclsTPCPosL","L mass vs phi pos",nbMass,1.05,1.25,200,0.0,200.0);
1523 fHistNclsTPCNegL[0] = new TH2F("fHistNclsTPCNegL","L mass vs phi neg",nbMass,1.05,1.25,200,0.0,200.0);
1525 fHistChi2PerNclsITSPosL[0] = new TH2F("fHistChi2PerNclsITSPosL","chi2 per cluster ITS L pos",nbMass,1.05,1.25,250,0.0,25.0);
1526 fHistChi2PerNclsITSNegL[0] = new TH2F("fHistChi2PerNclsITSNegL","chi2 per cluster ITS L neg",nbMass,1.05,1.25,250,0.0,25.0);
1528 fHistNCRowsTPCPosL[0] = new TH2F("fHistNCRowsTPCPosL","n crossed rows vs L pos",nbMass,1.05,1.25,200,0.0,200.0);
1529 fHistNCRowsTPCNegL[0] = new TH2F("fHistNCRowsTPCNegL","n crossed rows vs L neg",nbMass,1.05,1.25,200,0.0,200.0);
1531 fHistRatioFoundOverFinableTPCLPos[0] = new TH2F("fHistRatioFoundOverFinableTPCLPos","ncls found over findable L pos sec",nbMass,1.05,1.25,200,0.0,2.0);
1532 fHistRatioFoundOverFinableTPCLNeg[0] = new TH2F("fHistRatioFoundOverFinableTPCLNeg","ncls found over findable L neg sec",nbMass,1.05,1.25,200,0.0,2.0);
1534 else{//pt dependence
1536 fHistNclsITSPosK0 = new TH2F("fHistNclsITSPosK0","fHistNclsITSPos vs pt L pos",500,0.0,50.0,7,-0.5,6.5);
1537 fHistNclsITSNegK0 = new TH2F("fHistNclsITSNegK0","fHistNclsITSNeg vs pt L neg",500,0.0,50.0,7,-0.5,6.5);
1539 fHistNclsTPCPosK0 = new TH2F("fHistNclsTPCPosK0","L mass vs phi pos",500,0.0,50.0,200,0.0,200.0);
1540 fHistNclsTPCNegK0 = new TH2F("fHistNclsTPCNegK0","L mass vs phi neg",500,0.0,50.0,200,0.0,200.0);
1542 fHistChi2PerNclsITSPosK0 = new TH2F("fHistChi2PerNclsITSPosK0","chi2 per cluster ITS L pos",500,0.0,50.0,250,0.0,25.0);
1543 fHistChi2PerNclsITSNegK0 = new TH2F("fHistChi2PerNclsITSNegK0","chi2 per cluster ITS L neg",500,0.0,50.0,250,0.0,25.0);
1545 fHistNCRowsTPCPosK0 = new TH2F("fHistNCRowsTPCPosK0","n crossed rows vs L pos",500,0.0,50.0,200,0.0,200.0);
1546 fHistNCRowsTPCNegK0 = new TH2F("fHistNCRowsTPCNegK0","n crossed rows vs L neg",500,0.0,50.0,200,0.0,200.0);
1548 fHistRatioFoundOverFinableTPCK0Pos = new TH2F("fHistRatioFoundOverFinableTPCK0Pos","ncls found over findable L pos sec",500,0.0,50.0,200,0.0,2.0);
1549 fHistRatioFoundOverFinableTPCK0Neg = new TH2F("fHistRatioFoundOverFinableTPCK0Neg","ncls found over findable L neg sec",500,0.0,50.0,200,0.0,2.0);
1551 fHistNclsITSPosL[0] = new TH2F("fHistNclsITSPosL","fHistNclsITSPos vs pt L pos",500,0.0,50.0,7,-0.5,6.5);
1552 fHistNclsITSNegL[0] = new TH2F("fHistNclsITSNegL","fHistNclsITSNeg vs pt L neg",500,0.0,50.0,7,-0.5,6.5);
1554 fHistNclsTPCPosL[0] = new TH2F("fHistNclsTPCPosL","L mass vs phi pos",500,0.0,50.0,200,0.0,200.0);
1555 fHistNclsTPCNegL[0] = new TH2F("fHistNclsTPCNegL","L mass vs phi neg",500,0.0,50.0,200,0.0,200.0);
1557 fHistChi2PerNclsITSPosL[0] = new TH2F("fHistChi2PerNclsITSPosL","chi2 per cluster ITS L pos",500,0.0,50.0,250,0.0,25.0);
1558 fHistChi2PerNclsITSNegL[0] = new TH2F("fHistChi2PerNclsITSNegL","chi2 per cluster ITS L neg",500,0.0,50.0,250,0.0,25.0);
1560 fHistNCRowsTPCPosL[0] = new TH2F("fHistNCRowsTPCPosL","n crossed rows vs L pos",500,0.0,50.0,200,0.0,200.0);
1561 fHistNCRowsTPCNegL[0] = new TH2F("fHistNCRowsTPCNegL","n crossed rows vs L neg",500,0.0,50.0,200,0.0,200.0);
1563 fHistRatioFoundOverFinableTPCLPos[0] = new TH2F("fHistRatioFoundOverFinableTPCLPos","ncls found over findable L pos sec",500,0.0,50.0,200,0.0,2.0);
1564 fHistRatioFoundOverFinableTPCLNeg[0] = new TH2F("fHistRatioFoundOverFinableTPCLNeg","ncls found over findable L neg sec",500,0.0,50.0,200,0.0,2.0);
1567 // --------------------------------------------- for MC reco secondaries -----------------------------------------//
1568 if(mchist==2){// for MC reco
1570 //-----------------K0s---------------------//
1571 //----------------Lambda-------------------//
1573 fHistPiPDCADaughters[1] = new TH2F("fHistPiPDCADaughtersSec","dca of #Lambda daughters",nbMass,1.05,1.25,250,0.0,2.0);
1574 fHistPiPDCADaughterPosToPrimVtxVSMass[1] = new TH2F("fHistPiPDCADaughterPosToPrimVtxVSMassSec","pos sec DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1575 fHistPiPDCADaughterNegToPrimVtxVSMass[1] = new TH2F("fHistPiPDCADaughterNegToPrimVtxVSMassSec","neg sec DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1576 fHistPiPDCAVSMass[1] = new TH2F("fHistPiPDCAVSMassSec","ppi- dca vs pt",nbMass,1.05,1.25,250,0.0,5.0);
1577 fHistPiPCosPointAng[1] = new TH2F("fHistPiPCosPointAngSec","#Lambda cosine of pointing angle vs mass",nbMass,1.05,1.25,200,0.99,1.00);
1578 // fHistPiPDecayLengthVsMass[1] = new TH2F("fHistPiPDecayLengthVsMassSec","#Lambda decay length vs mass",nbMass,1.05,1.25,200,0.0,100.0);
1579 fHistPiPRadiusXY[1] = new TH2F("fHistPiPRadiusXYSec","pi-p+ phi dist vs mass",nbMass,1.05,1.25,200,0.0,4.0);
1580 // fHistPiPPtDaughters[0] = new TH2F("fHistPiPPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1581 // fHistPiPDCAZPos[1] = new TH2F("fHistPiPDCAZPosSec","dca z of Lambda sec pos daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1582 // fHistPiPDCAZNeg[1] = new TH2F("fHistPiPDCAZNegSec","dca z of Lambda sec neg daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1583 fHistPiPTrackLengthPosVsMass[1] = new TH2F("fHistPiPTrackLengthPosVsMassSec","track length of pos sec Lambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1584 fHistPiPTrackLengthNegVsMass[1] = new TH2F("fHistPiPTrackLengthNegVsMassSec","track length of neg sec Lambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1587 fHistPiPDCADaughters[1] = new TH2F("fHistPiPDCADaughtersSec","dca of #Lambda daughters",500,0.0,50.0,250,0.0,2.0);
1588 fHistPiPDCADaughterPosToPrimVtxVSMass[1] = new TH2F("fHistPiPDCADaughterPosToPrimVtxVSMassSec","pos sec DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1589 fHistPiPDCADaughterNegToPrimVtxVSMass[1] = new TH2F("fHistPiPDCADaughterNegToPrimVtxVSMassSec","neg sec DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1590 fHistPiPDCAVSMass[1] = new TH2F("fHistPiPDCAVSMassSec","ppi- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1591 fHistPiPCosPointAng[1] = new TH2F("fHistPiPCosPointAngSec","#Lambda cosine of pointing angle vs mass",500,0.0,50.0,200,0.99,1.00);
1592 fHistPiPRadiusXY[1] = new TH2F("fHistPiPRadiusXYSec","pi-p+ phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1593 // fHistPiPDCAZPos[1] = new TH2F("fHistPiPDCAZPosSec","dca z of Lambda sec pos daughters",200,0.0,20.0,200,-20.0,20.0);
1594 //fHistPiPDCAZNeg[1] = new TH2F("fHistPiPDCAZNegSec","dca z of Lambda sec neg daughters",200,0.0,20.0,200,-20.0,20.0);
1595 fHistPiPTrackLengthPosVsMass[1] = new TH2F("fHistPiPTrackLengthPosVsMassSec","track length of pos sec Lambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1596 fHistPiPTrackLengthNegVsMass[1] = new TH2F("fHistPiPTrackLengthNegVsMassSec","track length of neg sec Lambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1599 //--------------------ALambda--------------//
1601 fHistPiAPDCADaughters[1] = new TH2F("fHistPiAPDCADaughtersSec","dca of #bar{#Lambda} daughters",nbMass,1.05,1.25,250,0.0,2.0);
1602 fHistPiAPDCADaughterPosToPrimVtxVSMass[1] = new TH2F("fHistPiAPDCADaughterPosToPrimVtxVSMassSec","pos sec DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1603 fHistPiAPDCADaughterNegToPrimVtxVSMass[1] = new TH2F("fHistPiAPDCADaughterNegToPrimVtxVSMassSec","neg sec DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1604 fHistPiAPDCAVSMass[1] = new TH2F("fHistPiAPDCAVSMassSec","pi+p- dca vs pt",nbMass,1.05,1.25,250,0.0,5.0);
1605 fHistPiAPCosPointAng[1] = new TH2F("fHistPiAPCosPointAngSec","#bar{#Lambda} cosine of pointing angle vs mass",nbMass,1.05,1.25,200,0.99,1.00);
1606 // fHistPiAPDecayLengthVsMass[1] = new TH2F("fHistPiAPDecayLengthVsMassSec","#bar{#Lambda} decay length vs mass",nbMass,1.05,1.25,200,0.0,100.0);
1607 fHistPiAPRadiusXY[1] = new TH2F("fHistPiAPRadiusXYSec","pi+p- phi dist vs mass",nbMass,1.05,1.25,200,0.0,4.0);
1608 // fHistPiAPPtDaughters[0] = new TH2F("fHistPiAPPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1609 // fHistPiAPDCAZPos[1] = new TH2F("fHistPiAPDCAZPosSec","dca z of ALambda sec pos daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1610 //fHistPiAPDCAZNeg[1] = new TH2F("fHistPiAPDCAZNegSec","dca z of ALambda sec neg daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1611 fHistPiAPTrackLengthPosVsMass[1] = new TH2F("fHistPiAPTrackLengthPosVsMassSec","track length of pos sec ALambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1612 fHistPiAPTrackLengthNegVsMass[1] = new TH2F("fHistPiAPTrackLengthNegVsMassSec","track length of neg sec ALambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1615 fHistPiAPDCADaughters[1] = new TH2F("fHistPiAPDCADaughtersSec","dca of #bar{#Lambda} daughters",500,0.0,50.0,250,0.0,2.0);
1616 fHistPiAPDCADaughterPosToPrimVtxVSMass[1] = new TH2F("fHistPiAPDCADaughterPosToPrimVtxVSMassSec","pos sec DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1617 fHistPiAPDCADaughterNegToPrimVtxVSMass[1] = new TH2F("fHistPiAPDCADaughterNegToPrimVtxVSMassSec","neg sec DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1618 fHistPiAPDCAVSMass[1] = new TH2F("fHistPiAPDCAVSMassSec","pi+p- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1619 fHistPiAPCosPointAng[1] = new TH2F("fHistPiAPCosPointAngSec","#bar{#Lambda} cosine of pointing angle vs mass",500,0.0,50.0,200,0.99,1.00);
1620 fHistPiAPRadiusXY[1] = new TH2F("fHistPiAPRadiusXYSec","pi+p- phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1621 // fHistPiAPDCAZPos[1] = new TH2F("fHistPiAPDCAZPosSec","dca z of ALambda sec pos daughters",200,0.0,20.0,200,-20.0,20.0);
1622 //fHistPiAPDCAZNeg[1] = new TH2F("fHistPiAPDCAZNegSec","dca z of ALambda sec neg daughters",200,0.0,20.0,200,-20.0,20.0);
1623 fHistPiAPTrackLengthPosVsMass[1] = new TH2F("fHistPiAPTrackLengthPosVsMassSec","track length of pos sec ALambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1624 fHistPiAPTrackLengthNegVsMass[1] = new TH2F("fHistPiAPTrackLengthNegVsMassSec","track length of neg sec ALambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1627 //-------------dedx------------//
1628 fHistDedxSecProt[1] = new TH2F("fHistDedxSecProtSec","proton", 250,0.0,5.0, 100, 0, 400);
1629 fHistDedxSecPiPlus[1] = new TH2F("fHistDedxSecPiPlusSec","pi plus", 250,0.0,5.0, 100, 0, 400);
1630 fHistDedxSecAProt[1] = new TH2F("fHistDedxSecAProtSec","antiproton", 250,0.0,5.0, 100, 0, 400);
1631 fHistDedxSecPiMinus[1] = new TH2F("fHistDedxSecPiMinusSec","pi minus", 250,0.0,5.0, 100, 0, 400);
1632 fHistDedxProt[1] = new TH2F("fHistDedxProtSec","proton", 250,0.0,5.0, 100, 0, 400);
1633 fHistDedxPiPlus[1] = new TH2F("fHistDedxPiPlusSec","pi plus", 250,0.0,5.0, 100, 0, 400);
1634 fHistDedxAProt[1] = new TH2F("fHistDedxAProtSec","antiproton", 250,0.0,5.0, 100, 0, 400);
1635 fHistDedxPiMinus[1] = new TH2F("fHistDedxPiMinusSec","pi minus", 250,0.0,5.0, 100, 0, 400);
1637 // ------------------------------------------ clusters --------------------------------------------------//
1639 fHistNclsITSPosL[1] = new TH2F("fHistNclsITSPosLSec","fHistNclsITSPos vs pt L pos",nbMass,1.05,1.25,7,-0.5,6.5);
1640 fHistNclsITSNegL[1] = new TH2F("fHistNclsITSNegLSec","fHistNclsITSNeg vs pt L neg",nbMass,1.05,1.25,7,-0.5,6.5);
1642 fHistNclsTPCPosL[1] = new TH2F("fHistNclsTPCPosLSec","L mass vs phi pos",nbMass,1.05,1.25,200,0.0,200.0);
1643 fHistNclsTPCNegL[1] = new TH2F("fHistNclsTPCNegLSec","L mass vs phi neg",nbMass,1.05,1.25,200,0.0,200.0);
1645 fHistChi2PerNclsITSPosL[1] = new TH2F("fHistChi2PerNclsITSPosLSec","chi2 per cluster ITS L pos",nbMass,1.05,1.25,250,0.0,25.0);
1646 fHistChi2PerNclsITSNegL[1] = new TH2F("fHistChi2PerNclsITSNegLSec","chi2 per cluster ITS L neg",nbMass,1.05,1.25,250,0.0,25.0);
1648 fHistNCRowsTPCPosL[1] = new TH2F("fHistNCRowsTPCPosLSec","n crossed rows vs L pos",nbMass,1.05,1.25,200,0.0,200.0);
1649 fHistNCRowsTPCNegL[1] = new TH2F("fHistNCRowsTPCNegLSec","n crossed rows vs L neg",nbMass,1.05,1.25,200,0.0,200.0);
1651 fHistRatioFoundOverFinableTPCLPos[1] = new TH2F("fHistRatioFoundOverFinableTPCLPosSec","ncls found over findable L pos sec",nbMass,1.05,1.25,200,0.0,2.0);
1652 fHistRatioFoundOverFinableTPCLNeg[1] = new TH2F("fHistRatioFoundOverFinableTPCLNegSec","ncls found over findable L neg sec",nbMass,1.05,1.25,200,0.0,2.0);
1655 fHistNclsITSPosL[1] = new TH2F("fHistNclsITSPosLSec","fHistNclsITSPos vs pt L pos",500,0.0,50.0,7,-0.5,6.5);
1656 fHistNclsITSNegL[1] = new TH2F("fHistNclsITSNegLSec","fHistNclsITSNeg vs pt L neg",500,0.0,50.0,7,-0.5,6.5);
1658 fHistNclsTPCPosL[1] = new TH2F("fHistNclsTPCPosLSec","L mass vs phi pos",500,0.0,50.0,200,0.0,200.0);
1659 fHistNclsTPCNegL[1] = new TH2F("fHistNclsTPCNegLSec","L mass vs phi neg",500,0.0,50.0,200,0.0,200.0);
1661 fHistChi2PerNclsITSPosL[1] = new TH2F("fHistChi2PerNclsITSPosLSec","chi2 per cluster ITS L pos",500,0.0,50.0,250,0.0,25.0);
1662 fHistChi2PerNclsITSNegL[1] = new TH2F("fHistChi2PerNclsITSNegLSec","chi2 per cluster ITS L neg",500,0.0,50.0,250,0.0,25.0);
1664 fHistNCRowsTPCPosL[1] = new TH2F("fHistNCRowsTPCPosLSec","n crossed rows vs L pos",500,0.0,50.0,200,0.0,200.0);
1665 fHistNCRowsTPCNegL[1] = new TH2F("fHistNCRowsTPCNegLSec","n crossed rows vs L neg",500,0.0,50.0,200,0.0,200.0);
1667 fHistRatioFoundOverFinableTPCLPos[1] = new TH2F("fHistRatioFoundOverFinableTPCLPosSec","ncls found over findable L pos sec",500,0.0,50.0,200,0.0,2.0);
1668 fHistRatioFoundOverFinableTPCLNeg[1] = new TH2F("fHistRatioFoundOverFinableTPCLNegSec","ncls found over findable L neg sec",500,0.0,50.0,200,0.0,2.0);
1673 //------ ITS TPC clusters --------------//
1674 fOutputContainer->Add(fHistNclsITS[0]) ;
1675 fOutputContainer->Add(fHistNclsTPC[0]);
1676 fOutputContainer->Add(fHistNclsITS[1]);
1677 fOutputContainer->Add(fHistNclsTPC[1]);
1679 //-----------K0s ------------------//
1680 // fOutputContainer->Add(fHistPiPiDCAZNeg);
1681 //fOutputContainer->Add(fHistPiPiDCAZPos);
1682 fOutputContainer->Add(fHistPiPiDCADaughters);
1683 fOutputContainer->Add(fHistPiPiDCADaughterPosToPrimVtxVSMass);
1684 fOutputContainer->Add(fHistPiPiDCAVSMass);
1685 fOutputContainer->Add(fHistPiPiCosPointAng);
1686 fOutputContainer->Add(fHistPiPiTrackLengthPosVsMass);
1687 fOutputContainer->Add(fHistPiPiTrackLengthNegVsMass);
1688 fOutputContainer->Add(fHistPiPiRadiusXY);
1689 // fOutputContainer->Add( fHistPiPiPtDaughters);
1690 fOutputContainer->Add(fHistNclsITSPosK0);
1691 fOutputContainer->Add(fHistNclsITSNegK0);
1692 fOutputContainer->Add(fHistNclsTPCPosK0);
1693 fOutputContainer->Add(fHistNclsTPCNegK0);
1694 fOutputContainer->Add(fHistChi2PerNclsITSPosK0);
1695 fOutputContainer->Add(fHistChi2PerNclsITSNegK0);
1696 fOutputContainer->Add(fHistNCRowsTPCPosK0);
1697 fOutputContainer->Add(fHistNCRowsTPCNegK0);
1698 fOutputContainer->Add(fHistRatioFoundOverFinableTPCK0Pos);
1699 fOutputContainer->Add(fHistRatioFoundOverFinableTPCK0Neg);
1701 //----------- Lambda Antilambda -------------//
1702 for(Int_t j=0;j<mchist;j++){
1703 fOutputContainer->Add(fHistPiPDCADaughters[j]);
1704 fOutputContainer->Add(fHistPiAPDCADaughters[j]);
1705 fOutputContainer->Add( fHistPiPDCADaughterPosToPrimVtxVSMass[j]);
1706 fOutputContainer->Add( fHistPiPDCADaughterNegToPrimVtxVSMass[j]);
1707 fOutputContainer->Add( fHistPiAPDCADaughterPosToPrimVtxVSMass[j]);
1708 fOutputContainer->Add( fHistPiAPDCADaughterNegToPrimVtxVSMass[j]);
1709 //fOutputContainer->Add( fHistPiPPtDaughters[j]);
1710 //fOutputContainer->Add( fHistPiAPPtDaughters[j]);
1711 fOutputContainer->Add(fHistPiPDCAVSMass[j]);
1712 fOutputContainer->Add(fHistPiAPDCAVSMass[j]);
1713 fOutputContainer->Add(fHistPiPCosPointAng[j]);
1714 fOutputContainer->Add(fHistPiAPCosPointAng[j]);
1715 //fOutputContainer->Add(fHistPiPDCAZNeg[j]);
1716 //fOutputContainer->Add(fHistPiPDCAZPos[j]);
1717 //fOutputContainer->Add(fHistPiAPDCAZNeg[j]);
1718 //fOutputContainer->Add(fHistPiAPDCAZPos[j]);
1719 fOutputContainer->Add(fHistPiPTrackLengthPosVsMass[j]);
1720 fOutputContainer->Add(fHistPiPTrackLengthNegVsMass[j]);
1721 fOutputContainer->Add(fHistPiAPTrackLengthPosVsMass[j]);
1722 fOutputContainer->Add(fHistPiAPTrackLengthNegVsMass[j]);
1723 fOutputContainer->Add(fHistPiPRadiusXY[j]);
1724 fOutputContainer->Add(fHistPiAPRadiusXY[j]);
1726 //--------- dEdx --------------------------//
1727 fOutputContainer->Add(fHistDedxSecProt[j]);
1728 fOutputContainer->Add(fHistDedxSecAProt[j]);
1729 fOutputContainer->Add(fHistDedxSecPiPlus[j]);
1730 fOutputContainer->Add(fHistDedxSecPiMinus[j]);
1731 fOutputContainer->Add(fHistDedxProt[j]);
1732 fOutputContainer->Add(fHistDedxAProt[j]);
1733 fOutputContainer->Add(fHistDedxPiPlus[j]);
1734 fOutputContainer->Add(fHistDedxPiMinus[j]);
1736 //--------- TPC Lambda-----------------//
1737 fOutputContainer->Add(fHistNclsITSPosL[j]);
1738 fOutputContainer->Add(fHistNclsITSNegL[j]);
1739 fOutputContainer->Add(fHistNclsTPCPosL[j]);
1740 fOutputContainer->Add(fHistNclsTPCNegL[j]);
1741 fOutputContainer->Add(fHistChi2PerNclsITSPosL[j]);
1742 fOutputContainer->Add(fHistChi2PerNclsITSNegL[j]);
1743 fOutputContainer->Add(fHistNCRowsTPCPosL[j]);
1744 fOutputContainer->Add(fHistNCRowsTPCNegL[j]);
1745 fOutputContainer->Add(fHistRatioFoundOverFinableTPCLPos[j]);
1746 fOutputContainer->Add(fHistRatioFoundOverFinableTPCLNeg[j]);
1750 //----------------------------- MC reco or MC truth only --------------------------//
1751 if((fMCMode && fMCTruthMode) || fMCTruthMode){//mc reco truth only
1753 fHistPrimVtxZESDVSNContributorsMC = new TH2F("fHistPrimVtxZESDVSNContributorsMC","prim vtx pos z ESD vs no. of contributers MC",250,-50,50,500,0.0,500.0);
1754 fOutputContainer->Add(fHistPrimVtxZESDVSNContributorsMC);
1755 fHistPrimVtxZESDTPCVSNContributorsMC = new TH2F("fHistPrimVtxZESDTPCVSNContributorsMC","prim vtx pos z TPC vs no. of contributers MC",250,-50,50,500,0.0,500.0);
1756 fOutputContainer->Add(fHistPrimVtxZESDTPCVSNContributorsMC);
1757 fHistPrimVtxZESDSPDVSNContributorsMC = new TH2F("fHistPrimVtxZESDSPDVSNContributorsMC","prim vtx pos z SPD vs no. of contributers MC",250,-50,50,500,0.0,500.0);
1758 fOutputContainer->Add(fHistPrimVtxZESDSPDVSNContributorsMC);
1760 fHistMCVertexZ= new TH1F("fHistMCVertexZ"," z vertex distr in cm MC",500,-50,50);
1761 fOutputContainer->Add(fHistMCVertexZ);
1762 fHistPiPCosPointAngXiVsPt= new TH2F("fHistPiPCosPointAngXiVsPt","pi-p cos of pointing angle vs pt from xi",500,0.0,50.0,250,0.99,1.00);
1763 fOutputContainer->Add(fHistPiPCosPointAngXiVsPt);
1764 fHistPiAPCosPointAngXiVsPt= new TH2F("fHistPiAPCosPointAngXiVsPt","pi+p- cos of pointing angle vs pt from xi",500,0.0,50.0,250,0.99,1.00);
1765 fOutputContainer->Add(fHistPiAPCosPointAngXiVsPt);
1766 fHistPiPiEtaDMC[0] = new TH2F("fHistPiPiEtaDMCRaw","K0s daughters etaMC raw",300,-6,6,100,0,20);//
1767 fOutputContainer->Add(fHistPiPiEtaDMC[0]);
1768 fHistPiPiEtaDMC[1] = new TH2F("fHistPiPiEtaDMC","K0s daughters etaMC after rap V0 cut",300,-6,6,100,0,20);
1769 fOutputContainer->Add(fHistPiPiEtaDMC[1]);
1770 fHistPiPEtaDMC[0] = new TH2F("fHistPiPEtaDMCRaw","#Lambda daughters etaMC raw",300,-6,6,100,0,20);
1771 fOutputContainer->Add(fHistPiPEtaDMC[0]);
1772 fHistPiPEtaDMC[1] = new TH2F("fHistPiPEtaDMC","#Lambda daughters etaMC after rap V0 cut",300,-6,6,100,0,20);
1773 fOutputContainer->Add(fHistPiPEtaDMC[1]);
1775 //-------------K0s---------------//
1777 fHistPiPiDecayLengthResolution = new TH2F("fHistPiPiDecayLengthResolution","K0s decay length resolution MC",220,0.0,110.0,220,0.0,110);
1779 //-------------Lambda------------//
1780 fHistPiPDecayLengthResolution[0] = new TH2F("fHistPiPDecayLengthResolution","Lambda decay length resolution MC",220,0.0,110.0,220,0.0,110);
1781 fHistPiPDecayLengthResolution[1] = new TH2F("fHistPiPDecayLengthResolutionSec","Lambda sec decay length resolution MC",220,0.0,110.0,220,0.0,110);
1783 fHistPiPMassVSPtSecSigma[0] = new TH2F("fHistPiPMassVSPtSecSigmaMC"," pi-p+ InvMass distribution secondaries from sigma MC",nbMass,1.05,1.25,200,0.,20);
1784 fHistPiPMassVSPtSecSigma[1] = new TH2F("fHistPiPMassVSPtSecSigma"," pi-p+ InvMass distribution secondaries from Sigma reco",nbMass,1.05,1.25,200,0.,20);
1786 fHistPiPMassVSPtSecXi[0] = new TH2F("fHistPiPMassVSPtSecXiMC"," pi-p+ InvMass distribution secondaries from xi MC",nbMass,1.05,1.25,200,0.,20);
1787 fHistPiPMassVSPtSecXi[1] = new TH2F("fHistPiPMassVSPtSecXi"," pi-p+ InvMass distribution secondaries from xi reco",nbMass,1.05,1.25,200,0.,20);
1789 fHistPiPMassVSPtSecXiMCTruth = new TH2F("fHistPiPMassVSPtSecXiMCTruth","Lambda mass reco vs pt sec Lambda from xi MC truth pt",nbMass,1.05,1.25,500,0.0,50.0);
1791 fHistPiPMassVSYSecXi[0] = new TH2F("fHistPiPMassVSYSecXiMC"," pi-p+ InvMass distribution secondaries from xi MC",nbMass,1.05,1.25,100,-2.,2);
1792 fHistPiPMassVSYSecXi[1] = new TH2F("fHistPiPMassVSYSecXi"," pi-p+ InvMass distribution secondaries from xi reco",nbMass,1.05,1.25,100,-2.,2);
1794 fHistPiPXi0PtVSLambdaPt[0]= new TH2F("fHistPiPXi0PtVSLambdaPtMC"," pt xi 0 vs pt lambda MC truth",500,0.0,50.0,500,0.0,50.0);
1795 fHistPiPXi0PtVSLambdaPt[1]= new TH2F("fHistPiPXi0PtVSLambdaPt"," pt xi 0 truth vs pt lambda reco",500,0.0,50.0,500,0.0,50.0);
1797 fHistPiPXiMinusPtVSLambdaPt[0]= new TH2F("fHistPiPXiMinusPtVSLambdaPtMC","pt xi- vs pt lambda MC truth",500,0.0,50.0,500,0.0,50.0);
1798 fHistPiPXiMinusPtVSLambdaPt[1]= new TH2F("fHistPiPXiMinusPtVSLambdaPt","pt xi- truth vs pt lambda reco",500,0.0,50.0,500,0.0,50.0);
1800 fHistPiPOmegaPtVSLambdaPt[0] = new TH2F("fHistPiPOmegaPtVSLambdaPtMC","pt omega vs pt lambda MC truth",500,0.0,50.0,500,0.0,50.0);
1801 fHistPiPOmegaPtVSLambdaPt[1] = new TH2F("fHistPiPOmegaPtVSLambdaPt","pt omega vs pt lambda MC reco",500,0.0,50.0,500,0.0,50.0);
1803 fHistPiPMassVSPtSecOmega[0] = new TH2F("fHistPiPMassVSPtSecOmegaMC","Lambda mass vs pt omega MCtruth",nbMass,1.05,1.25,500,0.0,50.0);
1804 fHistPiPMassVSPtSecOmega[1] = new TH2F("fHistPiPMassVSPtSecOmega","Lambda mass vs pt omega MCreco",nbMass,1.05,1.25,500,0.0,50.0);
1805 fHistPiPMassVSPtSecOmegaMCTruth= new TH2F("fHistPiPMassVSPtSecOmegaMCTruth","Lambda mass vs pt sec Lambda from Omega MC truth pt",nbMass,1.05,1.25,500,0.0,50.0);
1807 //--------------ALambda-----------------//
1808 fHistPiAPDecayLengthResolution[0] = new TH2F("fHistPiAPDecayLengthResolution","ALambda decay length resolution MC",220,0.0,110.0,220,0.0,110);
1809 fHistPiAPDecayLengthResolution[1] = new TH2F("fHistPiAPDecayLengthResolutionSec","ALambda sec decay length resolution MC",220,0.0,110.0,220,0.0,110);
1811 fHistPiAPMassVSPtSecSigma[0] = new TH2F("fHistPiAPMassVSPtSecSigmaMC"," pi+p- InvMass distribution secondaries from Sigma MC",nbMass,1.05,1.25,200,0.,20);
1812 fHistPiAPMassVSPtSecSigma[1] = new TH2F("fHistPiAPMassVSPtSecSigma"," pi+p- InvMass distribution secondaries from Sigma reco",nbMass,1.05,1.25,200,0.,20);
1814 fHistPiAPMassVSPtSecXi[0] = new TH2F("fHistPiAPMassVSPtSecXiMC"," pi+p- InvMass distribution secondaries from xi MC",nbMass,1.05,1.25,200,0.,20);
1815 fHistPiAPMassVSPtSecXi[1] = new TH2F("fHistPiAPMassVSPtSecXi"," pi+p- InvMass distribution secondaries from Xi reco",nbMass,1.05,1.25,200,0.,20);
1817 fHistPiAPMassVSPtSecXiMCTruth = new TH2F("fHistPiAPMassVSPtSecXiMCTruth","ALambda mass reco vs pt sec Lambda from xi MC truth pt",nbMass,1.05,1.25,500,0.0,50.0);
1819 fHistPiAPMassVSYSecXi[0] = new TH2F("fHistPiAPMassVSYSecXiMC"," pi+p- InvMass distribution secondaries from xi MC",nbMass,1.05,1.25,100,-2,2);
1820 fHistPiAPMassVSYSecXi[1] = new TH2F("fHistPiAPMassVSYSecXi"," pi+p- InvMass distribution secondaries from xi reco",nbMass,1.05,1.25,100,-2.,2);
1823 fHistPiAPXi0PtVSLambdaPt[0]= new TH2F("fHistPiAPXi0PtVSLambdaPtMC"," pt xi 0 vs pt Alambda MC truth",500,0.0,50.0,500,0.0,50.0);
1824 fHistPiAPXi0PtVSLambdaPt[1]= new TH2F("fHistPiAPXi0PtVSLambdaPt"," pt xi 0 truth vs pt Alambda reco",500,0.0,50.0,500,0.0,50.0);
1826 fHistPiAPXiMinusPtVSLambdaPt[0]= new TH2F("fHistPiAPXiMinusPtVSLambdaPtMC","pt xi- vs pt Alambda MC truth",500,0.0,50.0,500,0.0,50.0);
1827 fHistPiAPXiMinusPtVSLambdaPt[1]= new TH2F("fHistPiAPXiMinusPtVSLambdaPt","pt xi- truth vs pt Alambda reco",500,0.0,50.0,500,0.0,50.0);
1829 fHistPiAPOmegaPtVSLambdaPt[0] = new TH2F("fHistPiAPOmegaPtVSLambdaPtMC","pt omega vs pt alambda MC truth",500,0.0,50.0,500,0.0,50.0);
1830 fHistPiAPOmegaPtVSLambdaPt[1] = new TH2F("fHistPiAPOmegaPtVSLambdaPt","pt omega vs pt alambda MC reco",500,0.0,50.0,500,0.0,50.0);
1832 fHistPiAPMassVSPtSecOmega[0] = new TH2F("fHistPiAPMassVSPtSecOmegaMC","ALambda mass vs pt omega MCtruth",nbMass,1.05,1.25,500,0.0,50.0);
1833 fHistPiAPMassVSPtSecOmega[1] = new TH2F("fHistPiAPMassVSPtSecOmega","ALambda mass vs pt omega MCreco",nbMass,1.05,1.25,500,0.0,50.0);
1834 fHistPiAPMassVSPtSecOmegaMCTruth= new TH2F("fHistPiAPMassVSPtSecOmegaMCTruth","ALambda mass vs pt sec Lambda from Omega MC truth pt",nbMass,1.05,1.25,500,0.0,50.0);
1836 fOutputContainer->Add(fHistPiPMassVSPtSecXiMCTruth);
1837 fOutputContainer->Add(fHistPiPMassVSPtSecOmegaMCTruth);
1839 fOutputContainer->Add(fHistPiAPMassVSPtSecXiMCTruth);
1840 fOutputContainer->Add(fHistPiAPMassVSPtSecOmegaMCTruth);
1842 fOutputContainer->Add(fHistPiPiDecayLengthResolution);
1845 for(Int_t j=0;j<2;j++){
1847 fOutputContainer->Add(fHistPiPDecayLengthResolution[j]);
1848 fOutputContainer->Add(fHistPiAPDecayLengthResolution[j]);
1849 fOutputContainer->Add(fHistPiPMassVSPtSecXi[j]);
1850 fOutputContainer->Add(fHistPiAPMassVSPtSecXi[j]);
1851 fOutputContainer->Add(fHistPiPMassVSYSecXi[j]);
1852 fOutputContainer->Add(fHistPiAPMassVSYSecXi[j]);
1853 fOutputContainer->Add(fHistPiPXi0PtVSLambdaPt[j]);
1854 fOutputContainer->Add(fHistPiAPXi0PtVSLambdaPt[j]);
1855 fOutputContainer->Add(fHistPiPXiMinusPtVSLambdaPt[j]);
1856 fOutputContainer->Add(fHistPiAPXiMinusPtVSLambdaPt[j]);
1857 fOutputContainer->Add(fHistPiPMassVSPtSecSigma[j]);
1858 fOutputContainer->Add(fHistPiAPMassVSPtSecSigma[j]);
1859 fOutputContainer->Add(fHistPiPOmegaPtVSLambdaPt[j]);
1860 fOutputContainer->Add(fHistPiAPOmegaPtVSLambdaPt[j]);
1861 fOutputContainer->Add(fHistPiPMassVSPtSecOmega[j]);
1862 fOutputContainer->Add(fHistPiAPMassVSPtSecOmega[j]);
1865 if(fMCMode ||fMCTruthMode ){
1866 fHistPiPiPDGCode = new TH1F("fHistPiPiPDGCode","PDG code of K0s mothers",3503,-2.5,3500.5);
1867 fOutputContainer->Add(fHistPiPiPDGCode);
1868 fHistPiPPDGCode = new TH1F("fHistPiPPDGCode","PDG code of #Lambda mothers",3503,-2.5,3500.5);
1869 fOutputContainer->Add(fHistPiPPDGCode);
1870 fHistPiAPPDGCode = new TH1F("fHistPiAPPDGCode","PDG code of #bar{#Lambda} mothers",3503,-2.5,3500.5);
1871 fOutputContainer->Add(fHistPiAPPDGCode);
1874 if(fMCMode && !fMCTruthMode){
1876 fHistPiPiGA= new TH2F("fHistPiPiGA","photons BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1877 fOutputContainer->Add(fHistPiPiGA);
1878 fHistPiPiKch= new TH2F("fHistPiPiKch","ch kaons BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1879 fOutputContainer->Add(fHistPiPiKch);
1880 fHistPiPiPhi= new TH2F("fHistPiPiPhi","phi BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1881 fOutputContainer->Add(fHistPiPiPhi);
1882 fHistPiPiL= new TH2F("fHistPiPiL","Lambda BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1883 fOutputContainer->Add(fHistPiPiL);
1884 fHistPiPiPi0= new TH2F("fHistPiPiPi0","pi0 BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1885 fOutputContainer->Add(fHistPiPiPi0);
1886 fHistPiPiPich= new TH2F("fHistPiPiPich","ch pi BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1887 fOutputContainer->Add(fHistPiPiPich);
1888 fHistPiPiRoh= new TH2F("fHistPiPiRoh","roh BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1889 fOutputContainer->Add(fHistPiPiRoh);
1890 fHistPiPiOmega= new TH2F("fHistPiPiOmega","omega BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1891 fOutputContainer->Add(fHistPiPiOmega);
1892 fHistPiPiKStar= new TH2F("fHistPiPiKStar","Kstar BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1893 fOutputContainer->Add(fHistPiPiKStar);
1894 fHistPiPiNoMother= new TH2F("fHistPiPiNoMother","combi BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1895 fOutputContainer->Add(fHistPiPiNoMother);
1897 fHistPiPiK0s= new TH2F("fHistPiPiK0s","K0s BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1898 fOutputContainer->Add(fHistPiPiK0s);
1899 fHistPiPiK0L= new TH2F("fHistPiPiK0L","K0L BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1900 fOutputContainer->Add(fHistPiPiK0L);
1901 fHistPiPiN= new TH2F("fHistPiPiN","n BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1902 fOutputContainer->Add(fHistPiPiN);
1903 fHistPiPiSigma= new TH2F("fHistPiPiSigma","sigma BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1904 fOutputContainer->Add(fHistPiPiSigma);
1905 fHistPiPiXi= new TH2F("fHistPiPiXi","xi BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1906 fOutputContainer->Add(fHistPiPiXi);
1907 fHistPiPiDelta= new TH2F("fHistPiPiDelta","delta BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1908 fOutputContainer->Add(fHistPiPiDelta);
1909 fHistPiPiB= new TH2F("fHistPiPiB","b BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1910 fOutputContainer->Add(fHistPiPiB);
1911 fHistPiPiD= new TH2F("fHistPiPiD","d BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1912 fOutputContainer->Add(fHistPiPiD);
1913 fHistPiPiEta= new TH2F("fHistPiPiEta","eta BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1914 fOutputContainer->Add(fHistPiPiEta);
1919 fHistPiPGA = new TH2F("fHistPiPGA","photons in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1920 fOutputContainer->Add(fHistPiPGA);
1921 fHistPiPKch = new TH2F("fHistPiPKch","ch kaons in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1922 fOutputContainer->Add(fHistPiPKch);
1923 fHistPiPK0s = new TH2F("fHistPiPK0s","K0s in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1924 fOutputContainer->Add(fHistPiPK0s);
1925 fHistPiPPi0 = new TH2F("fHistPiPPi0","pi0 in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1926 fOutputContainer->Add(fHistPiPPi0);
1927 fHistPiPPich = new TH2F("fHistPiPPich","ch pions in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1928 fOutputContainer->Add(fHistPiPPich);
1929 fHistPiPKStar = new TH2F("fHistPiPKStar","Kstar in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1930 fOutputContainer->Add(fHistPiPKStar);
1931 fHistPiPN = new TH2F("fHistPiPN","neutron in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1932 fOutputContainer->Add(fHistPiPN);
1933 fHistPiPNoMother= new TH2F("fHistPiPNoMother","combi BG vs pt Lambda ",nbMass,1.05,1.25,200,0,20.0);
1934 fOutputContainer->Add(fHistPiPNoMother);
1935 fHistPiPL= new TH2F("fHistPiPL","Lambda BG vs pt K0 ",nbMass,1.05,1.25,200,0,20.0);
1936 fOutputContainer->Add(fHistPiPL);
1942 fHistUserPtShift = new TH1F("fHistUserPtShift","user defined shift in 1/pt",100,-0.5,1.5);
1947 //________________________________________________________________________
1948 void AliAnalysisTaskV0ForRAA::UserExec(Option_t *) {
1951 //-- esd handler --//
1952 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*>
1953 (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
1955 printf("ERROR: Could not get ESDInputHandler");
1958 fESD = esdH->GetEvent();
1960 printf("ERROR: fESD not available \n");
1964 //-- mc handler --//
1965 if(fMCMode || fMCTruthMode){
1966 AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*>
1967 (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1969 printf("ERROR: Could not get MCInputHandler");
1972 fMCev = mcH->MCEvent();
1974 printf("ERROR: fMCev not available \n");
1979 //-- AliPIDResponse --//
1980 fESDpid = esdH->GetPIDResponse();
1982 //-- Count events before cuts --//
1983 fHistNEvents->Fill(0);
1985 //-- Check object existence --//
1986 const AliESDVertex * vtxESD = fESD->GetPrimaryVertexTracks();
1987 const AliESDVertex * vtxESDTPC = fESD->GetPrimaryVertexTPC();
1988 const AliESDVertex * vtxESDSPD = fESD->GetPrimaryVertexSPD();
1989 const AliMultiplicity * multESD = fESD->GetMultiplicity();
1992 AliError("No Tracks Vertex");
1997 AliError("No TPC Vertex");
2002 AliError("No SPD Vertex");
2007 AliError("No Multiplicity");
2012 // ----------- MC vertex -----------------------------------//
2017 Double_t vVertexPrim[3];
2018 fMCev->GetPrimaryVertex()->GetXYZ(vVertexPrim);
2019 fHistMCVertexZ->Fill(vVertexPrim[2]);
2021 if(fMCMode && fAnapp){
2022 if (vtxESD->GetStatus()){
2023 nContr=vtxESD->GetNContributors();
2024 fHistPrimVtxZESDVSNContributorsMC->Fill(vVertexPrim[2],nContr);
2025 fHistPrimVtxZESDTPCVSNContributorsMC->Fill(vVertexPrim[2],nContr);
2028 if(vtxESDSPD->GetStatus()){
2029 nContr=vtxESDSPD->GetNContributors();
2030 fHistPrimVtxZESDTPCVSNContributorsMC->Fill(vVertexPrim[2],nContr);
2031 fHistPrimVtxZESDSPDVSNContributorsMC->Fill(vVertexPrim[2],nContr);
2034 fHistPrimVtxZESDVSNContributorsMC->Fill(vVertexPrim[2],nContr);//add for correction ESD and ESDPSD!!!!
2035 fHistPrimVtxZESDTPCVSNContributorsMC->Fill(vVertexPrim[2],nContr);
2043 //-- Check fo centrality --//
2044 Bool_t process = kTRUE;
2046 if(fUseCentrality) {
2047 centBin = CalculateCentralityBin();
2048 if(!fUseCentralityRange){
2049 if(centBin!= fUseCentralityBin) process=kFALSE;
2051 else if(centBin < fUseCentralityBin || centBin > fUseCentralityBin+fUseCentralityRange)
2055 AliESDVZERO* esdV0 = fESD->GetVZEROData();
2056 Float_t multV0 = esdV0->GetMTotV0A() + esdV0->GetMTotV0C();
2058 if(fAnapp){// pp Analysis
2060 // SDD test for 2.76TeV pp
2061 // select events with SDD
2062 // TString trCl = fESD->GetFiredTriggerClasses();
2063 //if(!(trCl.Contains("ALLNOTRD")) && fSelSDD) return;
2064 UInt_t maskSel = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
2065 if(maskSel& AliVEvent::kFastOnly && fSelSDD) return;
2066 if(!(maskSel& AliVEvent::kFastOnly) && fSelNoSDD) return;
2069 //-- Monitor event cuts --//
2070 fHistNEvents->Fill(1);
2072 //---ask for pileup from SPD---//
2073 Bool_t pileUpSPD = fESD->IsPileupFromSPD();
2074 if(fRejectPileUpSPD && pileUpSPD) return;
2076 Int_t ntracks = fESD->GetNumberOfTracks();
2077 for(Int_t i=0;i<ntracks;i++){//check sdd event selection
2078 AliESDtrack *tr= fESD->GetTrack(i);
2080 Bool_t sdd0 = tr->HasPointOnITSLayer(0);
2081 Bool_t sdd1 = tr->HasPointOnITSLayer(1);
2082 Bool_t sdd2 = tr->HasPointOnITSLayer(2);
2083 Bool_t sdd3 = tr->HasPointOnITSLayer(3);
2084 Bool_t sdd4 = tr->HasPointOnITSLayer(4);
2085 Bool_t sdd5 = tr->HasPointOnITSLayer(5);
2087 fHistITSLayerHits->Fill(Int_t(sdd0)*(-1),ntracks);
2088 fHistITSLayerHits->Fill(Int_t(sdd1)*1,ntracks);
2089 fHistITSLayerHits->Fill(Int_t(sdd2)*2,ntracks);
2090 fHistITSLayerHits->Fill(Int_t(sdd3)*3,ntracks);
2091 fHistITSLayerHits->Fill(Int_t(sdd4)*4,ntracks);
2092 fHistITSLayerHits->Fill(Int_t(sdd5)*5,ntracks);
2095 //--vertex selection--//
2096 if (vtxESD->GetStatus()){
2097 fHistNEvents->Fill(2);
2098 fHistESDVertexZ->Fill(vtxESD->GetZv());
2099 if(fabs(vtxESD->GetZv()) < fVertexZCut){
2100 fHistMuliplicityRaw->Fill(multV0);
2101 fHistNEvents->Fill(3);
2102 fHistNPrim->Fill(nContr);
2106 fHistMuliplicity->Fill(multV0);
2108 nContr = vtxESD->GetNContributors();
2110 fHistPrimVtxZESDVSNContributors->Fill(vtxESD->GetZv(),nContr);
2111 fHistPrimVtxZESDTPCVSNContributors->Fill(vtxESDTPC->GetZv(),nContr);
2112 //fHistPrimVtxZESDSPDVSNContributorsTPC->Fill(vtxESDSPD->GetZv(),nContr);
2114 fHistPrimVtxZESD->Fill(vtxESD->GetZv());
2115 fHistPrimVtxZESDTPC->Fill(vtxESDTPC->GetZv());
2116 // fHistPrimVtxZESDSPD->Fill(vtxESDSPD->GetZv());
2117 // -- count events after processing
2118 fHistNEvents->Fill(4);
2122 if(vtxESDSPD->GetStatus()){
2123 fHistNEvents->Fill(2);
2125 fHistESDVertexZ->Fill(vtxESDSPD->GetZv());
2126 if(fabs(vtxESDSPD->GetZv()) < fVertexZCut){
2128 fHistMuliplicityRaw->Fill(multV0);
2129 fHistNEvents->Fill(3);
2130 fHistNPrim->Fill(nContr);
2134 fHistMuliplicity->Fill(multV0);
2136 nContr = vtxESDSPD->GetNContributors();
2138 //fHistPrimVtxZESDVSNContributors->Fill(vtxESD->GetZv(),nContr);
2139 fHistPrimVtxZESDTPCVSNContributors->Fill(vtxESDTPC->GetZv(),nContr);
2140 fHistPrimVtxZESDSPDVSNContributors->Fill(vtxESDSPD->GetZv(),nContr);
2142 // fHistPrimVtxZESD->Fill(vtxESD->GetZv());
2143 fHistPrimVtxZESDTPC->Fill(vtxESDTPC->GetZv());
2144 fHistPrimVtxZESDSPD->Fill(vtxESDSPD->GetZv());
2145 // -- count events after processing
2146 fHistNEvents->Fill(4);
2152 else{// PbPb analysis
2153 //-- Monitor event cuts --//
2154 fHistNEvents->Fill(1);
2156 if(vtxESD->GetStatus()){
2157 Double_t vtxZ = vtxESD->GetZv();
2158 fHistESDVertexZ->Fill(vtxZ);
2160 fHistNEvents->Fill(2);
2161 if(fabs(vtxZ) < fVertexZCut){
2162 nContr = vtxESD->GetNContributors();
2163 fHistMuliplicityRaw->Fill(multV0);
2164 fHistNEvents->Fill(3);
2165 fHistNPrim->Fill(nContr);
2167 fHistMuliplicity->Fill(multV0);
2168 fHistPrimVtxZESD->Fill(vtxZ);
2169 fHistPrimVtxZESDVSNContributors->Fill(vtxZ,nContr);
2170 // -- count events after processing --//
2171 fHistCentBin->Fill(centBin);
2172 fHistNEvents->Fill(4);
2175 if(fabs(vtxZ) < fVertexZCut) fHistCentBinRaw->Fill(centBin);
2178 PostData(1,fOutputContainer);
2181 //________________________________________________________________________
2182 void AliAnalysisTaskV0ForRAA::Terminate(Option_t *) {
2186 //________________________________________________________________________
2187 void AliAnalysisTaskV0ForRAA::Process(){//run the analysis
2189 Int_t ntracks = fESD->GetNumberOfTracks();
2192 //-- count number of tracks --//
2194 if(!(!fMCMode && fMCTruthMode)){
2195 for(Int_t i=0;i<ntracks;i++){
2196 AliESDtrack *track = (AliESDtrack*)fESD->GetTrack(i);
2197 if(!fESDTrackCuts->AcceptTrack(track)) continue;
2198 if( track->Eta() > fEtaCutMCDaughtersVal) continue;
2201 fHistMultiplicityPrimary->Fill(count);
2204 //-- check number of V0s in case of data or mc data like analysis--//
2205 Int_t nV0 = fESD->GetNumberOfV0s();
2206 if(!fMCTruthMode) if(nV0 < 1) return;
2208 //-- run analysis --//
2209 if(fMCTruthMode) V0MCTruthLoop();
2210 else V0RecoLoop(0,0,0,0,0.0,0,0.0,0.0);
2214 //________________________________________________________________________
2215 void AliAnalysisTaskV0ForRAA::V0MCTruthLoop(){
2216 //loop over MC truth particles
2218 //-- get MC stack --//
2219 AliStack *stack = fMCev->Stack();
2222 //histo for user defined shift in charge/pt
2224 fHistUserPtShift->Fill(fDeltaInvP);
2228 AliKFVertex primVtxStart(*(fESD->GetPrimaryVertex()));
2229 Int_t nTracksPrim=primVtxStart.GetNContributors();
2230 fHistNPrim->Fill(nTracksPrim);
2235 Int_t mcPrimaries = stack->GetNprimary();
2236 Int_t mcParticles = stack->GetNtrack();
2238 fHistMultiplicityPrimary->Fill(mcPrimaries);
2239 fHistMCMultiplicityTracks->Fill(mcParticles);
2242 fHistNV0->Fill(nV0);
2244 fHistNV0WithVertex->Fill(nV0);
2248 //-- MC truht loop for V0s --//
2249 for (Int_t iMc = 0; iMc < (stack->GetNtrack()); iMc++){//MC truth loop
2250 Int_t fillMCtruth= int(fMCTruthMode);
2252 fHistPiPiMonitorMCCuts->Fill(1*fillMCtruth);
2253 fHistPiPMonitorMCCuts[0]->Fill(1*fillMCtruth);
2254 fHistPiAPMonitorMCCuts[0]->Fill(1*fillMCtruth);
2256 TParticle *p0 = stack->Particle(iMc);
2260 fHistPiPiMonitorMCCuts->Fill(2*fillMCtruth);
2261 fHistPiPMonitorMCCuts[0]->Fill(2*fillMCtruth);
2262 fHistPiAPMonitorMCCuts[0]->Fill(2*fillMCtruth);
2267 Int_t pdgCode = p0->GetPdgCode();
2269 //-------------- only K0s and Lambda ----------//
2270 if( (pdgCode != 310 ) && ( fabs(pdgCode) != 3122 ) ) continue;
2271 Int_t fillFlagK0 = (3122- fabs(pdgCode))/(3122-310)*fillMCtruth;
2272 Int_t fillFlagL = (fabs(pdgCode) - 310)/(3122-310)*(pdgCode+3122)/(2*3122)*fillMCtruth;
2273 Int_t fillFlagAL = (fabs(pdgCode) - 310)/(3122-310)*(pdgCode-3122)/(-2*3122)*fillMCtruth;
2275 fHistPiPiMonitorMCCuts->Fill(3*fillFlagK0);
2276 fHistPiPMonitorMCCuts[0]->Fill(3*fillFlagL);
2277 fHistPiAPMonitorMCCuts[0]->Fill(3*fillFlagAL);
2279 if(p0->GetNDaughters() !=2) continue;
2280 fHistPiPiMonitorMCCuts->Fill(4*fillFlagK0);
2281 fHistPiPMonitorMCCuts[0]->Fill(4*fillFlagL);
2282 fHistPiAPMonitorMCCuts[0]->Fill(4*fillFlagAL);
2284 //-------------- unique ID check-------------- //
2285 Int_t uniqueID = p0->GetUniqueID();
2286 if(uniqueID==13) continue;
2288 fHistPiPiMonitorMCCuts->Fill(5*fillFlagK0);
2289 fHistPiPMonitorMCCuts[0]->Fill(5*fillFlagL);
2290 fHistPiAPMonitorMCCuts[0]->Fill(5*fillFlagAL);
2292 //-------------- daughters --------------------//
2293 Int_t id0 = p0->GetDaughter(0);
2294 Int_t id1 = p0->GetDaughter(1);
2295 if(id0<0 || id1 <0) continue;
2297 fHistPiPiMonitorMCCuts->Fill(6*fillFlagK0);
2298 fHistPiPMonitorMCCuts[0]->Fill(6*fillFlagL);
2299 fHistPiAPMonitorMCCuts[0]->Fill(6*fillFlagAL);
2301 Int_t pdgCodeD0 = stack->Particle(id0)->GetPdgCode();
2302 Int_t pdgCodeD1 = stack->Particle(id1)->GetPdgCode();
2304 if(pdgCodeD0 == pdgCodeD1) continue;
2305 if(pdgCodeD0*pdgCodeD1>0) continue;
2307 fHistPiPiMonitorMCCuts->Fill(7*fillFlagK0);
2308 fHistPiPMonitorMCCuts[0]->Fill(7*fillFlagL);
2309 fHistPiAPMonitorMCCuts[0]->Fill(7*fillFlagAL);
2311 if((fabs(pdgCodeD0) != 211 ) && ( fabs(pdgCodeD0) != 2212 )) continue;
2312 if((fabs(pdgCodeD1) != 211 ) && ( fabs(pdgCodeD1) != 2212 )) continue;
2314 fHistPiPiMonitorMCCuts->Fill(8*fillFlagK0);
2315 fHistPiPMonitorMCCuts[0]->Fill(8*fillFlagL);
2316 fHistPiAPMonitorMCCuts[0]->Fill(8*fillFlagAL);
2318 TParticle *p00 =stack->Particle(id0);
2319 TParticle *p01 =stack->Particle(id1);
2320 Double_t etaMC00 = p00->Eta();
2321 Double_t etaMC01 = p01->Eta();
2323 //----------- unique ID check daughters-------- //
2324 Int_t uniqueIDdaughter0 = p00->GetUniqueID();
2325 Int_t uniqueIDdaughter1 = p01->GetUniqueID();
2326 if (uniqueIDdaughter0 !=4 || uniqueIDdaughter1 !=4 ) continue;
2328 fHistPiPiMonitorMCCuts->Fill(9*fillFlagK0);
2329 fHistPiPMonitorMCCuts[0]->Fill(9*fillFlagL);
2330 fHistPiAPMonitorMCCuts[0]->Fill(9*fillFlagAL);
2332 fHistPiPMonitorMCCuts[1]->Fill(9*fillFlagL);
2333 fHistPiAPMonitorMCCuts[1]->Fill(9*fillFlagAL);
2335 //------------ check label reco -------------------//
2336 if(fCheckNegLabelReco || fOnlyFoundRecoV0){ // check label reco
2337 Bool_t found =kFALSE;
2338 Int_t label0=0,label1=0;
2339 AliESDv0 * v0MIsMC=NULL;
2340 AliESDtrack *tr0 = NULL;
2341 AliESDtrack *tr1 = NULL;
2342 for(Int_t recL=0;recL < fESD->GetNumberOfV0s();recL++){
2343 v0MIsMC = fESD->GetV0(recL);
2344 if(!v0MIsMC) continue;
2345 tr0 = fESD->GetTrack(v0MIsMC->GetPindex());
2346 tr1 = fESD->GetTrack(v0MIsMC->GetNindex());
2348 label0 = tr0->GetLabel();
2349 label1 = tr1->GetLabel();
2350 if((fabs(label0) == id0 && fabs(label1) == id1) ||
2351 (fabs(label0) == id1 && fabs(label1) == id0)){
2357 if(fCheckNegLabelReco && !fOnlyFoundRecoV0) {
2358 if(found && (label0 <0 || label1 < 0)) continue;
2361 if(!found) continue;
2362 if(fCheckNegLabelReco && found && (label0 <0 || label1 < 0)) continue;
2366 //-----------get geometric properties --------------//
2367 // DCA of mother to prim vertex = production vertex
2369 //-- primary and secondary vetex --//
2370 Double_t vVertexPrimMC[3];
2371 fMCev->GetPrimaryVertex()->GetXYZ(vVertexPrimMC);
2372 // Double_t x0=p0->Vx(),y0=p0->Vy(),z0=p0->Vz();//mother production vertex
2374 Double_t x=p00->Vx(),y=p00->Vy(),z=p00->Vz();//daughter vertex =V0 decay vertex
2375 Double_t rx = x - vVertexPrimMC[0];
2376 Double_t ry = y - vVertexPrimMC[1];
2377 Double_t rz = z - vVertexPrimMC[2];
2378 Double_t sdeclength = rx*rx+ry*ry;//+rz*rz;//=p00->Rho();
2379 Double_t declength =0.0;
2380 if(sdeclength>0) declength = sqrt(sdeclength);
2381 Double_t declength3d = sqrt( rx*rx+ry*ry+rz*rz);
2383 //-- decay radii --//
2384 Double_t rMC2D = sqrt(x*x+y*y);
2385 const Double_t xyzMC[3] = {x,y,z};
2386 // Double_t rMC = p00->R();
2389 //-------------------- V0 variables ----------------//
2390 Double_t rapidity = p0->Y();
2391 Double_t massV0MC = p0->GetMass();
2392 Double_t ptV0MC = p0->Pt();
2393 Double_t pV0MC = p0->P();
2396 //----------------- mother variables-----------------//
2397 Int_t indexMother1 = p0->GetMother(0);
2400 // Int_t goodMother=1;
2401 Int_t uniqueIDmother=0;
2402 Double_t ptXiMother=0.0;
2403 Double_t rapXiMother = 0.0;
2406 //------check mother and fill mother histos---------//
2407 Bool_t isPrim= stack->IsPhysicalPrimary(iMc);
2409 if(!isPrim){//secondary
2410 isSecd=1;// is secondary V0s
2411 if(indexMother1 >-1){// && !isPrim){//secondary V0s
2412 // isSecd=1;// is secondary V0s
2413 // if(fSelectMBMotherMC && !fMCev->IsFromBGEvent(indexMother1)) continue;//xxx only standard hijing particles for sec. lambdas:not needed
2415 //-- check for mother --//
2416 TParticle *mother = stack->Particle(indexMother1);
2418 Printf("no mother pointer!");continue;
2420 pdgMother = mother->GetPdgCode();
2421 fHistPiPMonitorMCCuts[1]->Fill(10*fillFlagL);
2422 fHistPiAPMonitorMCCuts[1]->Fill(10*fillFlagAL);
2424 //-- check for injejcted --//
2425 Bool_t notinjectedMother = kTRUE;
2426 notinjectedMother = fMCev->IsFromBGEvent(indexMother1);
2428 if(fSelectInjected && !notinjectedMother ) continue;
2429 fHistPiPMonitorMCCuts[1]->Fill(11*fillFlagL);
2430 fHistPiAPMonitorMCCuts[1]->Fill(11*fillFlagAL);
2432 Bool_t isPrimMother= stack->IsPhysicalPrimary(indexMother1);
2433 if(!isPrimMother) continue;
2434 fHistPiPMonitorMCCuts[1]->Fill(12*fillFlagL);
2435 fHistPiAPMonitorMCCuts[1]->Fill(12*fillFlagAL);
2437 uniqueIDmother = mother->GetUniqueID();
2439 if(uniqueIDmother==13){
2442 fHistPiPMonitorMCCuts[1]->Fill(13*fillFlagL);
2443 fHistPiAPMonitorMCCuts[1]->Fill(13*fillFlagAL);
2446 //-- fill secondary V0s histos and pdg histos --//
2447 ptXiMother = mother->Pt();
2448 rapXiMother = mother->Y();
2453 if(fabs(pdgMother)==311 || fabs(pdgMother)==313 || fabs(pdgMother)==323 ) isSecd=0; // from K0L, K0 and K* as primary
2454 else fHistPiPiPDGCode->Fill(fabs(pdgMother));
2459 fHistPiPPDGCode->Fill(fabs(pdgMother));
2461 ( TMath::Abs(pdgMother) == 3112) || //sigma minus
2462 ( TMath::Abs(pdgMother) == 3222) || //sigma plus
2463 ( TMath::Abs(pdgMother) == 3224) || //sigma *plus
2464 ( TMath::Abs(pdgMother) == 3114) || //sigma *minus
2465 ( TMath::Abs(pdgMother) == 3214) || //sigma *0 counts as primary????
2466 ( TMath::Abs(pdgMother) == 3212) //sigma 0 counts as primary
2472 if( pdgMother == 3322) //xi0
2474 if(!fRapCutV0 || fabs(rapidity)<fRap){
2475 if(!fEtaCutMCDaughters || (fabs(etaMC00)<fEtaCutMCDaughtersVal|| fabs(etaMC01)<fEtaCutMCDaughtersVal)){
2476 fHistPiPMassVSPtSecXi[0]->Fill(massV0MC,ptV0MC);
2477 fHistPiPMassVSYSecXi[0]->Fill(massV0MC,rapidity);
2478 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiPXi0PtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
2483 if(pdgMother == 3312) //xi minus
2485 if(!fRapCutV0 || fabs(rapidity)<fRap){
2486 if(!fEtaCutMCDaughters || (fabs(etaMC00)<fEtaCutMCDaughtersVal|| fabs(etaMC01)<fEtaCutMCDaughtersVal)){
2487 fHistPiPMassVSPtSecXi[0]->Fill(massV0MC,ptV0MC);
2488 fHistPiPMassVSYSecXi[0]->Fill(massV0MC,rapidity);
2489 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiPXiMinusPtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
2494 if(pdgMother == 3334)//omega-
2496 // fHistPiPDCAtoPrimVtxOmega[0]->Fill(p0->GetMass(),dcaV0ToPrimVertex);
2497 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiPOmegaPtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
2498 fHistPiPMassVSPtSecOmega[0]->Fill(massV0MC,ptV0MC);
2502 //-- AntiLambda --//
2503 if(pdgCode==-3122 ){
2504 fHistPiAPPDGCode->Fill(fabs(pdgMother));
2506 ( TMath::Abs(pdgMother) == 3112) ||//sigma minus
2507 ( TMath::Abs(pdgMother) == 3222) ||//sigma plus
2508 ( TMath::Abs(pdgMother) == 3224) ||//sigma *plus
2509 ( TMath::Abs(pdgMother) == 3114) ||//sigma *minus
2510 ( TMath::Abs(pdgMother) == 3214) || //sigma *0
2511 ( TMath::Abs(pdgMother) == 3212) //sigma 0 counts as primary
2517 if( pdgMother == -3322) //xi0
2519 if(!fRapCutV0 || fabs(rapidity)<fRap){
2520 if(!fEtaCutMCDaughters || (fabs(etaMC00)<fEtaCutMCDaughtersVal|| fabs(etaMC01)<fEtaCutMCDaughtersVal)){
2521 fHistPiAPMassVSPtSecXi[0]->Fill(massV0MC,ptV0MC);
2522 fHistPiAPMassVSYSecXi[0]->Fill(massV0MC,rapidity);
2523 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiAPXi0PtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
2528 if(pdgMother == -3312) //xi plus
2530 if(!fRapCutV0 || fabs(rapidity)<fRap){
2531 if(!fEtaCutMCDaughters || (fabs(etaMC00)<fEtaCutMCDaughtersVal|| fabs(etaMC01)<fEtaCutMCDaughtersVal)){
2532 fHistPiAPMassVSPtSecXi[0]->Fill(massV0MC,ptV0MC);
2533 fHistPiAPMassVSYSecXi[0]->Fill(massV0MC,rapidity);
2534 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiAPXiMinusPtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
2539 if(pdgMother == -3334)//omega+
2541 fHistPiAPOmegaPtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
2542 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiAPMassVSPtSecOmega[0]->Fill(massV0MC,ptV0MC);
2543 // fHistPiAPDCAtoPrimVtxOmega[0]->Fill(p0->GetMass(),dcaV0ToPrimVertex);
2549 //-- check for injejcted --//
2550 Bool_t notinjected = kTRUE;
2551 notinjected = fMCev->IsFromBGEvent(iMc);
2553 if(fSelectInjected && !notinjected ) continue;
2554 fHistPiPiMonitorMCCuts->Fill(10*fillFlagK0);
2555 fHistPiPMonitorMCCuts[0]->Fill(10*fillFlagL);
2556 fHistPiAPMonitorMCCuts[0]->Fill(10*fillFlagAL);
2560 //-------------- MC truth or reco mode -----------------//
2561 if(fMCTruthMode && !fMCMode){//MC true ana
2562 fHistPiPiMonitorMCCuts->Fill(14*fillFlagK0);
2563 fHistPiPMonitorMCCuts[isSecd]->Fill(14*fillFlagL);
2564 fHistPiAPMonitorMCCuts[isSecd]->Fill(14*fillFlagAL);
2566 //-- DCA daughters --//
2567 // values of one daugher, should be the same
2570 trackPos->GetImpactParameters(tdcaPosToVertex[0],tdcaPosToVertex[1]);
2571 trackNeg->GetImpactParameters(tdcaNegToVertex[0],tdcaNegToVertex[1]);
2573 Double_t dcaPosToVertex = TMath::Sqrt(tdcaPosToVertex[0]*tdcaPosToVertex[0]+tdcaPosToVertex[1]*tdcaPosToVertex[1]);
2574 Double_t dcaNegToVertex = TMath::Sqrt(tdcaNegToVertex[0]*tdcaNegToVertex[0]+tdcaNegToVertex[1]*tdcaNegToVertex[1]);
2575 fHistDCADaughtersToPrimVtx[isSecd]->Fill(dcaPosToVertex,dcaNegToVertex);
2579 //-- armenteros values --//
2583 Double_t ptPlus=0, ptMinus=0;
2584 Double_t pt00 = p00->Pt();
2585 Double_t pt01 = p01->Pt();
2586 Double_t phiMCPos=0.0;
2587 Double_t phiMCNeg=0.0;
2588 Double_t etaMCPos =0.0;
2589 Double_t etaMCNeg =0.0;
2590 if(p00->GetPdgCode()<0)
2592 vecPip.SetXYZ(p01->Px(),p01->Py(),p01->Pz());
2593 vecPin.SetXYZ(p00->Px(),p00->Py(),p00->Pz());
2596 phiMCPos = p01->Phi();
2597 phiMCNeg = p00->Phi();
2602 vecPin.SetXYZ(p01->Px(),p01->Py(),p01->Pz());
2603 vecPip.SetXYZ(p00->Px(),p00->Py(),p00->Pz());
2606 phiMCPos = p00->Phi();
2607 phiMCNeg = p01->Phi();
2612 TVector3 momTot(p0->Px(),p0->Py(),p0->Pz());
2613 Double_t lQlNeg = fabs(vecPin.Dot(momTot)/momTot.Mag());
2614 Double_t lQlPos = fabs(vecPip.Dot(momTot)/momTot.Mag());
2616 Double_t den = lQlPos + lQlNeg;
2617 if(den>0) alfa = (lQlPos - lQlNeg)/den;
2618 TVector3 qtvec= vecPin.Cross(momTot);//vecPip.Mag()*sqrt(1-pow(thetapip,2));
2619 Float_t qt = qtvec.Mag()/momTot.Mag();
2621 //clalc masses for test
2622 Double_t massPi=0.13957018;
2623 Double_t massP=0.93827203;
2625 TLorentzVector pionPTest(vecPip, massPi);
2626 TLorentzVector pionNTest(vecPin, massPi);
2627 TLorentzVector k0sTest = pionPTest+pionNTest;
2629 TLorentzVector protPTest(vecPip, massP);
2630 TLorentzVector lambdaTest = protPTest+pionNTest;
2632 TLorentzVector protNTest(vecPin, massP);
2633 TLorentzVector alambdaTest = protNTest+pionPTest;
2635 Double_t calcK0smass = fabs(k0sTest.M());
2636 Double_t calcLambdamass = fabs(lambdaTest.M());
2637 Double_t calcALambdamass = fabs(alambdaTest.M());
2639 if(pdgCode == 310) {
2640 fHistPiPiEtaDMC[isSecd]->Fill(etaMCPos,ptV0MC);
2641 fHistPiPiEtaDMC[isSecd]->Fill(etaMCNeg,ptV0MC);
2643 if(fabs(pdgCode) == 3122) {
2644 fHistPiPEtaDMC[isSecd]->Fill(etaMC00,ptV0MC);
2645 fHistPiPEtaDMC[isSecd]->Fill(etaMC01,ptV0MC);
2648 //-- rapidity and eta cut --//
2649 if(fRapCutV0 && fabs(rapidity)>fRap) continue;
2650 fHistPiPiMonitorMCCuts->Fill(15*fillFlagK0);
2651 fHistPiPMonitorMCCuts[isSecd]->Fill(15*fillFlagL);
2652 fHistPiAPMonitorMCCuts[isSecd]->Fill(15*fillFlagAL);
2654 if(fEtaCutMCDaughters) { if(fabs(etaMC00)>fEtaCutMCDaughtersVal || fabs(etaMC01)>fEtaCutMCDaughtersVal ) continue; }
2655 fHistPiPiMonitorMCCuts->Fill(16*fillFlagK0);
2656 fHistPiPMonitorMCCuts[isSecd]->Fill(16*fillFlagL);
2657 fHistPiAPMonitorMCCuts[isSecd]->Fill(16*fillFlagAL);
2660 Double_t phiMC = p0->Phi();
2661 Double_t etaMC = p0->Eta();
2663 Double_t valTHnMC[4] = {massV0MC,ptV0MC,etaMC,phiMC};
2664 Double_t valTHnMCDauEta[4] = {massV0MC,ptV0MC,etaMCPos,etaMCNeg};
2665 Double_t valTHnMCDauPhi[5] = {massV0MC,phiMCPos,phiMCNeg,0.0,0.0};
2667 //-- Fill Particle histos --//
2668 if (pdgCode==310){//K0s
2669 fHistPiPiMonitorMCCuts->Fill(17);
2671 fHistPiPiEtaDMC[1]->Fill(etaMC00,ptV0MC);
2672 fHistPiPiEtaDMC[1]->Fill(etaMC01,ptV0MC);
2674 fHistPiPiMass->Fill(massV0MC);
2675 fHistPiPiMassVSPt->Fill(massV0MC,ptV0MC);
2676 fHistPiPiMassVSY->Fill(massV0MC,rapidity);
2677 // fHistPiPiPtDaughters->Fill(ptMinus,ptPlus);
2678 fHistPiPiPtVSY->Fill(rapidity,ptV0MC);
2679 Double_t ctTK0s=0.0,ctK0s=0.0;
2680 if(pV0MC>0.0) ctK0s=declength3d*0.497614/pV0MC;
2681 if(ptV0MC>0.0) ctTK0s=declength*0.497614/ptV0MC;
2682 fHistPiPiDecayLengthResolution->Fill(declength3d,declength);
2683 fHistPiPiDecayLengthVsPt->Fill(ptV0MC,declength);//ptV0MC,ctK0s);
2684 fHistPiPiDecayLengthVsCtau->Fill(massV0MC,ctTK0s);
2685 fHistPiPiDecayLengthVsMass->Fill(massV0MC,declength);
2687 fHistArmenteros[isSecd]->Fill(alfa,qt);
2688 fHistV0RadiusZ[isSecd]->Fill(rMC2D,xyzMC[2]);
2689 fHistV0RadiusXY[isSecd]->Fill(xyzMC[0],xyzMC[1]);
2690 fHistV0RadiusZVSPt[isSecd]->Fill(ptV0MC,xyzMC[2]);
2691 // fHistPiPiPhiPosVsPtPosVsMass->Fill(massV0MC,ctTK0s,ptV0MC);//,ctK0s);//phiPosMC);//xxx
2692 fHistPiPiK0sVsLambdaMass->Fill(calcLambdamass,calcK0smass);
2693 fHistPiPiK0sVsALambdaMass->Fill(calcALambdamass,calcK0smass);
2694 fTHnFK0s->Fill(valTHnMC);
2695 fTHnFK0sDauEta->Fill(valTHnMCDauEta);
2696 fTHnFK0sDauPhi->Fill(valTHnMCDauPhi);
2698 if (pdgCode==3122){ //Lambda
2699 fHistPiPMonitorMCCuts[isSecd]->Fill(17);
2701 fHistPiPEtaDMC[1]->Fill(etaMC00,ptV0MC);
2702 fHistPiPEtaDMC[1]->Fill(etaMC01,ptV0MC);
2704 fHistPiPMassVSPt[isSecd]->Fill(massV0MC,ptV0MC);
2705 fHistPiPMass[isSecd]->Fill(massV0MC);
2706 fHistPiPMassVSY[isSecd]->Fill(massV0MC,rapidity);
2707 // fHistPiPPtDaughters[isSecd]->Fill(ptMinus,ptPlus);
2708 fHistPiPPtVSY[isSecd]->Fill(rapidity,ptV0MC);
2711 Double_t ctTL=0.0, ctL=0.0;
2712 if(pV0MC>0.0) ctL=declength3d*1.115683/pV0MC;
2713 if(ptV0MC>0.0) ctTL=declength*1.115683/ptV0MC;
2714 fHistPiPDecayLengthResolution[0]->Fill(declength3d,declength);
2715 fHistPiPDecayLengthVsPt[isSecd]->Fill(ptV0MC,declength);//(ptV0MC,ctL);
2716 fHistPiPDecayLengthVsCtau[isSecd]->Fill(massV0MC,ctTL);
2717 fHistPiPDecayLengthVsMass[isSecd]->Fill(massV0MC,declength);
2719 fHistArmenteros[isSecd]->Fill(alfa,qt);
2720 fHistV0RadiusZ[isSecd]->Fill(rMC2D,xyzMC[2]);
2721 fHistV0RadiusXY[isSecd]->Fill(xyzMC[0],xyzMC[1]);
2722 fHistV0RadiusZVSPt[isSecd]->Fill(ptV0MC,xyzMC[2]);
2724 fHistPiPK0sVsLambdaMass->Fill(calcLambdamass,calcK0smass);
2725 fTHnFL->Fill(valTHnMC);
2726 fTHnFLDauEta->Fill(valTHnMCDauEta);
2727 fTHnFLDauPhi->Fill(valTHnMCDauPhi);
2729 if (pdgCode==-3122){ //AntiLambda
2730 fHistPiAPMonitorMCCuts[isSecd]->Fill(17);
2732 fHistPiPEtaDMC[1]->Fill(etaMC00,ptV0MC);
2733 fHistPiPEtaDMC[1]->Fill(etaMC01,ptV0MC);
2735 fHistPiAPMassVSPt[isSecd]->Fill(massV0MC,ptV0MC);
2736 fHistPiAPMass[isSecd]->Fill(massV0MC);
2737 fHistPiPMassVSY[isSecd]->Fill(massV0MC,rapidity);
2738 // fHistPiAPPtDaughters[isSecd]->Fill(ptMinus,ptPlus);
2739 fHistPiAPPtVSY[isSecd]->Fill(rapidity,ptV0MC);
2741 Double_t ctTAL=0.0, ctAL=0.0;
2742 if(pV0MC>0.0) ctAL=declength3d*1.115683/pV0MC;
2743 if(ptV0MC>0.0) ctTAL=declength*1.115683/ptV0MC;
2744 fHistPiAPDecayLengthResolution[0]->Fill(declength3d,declength);
2745 fHistPiAPDecayLengthVsPt[isSecd]->Fill(ptV0MC,declength);//(ptV0MC,ctAL);
2746 fHistPiAPDecayLengthVsCtau[isSecd]->Fill(massV0MC,ctAL);
2747 fHistPiAPDecayLengthVsMass[isSecd]->Fill(massV0MC,ctTAL);//declength);
2749 fHistArmenteros[isSecd]->Fill(alfa,qt);
2750 fHistV0RadiusZ[isSecd]->Fill(rMC2D,xyzMC[2]);
2751 fHistV0RadiusXY[isSecd]->Fill(xyzMC[0],xyzMC[1]);
2752 fHistV0RadiusZVSPt[isSecd]->Fill(ptV0MC,xyzMC[2]);
2753 fHistV0RadiusXYVSY[isSecd]->Fill(rapidity,rMC2D);
2754 fHistPiAPK0sVsALambdaMass->Fill(calcALambdamass,calcK0smass);
2755 // if(isSecd <1) fHistPiPPhiPosVsPtPosVsMass->Fill(massV0MC,ctTL,ptV0MC);//,ctK0s);//phiPosMC);//xxx
2756 //else fHistPiAPPhiPosVsPtPosVsMass->Fill(massV0MC,ctTL,ptV0MC);//,ctK0s);//phiPosMC);//xxx
2757 //fHistPiAPPhiPosVsPtPosVsMass->Fill(massV0MC,ctTL,ptV0MC);//,ctK0s);//phiPosMC);//xxx
2758 fTHnFAL->Fill(valTHnMC);
2759 fTHnFALDauEta->Fill(valTHnMCDauEta);
2760 fTHnFALDauPhi->Fill(valTHnMCDauPhi);
2764 V0RecoLoop(id0,id1,isSecd,pdgCode,ptV0MC,pdgMother,ptXiMother,declength);
2767 }//end MC stack loop
2770 //________________________________________________________________________
2771 void AliAnalysisTaskV0ForRAA::V0RecoLoop(Int_t id0,Int_t id1,Int_t isSecd,Int_t what,Double_t ptV0MC, Int_t pdgMother,Double_t ptXiMother,Double_t declengthV0MC){
2772 //loop over reconstructed particles
2775 //--------------------- define variables -----------------------//
2780 Double_t massPi=0.13957018;
2781 Double_t massP=0.93827203;
2783 TLorentzVector positivesMIP;
2784 TLorentzVector negativesMIAP;
2785 TLorentzVector positivesMIPi;
2786 TLorentzVector negativesMIPi;
2789 AliKFParticle::SetField(fESD->GetMagneticField());
2790 AliKFVertex primVtx(*(fESD->GetPrimaryVertex()));
2791 AliKFVertex primVtxImproved = primVtx;
2793 AliKFParticle* negPiKF=NULL;
2794 AliKFParticle* posPiKF=NULL;
2795 AliKFParticle* posPKF=NULL;
2796 AliKFParticle* negAPKF=NULL;
2799 AliESDtrack* trackPos=NULL;
2800 AliESDtrack* trackNeg=NULL;
2801 AliESDtrack* trackPosTest = NULL;
2802 AliESDtrack* trackNegTest =NULL;
2804 Double_t primaryVtxPosition[3];
2805 primaryVtxPosition[0] = fESD->GetPrimaryVertex()->GetXv();
2806 primaryVtxPosition[1] = fESD->GetPrimaryVertex()->GetYv();
2807 primaryVtxPosition[2] = fESD->GetPrimaryVertex()->GetZv();
2809 Int_t nV0 = fESD->GetNumberOfV0s();
2810 const Int_t sizenV0 = nV0;
2811 AliESDv0 * v0MIs=NULL;
2814 // Int_t on =0,off=0;
2815 Bool_t stopLoop = kFALSE;
2816 Int_t trackID[sizenV0][2];
2818 //----------- loop over V0 for daughter track position mapping ------------//
2821 //---------------------- for MC mode only ------------------//
2822 AliStack *stackRec = NULL;
2823 if(fMCMode && !fMCTruthMode) stackRec = fMCev->Stack();
2825 //------------------------ V0 reco loop --------------------//
2826 for(Int_t iV0MI = 0; iV0MI < nV0; iV0MI++) {//V0 loop
2828 //-- get V0 info --//
2829 v0MIs = fESD->GetV0(iV0MI);
2830 if(!v0MIs ) continue;
2832 fHistPiPiMonitorCuts->Fill(1);
2833 fHistPiPMonitorCuts[isSecd]->Fill(1);
2834 fHistPiAPMonitorCuts[isSecd]->Fill(1);
2836 if(stopLoop && fStopLoop) break;
2837 //------------ get references of daughters --------------//
2838 //-- esd tracks --//
2839 trackPosTest = fESD->GetTrack(v0MIs->GetPindex());
2840 trackNegTest = fESD->GetTrack(v0MIs->GetNindex());
2842 if ( trackPosTest->GetSign() == trackNegTest->GetSign()) continue;
2844 fHistPiPiMonitorCuts->Fill(2);
2845 fHistPiPMonitorCuts[isSecd]->Fill(2);
2846 fHistPiAPMonitorCuts[isSecd]->Fill(2);
2848 //-- onthefly selection --//
2849 Bool_t onthefly = v0MIs->GetOnFlyStatus();
2850 if(fOntheFly!=onthefly) continue;
2852 fHistPiPiMonitorCuts->Fill(3);
2853 fHistPiPMonitorCuts[isSecd]->Fill(3);
2854 fHistPiAPMonitorCuts[isSecd]->Fill(3);
2856 //-- for MC mode --//
2858 //check MC labels (and find partners for MC truth V0 daughters for fMCTruthMode=kTRUE)
2859 if(!GetMCTruthPartner(trackPosTest,trackNegTest,id0,id1)) continue;
2860 else stopLoop = kTRUE;
2863 //check if V0 was alread found
2865 if(CheckMultipleV0Candidates(v0MIs,iV0MI,trackID)) continue;
2869 fHistPiPiMonitorCuts->Fill(4);
2870 fHistPiPMonitorCuts[isSecd]->Fill(4);
2871 fHistPiAPMonitorCuts[isSecd]->Fill(4);
2874 //-- get eta from V0 daughters --//
2875 Double_t posDaughterEta=0.0;
2876 Double_t negDaughterEta=0.0;
2877 Double_t posDaughterPhi=0.0;
2878 Double_t negDaughterPhi=0.0;
2880 Double_t eta00 = trackPosTest->Eta();
2881 Double_t eta01 = trackNegTest->Eta();
2884 Int_t indexPos = 0,indexNeg=0;
2885 //---------- check sign assignment for daughters --------//
2886 Bool_t switchSign = kFALSE;
2888 if( trackPosTest->GetSign() >0){//pos
2889 indexPos = v0MIs->GetPindex();
2890 indexNeg = v0MIs->GetNindex();
2892 v0MIs->GetPPxPyPz(pp[0],pp[1],pp[2]);
2893 v0MIs->GetNPxPyPz(pm[0],pm[1],pm[2]);
2895 posDaughterEta = v0MIs->GetParamP()->Eta();
2896 negDaughterEta = v0MIs->GetParamN()->Eta();
2897 posDaughterPhi = v0MIs->GetParamP()->Phi();
2898 negDaughterPhi = v0MIs->GetParamN()->Phi();
2900 if (negPiKF) delete negPiKF; negPiKF=NULL;
2901 if (posPiKF) delete posPiKF; posPiKF=NULL;
2902 if (posPKF) delete posPKF; posPKF=NULL;
2903 if (negAPKF) delete negAPKF; negAPKF=NULL;
2905 negPiKF = new AliKFParticle( *(v0MIs->GetParamN()) ,-211);
2906 posPiKF = new AliKFParticle( *(v0MIs->GetParamP()) ,211);
2907 posPKF = new AliKFParticle( *(v0MIs->GetParamP()) ,2212);
2908 negAPKF = new AliKFParticle( *(v0MIs->GetParamN()) ,-2212);
2912 if( trackPosTest->GetSign() <0){//neg
2914 indexPos = v0MIs->GetNindex();
2915 indexNeg = v0MIs->GetPindex();
2917 v0MIs->GetNPxPyPz(pp[0],pp[1],pp[2]);
2918 v0MIs->GetPPxPyPz(pm[0],pm[1],pm[2]);
2920 posDaughterEta = v0MIs->GetParamN()->Eta();
2921 negDaughterEta = v0MIs->GetParamP()->Eta();
2922 posDaughterPhi = v0MIs->GetParamN()->Phi();
2923 negDaughterPhi = v0MIs->GetParamP()->Phi();
2925 if (negPiKF) delete negPiKF; negPiKF=NULL;
2926 if (posPiKF) delete posPiKF; posPiKF=NULL;
2927 if (posPKF) delete posPKF; posPKF=NULL;
2928 if (negAPKF) delete negAPKF; negAPKF=NULL;
2931 negPiKF = new AliKFParticle( *(v0MIs->GetParamP()) ,-211);
2932 posPiKF = new AliKFParticle( *(v0MIs->GetParamN()) ,211);
2933 posPKF = new AliKFParticle( *(v0MIs->GetParamN()) ,2212);
2934 negAPKF = new AliKFParticle( *(v0MIs->GetParamP()) ,-2212);
2938 eta01 = trackPosTest->Eta();
2939 eta00 = trackNegTest->Eta();
2943 trackPos =fESD->GetTrack(indexPos);
2944 trackNeg =fESD->GetTrack(indexNeg);
2946 // ------------- calc masses and 4 vectors -------------- //
2948 positivesMIPi.SetXYZM(pp[0],pp[1],pp[2],massPi);
2949 negativesMIPi.SetXYZM(pm[0],pm[1],pm[2],massPi);
2950 TLorentzVector v0K0=positivesMIPi+negativesMIPi;
2953 positivesMIP.SetXYZM(pp[0],pp[1],pp[2],massP);
2954 TLorentzVector v0Lambda=positivesMIP+negativesMIPi;
2957 negativesMIAP.SetXYZM(pm[0],pm[1],pm[2],massP);
2958 TLorentzVector v0ALambda=positivesMIPi+negativesMIAP;
2960 //---------------------AliKFParticle ---------------------//
2962 Double_t chi2K0C=0.0;
2963 Double_t chi2LambdaC=0.0;
2964 Double_t chi2ALambdaC=0.0;
2967 AliKFParticle v0K0KF;
2968 v0K0KF +=(*negPiKF);
2969 v0K0KF +=(*posPiKF);
2970 //v0K0C.SetVtxGuess(xr[0],xr[1],xr[2]);
2971 v0K0KF.SetProductionVertex(primVtxImproved);
2973 AliKFParticle v0LambdaKF;
2974 v0LambdaKF +=(*negPiKF);
2975 v0LambdaKF +=(*posPKF);
2976 //v0LambdaC.SetVtxGuess(xr[0],xr[1],xr[2]);
2977 v0LambdaKF.SetProductionVertex(primVtxImproved);
2979 AliKFParticle v0ALambdaKF;
2980 v0ALambdaKF +=(*negAPKF);
2981 v0ALambdaKF +=(*posPiKF);
2982 //v0ALambdaC.SetVtxGuess(xr[0],xr[1],xr[2]);
2983 v0ALambdaKF.SetProductionVertex(primVtxImproved);
2985 if( v0K0KF.GetNDF() != 0) {
2986 chi2K0C = v0K0KF.GetChi2()/v0K0KF.GetNDF();
2989 Double_t chi2LambdaC=100000.;
2990 if( v0LambdaKF.GetNDF() != 0) {
2991 chi2LambdaC = v0LambdaKF.GetChi2()/v0LambdaKF.GetNDF();
2994 Double_t chi2ALambdaC=100000.;
2995 if( v0ALambdaKF.GetNDF() != 0) {
2996 chi2ALambdaC = v0ALambdaKF.GetChi2()/v0ALambdaKF.GetNDF();
3000 // ----------------- for MC mode ------------------------ //
3001 Bool_t fillK0sMC = kTRUE;
3002 Bool_t fillLambdaMC = kTRUE;
3003 Bool_t fillALambdaMC = kTRUE;
3005 if(fMCMode && fMCTruthMode) {
3007 fillLambdaMC = kFALSE;
3008 fillALambdaMC = kFALSE;
3010 else if(what == 3122){
3011 fillALambdaMC = kFALSE;
3014 else if(what == -3122){
3015 fillLambdaMC = kFALSE;
3020 //----------------- prepare for V0 ana ------------------//
3021 TVector3 ppTrack(pp);
3022 TVector3 pmTrack(pm);
3025 Double_t ptK0s = v0K0.Pt();
3026 Double_t ptLambda = v0Lambda.Pt();
3027 Double_t ptALambda = v0ALambda.Pt();
3029 Double_t pK0s = v0K0.P();
3030 Double_t pLambda = v0Lambda.P();
3031 Double_t pALambda = v0ALambda.P();
3033 Double_t posDaughterP = ppTrack.Mag();
3034 Double_t negDaughterP = pmTrack.Mag();
3036 v0MIs->GetXYZ(xr[0],xr[1],xr[2]);
3038 // Double_t posDaughterPt = ppTrack.Pt();
3039 // Double_t negDaughterPt = pmTrack.Pt();
3042 Double_t v0sPt=v0MIs->Pt();
3043 if(what == 310 || what ==0){
3044 fHistPiPiEtaDReco[0]->Fill(posDaughterPt,v0sPt);
3045 fHistPiPiEtaDReco[0]->Fill(negDaughterPt,v0sPt);
3047 if(fabs(what) == 3122 || what == 0){
3048 fHistPiPEtaDReco[0]->Fill(posDaughterPt,v0sPt);
3049 fHistPiPEtaDReco[0]->Fill(negDaughterPt,v0sPt);
3055 //--------------------------------------------------------- general cuts --------------------------------------------------------------//
3056 //-- track cuts for daughters --//
3058 if( fabs(posDaughterEta) > fEtaCutMCDaughtersVal || fabs(negDaughterEta) > fEtaCutMCDaughtersVal) continue;
3059 fHistPiPiMonitorCuts->Fill(5);
3060 fHistPiPMonitorCuts[isSecd]->Fill(5);
3061 fHistPiAPMonitorCuts[isSecd]->Fill(5);
3063 //-- esd track cuts --//
3065 if( ptK0s > fPtTPCCut){
3067 if(!fESDTrackCuts->AcceptTrack(trackPosTest) || !fESDTrackCuts->AcceptTrack(trackNegTest)) continue;
3068 else fHistPiPiMonitorCuts->Fill(6);
3072 if(fESDTrackCutsLowPt){
3073 if(!fESDTrackCutsLowPt->AcceptTrack(trackPosTest) || !fESDTrackCutsLowPt->AcceptTrack(trackNegTest)) continue;
3077 if(ptLambda > fPtTPCCut){
3078 if(fESDTrackCuts && fESDTrackCutsCharged){
3079 if(!fESDTrackCutsCharged->AcceptTrack(trackPosTest) || !fESDTrackCuts->AcceptTrack(trackNegTest)) continue;
3080 else fHistPiPMonitorCuts[isSecd]->Fill(6);
3084 if(fESDTrackCutsLowPt){
3085 if(!fESDTrackCutsLowPt->AcceptTrack(trackPosTest) || !fESDTrackCutsLowPt->AcceptTrack(trackNegTest)) continue;
3089 if(ptALambda > fPtTPCCut){
3090 if(fESDTrackCuts && fESDTrackCutsCharged){
3091 if(!fESDTrackCuts->AcceptTrack(trackPosTest) || !fESDTrackCutsCharged->AcceptTrack(trackNegTest)) continue;
3092 else fHistPiAPMonitorCuts[isSecd]->Fill(6);
3096 if(fESDTrackCutsLowPt){
3097 if(!fESDTrackCutsLowPt->AcceptTrack(trackPosTest)|| !fESDTrackCutsLowPt->AcceptTrack(trackNegTest)) continue;
3102 //------------------------ detector values -------------------------------//
3103 //-- TPC ITS values pos --//
3104 Int_t nclsTPCPos = trackPos->GetNcls(1);
3105 Int_t nclsTPCFindablePos = trackPos->GetTPCNclsF();
3106 Int_t nclsITSPos = trackPos->GetNcls(0);
3107 Double_t chi2PerClusterITSPos = -1.0;
3108 if(nclsITSPos>0) chi2PerClusterITSPos = trackPos->GetITSchi2()/Double_t(nclsITSPos);
3109 Double_t crossedRowsTPCPos = trackPos->GetTPCCrossedRows();
3111 //-- TPC ITS values neg --//
3112 Int_t nclsTPCNeg = trackNeg->GetNcls(1);
3113 Int_t nclsTPCFindableNeg = trackNeg->GetTPCNclsF();
3114 Int_t nclsITSNeg = trackNeg->GetNcls(0);
3115 Double_t chi2PerClusterITSNeg = -1.0;
3116 if(nclsITSNeg>0) chi2PerClusterITSNeg =trackNeg->GetITSchi2()/Double_t(nclsITSNeg);
3117 Double_t crossedRowsTPCNeg = trackNeg->GetTPCCrossedRows();
3119 Double_t ratio = 10.0;
3120 if(nclsTPCFindableNeg >0.0) ratio =double(crossedRowsTPCNeg)/ double(nclsTPCFindableNeg);
3122 Double_t ratioPos = 10.0;
3123 if(nclsTPCFindablePos >0.0) ratioPos =double(crossedRowsTPCPos)/ double(nclsTPCFindablePos);
3125 Double_t ratioFoFi = 10.0;
3126 if(nclsTPCFindableNeg >0.0) ratioFoFi =double(nclsTPCNeg)/ double(nclsTPCFindableNeg);
3128 Double_t ratioFoFiPos = 10.0;
3129 if(nclsTPCFindablePos >0.0) ratioFoFiPos =double(nclsTPCPos)/ double(nclsTPCFindablePos);
3131 //track length TPC cut
3132 Double_t lengthTPCPos = trackPos->GetLengthInActiveZone(0,3,236, fESD->GetMagneticField(),0,0);//-5 ,0,0);
3133 Double_t lengthTPCNeg = trackNeg->GetLengthInActiveZone(0,3,236, fESD->GetMagneticField(),0,0);//-5 ,0,0);
3134 if(fCutMITrackLength && lengthTPCPos <= fCutMITrackLengthLengthF * (130.0 - 5.0*fabs(trackPos->GetSigned1Pt()))) continue;
3135 fHistPiPiMonitorCuts->Fill(7);
3136 fHistPiPMonitorCuts[isSecd]->Fill(7);
3137 fHistPiAPMonitorCuts[isSecd]->Fill(7);
3138 if(fCutMITrackLength && lengthTPCNeg <= fCutMITrackLengthLengthF * (130.0 - 5.0*fabs(trackNeg->GetSigned1Pt()))) continue;
3139 fHistPiPiMonitorCuts->Fill(8);
3140 fHistPiPMonitorCuts[isSecd]->Fill(8);
3141 fHistPiAPMonitorCuts[isSecd]->Fill(8);
3143 //crossed rows TPC cut
3144 if(fCutMICrossedR && trackPos->GetTPCClusterInfo(3,1) <= fCutMICrossedRLengthF *(130.0 - 5.0*fabs(trackPos->GetSigned1Pt()))) continue;
3145 fHistPiPiMonitorCuts->Fill(9);
3146 fHistPiPMonitorCuts[isSecd]->Fill(9);
3147 fHistPiAPMonitorCuts[isSecd]->Fill(9);
3148 if(fCutMICrossedR && trackNeg->GetTPCClusterInfo(3,1) <= fCutMICrossedRLengthF *(130.0 - 5.0*fabs(trackNeg->GetSigned1Pt()))) continue;
3149 fHistPiPiMonitorCuts->Fill(10);
3150 fHistPiPMonitorCuts[isSecd]->Fill(10);
3151 fHistPiAPMonitorCuts[isSecd]->Fill(10);
3154 if(fCutMITPCncls && nclsTPCPos <= 0.6*(130.0 - 5.0*fabs(trackPos->GetSigned1Pt()))) continue;
3155 fHistPiPiMonitorCuts->Fill(11);
3156 fHistPiPMonitorCuts[isSecd]->Fill(11);
3157 fHistPiAPMonitorCuts[isSecd]->Fill(11);
3158 if(fCutMITPCncls && nclsTPCNeg <= 0.6*(130.0 - 5.0*fabs(trackNeg->GetSigned1Pt()))) continue;
3159 fHistPiPiMonitorCuts->Fill(12);
3160 fHistPiPMonitorCuts[isSecd]->Fill(12);
3161 fHistPiAPMonitorCuts[isSecd]->Fill(12);
3166 if(fMoreNclsThanRows && (crossedRowsTPCPos < nclsTPCPos || crossedRowsTPCNeg < nclsTPCNeg )) continue;
3167 fHistPiPiMonitorCuts->Fill(13);
3168 fHistPiPMonitorCuts[isSecd]->Fill(13);
3169 fHistPiAPMonitorCuts[isSecd]->Fill(13);
3171 if(fMoreNclsThanFindable && (nclsTPCFindablePos < nclsTPCPos || nclsTPCFindableNeg < nclsTPCNeg )) continue;
3172 fHistPiPiMonitorCuts->Fill(14);
3173 fHistPiPMonitorCuts[isSecd]->Fill(14);
3174 fHistPiAPMonitorCuts[isSecd]->Fill(14);
3176 if(fMoreNclsThanFindableMax && ( nclsTPCPos < (nclsTPCFindablePos -60.0) || nclsTPCNeg < (nclsTPCFindableNeg - 60.0) )) continue;
3177 // if(chi2PerClusterITSNeg > fChi2PerClusterITS || chi2PerClusterITSPos > fChi2PerClusterITS ) continue;
3178 fHistPiPiMonitorCuts->Fill(15);
3179 fHistPiPMonitorCuts[isSecd]->Fill(15);
3180 fHistPiAPMonitorCuts[isSecd]->Fill(15);
3182 if(ratio > fRatioMaxCRowsOverFindable || ratioPos > fRatioMaxCRowsOverFindable) continue;
3184 if(ratioFoFi < fRatioFoundOverFindable || ratioFoFiPos < fRatioFoundOverFindable) continue;
3185 fHistPiPiMonitorCuts->Fill(16);
3186 fHistPiPMonitorCuts[isSecd]->Fill(16);
3187 fHistPiAPMonitorCuts[isSecd]->Fill(16);
3189 Bool_t cutOKITSNegNeg =kTRUE;
3190 Bool_t cutOKITSPosPos =kTRUE;
3192 Bool_t cutOKITSNegPos =kTRUE;
3193 Bool_t cutOKITSPosNeg =kTRUE;
3195 if(nclsITSNeg < fMinNCLSITSNeg || nclsITSNeg > fMaxNCLSITSNeg){
3196 if(!fSwitchCaseITSCls) continue;
3197 else cutOKITSNegNeg = kFALSE;
3200 fHistPiPiMonitorCuts->Fill(17);
3201 fHistPiPMonitorCuts[isSecd]->Fill(17);
3202 fHistPiAPMonitorCuts[isSecd]->Fill(17);
3204 //2D decay radius of V0
3205 Double_t dim2V0Radius= sqrt( pow(xr[0] - primaryVtxPosition[0],2.0)
3206 +pow(xr[1] - primaryVtxPosition[1],2.0));//TMath::Sqrt(xr[0]*xr[0]+xr[1]*xr[1]);
3208 if(nclsITSPos < fMinNCLSITSPos || nclsITSPos > fMaxNCLSITSPos){
3209 if(dim2V0Radius >= fDecRadCutITSMin && dim2V0Radius < fDecRadCutITSMax){//only for a certain decay radius 2D in xy
3210 if(!fSwitchCaseITSCls) continue;
3211 else cutOKITSPosPos = kFALSE;
3215 if(fSwitchCaseITSCls){
3216 if(nclsITSPos < fMinNCLSITSNeg || nclsITSPos > fMaxNCLSITSNeg){
3217 if(dim2V0Radius >= fDecRadCutITSMin && dim2V0Radius < fDecRadCutITSMax){//only for a certain decay radius 2D in xy
3218 cutOKITSPosNeg = kFALSE;
3221 if(nclsITSNeg < fMinNCLSITSPos || nclsITSNeg > fMaxNCLSITSPos){
3222 if(dim2V0Radius >= fDecRadCutITSMin && dim2V0Radius < fDecRadCutITSMax){//only for a certain decay radius 2D in xy
3223 cutOKITSNegPos = kFALSE;
3227 if(!(cutOKITSNegPos && cutOKITSPosNeg) && !(cutOKITSNegNeg && cutOKITSPosPos) ) continue;
3230 fHistPiPiMonitorCuts->Fill(18);
3231 fHistPiPMonitorCuts[isSecd]->Fill(18);
3232 fHistPiAPMonitorCuts[isSecd]->Fill(18);
3238 //--------------------- PID ----------------------------//
3240 Float_t nSigmaTPCtrackPosToPion = 0.0;
3241 Float_t nSigmaTPCtrackNegToPion = 0.0;
3242 Float_t nSigmaTPCtrackPosToProton = 0.0;
3243 Float_t nSigmaTPCtrackNegToProton = 0.0;
3247 nSigmaTPCtrackPosToPion = fabs(fESDpid->NumberOfSigmasTPC(trackPos,AliPID::kPion));
3248 nSigmaTPCtrackNegToPion = fabs(fESDpid->NumberOfSigmasTPC(trackNeg,AliPID::kPion));
3249 nSigmaTPCtrackPosToProton = fabs(fESDpid->NumberOfSigmasTPC(trackPos,AliPID::kProton));
3250 nSigmaTPCtrackNegToProton = fabs(fESDpid->NumberOfSigmasTPC(trackNeg,AliPID::kProton));
3253 Bool_t pipidEdx=kTRUE;
3254 Bool_t pipdEdx =kTRUE;
3255 Bool_t piapdEdx=kTRUE;
3257 Double_t tpcsigPos= trackPos->GetTPCsignal();
3258 Double_t tpcsigNeg= trackNeg->GetTPCsignal();
3261 Double_t tpcsigNPos= trackPos->GetTPCsignalN();
3262 Double_t tpcsigNNeg= trackNeg->GetTPCsignalN();
3264 // GetYAt(Double_t x, Double_t b, Double_t &y) or GetY()
3265 Double_t posY = trackPos->GetInnerParam()->GetY();
3266 Double_t posZ = trackPos->GetInnerParam()->GetZ();
3267 Double_t negY = trackNeg->GetInnerParam()->GetY();
3268 Double_t negZ = trackNeg->GetInnerParam()->GetZ();
3269 Double_t distTPCinner = sqrt(pow((posY-negY),2.0)+pow((posZ-negZ),2.0));
3270 if(distTPCinner < fDistanceTPCInner) continue;
3271 fHistPiPiMonitorCuts->Fill(19);
3272 fHistPiPMonitorCuts[isSecd]->Fill(19);
3273 fHistPiAPMonitorCuts[isSecd]->Fill(19);
3275 //AliExternalTrackParam *extTParPos = (AliExternalTrackParam*)trackPos->GetTPCInnerParam();
3276 //Double_t tpcMomPos = extTParPos->GetP();
3277 Double_t tpcMomPos = trackPos->GetInnerParam()->GetP();
3278 // AliExternalTrackParam *extTParNeg = (AliExternalTrackParam*)trackNeg->GetTPCInnerParam();
3279 // Double_t tpcMomNeg = extTParNeg->GetP();
3280 Double_t tpcMomNeg = trackNeg->GetInnerParam()->GetP();
3284 if(fabs(posDaughterP)<fPPIDcut && tpcsigPos < 5.0){//no zero dedx values!
3285 pipidEdx =kFALSE;//k0s
3286 piapdEdx =kFALSE;//antilambda
3289 if(fabs(negDaughterP)<fPPIDcut && tpcsigNeg < 5.0){//no zero dedx values!
3290 pipidEdx =kFALSE;//k0s
3291 pipdEdx =kFALSE;//lambda
3294 if(fabs(posDaughterP)<fPPIDcut && (nSigmaTPCtrackPosToProton > fNSigma || tpcsigPos < 5.0)) pipdEdx =kFALSE;//lambda
3295 if(fabs(negDaughterP)<fPPIDcut && (nSigmaTPCtrackNegToProton > fNSigma || tpcsigNeg < 5.0)) piapdEdx =kFALSE;//antilambda
3297 if(fabs(fNSigma-fNSigma2) > 0.001){
3298 if(fabs(posDaughterP) >= fPPIDcut && (nSigmaTPCtrackPosToProton > fNSigma2 || tpcsigPos < 5.0)) pipdEdx =kFALSE;//lambda
3299 if(fabs(negDaughterP) >= fPPIDcut && (nSigmaTPCtrackNegToProton > fNSigma2 || tpcsigNeg < 5.0)) piapdEdx =kFALSE;//antilambda
3301 if(fabs(posDaughterP) >= fPPIDcut && tpcsigPos < 5.0){//no zero dedx values!
3302 pipidEdx =kFALSE;//k0s
3303 piapdEdx =kFALSE;//antilambda
3306 if(fabs(negDaughterP) >= fPPIDcut && tpcsigNeg < 5.0){//no zero dedx values!
3307 pipidEdx =kFALSE;//k0s
3308 pipdEdx =kFALSE;//lambda
3317 if(fabs(posDaughterP)<fPPIDcut && nSigmaTPCtrackPosToPion > fNSigma ){
3318 pipidEdx =kFALSE;//k0s
3321 if(fabs(negDaughterP)<fPPIDcut && nSigmaTPCtrackNegToPion > fNSigma ){
3322 pipidEdx =kFALSE;//k0s
3328 //------------------- DCA ---------------------//
3330 //-- between the daughters --//
3331 Double_t dcaDaughters = v0MIs->GetDcaV0Daughters();
3333 //-- to primary vertex --//
3335 Float_t bP[2],bN[2];
3336 Float_t bCovP[3],bCovN[3];
3338 trackPos->GetImpactParameters(bP,bCovP);
3339 trackNeg->GetImpactParameters(bN,bCovN);
3341 if (bCovP[0]<=0 || bCovP[2]<=0) {
3342 AliDebug(1, "Estimated b resolution lower or equal zero!");
3343 bCovP[0]=0; bCovP[2]=0;
3345 if (bCovN[0]<=0 || bCovN[2]<=0) {
3346 AliDebug(1, "Estimated b resolution lower or equal zero!");
3347 bCovN[0]=0; bCovN[2]=0;
3350 Float_t dcaToVertexZPos = bP[1];//Float_t dcaToVertexXY = b[0];
3351 Float_t dcaToVertexZNeg = bN[1];//Float_t dcaToVertexXY = b[0];
3354 Float_t dcaToVertexZPos = 0.0, dcaToVertexZNeg = 0.0;
3355 Float_t bP=0.0,bN=0.0;
3356 trackPos->GetImpactParameters(bP,dcaToVertexZPos);
3357 trackNeg->GetImpactParameters(bN,dcaToVertexZNeg);
3360 Double_t dcaToVertexZPos = 0.0, dcaToVertexZNeg = 0.0;
3361 AliExternalTrackParam *parPos = NULL;
3362 AliExternalTrackParam *parNeg = NULL;
3363 Double_t dcaYZP[2],dcaYZN[2],covar[3];
3365 parPos = new AliExternalTrackParam( *v0MIs->GetParamP());
3366 parNeg = new AliExternalTrackParam( *v0MIs->GetParamN());
3369 parPos = new AliExternalTrackParam( *v0MIs->GetParamN());
3370 parNeg = new AliExternalTrackParam( *v0MIs->GetParamP());
3372 Bool_t checkProp = parPos->PropagateToDCA(fESD->GetPrimaryVertex(),fESD->GetMagneticField(),40.0,dcaYZP,covar);
3373 dcaToVertexZPos = dcaYZP[1];
3375 checkProp = parNeg->PropagateToDCA(fESD->GetPrimaryVertex(),fESD->GetMagneticField(),40.0,dcaYZN,covar);
3376 dcaToVertexZNeg = dcaYZN[1];
3380 Double_t dcaPosToVertex=0.0,dcaNegToVertex=0.0;
3381 Double_t dzPos=(primaryVtxPosition[0]-xr[0])*ppTrack.Y() - (primaryVtxPosition[1]-xr[1])*ppTrack.X();
3382 dcaPosToVertex=TMath::Sqrt(dzPos*dzPos/(pow(ppTrack.X(),2)+pow(ppTrack.Y(),2)));
3383 Double_t dzNeg=(primaryVtxPosition[0]-xr[0])*pmTrack.Y() - (primaryVtxPosition[1]-xr[1])*pmTrack.X();
3384 dcaNegToVertex=TMath::Sqrt(dzNeg*dzNeg/(pow(pmTrack.X(),2)+pow(pmTrack.Y(),2)));
3386 // Double_t dcaPosToVertex[3];dcaNegToVertex[3];
3387 // trackPos->GetImpactParameters(dcaPosToVertex[0],dcaPosToVertex[1]);
3388 // trackNeg->GetImpactParameters(dcaNegToVertex[0],dcaNegToVertex[1]);
3390 // dcaPosToVertex = TMath::Sqrt(dcaPosToVertex[0]*dcaPosToVertex[0]+dcaPosToVertex[1]*dcaPosToVertex[1]);
3391 // dcaNegToVertex = TMath::Sqrt(dcaNegToVertex[0]*dcaNegToVertex[0]+dcaNegToVertex[1]*dcaNegToVertex[1]);
3393 // dcaPosToVertex = posPKF->GetDistanceFromVertexXY(primaryVtxPosition);
3394 // dcaNegToVertex = negPiKF->GetDistanceFromVertexXY(primaryVtxPosition);
3396 Double_t dcaV0ToPrimVertex= v0MIs->GetD(primaryVtxPosition[0],primaryVtxPosition[1]);////v0K0KF.GetDistanceFromVertexXY(tPrimaryVtxPosition);
3398 //------------------- decay length V0 -------------//
3401 Double_t decayLength = sqrt( pow(xr[0] - primaryVtxPosition[0],2.0)
3402 +pow(xr[1] - primaryVtxPosition[1],2.0)
3403 +pow(xr[2] - primaryVtxPosition[2],2.0)
3405 //2D decay radius already calculated for track length cut
3407 //-- decay radius xy min cut --//
3408 if(dim2V0Radius < fDecayRadXYMin && ptK0s < fPtDecRadMin) continue;
3409 // if(fabs(xr[1])<fDecayRadY) continue;
3410 fHistPiPiMonitorCuts->Fill(20);
3411 fHistPiPMonitorCuts[isSecd]->Fill(20);
3412 fHistPiAPMonitorCuts[isSecd]->Fill(20);
3414 //-- decay radius xy max cut --//
3415 if(dim2V0Radius > fDecayRadXYMax) continue;
3416 // if(fabs(xr[1])<fDecayRadY) continue;
3417 fHistPiPiMonitorCuts->Fill(21);
3418 fHistPiPMonitorCuts[isSecd]->Fill(21);
3419 fHistPiAPMonitorCuts[isSecd]->Fill(21);
3421 //-- 3D decay length min ->ctau --//
3422 if(decayLength > fDecayLengthMax) continue;
3423 fHistPiPiMonitorCuts->Fill(22);
3424 fHistPiPMonitorCuts[isSecd]->Fill(22);
3425 fHistPiAPMonitorCuts[isSecd]->Fill(22);
3427 //-- 3D decay length min cut --//
3428 if(decayLength < fDecayLengthMin) continue;
3429 fHistPiPiMonitorCuts->Fill(23);
3430 fHistPiPMonitorCuts[isSecd]->Fill(23);
3431 fHistPiAPMonitorCuts[isSecd]->Fill(23);
3435 //----------------------- V0 variables --------------------//
3436 //-- armenteros --//
3437 TVector3 momTot = ppTrack + pmTrack;
3438 Double_t lQlNeg = fabs(pmTrack.Dot(momTot)/momTot.Mag());
3439 Double_t lQlPos = fabs(ppTrack.Dot(momTot)/momTot.Mag());
3440 //return 1.-2./(1.+lQlNeg/lQlPos);
3442 Double_t den = lQlPos + lQlNeg;
3443 if(den>0) alfa = (lQlPos - lQlNeg)/den;
3444 TVector3 qtvec= pmTrack.Cross(momTot);//vecPip.Mag()*sqrt(1-pow(thetapip,2));
3445 Double_t qt = qtvec.Mag()/momTot.Mag();
3450 Double_t massK0s = v0K0.M();
3451 Double_t massLambda = v0Lambda.M();
3452 Double_t massALambda = v0ALambda.M();
3454 Double_t energyE1 = sqrt(ppTrack.Mag2()+pow(0.51099e-03,2.0));
3455 Double_t energyE2 = sqrt(pmTrack.Mag2()+pow(0.51099e-03,2.0));
3456 TLorentzVector e1(ppTrack,energyE1);
3457 TLorentzVector e2(pmTrack,energyE2);
3458 TLorentzVector photon = e1+e2;
3459 Double_t massPhoton = photon.M();
3462 Double_t rapK0s = v0MIs->Y(310);
3463 Double_t rapL = v0MIs->Y(3122);
3464 Double_t rapAL = v0MIs->Y(3122);
3466 //-- other variables --//
3467 Double_t opAng = fabs(ppTrack.Angle(pmTrack));
3468 Double_t cosOPAng = v0MIs->GetV0CosineOfPointingAngle();
3470 // if( ppTrack.Angle(pmTrack)<0.001) continue;
3471 // if( ppTrack.Angle(pmTrack)<0.004) continue;
3473 Double_t px = v0K0.Px();
3474 Double_t py = v0K0.Py();
3475 Double_t phi = TMath::Pi()+TMath::ATan2(-py, -px);
3476 Double_t eta = v0K0.Eta();
3479 //introduce more histo
3480 Double_t errOnMassK0s = v0MIs->ChangeMassHypothesis(310);
3481 Double_t errOnMassLambda = 0.0;
3482 Double_t errOnMassALambda = 0.0;
3484 errOnMassLambda = v0MIs->ChangeMassHypothesis(3122);
3485 errOnMassALambda = v0MIs->ChangeMassHypothesis(-3122);
3488 errOnMassLambda = v0MIs->ChangeMassHypothesis(-3122);
3489 errOnMassALambda = v0MIs->ChangeMassHypothesis(3122);
3493 //------------------ cut flags for V0 type specific cuts --------------//
3494 Bool_t cutOKK0s = kTRUE;
3495 Bool_t cutOKLambda = kTRUE;
3496 Bool_t cutOKALambda = kTRUE;
3498 //-------------------------- K0 cuts -----------------------------//
3500 if(dcaV0ToPrimVertex > fDCAToVertexK0) cutOKK0s = kFALSE;
3501 else fHistPiPiMonitorCuts->Fill(24);
3503 if(fabs(xr[2])> fDCAZ) cutOKK0s = kFALSE; //like decay radius z component
3504 else fHistPiPiMonitorCuts->Fill(25);
3506 Double_t ctK0 = 0.0,ctTK0 = 0.0;
3507 if(fabs(pK0s)>0.0) ctK0 = decayLength*0.497614/pK0s;
3508 if(fabs(ptK0s)>0.0) ctTK0 = dim2V0Radius*0.497614/ptK0s;
3509 if(ctK0 > fCtauK0s && fabs(ptK0s) <fCtauPtCutK0) cutOKK0s = kFALSE;
3510 else fHistPiPiMonitorCuts->Fill(26);
3512 if((cosOPAng < fCosPointAngK && fabs(ptK0s) > fCPAPtCutK0)|| cosOPAng<0.99)///xxx
3514 else fHistPiPiMonitorCuts->Fill(27);
3516 if(dcaDaughters > fDCADaughtersK0 )cutOKK0s = kFALSE;
3517 else fHistPiPiMonitorCuts->Fill(28);
3519 if(dcaNegToVertex < fDCADaughtersToVtxSmall || dcaPosToVertex < fDCADaughtersToVtxSmall) cutOKK0s = kFALSE;
3520 else fHistPiPiMonitorCuts->Fill(29);
3522 if(fRapCutV0 && fabs(rapK0s) > fRap) cutOKK0s = kFALSE;
3523 else fHistPiPiMonitorCuts->Fill(30);
3525 // if(chi2K0C > fChiCutKf) cutOKK0s = kFALSE;
3526 if(opAng < fOpengAngleDaughters && fabs(ptK0s) < fOpAngPtCut ) cutOKK0s = kFALSE;
3527 else fHistPiPiMonitorCuts->Fill(31);
3529 Bool_t ptbinokK0s=kFALSE;
3530 if( ptK0s < fQtCutPt && ptK0s > fQtCutPtLow ) ptbinokK0s=kTRUE;
3532 Double_t qtval = fArmQtSlope*fabs(alfa);
3534 if(fArmCutK0 && ptbinokK0s && qt < qtval) cutOKK0s = kFALSE;
3535 else fHistPiPiMonitorCuts->Fill(32);
3536 if(fArmCutK0 && ptbinokK0s && qt < fQtCut) cutOKK0s = kFALSE;
3540 //-------------------------- Lambda cuts -------------------------//
3541 if(dcaV0ToPrimVertex > fDCAToVertexL) cutOKLambda = kFALSE;
3542 else fHistPiPMonitorCuts[isSecd]->Fill(24);
3544 if(fabs(xr[2])>fDCAZ) cutOKLambda = kFALSE; //like decay radius z component
3545 else fHistPiPMonitorCuts[isSecd]->Fill(25);
3547 Double_t ctL = 0.0,ctTL=0.0;
3548 if(fabs(pLambda)>0.0) ctL = decayLength*1.115683/fabs(pLambda);
3549 if(fabs(ptLambda)>0.0) ctTL = dim2V0Radius*1.115683/fabs(ptLambda);
3551 if(ctL > fCtauL && fabs(ptLambda) <fCtauPtCutL) cutOKLambda = kFALSE;
3552 else fHistPiPMonitorCuts[isSecd]->Fill(26);
3554 if((cosOPAng<fCosPointAngL && fabs(ptLambda) > fCPAPtCutL)|| cosOPAng<0.99)///xxx
3555 cutOKLambda = kFALSE;
3556 else fHistPiPMonitorCuts[isSecd]->Fill(27);
3558 if(dcaDaughters > fDCADaughtersL )cutOKLambda = kFALSE;
3559 else fHistPiPMonitorCuts[isSecd]->Fill(28);
3561 if( dcaNegToVertex < fDCADaughtersToVtxSmall || dcaPosToVertex < fDCADaughtersToVtxLarge) cutOKLambda = kFALSE;
3562 else fHistPiPMonitorCuts[isSecd]->Fill(29);
3564 if(fRapCutV0 && fabs(rapL) > fRap) cutOKLambda = kFALSE;
3565 else fHistPiPMonitorCuts[isSecd]->Fill(30);
3569 if(chi2LambdaC > fChiCutKf) cutOKLambda = kFALSE;
3570 else fHistPiPMonitorCuts[isSecd]->Fill(20);
3573 if(opAng < fOpengAngleDaughters && fabs(ptLambda) < fOpAngPtCut ) cutOKLambda = kFALSE;
3574 else fHistPiPMonitorCuts[isSecd]->Fill(31);
3577 if(alfa<fAlfaCut || (fArmCutL && qt > fQtCut)) cutOKLambda = kFALSE;
3578 else fHistPiPMonitorCuts[isSecd]->Fill(32);
3582 //--------------------------- ALambda cuts --------------------------//
3584 if(dcaV0ToPrimVertex > fDCAToVertexL) cutOKALambda = kFALSE;
3585 else fHistPiAPMonitorCuts[isSecd]->Fill(24);
3587 if(fabs(xr[2])> fDCAZ) cutOKALambda = kFALSE;//continue;//like decay radius z component
3588 else fHistPiAPMonitorCuts[isSecd]->Fill(25);
3590 Double_t ctAL = 0.0,ctTAL=0.0;
3591 if(fabs(pALambda)>0.0) ctAL = decayLength*1.115683/fabs(pALambda);
3592 if(fabs(ptALambda)>0.0) ctTAL = dim2V0Radius*1.115683/fabs(ptALambda);
3593 if(ctAL > fCtauL && fabs(ptALambda) <fCtauPtCutL) cutOKALambda = kFALSE;
3594 else fHistPiAPMonitorCuts[isSecd]->Fill(26);
3596 if((cosOPAng<fCosPointAngL && fabs(ptALambda) > fCPAPtCutL)|| cosOPAng<0.99) cutOKALambda = kFALSE;///xxx
3597 else fHistPiAPMonitorCuts[isSecd]->Fill(27);
3599 if(dcaDaughters > fDCADaughtersAL )cutOKALambda = kFALSE;
3600 else fHistPiAPMonitorCuts[isSecd]->Fill(28);
3602 if( dcaPosToVertex < fDCADaughtersToVtxSmall || dcaNegToVertex < fDCADaughtersToVtxLarge) cutOKALambda = kFALSE;
3603 else fHistPiAPMonitorCuts[isSecd]->Fill(29);
3605 if(fRapCutV0 && fabs(rapAL) > fRap) cutOKALambda = kFALSE;
3606 else fHistPiAPMonitorCuts[isSecd]->Fill(30);
3609 if(chi2ALambdaC > fChiCutKf) cutOKALambda = kFALSE;
3610 else fHistPiAPMonitorCuts[isSecd]->Fill(20);
3613 if(opAng < fOpengAngleDaughters && fabs(ptALambda) < fOpAngPtCut ) cutOKALambda = kFALSE;
3614 else fHistPiAPMonitorCuts[isSecd]->Fill(31);
3617 if((fArmCutL && qt>qtval) || alfa > -1.0*fAlfaCut) cutOKALambda = kFALSE;
3618 else fHistPiAPMonitorCuts[isSecd]->Fill(32);
3621 //---------- check pdg codes of BG --------------------//
3624 if(fMCMode && !fMCTruthMode) pdgBG = FindPDGCode(stackRec,trackPos,trackNeg);
3626 //----------------------------------------------- V0 ana -----------------------------------------------------------------------//
3628 //-- cut flags for furhter histos--//
3629 Bool_t k0sOK=kFALSE;
3630 Bool_t lambdaOK=kFALSE;
3631 Bool_t alambdaOK=kFALSE;
3634 //------ Check for K0 ------//
3635 Bool_t exMass = kFALSE;
3636 if(fabs(1.115 - massLambda) < fExcludeLambdaFromK0s){
3640 if(fabs(1.115 - massALambda) < fExcludeLambdaFromK0s){
3645 if(fabs(massPhoton) < fExcludePhotonsFromK0s) {
3651 if( cutOKK0s && fillK0sMC ){
3652 fHistDedxPiPlus[isSecd]->Fill(tpcMomPos,tpcsigPos);
3653 fHistDedxPiMinus[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3654 fHistPiPiMonitorCuts->Fill(33);
3656 fHistPiPiMonitorCuts->Fill(34);
3658 if(!exMass && massK0s > fK0sLowMassCut && massK0s < fK0sHighMassCut ){
3659 if(!(fMCMode && fMCTruthMode)){
3661 declengthV0MC = dim2V0Radius;
3663 fHistPiPiMonitorCuts->Fill(35);
3664 fHistPiPiMass->Fill(massK0s);
3665 fHistPiPiMassVSPt->Fill(massK0s,ptK0s);
3666 fHistPiPiMassVSPtMCTruth->Fill(massK0s,ptV0MC);
3667 fHistPiPiMassVSY->Fill(massK0s,rapK0s);
3668 fHistPiPiPtVSY->Fill(rapK0s,ptK0s);
3669 fHistPiPiDecayLengthVsMass->Fill(massK0s,dim2V0Radius);//decayLength);
3670 // fHistPiPiPhiPosVsPtPosVsMass->Fill(massK0s,ctTK0,ptV0MC);//,ctK0);//posDaughterPhi);//xxx
3671 Double_t valTHnK0s[4]= {massK0s,ptV0MC,eta,phi};
3672 Double_t valTHnK0sDauEta[4]= {massK0s,ptV0MC,posDaughterEta,negDaughterEta};
3673 Double_t valTHnK0sDauPhi[5]= {massK0s,posDaughterPhi,negDaughterPhi,double(nclsITSPos),double(nclsITSNeg)};
3674 if(massK0s >=0.35 && massK0s <= 0.65){
3675 fTHnFK0s->Fill(valTHnK0s);
3676 fTHnFK0sDauEta->Fill(valTHnK0sDauEta);
3677 fTHnFK0sDauPhi->Fill(valTHnK0sDauPhi);
3680 if(fMCMode && !fMCTruthMode){
3681 fHistPiPiPDGCode->Fill(pdgBG);
3682 if(pdgBG == -1) fHistPiPiNoMother->Fill(massK0s,ptV0MC);
3683 if(pdgBG == 22) fHistPiPiGA->Fill(massK0s,ptV0MC);
3684 if(pdgBG == 321) fHistPiPiKch->Fill(massK0s,ptV0MC);
3685 if(pdgBG == 333) fHistPiPiPhi->Fill(massK0s,ptV0MC);
3686 if(pdgBG == 3122) fHistPiPiL->Fill(massK0s,ptV0MC);
3687 if(pdgBG == 111) fHistPiPiPi0->Fill(massK0s,ptV0MC);
3688 if(pdgBG == 211) fHistPiPiPich->Fill(massK0s,ptV0MC);
3689 if(pdgBG == 113) fHistPiPiRoh->Fill(massK0s,ptV0MC);
3690 if(pdgBG == 223) fHistPiPiOmega->Fill(massK0s,ptV0MC);
3691 if(pdgBG == 313) fHistPiPiKStar->Fill(massK0s,ptV0MC);
3692 if(pdgBG == 310) fHistPiPiK0s->Fill(massK0s,ptV0MC);
3693 if(pdgBG == 130) fHistPiPiK0L->Fill(massK0s,ptV0MC);
3694 if(pdgBG == 2112) fHistPiPiN->Fill(massK0s,ptV0MC);
3695 if(pdgBG == 3112 || pdgBG ==3222) fHistPiPiSigma->Fill(massK0s,ptV0MC);
3696 if(pdgBG == 3312 || pdgBG ==3322) fHistPiPiXi->Fill(massK0s,ptV0MC);
3697 if(pdgBG == 2114 || pdgBG ==2224) fHistPiPiDelta->Fill(massK0s,ptV0MC);
3698 if(pdgBG >510 && pdgBG <532) fHistPiPiB->Fill(massK0s,ptV0MC);
3699 if(pdgBG >410 && pdgBG <444) fHistPiPiD->Fill(massK0s,ptV0MC);
3700 if(pdgBG == 331 && pdgBG ==221) fHistPiPiEta->Fill(massK0s,ptV0MC);
3704 if(massK0s > 0.46 && massK0s < 0.53) fHistPiPiDecayLengthVsPt->Fill(ptV0MC,dim2V0Radius);//decayLength
3705 // fHistPiPiPtDaughters->Fill(posDaughterPt,negDaughterPt);
3707 fHistPiPiRadiusXY->Fill(massK0s,opAng);
3708 fHistPiPiCosPointAng->Fill(massK0s,cosOPAng);
3709 fHistPiPiDecayLengthVsCtau->Fill(massK0s,ctTK0);
3710 fHistPiPiTrackLengthPosVsMass->Fill(massK0s,lengthTPCPos);
3711 fHistPiPiTrackLengthNegVsMass->Fill(massK0s,lengthTPCNeg);
3712 //fHistPiPiDCAZPos->Fill(massK0s,dcaToVertexZPos);
3713 //fHistPiPiDCAZNeg->Fill(massK0s,dcaToVertexZNeg);
3714 fHistPiPiDCADaughters->Fill(massK0s,dcaDaughters);
3715 fHistPiPiDCADaughterPosToPrimVtxVSMass->Fill(massK0s,dcaPosToVertex);
3716 fHistPiPiDCAVSMass->Fill(massK0s,dcaV0ToPrimVertex);
3720 fHistPiPiRadiusXY->Fill(ptV0MC,opAng);
3721 fHistPiPiCosPointAng->Fill(ptV0MC,cosOPAng);
3722 fHistPiPiDecayLengthVsCtau->Fill(ptV0MC,ctTK0);
3723 fHistPiPiTrackLengthPosVsMass->Fill(ptV0MC,lengthTPCPos);
3724 fHistPiPiTrackLengthNegVsMass->Fill(ptV0MC,lengthTPCNeg);
3725 //fHistPiPiDCAZPos->Fill(ptV0MC,dcaToVertexZPos);
3726 //fHistPiPiDCAZNeg->Fill(ptV0MC,dcaToVertexZNeg);
3727 fHistPiPiDCADaughters->Fill(ptV0MC,dcaDaughters);
3728 fHistPiPiDCADaughterPosToPrimVtxVSMass->Fill(ptV0MC,dcaPosToVertex);
3729 fHistPiPiDCAVSMass->Fill(ptV0MC,dcaV0ToPrimVertex);
3733 if(fMCMode && fMCTruthMode) fHistPiPiDecayLengthResolution->Fill(declengthV0MC,dim2V0Radius);
3735 fHistPiPiK0sVsLambdaMass->Fill(massLambda,massK0s);
3736 fHistPiPiK0sVsALambdaMass->Fill(massALambda,massK0s);
3738 fHistArmenteros[isSecd]->Fill(alfa,qt);
3739 fHistDedxSecPiPlus[isSecd]->Fill(tpcMomPos,tpcsigPos);
3740 fHistDedxSecPiMinus[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3742 fHistV0RadiusZ[isSecd]->Fill(dim2V0Radius,xr[2]);
3743 fHistV0RadiusXY[isSecd]->Fill(xr[0],xr[1]);
3744 fHistV0RadiusZVSPt[isSecd]->Fill(ptK0s,dim2V0Radius);
3745 fHistV0RadiusXYVSY[isSecd]->Fill(rapK0s,dim2V0Radius);
3747 //-- detector values --/
3748 fHistNclsITS[1]->Fill(nclsITSPos,nclsITSNeg);
3749 fHistNclsTPC[1]->Fill(crossedRowsTPCNeg,nclsTPCNeg);
3752 fHistNclsITSPosK0->Fill(massK0s,nclsITSPos);
3753 fHistNclsITSNegK0->Fill(massK0s,nclsITSNeg);
3754 fHistNclsTPCPosK0->Fill(massK0s,nclsTPCPos);
3755 fHistNclsTPCNegK0->Fill(massK0s,nclsTPCNeg);
3756 fHistChi2PerNclsITSPosK0->Fill(massK0s,chi2PerClusterITSPos);
3757 fHistChi2PerNclsITSNegK0->Fill(massK0s,chi2PerClusterITSNeg);
3758 fHistNCRowsTPCPosK0->Fill(massK0s,crossedRowsTPCPos);
3759 fHistNCRowsTPCNegK0->Fill(massK0s,crossedRowsTPCNeg);
3760 fHistRatioFoundOverFinableTPCK0Neg->Fill(massK0s,ratioFoFi);
3761 fHistRatioFoundOverFinableTPCK0Pos->Fill(massK0s,ratioFoFiPos);
3764 fHistNclsITSPosK0->Fill(ptV0MC,nclsITSPos);
3765 fHistNclsITSNegK0->Fill(ptV0MC,nclsITSNeg);
3766 fHistNclsTPCPosK0->Fill(ptV0MC,nclsTPCPos);
3767 fHistNclsTPCNegK0->Fill(ptV0MC,nclsTPCNeg);
3768 fHistChi2PerNclsITSPosK0->Fill(ptV0MC,chi2PerClusterITSPos);
3769 fHistChi2PerNclsITSNegK0->Fill(ptV0MC,chi2PerClusterITSNeg);
3770 fHistNCRowsTPCPosK0->Fill(ptV0MC,crossedRowsTPCPos);
3771 fHistNCRowsTPCNegK0->Fill(ptV0MC,crossedRowsTPCNeg);
3772 fHistRatioFoundOverFinableTPCK0Neg->Fill(ptV0MC,ratioFoFi);
3773 fHistRatioFoundOverFinableTPCK0Pos->Fill(ptV0MC,ratioFoFiPos);
3781 //------ Check for Lambda -------//
3782 Bool_t exMassL =kFALSE;
3783 if(fabs(0.497 - massK0s) < fExcludeK0sFromLambda){
3784 cutOKLambda = kFALSE;
3787 if(fabs(massPhoton) < fExcludePhotonsFromLambda) {
3788 cutOKLambda = kFALSE;
3792 if(ptLambda > fMinPt){
3793 if(cutOKLambda && fillLambdaMC){
3794 fHistDedxProt[isSecd]->Fill(tpcMomPos,tpcsigPos);
3795 fHistDedxPiMinus[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3796 fHistPiPMonitorCuts[isSecd]->Fill(33);
3798 fHistPiPMonitorCuts[isSecd]->Fill(34);
3800 if(!exMassL && massLambda > fLLowMassCut && massLambda < fLHighMassCut){// 1.05 && massLambda < 1.25 ){
3801 if(!(fMCMode && fMCTruthMode)) {
3803 declengthV0MC = dim2V0Radius;
3805 fHistPiPMonitorCuts[isSecd]->Fill(35);
3806 fHistPiPMass[isSecd]->Fill(massLambda);
3807 fHistPiPMassVSPt[isSecd]->Fill(massLambda,ptLambda);
3808 fHistPiPMassVSPtMCTruth[isSecd]->Fill(massLambda,ptV0MC);
3809 fHistPiPMassVSY[isSecd]->Fill(massLambda,rapL);
3810 fHistPiPPtVSY[isSecd]->Fill(rapL,ptLambda);
3811 //fHistPiPDecayLengthVsPt[isSecd]->Fill(ptLambda,ctL);
3812 Double_t valTHnL[4]= {massLambda,ptV0MC,eta,phi};
3813 Double_t valTHnLDauEta[4]= {massLambda,ptV0MC,posDaughterEta,negDaughterEta};
3814 Double_t valTHnLDauPhi[5]= {massLambda,posDaughterPhi,negDaughterPhi,double(nclsITSPos),double(nclsITSNeg)};
3815 if(massLambda >=1.07 && massLambda <= 1.17){
3816 fTHnFL->Fill(valTHnL);
3817 fTHnFLDauEta->Fill(valTHnLDauEta);
3818 fTHnFLDauPhi->Fill(valTHnLDauPhi);
3821 if(fMCMode && !fMCTruthMode) {
3822 fHistPiPPDGCode->Fill(pdgBG);
3823 if(pdgBG == 22) fHistPiPGA->Fill(massLambda,ptV0MC);
3824 if(pdgBG == 321) fHistPiPKch->Fill(massLambda,ptV0MC);
3825 if(pdgBG == 310) fHistPiPK0s->Fill(massLambda,ptV0MC);
3826 if(pdgBG == 111) fHistPiPPi0->Fill(massLambda,ptV0MC);
3827 if(pdgBG == 211) fHistPiPPich->Fill(massLambda,ptV0MC);
3828 if(pdgBG == 313) fHistPiPKStar->Fill(massLambda,ptV0MC);
3829 if(pdgBG == 2112) fHistPiPN->Fill(massLambda,ptV0MC);
3830 if(pdgBG == 3122) fHistPiPL->Fill(massLambda,ptV0MC);
3831 if(pdgBG == -1) fHistPiPNoMother->Fill(massLambda,ptV0MC);
3834 if( massLambda > 1.108 && massLambda < 1.123 ) fHistPiPDecayLengthVsPt[isSecd]->Fill(ptV0MC,dim2V0Radius);//decayLength);
3835 fHistPiPDecayLengthVsMass[isSecd]->Fill(massLambda,dim2V0Radius);//decayLength);
3838 fHistPiPRadiusXY[isSecd]->Fill(massLambda,opAng);
3839 fHistPiPCosPointAng[isSecd]->Fill(massLambda,cosOPAng);
3840 fHistPiPTrackLengthPosVsMass[isSecd]->Fill(massLambda,lengthTPCPos);
3841 fHistPiPTrackLengthNegVsMass[isSecd]->Fill(massLambda,lengthTPCNeg);
3842 //fHistPiPDCAZPos[isSecd]->Fill(massLambda,dcaToVertexZPos);
3843 //fHistPiPDCAZNeg[isSecd]->Fill(massLambda,dcaToVertexZNeg);
3844 fHistPiPDCADaughters[isSecd]->Fill(massLambda,dcaDaughters);
3845 fHistPiPDCAVSMass[isSecd]->Fill(massLambda,dcaV0ToPrimVertex);
3846 fHistPiPDCADaughterPosToPrimVtxVSMass[isSecd]->Fill(massLambda,dcaPosToVertex);
3847 fHistPiPDCADaughterNegToPrimVtxVSMass[isSecd]->Fill(massLambda,dcaNegToVertex);
3848 fHistPiPDecayLengthVsCtau[isSecd]->Fill(massLambda,ctTL);
3851 fHistPiPRadiusXY[isSecd]->Fill(ptV0MC,opAng);
3852 fHistPiPCosPointAng[isSecd]->Fill(ptV0MC,cosOPAng);
3853 fHistPiPTrackLengthPosVsMass[isSecd]->Fill(ptV0MC,lengthTPCPos);
3854 fHistPiPTrackLengthNegVsMass[isSecd]->Fill(ptV0MC,lengthTPCNeg);
3855 //fHistPiPDCAZPos[isSecd]->Fill(ptV0MC,dcaToVertexZPos);
3856 //fHistPiPDCAZNeg[isSecd]->Fill(ptV0MC,dcaToVertexZNeg);
3857 fHistPiPDCADaughters[isSecd]->Fill(ptV0MC,dcaDaughters);
3858 fHistPiPDCAVSMass[isSecd]->Fill(ptV0MC,dcaV0ToPrimVertex);
3859 fHistPiPDCADaughterPosToPrimVtxVSMass[isSecd]->Fill(ptV0MC,dcaPosToVertex);
3860 fHistPiPDCADaughterNegToPrimVtxVSMass[isSecd]->Fill(ptV0MC,dcaNegToVertex);
3861 fHistPiPDecayLengthVsCtau[isSecd]->Fill(ptV0MC,ctTL);
3864 if(fMCMode && fMCTruthMode) fHistPiPDecayLengthResolution[isSecd]->Fill(declengthV0MC,dim2V0Radius);
3865 // fHistPiPPtDaughters[isSecd]->Fill(posDaughterPt,negDaughterPt);
3866 fHistPiPK0sVsLambdaMass->Fill(massLambda,massK0s);
3867 fHistPiPALambdaVsLambdaMass->Fill(massLambda,massALambda);
3869 //-- secondaries --//
3871 if(fabs(pdgMother) == 3112 || fabs(pdgMother) == 3114 || fabs(pdgMother) == 3222 || fabs(pdgMother) == 3224 || fabs(pdgMother) == 3214 ){
3872 fHistPiPMassVSPtSecSigma[1]->Fill(massLambda,ptLambda);
3874 if(pdgMother == 3322 || pdgMother == 3312){//Xi0 and xi minus
3875 fHistPiPCosPointAngXiVsPt->Fill(ptLambda,cosOPAng);
3876 fHistPiPMassVSPtSecXi[1]->Fill(massLambda,ptLambda);
3877 fHistPiPMassVSPtSecXiMCTruth->Fill(massLambda,ptV0MC);
3878 fHistPiPMassVSYSecXi[1]->Fill(massLambda,rapL);
3879 fHistPiPXi0PtVSLambdaPt[1]->Fill(ptLambda,ptXiMother);
3881 if(pdgMother == 3334){//Omega
3882 fHistPiPMassVSPtSecOmega[1]->Fill(massLambda,ptLambda);
3883 fHistPiPMassVSPtSecOmegaMCTruth->Fill(massLambda,ptV0MC);
3884 fHistPiPOmegaPtVSLambdaPt[1]->Fill(ptLambda,ptXiMother);
3888 if(ptLambda > 0.4) fHistArmenteros[isSecd]->Fill(alfa,qt);
3889 fHistV0RadiusZ[isSecd]->Fill(dim2V0Radius,xr[2]);
3890 fHistV0RadiusXY[isSecd]->Fill(xr[0],xr[1]);
3891 fHistV0RadiusZVSPt[isSecd]->Fill(ptLambda,dim2V0Radius);
3892 fHistV0RadiusXYVSY[isSecd]->Fill(rapL,dim2V0Radius);
3893 fHistDedxSecProt[isSecd]->Fill(tpcMomPos,tpcsigPos);
3894 fHistDedxSecPiMinus[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3897 //-- detector values --//
3898 fHistNclsITS[0]->Fill(nclsITSPos,nclsITSNeg);
3899 fHistNclsTPC[0]->Fill(crossedRowsTPCNeg,nclsTPCNeg);
3901 fHistNclsITSPosL[isSecd]->Fill(massLambda,nclsITSPos);
3902 fHistNclsITSNegL[isSecd]->Fill(massLambda,nclsITSNeg);
3903 fHistNclsTPCPosL[isSecd]->Fill(massLambda,nclsTPCPos);
3904 fHistNclsTPCNegL[isSecd]->Fill(massLambda,nclsTPCNeg);
3905 fHistChi2PerNclsITSPosL[isSecd]->Fill(massLambda,chi2PerClusterITSPos);
3906 fHistChi2PerNclsITSNegL[isSecd]->Fill(massLambda,chi2PerClusterITSNeg);
3907 fHistNCRowsTPCPosL[isSecd]->Fill(massLambda,crossedRowsTPCPos);
3908 fHistNCRowsTPCNegL[isSecd]->Fill(massLambda,crossedRowsTPCNeg);
3909 fHistRatioFoundOverFinableTPCLNeg[isSecd]->Fill(massLambda,ratioFoFi);
3910 fHistRatioFoundOverFinableTPCLPos[isSecd]->Fill(massLambda,ratioFoFiPos);
3913 fHistNclsITSPosL[isSecd]->Fill(ptV0MC,nclsITSPos);
3914 fHistNclsITSNegL[isSecd]->Fill(ptV0MC,nclsITSNeg);
3915 fHistNclsTPCPosL[isSecd]->Fill(ptV0MC,nclsTPCPos);
3916 fHistNclsTPCNegL[isSecd]->Fill(ptV0MC,nclsTPCNeg);
3917 fHistChi2PerNclsITSPosL[isSecd]->Fill(ptV0MC,chi2PerClusterITSPos);
3918 fHistChi2PerNclsITSNegL[isSecd]->Fill(ptV0MC,chi2PerClusterITSNeg);
3919 fHistNCRowsTPCPosL[isSecd]->Fill(ptV0MC,crossedRowsTPCPos);
3920 fHistNCRowsTPCNegL[isSecd]->Fill(ptV0MC,crossedRowsTPCNeg);
3921 fHistRatioFoundOverFinableTPCLNeg[isSecd]->Fill(ptV0MC,ratioFoFi);
3922 fHistRatioFoundOverFinableTPCLPos[isSecd]->Fill(ptV0MC,ratioFoFiPos);
3932 //-- Check for AntiLambda --//
3933 Bool_t exMassAL =kFALSE;
3934 if(fabs(0.497 - massK0s) < fExcludeK0sFromLambda){
3937 if(fabs(massPhoton) < fExcludePhotonsFromLambda) {
3941 if(ptALambda > fMinPt){
3942 if(cutOKALambda && fillALambdaMC){
3943 fHistDedxAProt[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3944 fHistDedxPiPlus[isSecd]->Fill(tpcMomPos,tpcsigPos);
3945 fHistPiAPMonitorCuts[isSecd]->Fill(33);
3947 fHistPiAPMonitorCuts[isSecd]->Fill(34);
3949 if( !exMassAL && massALambda > fLLowMassCut && massALambda < fLHighMassCut){//1.05 && massALambda < 1.25 ){
3950 if(!(fMCMode && fMCTruthMode)) {
3952 declengthV0MC = dim2V0Radius;
3954 fHistPiAPMonitorCuts[isSecd]->Fill(35);
3955 fHistPiAPMass[isSecd]->Fill(massALambda);
3956 fHistPiAPMassVSPt[isSecd]->Fill(massALambda,ptALambda);
3957 fHistPiAPMassVSPtMCTruth[isSecd]->Fill(massALambda,ptV0MC);
3958 fHistPiAPMassVSY[isSecd]->Fill(massALambda,rapAL);
3959 fHistPiAPPtVSY[isSecd]->Fill(rapAL,ptALambda);
3960 // fHistPiAPPtDaughters[isSecd]->Fill(posDaughterPt,negDaughterPt);
3961 // fHistPiAPPhiPosVsPtPosVsMass->Fill(massALambda,ctTAL,ptV0MC);//
3962 // if(isSecd < 1) fHistPiPPhiPosVsPtPosVsMass->Fill(massLambda,ctTL,ptV0MC);//
3964 // if(fMCTruthMode) fHistPiAPPhiPosVsPtPosVsMass->Fill(massLambda,ctTL,ptV0MC);
3967 Double_t valTHnAL[4]= {massALambda,ptV0MC,eta,phi};
3968 Double_t valTHnALDauEta[4]={massALambda,ptV0MC,posDaughterEta,negDaughterEta};
3969 Double_t valTHnALDauPhi[5]={massALambda,posDaughterPhi,negDaughterPhi,double(nclsITSPos),double(nclsITSNeg)};
3970 if(massALambda >=1.07 && massALambda <= 1.17){
3971 fTHnFALDauEta->Fill(valTHnALDauEta);
3972 fTHnFALDauPhi->Fill(valTHnALDauPhi);
3973 fTHnFAL->Fill(valTHnAL);
3975 if(fMCMode && !fMCTruthMode) fHistPiAPPDGCode->Fill(pdgBG);
3976 if( massALambda>1.108 && massALambda<1.123 ) fHistPiAPDecayLengthVsPt[isSecd]->Fill(ptV0MC,dim2V0Radius);//decayLength);
3977 fHistPiAPDecayLengthVsMass[isSecd]->Fill(massALambda,dim2V0Radius);//decayLength);
3980 fHistPiAPRadiusXY[isSecd]->Fill(massALambda,opAng);
3981 fHistPiAPCosPointAng[isSecd]->Fill(massALambda,cosOPAng);
3982 fHistPiAPTrackLengthPosVsMass[isSecd]->Fill(massALambda,lengthTPCPos);
3983 fHistPiAPTrackLengthNegVsMass[isSecd]->Fill(massALambda,lengthTPCNeg);
3984 //fHistPiAPDCAZPos[isSecd]->Fill(massALambda,dcaToVertexZPos);
3985 //fHistPiAPDCAZNeg[isSecd]->Fill(massALambda,dcaToVertexZNeg);
3986 fHistPiAPDCADaughters[isSecd]->Fill(massALambda,dcaDaughters);
3987 fHistPiAPDCAVSMass[isSecd]->Fill(massALambda,dcaV0ToPrimVertex);
3988 fHistPiAPDCADaughterPosToPrimVtxVSMass[isSecd]->Fill(massALambda,dcaPosToVertex);
3989 fHistPiAPDCADaughterNegToPrimVtxVSMass[isSecd]->Fill(massALambda,dcaNegToVertex);
3990 fHistPiAPDecayLengthVsCtau[isSecd]->Fill(massALambda,ctTAL);
3993 fHistPiAPRadiusXY[isSecd]->Fill(ptV0MC,opAng);
3994 fHistPiAPCosPointAng[isSecd]->Fill(ptV0MC,cosOPAng);
3995 fHistPiAPTrackLengthPosVsMass[isSecd]->Fill(ptV0MC,lengthTPCPos);
3996 fHistPiAPTrackLengthNegVsMass[isSecd]->Fill(ptV0MC,lengthTPCNeg);
3997 //fHistPiAPDCAZPos[isSecd]->Fill(ptV0MC,dcaToVertexZPos);
3998 //fHistPiAPDCAZNeg[isSecd]->Fill(ptV0MC,dcaToVertexZNeg);
3999 fHistPiAPDCADaughters[isSecd]->Fill(ptV0MC,dcaDaughters);
4000 fHistPiAPDCAVSMass[isSecd]->Fill(ptV0MC,dcaV0ToPrimVertex);
4001 fHistPiAPDCADaughterPosToPrimVtxVSMass[isSecd]->Fill(ptV0MC,dcaPosToVertex);
4002 fHistPiAPDCADaughterNegToPrimVtxVSMass[isSecd]->Fill(ptV0MC,dcaNegToVertex);
4003 fHistPiAPDecayLengthVsCtau[isSecd]->Fill(ptV0MC,ctTAL);
4006 if(fMCMode && fMCTruthMode) fHistPiAPDecayLengthResolution[isSecd]->Fill(declengthV0MC,dim2V0Radius);
4007 fHistPiAPK0sVsALambdaMass->Fill(massALambda,massK0s);
4008 fHistPiAPLambdaVsALambdaMass->Fill(massALambda,massLambda);
4010 //-- secondaries --//
4012 if(fabs(pdgMother) == 3112 || fabs(pdgMother) == 3114 || fabs(pdgMother) == 3222 || fabs(pdgMother) == 3224 || fabs(pdgMother) == 3214 ){
4013 fHistPiAPMassVSPtSecSigma[1]->Fill(massLambda,ptLambda);
4015 if(pdgMother == -3322 || pdgMother == -3312){//Xi0 and xiplus
4016 fHistPiAPCosPointAngXiVsPt->Fill(ptALambda,cosOPAng);
4017 fHistPiAPMassVSPtSecXi[1]->Fill(massALambda,ptALambda);
4018 fHistPiAPMassVSPtSecXiMCTruth->Fill(massALambda,ptV0MC);
4019 fHistPiAPMassVSYSecXi[1]->Fill(massALambda,rapAL);
4020 fHistPiAPXi0PtVSLambdaPt[1]->Fill(ptALambda,ptXiMother);
4022 if(pdgMother == -3334){//Omega
4023 fHistPiAPMassVSPtSecOmega[1]->Fill(massALambda,ptALambda);
4024 fHistPiAPMassVSPtSecOmegaMCTruth->Fill(massALambda,ptV0MC);
4025 fHistPiAPOmegaPtVSLambdaPt[1]->Fill(ptALambda,ptXiMother);
4029 if(ptALambda > 0.4) fHistArmenteros[isSecd]->Fill(alfa,qt);
4030 fHistDedxSecAProt[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
4031 fHistDedxSecPiPlus[isSecd]->Fill(tpcMomPos,tpcsigPos);
4032 fHistV0RadiusZ[isSecd]->Fill(dim2V0Radius,xr[2]);
4033 fHistV0RadiusXY[isSecd]->Fill(xr[0],xr[1]);
4034 fHistV0RadiusZVSPt[isSecd]->Fill(ptALambda,dim2V0Radius);
4035 fHistV0RadiusXYVSY[isSecd]->Fill(rapAL,dim2V0Radius);
4038 //-- detector values --//
4039 fHistNclsITS[0]->Fill(nclsITSPos,nclsITSNeg);
4040 fHistNclsTPC[0]->Fill(crossedRowsTPCNeg,nclsTPCNeg);
4042 fHistNclsITSPosL[isSecd]->Fill(massALambda,nclsITSPos);
4043 fHistNclsITSNegL[isSecd]->Fill(massALambda,nclsITSNeg);
4044 fHistNclsTPCPosL[isSecd]->Fill(massALambda,nclsTPCPos);
4045 fHistNclsTPCNegL[isSecd]->Fill(massALambda,nclsTPCNeg);
4046 fHistChi2PerNclsITSPosL[isSecd]->Fill(massALambda,chi2PerClusterITSPos);
4047 fHistChi2PerNclsITSNegL[isSecd]->Fill(massALambda,chi2PerClusterITSNeg);
4048 fHistNCRowsTPCPosL[isSecd]->Fill(massALambda,crossedRowsTPCPos);
4049 fHistNCRowsTPCNegL[isSecd]->Fill(massALambda,crossedRowsTPCNeg);
4050 fHistRatioFoundOverFinableTPCLNeg[isSecd]->Fill(massALambda,ratioFoFi);
4051 fHistRatioFoundOverFinableTPCLPos[isSecd]->Fill(massALambda,ratioFoFiPos);
4054 fHistNclsITSPosL[isSecd]->Fill(ptV0MC,nclsITSPos);
4055 fHistNclsITSNegL[isSecd]->Fill(ptV0MC,nclsITSNeg);
4056 fHistNclsTPCPosL[isSecd]->Fill(ptV0MC,nclsTPCPos);
4057 fHistNclsTPCNegL[isSecd]->Fill(ptV0MC,nclsTPCNeg);
4058 fHistChi2PerNclsITSPosL[isSecd]->Fill(ptV0MC,chi2PerClusterITSPos);
4059 fHistChi2PerNclsITSNegL[isSecd]->Fill(ptV0MC,chi2PerClusterITSNeg);
4060 fHistNCRowsTPCPosL[isSecd]->Fill(ptV0MC,crossedRowsTPCPos);
4061 fHistNCRowsTPCNegL[isSecd]->Fill(ptV0MC,crossedRowsTPCNeg);
4062 fHistRatioFoundOverFinableTPCLNeg[isSecd]->Fill(ptV0MC,ratioFoFi);
4063 fHistRatioFoundOverFinableTPCLPos[isSecd]->Fill(ptV0MC,ratioFoFiPos);
4071 if(lambdaOK || alambdaOK || k0sOK) {
4072 trackID[iV0MI][0] = v0MIs->GetPindex();
4073 trackID[iV0MI][1] = v0MIs->GetNindex();
4077 //-- fill detector histos general --//
4078 if((lambdaOK && !exMassL) || (alambdaOK && !exMassAL) || (k0sOK && !exMass)){
4079 fHistPiPiEtaDReco[1]->Fill(posDaughterEta,eta00);
4080 fHistPiPEtaDReco[1]->Fill(negDaughterEta,eta01);
4085 //-- AliKFParticle --//
4086 if (negPiKF) delete negPiKF; negPiKF=NULL;
4087 if (posPiKF) delete posPiKF; posPiKF=NULL;
4088 if (posPKF) delete posPKF; posPKF=NULL;
4089 if (negAPKF) delete negAPKF; negAPKF=NULL;
4092 }//---- end V0 reco loop----//
4096 //________________________________________________________________________
4098 Int_t AliAnalysisTaskV0ForRAA::CalculateCentralityBin(){
4099 //find centrality bin for centrality selection
4101 if (fUseCentrality == 0) return -1;
4103 AliCentrality *esdCentrality = fESD->GetCentrality();
4105 Float_t centralityVZERO = esdCentrality->GetCentralityPercentile("V0M");
4106 Float_t centralitySPD = esdCentrality->GetCentralityPercentile("CL1");
4108 Int_t centralityVZEROBin = -1;
4109 Int_t centralitySPDBin = -1;
4111 //-- SPD centrality --//
4112 if ( fUseCentrality == 2 ){
4113 if ( centralitySPD >= 0. && centralitySPD < 5.) centralitySPDBin = 0;
4114 else if ( centralitySPD >= 5. && centralitySPD < 10.) centralitySPDBin = 5;
4115 else if ( centralitySPD >= 10. && centralitySPD < 20.) centralitySPDBin = 10;
4116 else if ( centralitySPD >= 20. && centralitySPD < 30.) centralitySPDBin = 20;
4117 else if ( centralitySPD >= 30. && centralitySPD < 40.) centralitySPDBin = 30;
4118 else if ( centralitySPD >= 40. && centralitySPD < 50.) centralitySPDBin = 40;
4119 else if ( centralitySPD >= 50. && centralitySPD < 60.) centralitySPDBin = 50;
4120 else if ( centralitySPD >= 60. && centralitySPD < 70.) centralitySPDBin = 60;
4121 else if ( centralitySPD >= 70. && centralitySPD < 80.) centralitySPDBin = 70;
4122 else if ( centralitySPD >= 80. && centralitySPD < 90.) centralitySPDBin = 80;
4123 else if ( centralitySPD >= 90. && centralitySPD < 99.) centralitySPDBin = 90;
4124 else if ( centralitySPD >= 99. ) centralitySPDBin = 100;
4125 else if ( fabs(centralitySPD)< 0.0001 ) centralitySPDBin = 100;
4126 return centralitySPDBin;
4129 //-- V0 centrality --//
4130 if ( fUseCentrality == 1 ){
4131 if ( centralityVZERO > 0. && centralityVZERO < 5.) centralityVZEROBin = 0;
4132 else if ( centralityVZERO >= 5. && centralityVZERO < 10.) centralityVZEROBin = 5;
4133 else if ( centralityVZERO >= 10. && centralityVZERO < 20.) centralityVZEROBin = 10;
4134 else if ( centralityVZERO >= 20. && centralityVZERO < 30.) centralityVZEROBin = 20;
4135 else if ( centralityVZERO >= 30. && centralityVZERO < 40.) centralityVZEROBin = 30;
4136 else if ( centralityVZERO >= 40. && centralityVZERO < 50.) centralityVZEROBin = 40;
4137 else if ( centralityVZERO >= 50. && centralityVZERO < 60.) centralityVZEROBin = 50;
4138 else if ( centralityVZERO >= 60. && centralityVZERO < 70.) centralityVZEROBin = 60;
4139 else if ( centralityVZERO >= 70. && centralityVZERO < 80.) centralityVZEROBin = 70;
4140 else if ( centralityVZERO >= 80. && centralityVZERO < 90.) centralityVZEROBin = 80;
4141 else if ( centralityVZERO >= 90. && centralityVZERO < 99.) centralityVZEROBin = 90;
4142 else if ( centralityVZERO >= 99. ) centralityVZEROBin = 100;
4143 else if ( fabs(centralityVZERO)< 0.0001 ) centralityVZEROBin = 100;
4144 return centralityVZEROBin;
4150 //__________________________________________________________________________________________________________
4151 Bool_t AliAnalysisTaskV0ForRAA::GetMCTruthPartner(AliESDtrack *pos,AliESDtrack *neg,Int_t id0,Int_t id1){
4152 //-- get daughter label and check it --//
4153 Int_t labelP = fabs(pos->GetLabel());
4154 Int_t labelN = fabs(neg->GetLabel());
4156 if (labelN==labelP) return kFALSE;
4159 if ((labelP!=id0) && (labelP!=id1)) return kFALSE;
4160 if ((labelN!=id0) && (labelN!=id1)) return kFALSE;
4166 //__________________________________________________________________________________________________________
4167 Bool_t AliAnalysisTaskV0ForRAA::CheckMultipleV0Candidates(AliESDv0 *v0MIs,Int_t iV0MI,Int_t trackID[][2]){
4168 Int_t part1 = v0MIs->GetPindex();
4169 Int_t part2 = v0MIs->GetNindex();
4170 Bool_t multFoundV0=kFALSE;
4171 for(Int_t i = 0; i < iV0MI;i++){
4172 if(trackID[i][0] == part1 && trackID[1][i] == part2) multFoundV0 = kTRUE;
4173 if(trackID[i][1] == part2 && trackID[1][i] == part1) multFoundV0 = kTRUE;
4178 //__________________________________________________________________________________________________________
4179 Int_t AliAnalysisTaskV0ForRAA::FindPDGCode(AliStack *stackRec,AliESDtrack *trackPos,AliESDtrack *trackNeg){
4181 //-- get daughter label --//
4182 Int_t labelP = fabs(trackPos->GetLabel());
4183 Int_t labelN = fabs(trackNeg->GetLabel());
4184 TParticle *p0 = stackRec->Particle(labelP);
4185 TParticle *p1 = stackRec->Particle(labelN);
4186 Int_t idmother0 = -1;
4187 if(p0) idmother0 = p0->GetMother(0);
4188 Int_t idmother1 = -1;
4189 if(p1) idmother1 = p1->GetMother(0);
4191 if(idmother0 != idmother1) return pdg;
4193 if(idmother0 > -1) {
4194 pdg = stackRec->Particle(idmother0)->GetPdgCode();
4195 if(fabs(pdg) >21) return fabs(pdg);