Skip to content

Commit 40ad5d0

Browse files
Yunfan-Liurootalibuild
authored
PWGHF: Fixing errors related to KF-variable calculation of OmegaC0. (#8043)
Co-authored-by: root <root@USER-20161104VR.localdomain> Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 42abd13 commit 40ad5d0

2 files changed

Lines changed: 49 additions & 43 deletions

File tree

PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx

Lines changed: 45 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -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);

PWGHF/TableProducer/treeCreatorOmegacToOmegaPi.cxx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ DECLARE_SOA_TABLE(HfKfOmegacFulls, "AOD", "HFKFOMEGACFULL",
181181
full::NSigmaTPCPiFromOmegac, full::NSigmaTOFPiFromOmegac, full::NSigmaTPCKaFromCasc, full::NSigmaTOFKaFromCasc,
182182
full::NSigmaTPCPiFromV0, full::NSigmaTPCPrFromV0,
183183
full::KfDcaXYPiFromOmegac, full::DcaCascDau, full::DcaCharmBaryonDau, full::KfDcaXYCascToPv,
184+
full::DcaXYToPvV0Dau0, full::DcaXYToPvV0Dau1, full::DcaXYToPvCascDau,
184185
full::Chi2GeoV0, full::Chi2GeoCasc, full::Chi2GeoOmegac,
185186
full::Chi2MassV0, full::Chi2MassCasc,
186187
full::V0ldl, full::Cascldl, full::Omegacldl,
@@ -310,6 +311,9 @@ struct HfTreeCreatorOmegac0ToOmegaPi {
310311
candidate.dcaCascDau(),
311312
candidate.dcaCharmBaryonDau(),
312313
candidate.kfDcaXYCascToPv(),
314+
candidate.dcaXYToPvV0Dau0(),
315+
candidate.dcaXYToPvV0Dau1(),
316+
candidate.dcaXYToPvCascDau(),
313317
candidate.chi2GeoV0(),
314318
candidate.chi2GeoCasc(),
315319
candidate.chi2GeoOmegac(),

0 commit comments

Comments
 (0)