@@ -692,6 +692,7 @@ struct HfCandidateCreatorXic0Omegac0 {
692692 if (kfUseV0MassConstraint) {
693693 KFParticle kfV0 = kfV0MassConstrained;
694694 }
695+ kfV0.TransportToDecayVertex ();
695696
696697 // __________________________________________
697698 // *>~<* step 2 : reconstruct cascade(Omega) with KF
@@ -723,6 +724,7 @@ struct HfCandidateCreatorXic0Omegac0 {
723724 KFParticle kfOmega = kfOmegaMassConstrained;
724725 }
725726 registry.fill (HIST (" hInvMassOmegaMinus" ), massCasc);
727+ kfOmega.TransportToDecayVertex ();
726728
727729 // __________________________________________
728730 // *>~<* step 3 : reconstruc Omegac0 with KF
@@ -749,7 +751,7 @@ struct HfCandidateCreatorXic0Omegac0 {
749751 continue ;
750752 hFitterStatus->Fill (0 );
751753 hCandidateCounter->Fill (2 );
752-
754+ kfOmegaC0. TransportToDecayVertex ();
753755 // PV
754756 KFPVertex kfVertex = createKFPVertexFromCollision (collision);
755757 KFParticle kfPV (kfVertex);
@@ -779,17 +781,17 @@ struct HfCandidateCreatorXic0Omegac0 {
779781 kfOmegac0ToPv.SetProductionVertex (kfPV);
780782 kfPiFromOmegacToPv.SetProductionVertex (kfPV);
781783 // ------------get updated daughter tracks after vertex fit ---------------
782- auto trackParVarCharmBachelor = getTrackParCovFromKFP (kfBachPionToOmegaC, o2::track::PID::Pion, kfBachPionToOmegaC. GetQ () ); // chrambaryon bach pion
784+ auto trackParVarCharmBachelor = getTrackParCovFromKFP (kfBachPionToOmegaC, o2::track::PID::Pion, -bachCharge ); // chrambaryon bach pion
783785 trackParVarCharmBachelor.setAbsCharge (1 );
784786
785- omegaDauChargedTrackParCov = getTrackParCovFromKFP (kfBachKaonToOmega, o2::track::PID::Kaon, kfBachKaonToOmega. GetQ () ); // Cascade bach kaon
787+ omegaDauChargedTrackParCov = getTrackParCovFromKFP (kfBachKaonToOmega, o2::track::PID::Kaon, bachCharge ); // Cascade bach kaon
786788 omegaDauChargedTrackParCov.setAbsCharge (1 );
787- o2::track::TrackParCov trackCasc = getTrackParCovFromKFP (kfOmegaToOmegaC, kfOmegaToOmegaC.GetPDG (), 0 );
788- trackCasc.setAbsCharge (0 );
789+ o2::track::TrackParCov trackCasc = getTrackParCovFromKFP (kfOmegaToOmegaC, kfOmegaToOmegaC.GetPDG (), bachCharge );
790+ trackCasc.setAbsCharge (1 );
789791
790- trackParCovV0Dau0 = getTrackParCovFromKFP (kfPos, kfPos.GetPDG (), kfPos. GetQ () ); // V0 postive daughter
792+ trackParCovV0Dau0 = getTrackParCovFromKFP (kfPos, kfPos.GetPDG (), 1 ); // V0 postive daughter
791793 trackParCovV0Dau0.setAbsCharge (1 );
792- trackParCovV0Dau1 = getTrackParCovFromKFP (kfNeg, kfNeg.GetPDG (), kfNeg. GetQ () ); // V0 negtive daughter
794+ trackParCovV0Dau1 = getTrackParCovFromKFP (kfNeg, kfNeg.GetPDG (), - 1 ); // V0 negtive daughter
793795 trackParCovV0Dau1.setAbsCharge (1 );
794796
795797 // -------------------------- V0 info---------------------------
@@ -798,8 +800,8 @@ struct HfCandidateCreatorXic0Omegac0 {
798800 float pseudorapV0Dau1 = kfNeg.GetEta ();
799801
800802 // info from from KFParticle
801- std::array<float , 3 > pVecV0 = {kfV0ToCasc .GetPx (), kfV0ToCasc .GetPy (), kfV0ToCasc .GetPz ()}; // pVec stands for vector containing the 3-momentum components
802- std::array<float , 3 > vertexV0 = {kfV0ToCasc .GetX (), kfV0ToCasc .GetY (), kfV0ToCasc .GetZ ()};
803+ std::array<float , 3 > pVecV0 = {kfV0 .GetPx (), kfV0 .GetPy (), kfV0 .GetPz ()}; // pVec stands for vector containing the 3-momentum components
804+ std::array<float , 3 > vertexV0 = {kfV0 .GetX (), kfV0 .GetY (), kfV0 .GetZ ()};
803805 std::array<float , 3 > pVecV0Dau0 = {kfPos.GetPx (), kfPos.GetPy (), kfPos.GetPz ()};
804806 std::array<float , 3 > pVecV0Dau1 = {kfNeg.GetPx (), kfNeg.GetPy (), kfNeg.GetPz ()};
805807
@@ -808,7 +810,7 @@ struct HfCandidateCreatorXic0Omegac0 {
808810 float pseudorapCascBachelor = kfBachKaonToOmega.GetEta ();
809811
810812 // info from KFParticle
811- std::array<float , 3 > vertexCasc = {kfOmegaToOmegaC .GetX (), kfOmegaToOmegaC .GetY (), kfOmegaToOmegaC .GetZ ()};
813+ std::array<float , 3 > vertexCasc = {kfOmega .GetX (), kfOmega .GetY (), kfOmega .GetZ ()};
812814 std::array<float , 3 > pVecCascBachelor = {kfBachKaonToOmega.GetPx (), kfBachKaonToOmega.GetPy (), kfBachKaonToOmega.GetPz ()};
813815
814816 auto primaryVertex = getPrimaryVertex (collision);
@@ -826,18 +828,18 @@ struct HfCandidateCreatorXic0Omegac0 {
826828 kfVertex.GetCovarianceMatrix (covMatrixPV);
827829
828830 // impact parameters
829- o2::dataformats::DCA impactParameterV0Dau0;
830- o2::dataformats::DCA impactParameterV0Dau1;
831- o2::dataformats::DCA impactParameterKaFromCasc;
832- o2::base::Propagator::Instance ()->propagateToDCABxByBz (primaryVertex , trackParCovV0Dau0, 2 .f , matCorr, &impactParameterV0Dau0);
833- o2::base::Propagator::Instance ()->propagateToDCABxByBz (primaryVertex , trackParCovV0Dau1, 2 .f , matCorr, &impactParameterV0Dau1);
834- o2::base::Propagator::Instance ()->propagateToDCABxByBz (primaryVertex , omegaDauChargedTrackParCov, 2 .f , matCorr, &impactParameterKaFromCasc);
835- float dcaxyV0Dau0 = impactParameterV0Dau0. getY () ;
836- float dcaxyV0Dau1 = impactParameterV0Dau1. getY () ;
837- float dcaxyCascBachelor = impactParameterKaFromCasc. getY () ;
838- float dcazV0Dau0 = impactParameterV0Dau0. getZ () ;
839- float dcazV0Dau1 = impactParameterV0Dau1. getZ () ;
840- float dcazCascBachelor = impactParameterKaFromCasc. getZ () ;
831+ gpu::gpustd::array< float , 2 > impactParameterV0Dau0;
832+ gpu::gpustd::array< float , 2 > impactParameterV0Dau1;
833+ gpu::gpustd::array< float , 2 > impactParameterKaFromCasc;
834+ o2::base::Propagator::Instance ()->propagateToDCABxByBz ({collision. posX (), collision. posY (), collision. posZ ()} , trackParCovV0Dau0, 2 .f , matCorr, &impactParameterV0Dau0);
835+ o2::base::Propagator::Instance ()->propagateToDCABxByBz ({collision. posX (), collision. posY (), collision. posZ ()} , trackParCovV0Dau1, 2 .f , matCorr, &impactParameterV0Dau1);
836+ o2::base::Propagator::Instance ()->propagateToDCABxByBz ({collision. posX (), collision. posY (), collision. posZ ()} , omegaDauChargedTrackParCov, 2 .f , matCorr, &impactParameterKaFromCasc);
837+ float dcaxyV0Dau0 = impactParameterV0Dau0[ 0 ] ;
838+ float dcaxyV0Dau1 = impactParameterV0Dau1[ 0 ] ;
839+ float dcaxyCascBachelor = impactParameterKaFromCasc[ 0 ] ;
840+ float dcazV0Dau0 = impactParameterV0Dau0[ 1 ] ;
841+ float dcazV0Dau1 = impactParameterV0Dau1[ 1 ] ;
842+ float dcazCascBachelor = impactParameterKaFromCasc[ 1 ] ;
841843
842844 // pseudorapidity
843845 float pseudorapCharmBachelor = kfBachPionToOmegaC.GetEta ();
@@ -856,7 +858,7 @@ struct HfCandidateCreatorXic0Omegac0 {
856858 float decLenV0 = RecoDecay::distance (vertexCasc, vertexV0);
857859
858860 double phiCharmBaryon, thetaCharmBaryon;
859- getPointDirection (std::array{kfV0ToCasc .GetX (), kfV0ToCasc .GetY (), kfV0ToCasc .GetZ ()}, coordVtxCharmBaryon, phiCharmBaryon, thetaCharmBaryon);
861+ getPointDirection (std::array{kfV0 .GetX (), kfV0 .GetY (), kfV0 .GetZ ()}, coordVtxCharmBaryon, phiCharmBaryon, thetaCharmBaryon);
860862 auto errorDecayLengthCharmBaryon = std::sqrt (getRotatedCovMatrixXX (covMatrixPV, phiCharmBaryon, thetaCharmBaryon) + getRotatedCovMatrixXX (covVtxCharmBaryon, phiCharmBaryon, thetaCharmBaryon));
861863 auto errorDecayLengthXYCharmBaryon = std::sqrt (getRotatedCovMatrixXX (covMatrixPV, phiCharmBaryon, 0 .) + getRotatedCovMatrixXX (covVtxCharmBaryon, phiCharmBaryon, 0 .));
862864
@@ -908,51 +910,51 @@ struct HfCandidateCreatorXic0Omegac0 {
908910
909911 // KF decay length
910912 float DecayLxy_Lam, err_DecayLxy_Lam;
911- kfV0ToCasc .GetDecayLengthXY (DecayLxy_Lam, err_DecayLxy_Lam);
913+ kfV0 .GetDecayLengthXY (DecayLxy_Lam, err_DecayLxy_Lam);
912914 kfOmegac0Candidate.decayLenXYLambda = DecayLxy_Lam;
913915
914916 float DecayLxy_Casc, err_DecayLxy_Casc;
915- kfOmegaToOmegaC .GetDecayLengthXY (DecayLxy_Casc, err_DecayLxy_Casc);
917+ kfOmega .GetDecayLengthXY (DecayLxy_Casc, err_DecayLxy_Casc);
916918 kfOmegac0Candidate.decayLenXYCasc = DecayLxy_Casc;
917919
918920 float DecayLxy_Omegac0, err_DecayLxy_Omegac0;
919- kfOmegac0ToPv .GetDecayLengthXY (DecayLxy_Omegac0, err_DecayLxy_Omegac0);
921+ kfOmegaC0 .GetDecayLengthXY (DecayLxy_Omegac0, err_DecayLxy_Omegac0);
920922 kfOmegac0Candidate.decayLenXYOmegac = DecayLxy_Omegac0;
921923
922924 // KF cosPA
923- kfOmegac0Candidate.cosPaV0ToPv = cpaFromKF (kfV0ToCasc , kfPV);
924- kfOmegac0Candidate.cosPaCascToPv = cpaFromKF (kfOmegaToOmegaC , kfPV);
925- kfOmegac0Candidate.cosPaOmegacToPv = cpaFromKF (kfOmegac0ToPv , kfPV);
926- kfOmegac0Candidate.cosPaXYV0ToPv = cpaXYFromKF (kfV0ToCasc , kfPV);
927- kfOmegac0Candidate.cosPaXYCascToPv = cpaXYFromKF (kfOmegaToOmegaC , kfPV);
928- kfOmegac0Candidate.cosPaXYOmegacToPv = cpaXYFromKF (kfOmegac0ToPv , kfPV);
929-
930- kfOmegac0Candidate.cosPaV0ToCasc = cpaFromKF (kfV0ToCasc , kfOmega);
931- kfOmegac0Candidate.cosPaCascToOmegac = cpaFromKF (kfOmegaToOmegaC , kfOmegaC0);
932- kfOmegac0Candidate.cosPaXYV0ToCasc = cpaXYFromKF (kfV0ToCasc , kfOmega);
933- kfOmegac0Candidate.cosPaXYCascToOmegac = cpaXYFromKF (kfOmegaToOmegaC , kfOmegaC0);
925+ kfOmegac0Candidate.cosPaV0ToPv = cpaFromKF (kfV0 , kfPV);
926+ kfOmegac0Candidate.cosPaCascToPv = cpaFromKF (kfOmega , kfPV);
927+ kfOmegac0Candidate.cosPaOmegacToPv = cpaFromKF (kfOmegaC0 , kfPV);
928+ kfOmegac0Candidate.cosPaXYV0ToPv = cpaXYFromKF (kfV0 , kfPV);
929+ kfOmegac0Candidate.cosPaXYCascToPv = cpaXYFromKF (kfOmega , kfPV);
930+ kfOmegac0Candidate.cosPaXYOmegacToPv = cpaXYFromKF (kfOmegaC0 , kfPV);
931+
932+ kfOmegac0Candidate.cosPaV0ToCasc = cpaFromKF (kfV0 , kfOmega);
933+ kfOmegac0Candidate.cosPaCascToOmegac = cpaFromKF (kfOmega , kfOmegaC0);
934+ kfOmegac0Candidate.cosPaXYV0ToCasc = cpaXYFromKF (kfV0 , kfOmega);
935+ kfOmegac0Candidate.cosPaXYCascToOmegac = cpaXYFromKF (kfOmega , kfOmegaC0);
934936 // KF mass
935937 kfOmegac0Candidate.massV0 = massLam;
936938 kfOmegac0Candidate.massCasc = massCasc;
937939 kfOmegac0Candidate.massOmegac = massOmegaC0;
938940
939941 // KF pT
940942 kfOmegac0Candidate.ptPiFromOmegac = kfBachPionToOmegaC.GetPt ();
941- kfOmegac0Candidate.ptOmegac = kfOmegac0ToPv .GetPt ();
943+ kfOmegac0Candidate.ptOmegac = kfOmegaC0 .GetPt ();
942944
943945 // KF rapidity
944- kfOmegac0Candidate.rapOmegac = kfOmegac0ToPv .GetRapidity ();
946+ kfOmegac0Candidate.rapOmegac = kfOmegaC0 .GetRapidity ();
945947
946948 // KF cosThetaStar
947949 kfOmegac0Candidate.cosThetaStarPiFromOmegac = cosThetaStarFromKF (0 , 4332 , 211 , 3312 , kfBachPionToOmegaC, kfOmegaToOmegaC);
948950
949951 // KF ct
950- kfOmegac0Candidate.ctV0 = kfV0ToCasc .GetLifeTime ();
951- kfOmegac0Candidate.ctCasc = kfOmegaToOmegaC .GetLifeTime ();
952- kfOmegac0Candidate.ctOmegac = kfOmegac0ToPv .GetLifeTime ();
952+ kfOmegac0Candidate.ctV0 = kfV0 .GetLifeTime ();
953+ kfOmegac0Candidate.ctCasc = kfOmega .GetLifeTime ();
954+ kfOmegac0Candidate.ctOmegac = kfOmegaC0 .GetLifeTime ();
953955
954956 // KF eta
955- kfOmegac0Candidate.etaOmegac = kfOmegac0ToPv .GetEta ();
957+ kfOmegac0Candidate.etaOmegac = kfOmegaC0 .GetEta ();
956958
957959 // fill KF hist
958960 registry.fill (HIST (" hKFParticleCascBachTopoChi2" ), cascBachTopoChi2);
0 commit comments