Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 45 additions & 43 deletions PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -692,6 +692,7 @@ struct HfCandidateCreatorXic0Omegac0 {
if (kfUseV0MassConstraint) {
KFParticle kfV0 = kfV0MassConstrained;
}
kfV0.TransportToDecayVertex();

//__________________________________________
//*>~<* step 2 : reconstruct cascade(Omega) with KF
Expand Down Expand Up @@ -723,6 +724,7 @@ struct HfCandidateCreatorXic0Omegac0 {
KFParticle kfOmega = kfOmegaMassConstrained;
}
registry.fill(HIST("hInvMassOmegaMinus"), massCasc);
kfOmega.TransportToDecayVertex();

//__________________________________________
//*>~<* step 3 : reconstruc Omegac0 with KF
Expand All @@ -749,7 +751,7 @@ struct HfCandidateCreatorXic0Omegac0 {
continue;
hFitterStatus->Fill(0);
hCandidateCounter->Fill(2);

kfOmegaC0.TransportToDecayVertex();
// PV
KFPVertex kfVertex = createKFPVertexFromCollision(collision);
KFParticle kfPV(kfVertex);
Expand Down Expand Up @@ -779,17 +781,17 @@ struct HfCandidateCreatorXic0Omegac0 {
kfOmegac0ToPv.SetProductionVertex(kfPV);
kfPiFromOmegacToPv.SetProductionVertex(kfPV);
//------------get updated daughter tracks after vertex fit ---------------
auto trackParVarCharmBachelor = getTrackParCovFromKFP(kfBachPionToOmegaC, o2::track::PID::Pion, kfBachPionToOmegaC.GetQ()); // chrambaryon bach pion
auto trackParVarCharmBachelor = getTrackParCovFromKFP(kfBachPionToOmegaC, o2::track::PID::Pion, -bachCharge); // chrambaryon bach pion
trackParVarCharmBachelor.setAbsCharge(1);

omegaDauChargedTrackParCov = getTrackParCovFromKFP(kfBachKaonToOmega, o2::track::PID::Kaon, kfBachKaonToOmega.GetQ()); // Cascade bach kaon
omegaDauChargedTrackParCov = getTrackParCovFromKFP(kfBachKaonToOmega, o2::track::PID::Kaon, bachCharge); // Cascade bach kaon
omegaDauChargedTrackParCov.setAbsCharge(1);
o2::track::TrackParCov trackCasc = getTrackParCovFromKFP(kfOmegaToOmegaC, kfOmegaToOmegaC.GetPDG(), 0);
trackCasc.setAbsCharge(0);
o2::track::TrackParCov trackCasc = getTrackParCovFromKFP(kfOmegaToOmegaC, kfOmegaToOmegaC.GetPDG(), bachCharge);
trackCasc.setAbsCharge(1);

trackParCovV0Dau0 = getTrackParCovFromKFP(kfPos, kfPos.GetPDG(), kfPos.GetQ()); // V0 postive daughter
trackParCovV0Dau0 = getTrackParCovFromKFP(kfPos, kfPos.GetPDG(), 1); // V0 postive daughter
trackParCovV0Dau0.setAbsCharge(1);
trackParCovV0Dau1 = getTrackParCovFromKFP(kfNeg, kfNeg.GetPDG(), kfNeg.GetQ()); // V0 negtive daughter
trackParCovV0Dau1 = getTrackParCovFromKFP(kfNeg, kfNeg.GetPDG(), -1); // V0 negtive daughter
trackParCovV0Dau1.setAbsCharge(1);

//-------------------------- V0 info---------------------------
Expand All @@ -798,8 +800,8 @@ struct HfCandidateCreatorXic0Omegac0 {
float pseudorapV0Dau1 = kfNeg.GetEta();

// info from from KFParticle
std::array<float, 3> pVecV0 = {kfV0ToCasc.GetPx(), kfV0ToCasc.GetPy(), kfV0ToCasc.GetPz()}; // pVec stands for vector containing the 3-momentum components
std::array<float, 3> vertexV0 = {kfV0ToCasc.GetX(), kfV0ToCasc.GetY(), kfV0ToCasc.GetZ()};
std::array<float, 3> pVecV0 = {kfV0.GetPx(), kfV0.GetPy(), kfV0.GetPz()}; // pVec stands for vector containing the 3-momentum components
std::array<float, 3> vertexV0 = {kfV0.GetX(), kfV0.GetY(), kfV0.GetZ()};
std::array<float, 3> pVecV0Dau0 = {kfPos.GetPx(), kfPos.GetPy(), kfPos.GetPz()};
std::array<float, 3> pVecV0Dau1 = {kfNeg.GetPx(), kfNeg.GetPy(), kfNeg.GetPz()};

Expand All @@ -808,7 +810,7 @@ struct HfCandidateCreatorXic0Omegac0 {
float pseudorapCascBachelor = kfBachKaonToOmega.GetEta();

// info from KFParticle
std::array<float, 3> vertexCasc = {kfOmegaToOmegaC.GetX(), kfOmegaToOmegaC.GetY(), kfOmegaToOmegaC.GetZ()};
std::array<float, 3> vertexCasc = {kfOmega.GetX(), kfOmega.GetY(), kfOmega.GetZ()};
std::array<float, 3> pVecCascBachelor = {kfBachKaonToOmega.GetPx(), kfBachKaonToOmega.GetPy(), kfBachKaonToOmega.GetPz()};

auto primaryVertex = getPrimaryVertex(collision);
Expand All @@ -826,18 +828,18 @@ struct HfCandidateCreatorXic0Omegac0 {
kfVertex.GetCovarianceMatrix(covMatrixPV);

// impact parameters
o2::dataformats::DCA impactParameterV0Dau0;
o2::dataformats::DCA impactParameterV0Dau1;
o2::dataformats::DCA impactParameterKaFromCasc;
o2::base::Propagator::Instance()->propagateToDCABxByBz(primaryVertex, trackParCovV0Dau0, 2.f, matCorr, &impactParameterV0Dau0);
o2::base::Propagator::Instance()->propagateToDCABxByBz(primaryVertex, trackParCovV0Dau1, 2.f, matCorr, &impactParameterV0Dau1);
o2::base::Propagator::Instance()->propagateToDCABxByBz(primaryVertex, omegaDauChargedTrackParCov, 2.f, matCorr, &impactParameterKaFromCasc);
float dcaxyV0Dau0 = impactParameterV0Dau0.getY();
float dcaxyV0Dau1 = impactParameterV0Dau1.getY();
float dcaxyCascBachelor = impactParameterKaFromCasc.getY();
float dcazV0Dau0 = impactParameterV0Dau0.getZ();
float dcazV0Dau1 = impactParameterV0Dau1.getZ();
float dcazCascBachelor = impactParameterKaFromCasc.getZ();
gpu::gpustd::array<float, 2> impactParameterV0Dau0;
gpu::gpustd::array<float, 2> impactParameterV0Dau1;
gpu::gpustd::array<float, 2> impactParameterKaFromCasc;
o2::base::Propagator::Instance()->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, trackParCovV0Dau0, 2.f, matCorr, &impactParameterV0Dau0);
o2::base::Propagator::Instance()->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, trackParCovV0Dau1, 2.f, matCorr, &impactParameterV0Dau1);
o2::base::Propagator::Instance()->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, omegaDauChargedTrackParCov, 2.f, matCorr, &impactParameterKaFromCasc);
float dcaxyV0Dau0 = impactParameterV0Dau0[0];
float dcaxyV0Dau1 = impactParameterV0Dau1[0];
float dcaxyCascBachelor = impactParameterKaFromCasc[0];
float dcazV0Dau0 = impactParameterV0Dau0[1];
float dcazV0Dau1 = impactParameterV0Dau1[1];
float dcazCascBachelor = impactParameterKaFromCasc[1];

// pseudorapidity
float pseudorapCharmBachelor = kfBachPionToOmegaC.GetEta();
Expand All @@ -856,7 +858,7 @@ struct HfCandidateCreatorXic0Omegac0 {
float decLenV0 = RecoDecay::distance(vertexCasc, vertexV0);

double phiCharmBaryon, thetaCharmBaryon;
getPointDirection(std::array{kfV0ToCasc.GetX(), kfV0ToCasc.GetY(), kfV0ToCasc.GetZ()}, coordVtxCharmBaryon, phiCharmBaryon, thetaCharmBaryon);
getPointDirection(std::array{kfV0.GetX(), kfV0.GetY(), kfV0.GetZ()}, coordVtxCharmBaryon, phiCharmBaryon, thetaCharmBaryon);
auto errorDecayLengthCharmBaryon = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phiCharmBaryon, thetaCharmBaryon) + getRotatedCovMatrixXX(covVtxCharmBaryon, phiCharmBaryon, thetaCharmBaryon));
auto errorDecayLengthXYCharmBaryon = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phiCharmBaryon, 0.) + getRotatedCovMatrixXX(covVtxCharmBaryon, phiCharmBaryon, 0.));

Expand Down Expand Up @@ -908,51 +910,51 @@ struct HfCandidateCreatorXic0Omegac0 {

// KF decay length
float DecayLxy_Lam, err_DecayLxy_Lam;
kfV0ToCasc.GetDecayLengthXY(DecayLxy_Lam, err_DecayLxy_Lam);
kfV0.GetDecayLengthXY(DecayLxy_Lam, err_DecayLxy_Lam);
kfOmegac0Candidate.decayLenXYLambda = DecayLxy_Lam;

float DecayLxy_Casc, err_DecayLxy_Casc;
kfOmegaToOmegaC.GetDecayLengthXY(DecayLxy_Casc, err_DecayLxy_Casc);
kfOmega.GetDecayLengthXY(DecayLxy_Casc, err_DecayLxy_Casc);
kfOmegac0Candidate.decayLenXYCasc = DecayLxy_Casc;

float DecayLxy_Omegac0, err_DecayLxy_Omegac0;
kfOmegac0ToPv.GetDecayLengthXY(DecayLxy_Omegac0, err_DecayLxy_Omegac0);
kfOmegaC0.GetDecayLengthXY(DecayLxy_Omegac0, err_DecayLxy_Omegac0);
kfOmegac0Candidate.decayLenXYOmegac = DecayLxy_Omegac0;

// KF cosPA
kfOmegac0Candidate.cosPaV0ToPv = cpaFromKF(kfV0ToCasc, kfPV);
kfOmegac0Candidate.cosPaCascToPv = cpaFromKF(kfOmegaToOmegaC, kfPV);
kfOmegac0Candidate.cosPaOmegacToPv = cpaFromKF(kfOmegac0ToPv, kfPV);
kfOmegac0Candidate.cosPaXYV0ToPv = cpaXYFromKF(kfV0ToCasc, kfPV);
kfOmegac0Candidate.cosPaXYCascToPv = cpaXYFromKF(kfOmegaToOmegaC, kfPV);
kfOmegac0Candidate.cosPaXYOmegacToPv = cpaXYFromKF(kfOmegac0ToPv, kfPV);

kfOmegac0Candidate.cosPaV0ToCasc = cpaFromKF(kfV0ToCasc, kfOmega);
kfOmegac0Candidate.cosPaCascToOmegac = cpaFromKF(kfOmegaToOmegaC, kfOmegaC0);
kfOmegac0Candidate.cosPaXYV0ToCasc = cpaXYFromKF(kfV0ToCasc, kfOmega);
kfOmegac0Candidate.cosPaXYCascToOmegac = cpaXYFromKF(kfOmegaToOmegaC, kfOmegaC0);
kfOmegac0Candidate.cosPaV0ToPv = cpaFromKF(kfV0, kfPV);
kfOmegac0Candidate.cosPaCascToPv = cpaFromKF(kfOmega, kfPV);
kfOmegac0Candidate.cosPaOmegacToPv = cpaFromKF(kfOmegaC0, kfPV);
kfOmegac0Candidate.cosPaXYV0ToPv = cpaXYFromKF(kfV0, kfPV);
kfOmegac0Candidate.cosPaXYCascToPv = cpaXYFromKF(kfOmega, kfPV);
kfOmegac0Candidate.cosPaXYOmegacToPv = cpaXYFromKF(kfOmegaC0, kfPV);

kfOmegac0Candidate.cosPaV0ToCasc = cpaFromKF(kfV0, kfOmega);
kfOmegac0Candidate.cosPaCascToOmegac = cpaFromKF(kfOmega, kfOmegaC0);
kfOmegac0Candidate.cosPaXYV0ToCasc = cpaXYFromKF(kfV0, kfOmega);
kfOmegac0Candidate.cosPaXYCascToOmegac = cpaXYFromKF(kfOmega, kfOmegaC0);
// KF mass
kfOmegac0Candidate.massV0 = massLam;
kfOmegac0Candidate.massCasc = massCasc;
kfOmegac0Candidate.massOmegac = massOmegaC0;

// KF pT
kfOmegac0Candidate.ptPiFromOmegac = kfBachPionToOmegaC.GetPt();
kfOmegac0Candidate.ptOmegac = kfOmegac0ToPv.GetPt();
kfOmegac0Candidate.ptOmegac = kfOmegaC0.GetPt();

// KF rapidity
kfOmegac0Candidate.rapOmegac = kfOmegac0ToPv.GetRapidity();
kfOmegac0Candidate.rapOmegac = kfOmegaC0.GetRapidity();

// KF cosThetaStar
kfOmegac0Candidate.cosThetaStarPiFromOmegac = cosThetaStarFromKF(0, 4332, 211, 3312, kfBachPionToOmegaC, kfOmegaToOmegaC);

// KF ct
kfOmegac0Candidate.ctV0 = kfV0ToCasc.GetLifeTime();
kfOmegac0Candidate.ctCasc = kfOmegaToOmegaC.GetLifeTime();
kfOmegac0Candidate.ctOmegac = kfOmegac0ToPv.GetLifeTime();
kfOmegac0Candidate.ctV0 = kfV0.GetLifeTime();
kfOmegac0Candidate.ctCasc = kfOmega.GetLifeTime();
kfOmegac0Candidate.ctOmegac = kfOmegaC0.GetLifeTime();

// KF eta
kfOmegac0Candidate.etaOmegac = kfOmegac0ToPv.GetEta();
kfOmegac0Candidate.etaOmegac = kfOmegaC0.GetEta();

// fill KF hist
registry.fill(HIST("hKFParticleCascBachTopoChi2"), cascBachTopoChi2);
Expand Down
4 changes: 4 additions & 0 deletions PWGHF/TableProducer/treeCreatorOmegacToOmegaPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ DECLARE_SOA_TABLE(HfKfOmegacFulls, "AOD", "HFKFOMEGACFULL",
full::NSigmaTPCPiFromOmegac, full::NSigmaTOFPiFromOmegac, full::NSigmaTPCKaFromCasc, full::NSigmaTOFKaFromCasc,
full::NSigmaTPCPiFromV0, full::NSigmaTPCPrFromV0,
full::KfDcaXYPiFromOmegac, full::DcaCascDau, full::DcaCharmBaryonDau, full::KfDcaXYCascToPv,
full::DcaXYToPvV0Dau0, full::DcaXYToPvV0Dau1, full::DcaXYToPvCascDau,
full::Chi2GeoV0, full::Chi2GeoCasc, full::Chi2GeoOmegac,
full::Chi2MassV0, full::Chi2MassCasc,
full::V0ldl, full::Cascldl, full::Omegacldl,
Expand Down Expand Up @@ -310,6 +311,9 @@ struct HfTreeCreatorOmegac0ToOmegaPi {
candidate.dcaCascDau(),
candidate.dcaCharmBaryonDau(),
candidate.kfDcaXYCascToPv(),
candidate.dcaXYToPvV0Dau0(),
candidate.dcaXYToPvV0Dau1(),
candidate.dcaXYToPvCascDau(),
candidate.chi2GeoV0(),
candidate.chi2GeoCasc(),
candidate.chi2GeoOmegac(),
Expand Down