@@ -510,6 +510,27 @@ struct HfTreeCreatorLcToPKPi {
510510 const float functionCt = hfHelper.ctLc (candidate);
511511 const float functionY = hfHelper.yLc (candidate);
512512 const float functionE = hfHelper.eLc (candidate);
513+ float valueTpcNSigmaPi;
514+ float valueTpcNSigmaPr;
515+ float valueTofNSigmaPi;
516+ float valueTofNSigmaPr;
517+ float valueTpcTofNSigmaPi;
518+ float valueTpcTofNSigmaPr;
519+ if (candFlag == 0 ) {
520+ valueTpcNSigmaPi = trackPos1.tpcNSigmaPi ();
521+ valueTpcNSigmaPr = trackPos2.tpcNSigmaPr ();
522+ valueTofNSigmaPi = trackPos1.tofNSigmaPi ();
523+ valueTofNSigmaPr = trackPos2.tofNSigmaPr ();
524+ valueTpcTofNSigmaPi = trackPos1.tpcTofNSigmaPi ();
525+ valueTpcTofNSigmaPr = trackPos2.tpcTofNSigmaPr ();
526+ } else {
527+ valueTpcNSigmaPi = trackPos2.tpcNSigmaPi ();
528+ valueTpcNSigmaPr = trackPos1.tpcNSigmaPr ();
529+ valueTofNSigmaPi = trackPos2.tofNSigmaPi ();
530+ valueTofNSigmaPr = trackPos1.tofNSigmaPr ();
531+ valueTpcTofNSigmaPi = trackPos2.tpcTofNSigmaPi ();
532+ valueTpcTofNSigmaPr = trackPos1.tpcTofNSigmaPr ();
533+ }
513534 if (fillCandidateLiteTable) {
514535 rowCandidateLite (
515536 candidate.posX (),
@@ -526,15 +547,15 @@ struct HfTreeCreatorLcToPKPi {
526547 candidate.impactParameter0 (),
527548 candidate.impactParameter1 (),
528549 candidate.impactParameter2 (),
529- candFlag == 0 ? trackPos1. tpcNSigmaPi () : trackPos2. tpcNSigmaPi () ,
550+ valueTpcNSigmaPi ,
530551 trackNeg.tpcNSigmaKa (),
531- candFlag == 0 ? trackPos2. tpcNSigmaPr () : trackPos1. tpcNSigmaPr () ,
532- candFlag == 0 ? trackPos1. tofNSigmaPi () : trackPos2. tofNSigmaPi () ,
552+ valueTpcNSigmaPr ,
553+ valueTofNSigmaPi ,
533554 trackNeg.tofNSigmaKa (),
534- candFlag == 0 ? trackPos2. tofNSigmaPr () : trackPos1. tofNSigmaPr () ,
535- candFlag == 0 ? trackPos1. tpcTofNSigmaPi () : trackPos2. tpcTofNSigmaPi () ,
555+ valueTofNSigmaPr ,
556+ valueTpcTofNSigmaPi ,
536557 trackNeg.tpcTofNSigmaKa (),
537- candFlag == 0 ? trackPos2. tpcTofNSigmaPr () : trackPos1. tpcTofNSigmaPr () ,
558+ valueTpcTofNSigmaPr ,
538559 1 << candFlag,
539560 functionInvMass,
540561 candidate.pt (),
@@ -597,15 +618,15 @@ struct HfTreeCreatorLcToPKPi {
597618 candidate.errorImpactParameter0 (),
598619 candidate.errorImpactParameter1 (),
599620 candidate.errorImpactParameter2 (),
600- candFlag == 0 ? trackPos1. tpcNSigmaPi () : trackPos2. tpcNSigmaPi () ,
621+ valueTpcNSigmaPi ,
601622 trackNeg.tpcNSigmaKa (),
602- candFlag == 0 ? trackPos2. tpcNSigmaPr () : trackPos1. tpcNSigmaPr () ,
603- candFlag == 0 ? trackPos1. tofNSigmaPi () : trackPos2. tofNSigmaPi () ,
623+ valueTpcNSigmaPr ,
624+ valueTofNSigmaPi ,
604625 trackNeg.tofNSigmaKa (),
605- candFlag == 0 ? trackPos2. tofNSigmaPr () : trackPos1. tofNSigmaPr () ,
606- candFlag == 0 ? trackPos1. tpcTofNSigmaPi () : trackPos2. tpcTofNSigmaPi () ,
626+ valueTofNSigmaPr ,
627+ valueTpcTofNSigmaPi ,
607628 trackNeg.tpcTofNSigmaKa (),
608- candFlag == 0 ? trackPos2. tpcTofNSigmaPr () : trackPos1. tpcTofNSigmaPr () ,
629+ valueTpcTofNSigmaPr ,
609630 1 << candFlag,
610631 functionInvMass,
611632 candidate.pt (),
@@ -626,6 +647,30 @@ struct HfTreeCreatorLcToPKPi {
626647 }
627648
628649 if constexpr (reconstructionType == aod::hf_cand::VertexerType::KfParticle) {
650+ float chi2primProton;
651+ float chi2primPion;
652+ float dcaProtonKaon;
653+ float dcaPionKaon;
654+ float chi2GeoProtonKaon;
655+ float chi2GeoPionKaon;
656+ float mass;
657+ if (candFlag == 0 ) {
658+ chi2primProton = candidate.kfChi2PrimProng0 ();
659+ chi2primPion = candidate.kfChi2PrimProng2 ();
660+ dcaProtonKaon = candidate.kfDcaProng0Prong1 ();
661+ dcaPionKaon = candidate.kfDcaProng1Prong2 ();
662+ chi2GeoProtonKaon = candidate.kfChi2GeoProng0Prong1 ();
663+ chi2GeoPionKaon = candidate.kfChi2GeoProng1Prong2 ();
664+ mass = candidate.kfMassPKPi ();
665+ } else {
666+ chi2primProton = candidate.kfChi2PrimProng2 ();
667+ chi2primPion = candidate.kfChi2PrimProng0 ();
668+ dcaProtonKaon = candidate.kfDcaProng1Prong2 ();
669+ dcaPionKaon = candidate.kfDcaProng0Prong1 ();
670+ chi2GeoProtonKaon = candidate.kfChi2GeoProng1Prong2 ();
671+ chi2GeoPionKaon = candidate.kfChi2GeoProng0Prong1 ();
672+ mass = candidate.kfMassPiKP ();
673+ }
629674 const float svX = candidate.xSecondaryVertex ();
630675 const float svY = candidate.ySecondaryVertex ();
631676 const float svZ = candidate.zSecondaryVertex ();
@@ -635,18 +680,12 @@ struct HfTreeCreatorLcToPKPi {
635680 const float pvErrX = candidate.kfXPVError ();
636681 const float pvErrY = candidate.kfYPVError ();
637682 const float pvErrZ = candidate.kfZPVError ();
638- const float chi2primProton = candFlag == 0 ? candidate.kfChi2PrimProng0 () : candidate.kfChi2PrimProng2 ();
639683 const float chi2primKaon = candidate.kfChi2PrimProng1 ();
640- const float chi2primPion = candFlag == 0 ? candidate.kfChi2PrimProng2 () : candidate.kfChi2PrimProng0 ();
641- const float dcaProtonKaon = candFlag == 0 ? candidate.kfDcaProng0Prong1 () : candidate.kfDcaProng1Prong2 ();
642684 const float dcaProtonPion = candidate.kfDcaProng0Prong2 ();
643- const float dcaPionKaon = candFlag == 0 ? candidate.kfDcaProng1Prong2 () : candidate.kfDcaProng0Prong1 ();
644- const float chi2GeoProtonKaon = candFlag == 0 ? candidate.kfChi2GeoProng0Prong1 () : candidate.kfChi2GeoProng1Prong2 ();
645685 const float chi2GeoProtonPion = candidate.kfChi2GeoProng0Prong2 ();
646- const float chi2GeoPionKaon = candFlag == 0 ? candidate.kfChi2GeoProng1Prong2 () : candidate.kfChi2GeoProng0Prong1 ();
647686 const float chi2Geo = candidate.kfChi2Geo ();
648687 const float chi2Topo = candidate.kfChi2Topo ();
649- const float l = candidate.kfDecayLength ();
688+ const float decayLength = candidate.kfDecayLength ();
650689 const float dl = candidate.kfDecayLengthError ();
651690 const float pt = std::sqrt (candidate.kfPx () * candidate.kfPx () + candidate.kfPy () * candidate.kfPy ());
652691 const float deltaPt = std::sqrt (candidate.kfPx () * candidate.kfPx () * candidate.kfErrorPx () * candidate.kfErrorPx () +
@@ -656,23 +695,22 @@ struct HfTreeCreatorLcToPKPi {
656695 const float deltaP = std::sqrt (pt * pt * deltaPt * deltaPt +
657696 candidate.kfPz () * candidate.kfPz () * candidate.kfErrorPz () * candidate.kfErrorPz ()) /
658697 p;
659- const float t = l * MassLambdaCPlus / LightSpeedCm2PS / p;
698+ const float lifetime = decayLength * MassLambdaCPlus / LightSpeedCm2PS / p;
660699 const float deltaT = dl * MassLambdaCPlus / LightSpeedCm2PS / p;
661- const float mass = candFlag == 0 ? candidate.kfMassPKPi () : candidate.kfMassPiKP ();
662700 rowCandidateKF (
663701 candidate.collisionId (),
664702 svX, svY, svZ, svErrX, svErrY, svErrZ,
665703 pvErrX, pvErrY, pvErrZ,
666704 chi2primProton, chi2primKaon, chi2primPion,
667705 dcaProtonKaon, dcaProtonPion, dcaPionKaon,
668706 chi2GeoProtonKaon, chi2GeoProtonPion, chi2GeoPionKaon,
669- chi2Geo, chi2Topo, l , dl, l / dl, t , deltaT,
707+ chi2Geo, chi2Topo, decayLength , dl, decayLength / dl, lifetime , deltaT,
670708 mass, p, pt, deltaP, deltaPt,
671709 functionSelection, sigbgstatus,
672710 collision.multNTracksPV ());
673711 }
674712 if (fillCandidateMcTable) {
675- float p, pt, svX, svY, svZ, pvX, pvY, pvZ, l, t ;
713+ float p, pt, svX, svY, svZ, pvX, pvY, pvZ, decayLength, lifetime ;
676714 if (!isMcCandidateSignal) {
677715 p = UndefValueFloat;
678716 pt = UndefValueFloat;
@@ -682,8 +720,8 @@ struct HfTreeCreatorLcToPKPi {
682720 pvX = UndefValueFloat;
683721 pvY = UndefValueFloat;
684722 pvZ = UndefValueFloat;
685- l = UndefValueFloat;
686- t = UndefValueFloat;
723+ decayLength = UndefValueFloat;
724+ lifetime = UndefValueFloat;
687725 } else {
688726 auto mcParticleProng0 = candidate.template prong0_as <soa::Join<TracksWPid, o2::aod::McTrackLabels>>().template mcParticle_as <soa::Join<aod::McParticles, aod::HfCand3ProngMcGen>>();
689727 auto indexMother = RecoDecay::getMother (particles, mcParticleProng0, o2::constants::physics::Pdg::kLambdaCPlus , true );
@@ -699,12 +737,12 @@ struct HfTreeCreatorLcToPKPi {
699737 svX = mcParticleProng0.vx ();
700738 svY = mcParticleProng0.vy ();
701739 svZ = mcParticleProng0.vz ();
702- l = RecoDecay::distance (std::array<float , 3 >{svX, svY, svZ}, std::array<float , 3 >{pvX, pvY, pvZ});
703- t = mcParticleProng0.vt () * NanoToPico / gamma; // from ns to ps * from lab time to proper time
740+ decayLength = RecoDecay::distance (std::array<float , 3 >{svX, svY, svZ}, std::array<float , 3 >{pvX, pvY, pvZ});
741+ lifetime = mcParticleProng0.vt () * NanoToPico / gamma; // from ns to ps * from lab time to proper time
704742 }
705743 rowCandidateMC (
706744 p, pt,
707- svX, svY, svZ, l, t ,
745+ svX, svY, svZ, decayLength, lifetime ,
708746 pvX, pvY, pvZ);
709747 }
710748 }
@@ -895,6 +933,27 @@ struct HfTreeCreatorLcToPKPi {
895933 const float functionCt = hfHelper.ctLc (candidate);
896934 const float functionY = hfHelper.yLc (candidate);
897935 const float functionE = hfHelper.eLc (candidate);
936+ float valueTpcNSigmaPi;
937+ float valueTpcNSigmaPr;
938+ float valueTofNSigmaPi;
939+ float valueTofNSigmaPr;
940+ float valueTpcTofNSigmaPi;
941+ float valueTpcTofNSigmaPr;
942+ if (candFlag == 0 ) {
943+ valueTpcNSigmaPi = trackPos1.tpcNSigmaPi ();
944+ valueTpcNSigmaPr = trackPos2.tpcNSigmaPr ();
945+ valueTofNSigmaPi = trackPos1.tofNSigmaPi ();
946+ valueTofNSigmaPr = trackPos2.tofNSigmaPr ();
947+ valueTpcTofNSigmaPi = trackPos1.tpcTofNSigmaPi ();
948+ valueTpcTofNSigmaPr = trackPos2.tpcTofNSigmaPr ();
949+ } else {
950+ valueTpcNSigmaPi = trackPos2.tpcNSigmaPi ();
951+ valueTpcNSigmaPr = trackPos1.tpcNSigmaPr ();
952+ valueTofNSigmaPi = trackPos2.tofNSigmaPi ();
953+ valueTofNSigmaPr = trackPos1.tofNSigmaPr ();
954+ valueTpcTofNSigmaPi = trackPos2.tpcTofNSigmaPi ();
955+ valueTpcTofNSigmaPr = trackPos1.tpcTofNSigmaPr ();
956+ }
898957 if (fillCandidateLiteTable) {
899958 rowCandidateLite (
900959 candidate.posX (),
@@ -911,15 +970,15 @@ struct HfTreeCreatorLcToPKPi {
911970 candidate.impactParameter0 (),
912971 candidate.impactParameter1 (),
913972 candidate.impactParameter2 (),
914- candFlag == 0 ? trackPos1. tpcNSigmaPi () : trackPos2. tpcNSigmaPi () ,
973+ valueTpcNSigmaPi ,
915974 trackNeg.tpcNSigmaKa (),
916- candFlag == 0 ? trackPos2. tpcNSigmaPr () : trackPos1. tpcNSigmaPr () ,
917- candFlag == 0 ? trackPos1. tofNSigmaPi () : trackPos2. tofNSigmaPi () ,
975+ valueTpcNSigmaPr ,
976+ valueTofNSigmaPi ,
918977 trackNeg.tofNSigmaKa (),
919- candFlag == 0 ? trackPos2. tofNSigmaPr () : trackPos1. tofNSigmaPr () ,
920- candFlag == 0 ? trackPos1. tpcTofNSigmaPi () : trackPos2. tpcTofNSigmaPi () ,
978+ valueTofNSigmaPr ,
979+ valueTpcTofNSigmaPi ,
921980 trackNeg.tpcTofNSigmaKa (),
922- candFlag == 0 ? trackPos2. tpcTofNSigmaPr () : trackPos1. tpcTofNSigmaPr () ,
981+ valueTpcTofNSigmaPr ,
923982 1 << candFlag,
924983 functionInvMass,
925984 candidate.pt (),
@@ -983,15 +1042,15 @@ struct HfTreeCreatorLcToPKPi {
9831042 candidate.errorImpactParameter0 (),
9841043 candidate.errorImpactParameter1 (),
9851044 candidate.errorImpactParameter2 (),
986- candFlag == 0 ? trackPos1. tpcNSigmaPi () : trackPos2. tpcNSigmaPi () ,
1045+ valueTpcNSigmaPi ,
9871046 trackNeg.tpcNSigmaKa (),
988- candFlag == 0 ? trackPos2. tpcNSigmaPr () : trackPos1. tpcNSigmaPr () ,
989- candFlag == 0 ? trackPos1. tofNSigmaPi () : trackPos2. tofNSigmaPi () ,
1047+ valueTpcNSigmaPr ,
1048+ valueTofNSigmaPi ,
9901049 trackNeg.tofNSigmaKa (),
991- candFlag == 0 ? trackPos2. tofNSigmaPr () : trackPos1. tofNSigmaPr () ,
992- candFlag == 0 ? trackPos1. tpcTofNSigmaPi () : trackPos2. tpcTofNSigmaPi () ,
1050+ valueTofNSigmaPr ,
1051+ valueTpcTofNSigmaPi ,
9931052 trackNeg.tpcTofNSigmaKa (),
994- candFlag == 0 ? trackPos2. tpcTofNSigmaPr () : trackPos1. tpcTofNSigmaPr () ,
1053+ valueTpcTofNSigmaPr ,
9951054 1 << candFlag,
9961055 functionInvMass,
9971056 candidate.pt (),
@@ -1012,6 +1071,30 @@ struct HfTreeCreatorLcToPKPi {
10121071 }
10131072
10141073 if constexpr (reconstructionType == aod::hf_cand::VertexerType::KfParticle) {
1074+ float chi2primProton;
1075+ float chi2primPion;
1076+ float dcaProtonKaon;
1077+ float dcaPionKaon;
1078+ float chi2GeoProtonKaon;
1079+ float chi2GeoPionKaon;
1080+ float mass;
1081+ if (candFlag == 0 ) {
1082+ chi2primProton = candidate.kfChi2PrimProng0 ();
1083+ chi2primPion = candidate.kfChi2PrimProng2 ();
1084+ dcaProtonKaon = candidate.kfDcaProng0Prong1 ();
1085+ dcaPionKaon = candidate.kfDcaProng1Prong2 ();
1086+ chi2GeoProtonKaon = candidate.kfChi2GeoProng0Prong1 ();
1087+ chi2GeoPionKaon = candidate.kfChi2GeoProng1Prong2 ();
1088+ mass = candidate.kfMassPKPi ();
1089+ } else {
1090+ chi2primProton = candidate.kfChi2PrimProng2 ();
1091+ chi2primPion = candidate.kfChi2PrimProng0 ();
1092+ dcaProtonKaon = candidate.kfDcaProng1Prong2 ();
1093+ dcaPionKaon = candidate.kfDcaProng0Prong1 ();
1094+ chi2GeoProtonKaon = candidate.kfChi2GeoProng1Prong2 ();
1095+ chi2GeoPionKaon = candidate.kfChi2GeoProng0Prong1 ();
1096+ mass = candidate.kfMassPiKP ();
1097+ }
10151098 const float x = candidate.xSecondaryVertex ();
10161099 const float y = candidate.ySecondaryVertex ();
10171100 const float z = candidate.zSecondaryVertex ();
@@ -1021,15 +1104,9 @@ struct HfTreeCreatorLcToPKPi {
10211104 const float errPVX = candidate.kfXPVError ();
10221105 const float errPVY = candidate.kfYPVError ();
10231106 const float errPVZ = candidate.kfZPVError ();
1024- const float chi2primProton = candFlag == 0 ? candidate.kfChi2PrimProng0 () : candidate.kfChi2PrimProng2 ();
10251107 const float chi2primKaon = candidate.kfChi2PrimProng1 ();
1026- const float chi2primPion = candFlag == 0 ? candidate.kfChi2PrimProng2 () : candidate.kfChi2PrimProng0 ();
1027- const float dcaProtonKaon = candFlag == 0 ? candidate.kfDcaProng0Prong1 () : candidate.kfDcaProng1Prong2 ();
10281108 const float dcaProtonPion = candidate.kfDcaProng0Prong2 ();
1029- const float dcaPionKaon = candFlag == 0 ? candidate.kfDcaProng1Prong2 () : candidate.kfDcaProng0Prong1 ();
1030- const float chi2GeoProtonKaon = candFlag == 0 ? candidate.kfChi2GeoProng0Prong1 () : candidate.kfChi2GeoProng1Prong2 ();
10311109 const float chi2GeoProtonPion = candidate.kfChi2GeoProng0Prong2 ();
1032- const float chi2GeoPionKaon = candFlag == 0 ? candidate.kfChi2GeoProng1Prong2 () : candidate.kfChi2GeoProng0Prong1 ();
10331110 const float chi2Geo = candidate.kfChi2Geo ();
10341111 const float chi2Topo = candidate.kfChi2Topo ();
10351112 const float l = candidate.kfDecayLength ();
@@ -1044,7 +1121,6 @@ struct HfTreeCreatorLcToPKPi {
10441121 p;
10451122 const float t = l * MassLambdaCPlus / LightSpeedCm2PS / p;
10461123 const float deltaT = dl * MassLambdaCPlus / LightSpeedCm2PS / p;
1047- const float mass = candFlag == 0 ? candidate.kfMassPKPi () : candidate.kfMassPiKP ();
10481124 rowCandidateKF (
10491125 candidate.collisionId (),
10501126 x, y, z, errX, errY, errZ,
0 commit comments