Skip to content
Open
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
17 changes: 10 additions & 7 deletions PWGHF/DataModel/CandidateReconstructionTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -1450,7 +1450,9 @@ DECLARE_SOA_COLUMN(CpaLambda, cpaLambda, float);
DECLARE_SOA_COLUMN(CpaXYLambda, cpaXYLambda, float);
DECLARE_SOA_COLUMN(CpaLambdaToXi, cpaLambdaToXi, float);
DECLARE_SOA_COLUMN(CpaXYLambdaToXi, cpaXYLambdaToXi, float);
DECLARE_SOA_COLUMN(RadiusLambda, radiusLambda, float);
DECLARE_SOA_COLUMN(PBachelorPi, pBachelorPi, float);
DECLARE_SOA_COLUMN(PtBachelorPi, ptBachelorPi, float);
DECLARE_SOA_COLUMN(PPiFromLambda, pPiFromLambda, float);
DECLARE_SOA_COLUMN(PPrFromLambda, pPrFromLambda, float);
DECLARE_SOA_COLUMN(DcaXiDaughters, dcaXiDaughters, float);
Expand All @@ -1462,10 +1464,10 @@ DECLARE_SOA_COLUMN(DcaXYCascToPV, dcaXYCascToPV, float);
DECLARE_SOA_COLUMN(DcaZCascToPV, dcaZCascToPV, float);
// KF specific columns
DECLARE_SOA_COLUMN(Chi2TopoXicPlusToPV, chi2TopoXicPlusToPV, float);
DECLARE_SOA_COLUMN(Chi2TopoXicPlusToPVBefConst, chi2TopoXicPlusToPVBefConst, float);
DECLARE_SOA_COLUMN(Chi2PrimXi, chi2PrimXi, float);
DECLARE_SOA_COLUMN(Chi2PrimPi0, chi2PrimPi0, float);
DECLARE_SOA_COLUMN(Chi2PrimPi1, chi2PrimPi1, float);
DECLARE_SOA_COLUMN(Chi2XicPlusToPV, chi2XicPlusToPV, float);
DECLARE_SOA_COLUMN(Chi2XiToPV, chi2XiToPV, float);
DECLARE_SOA_COLUMN(Chi2Pi0ToPV, chi2Pi0ToPV, float);
DECLARE_SOA_COLUMN(Chi2Pi1ToPV, chi2Pi1ToPV, float);
DECLARE_SOA_COLUMN(Chi2DevPi0Pi1, chi2DevPi0Pi1, float);
DECLARE_SOA_COLUMN(Chi2DevPi0Xi, chi2DevPi0Xi, float);
DECLARE_SOA_COLUMN(Chi2DevPi1Xi, chi2DevPi1Xi, float);
Expand Down Expand Up @@ -1535,9 +1537,10 @@ DECLARE_SOA_TABLE(HfCandXicBase, "AOD", "HFCANDXICBASE",
hf_cand::ImpactParameter0, hf_cand::ImpactParameter1, hf_cand::ImpactParameter2,
hf_cand::ErrorImpactParameter0, hf_cand::ErrorImpactParameter1, hf_cand::ErrorImpactParameter2,
// cascade specific columns
hf_cand_xic_to_xi_pi_pi::PBachelorPi, hf_cand_xic_to_xi_pi_pi::PPiFromLambda, hf_cand_xic_to_xi_pi_pi::PPrFromLambda,
hf_cand_xic_to_xi_pi_pi::PBachelorPi, hf_cand_xic_to_xi_pi_pi::PPiFromLambda, hf_cand_xic_to_xi_pi_pi::PPrFromLambda, hf_cand_xic_to_xi_pi_pi::PtBachelorPi,
hf_cand_xic_to_xi_pi_pi::CpaXi, hf_cand_xic_to_xi_pi_pi::CpaXYXi, hf_cand_xic_to_xi_pi_pi::CpaLambda, hf_cand_xic_to_xi_pi_pi::CpaXYLambda, hf_cand_xic_to_xi_pi_pi::CpaLambdaToXi, hf_cand_xic_to_xi_pi_pi::CpaXYLambdaToXi,
hf_cand_xic_to_xi_pi_pi::InvMassXi, hf_cand_xic_to_xi_pi_pi::InvMassLambda, hf_cand_xic_to_xi_pi_pi::InvMassXiPi0, hf_cand_xic_to_xi_pi_pi::InvMassXiPi1,
hf_cand_xic_to_xi_pi_pi::RadiusLambda,
// DCA
hf_cand_xic_to_xi_pi_pi::DcaXiDaughters, hf_cand_xic_to_xi_pi_pi::DcaV0Daughters, hf_cand_xic_to_xi_pi_pi::DcaPosToPV, hf_cand_xic_to_xi_pi_pi::DcaNegToPV, hf_cand_xic_to_xi_pi_pi::DcaBachelorToPV, hf_cand_xic_to_xi_pi_pi::DcaXYCascToPV, hf_cand_xic_to_xi_pi_pi::DcaZCascToPV,
// PID
Expand Down Expand Up @@ -1580,8 +1583,8 @@ using HfCandXic = HfCandXicExt;
DECLARE_SOA_TABLE(HfCandXicKF, "AOD", "HFCANDXICKF",
hf_cand_xic_to_xi_pi_pi::KfDecayLength, hf_cand_xic_to_xi_pi_pi::KfDecayLengthNormalised, hf_cand_xic_to_xi_pi_pi::KfDecayLengthXY, hf_cand_xic_to_xi_pi_pi::KfDecayLengthXYNormalised,
cascdata::KFCascadeChi2, cascdata::KFV0Chi2,
hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPVBefConst, hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPV,
hf_cand_xic_to_xi_pi_pi::Chi2PrimXi, hf_cand_xic_to_xi_pi_pi::Chi2PrimPi0, hf_cand_xic_to_xi_pi_pi::Chi2PrimPi1,
hf_cand_xic_to_xi_pi_pi::Chi2XicPlusToPV, hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPV,
hf_cand_xic_to_xi_pi_pi::Chi2XiToPV, hf_cand_xic_to_xi_pi_pi::Chi2Pi0ToPV, hf_cand_xic_to_xi_pi_pi::Chi2Pi1ToPV,
hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Pi1, hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Xi, hf_cand_xic_to_xi_pi_pi::Chi2DevPi1Xi,
hf_cand_xic_to_xi_pi_pi::DcaPi0Pi1, hf_cand_xic_to_xi_pi_pi::DcaPi0Xi, hf_cand_xic_to_xi_pi_pi::DcaPi1Xi,
hf_cand_xic_to_xi_pi_pi::DcaXYPi0Pi1, hf_cand_xic_to_xi_pi_pi::DcaXYPi0Xi, hf_cand_xic_to_xi_pi_pi::DcaXYPi1Xi);
Expand Down
18 changes: 15 additions & 3 deletions PWGHF/TableProducer/candidateCreatorXicToXiPiPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ struct HfCandidateCreatorXicToXiPiPi {
Configurable<bool> useAbsDCA{"useAbsDCA", false, "Minimise abs. distance rather than chi2"};
Configurable<bool> useWeightedFinalPCA{"useWeightedFinalPCA", false, "Recalculate vertex position using track covariances, effective only if useAbsDCA is true"};
// KFParticle
Configurable<bool> useXiMassConstraint{"useXiMassConstraint", true, "Use mass constraint for Xi"};
Configurable<bool> useXiMassConstraint{"useXiMassConstraint", true, "Use mass constraint for Xi. WARNING: Only disable if you know what you are doing!"};
Configurable<bool> constrainXicPlusToPv{"constrainXicPlusToPv", false, "Constrain XicPlus to PV"};
Configurable<int> kfConstructMethod{"kfConstructMethod", 2, "Construct method of XicPlus: 0 fast mathematics without constraint of fixed daughter particle masses, 2 daughter particle masses stay fixed in construction process"};
Configurable<bool> rejDiffCollTrack{"rejDiffCollTrack", true, "Reject tracks coming from different collisions (effective only for KFParticle w/o derived data)"};
Expand Down Expand Up @@ -414,6 +414,9 @@ struct HfCandidateCreatorXicToXiPiPi {
float const cpaLambdaToXi = RecoDecay::cpa(vertexCasc, vertexV0, pVecV0);
float const cpaXYLambdaToXi = RecoDecay::cpaXY(vertexCasc, vertexV0, pVecV0);

// calculate Lambda radius
float const radiusLambda = std::hypot(vertexV0[0], vertexV0[1]);

// get invariant mass of Xi-pi pairs
auto arrayMomentaXiPi0 = std::array{pVecXi, pVecPi0};
massXiPi0 = RecoDecay::m(arrayMomentaXiPi0, std::array{MassXiMinus, MassPiPlus});
Expand Down Expand Up @@ -495,9 +498,10 @@ struct HfCandidateCreatorXicToXiPiPi {
impactParameterCasc.getY(), impactParameter0.getY(), impactParameter1.getY(),
std::sqrt(impactParameterCasc.getSigmaY2()), std::sqrt(impactParameter0.getSigmaY2()), std::sqrt(impactParameter1.getSigmaY2()),
/*cascade specific columns*/
trackPionFromXi.p(), pPiFromLambda, pPrFromLambda,
trackPionFromXi.p(), pPiFromLambda, pPrFromLambda, trackPionFromXi.pt(),
cpaXi, cpaXYXi, cpaLambda, cpaXYLambda, cpaLambdaToXi, cpaXYLambdaToXi,
casc.mXi(), casc.mLambda(), massXiPi0, massXiPi1,
radiusLambda,
/*DCA information*/
casc.dcacascdaughters(), casc.dcaV0daughters(), casc.dcapostopv(), casc.dcanegtopv(), casc.dcabachtopv(),
casc.dcaXYCascToPV(), casc.dcaZCascToPV(),
Expand Down Expand Up @@ -598,6 +602,10 @@ struct HfCandidateCreatorXicToXiPiPi {
float parPosMom[NElementsStateVector];
std::copy(xyzpxpypz.begin(), xyzpxpypz.end(), parPosMom);
// create KFParticle
// README: The Xi KFParticle in this case is constructed from the parameters stored in the LF cascade table.
// The LF strangenessbuilder should in this case be run WITHOUT the mass constraint on the Xi to consistently store the unconstrained parameters and invariant mass of the Xi.
// The mass constraint on the Xi is applied here only after the KFParticle object was created from the unconstrained parameters and covariance matrix of the Xi.
// WARNING: If the Xi gets already constrained in the LF strangenessbuilder, the parameters and cov matrix passed to the KFParticle.Create() function will be constrained while the mass won't be. The stored energy, mass, and momentum will not be correctly related anymore!
KFParticle kfXi;
float const massXi = casc.mXi();
kfXi.Create(parPosMom, casc.kfTrackCovMat(), casc.sign(), massXi);
Expand Down Expand Up @@ -663,6 +671,9 @@ struct HfCandidateCreatorXicToXiPiPi {
float const cpaLambdaToXi = RecoDecay::cpa(vertexCasc, vertexV0, pVecV0);
float const cpaXYLambdaToXi = RecoDecay::cpaXY(vertexCasc, vertexV0, pVecV0);

// calculate Lambda radius
float const radiusLambda = std::hypot(vertexV0[0], vertexV0[1]);

// get chi2 deviation of Pi0-Pi1, Pi0-Xi, Pi1-Xi
float chi2DevPi0Pi1 = kfCharmBachelor0.GetDeviationFromParticle(kfCharmBachelor1);
float chi2DevPi0Xi = kfCharmBachelor0.GetDeviationFromParticle(kfXi);
Expand Down Expand Up @@ -779,9 +790,10 @@ struct HfCandidateCreatorXicToXiPiPi {
impactParameterXiXY, impactParameterPi0XY, impactParameterPi1XY,
errImpactParameterXiXY, errImpactParameterPi0XY, errImpactParameterPi1XY,
/*cascade specific columns*/
trackPionFromXi.p(), pPiFromLambda, pPrFromLambda,
trackPionFromXi.p(), pPiFromLambda, pPrFromLambda, trackPionFromXi.pt(),
cpaXi, cpaXYXi, cpaLambda, cpaXYLambda, cpaLambdaToXi, cpaXYLambdaToXi,
massXi, casc.mLambda(), massXiPi0, massXiPi1,
radiusLambda,
/*DCA information*/
casc.dcacascdaughters(), casc.dcaV0daughters(), casc.dcapostopv(), casc.dcanegtopv(), casc.dcabachtopv(),
casc.dcaXYCascToPV(), casc.dcaZCascToPV(),
Expand Down
58 changes: 32 additions & 26 deletions PWGHF/TableProducer/treeCreatorXicToXiPiPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiLiteKfs, "AOD", "HFXICXI2PILITKF",
full::PtXi,
full::PtPi0,
full::PtPi1,
hf_cand_xic_to_xi_pi_pi::PtBachelorPi,
full::M,
full::Chi2SV,
full::Ct,
Expand All @@ -145,15 +146,15 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiLiteKfs, "AOD", "HFXICXI2PILITKF",
hf_cand_xic_to_xi_pi_pi::CpaXYXi,
hf_cand_xic_to_xi_pi_pi::CpaLambda,
hf_cand_xic_to_xi_pi_pi::CpaXYLambda,
hf_cand_xic_to_xi_pi_pi::CpaLambdaToXi,
hf_cand_xic_to_xi_pi_pi::CpaXYLambdaToXi,
hf_cand_xic_to_xi_pi_pi::RadiusLambda,
hf_cand_xic_to_xi_pi_pi::InvMassXi,
hf_cand_xic_to_xi_pi_pi::InvMassLambda,
full::ImpactParameterXi,
full::ImpactParameterNormalisedXi,
full::ImpactParameterPi0,
full::ImpactParameterNormalisedPi0,
full::ImpactParameterPi1,
full::ImpactParameterNormalisedPi1,
full::MaxNormalisedDeltaIP,
hf_cand_xic_to_xi_pi_pi::DcaXiDaughters,
hf_cand_xic_to_xi_pi_pi::DcaV0Daughters,
hf_cand_xic_to_xi_pi_pi::DcaXYCascToPV,
Expand All @@ -175,11 +176,11 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiLiteKfs, "AOD", "HFXICXI2PILITKF",
// KF specific columns
full::Chi2GeoXi,
full::Chi2GeoLambda,
hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPVBefConst,
hf_cand_xic_to_xi_pi_pi::Chi2XicPlusToPV,
hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPV,
hf_cand_xic_to_xi_pi_pi::Chi2PrimXi,
hf_cand_xic_to_xi_pi_pi::Chi2PrimPi0,
hf_cand_xic_to_xi_pi_pi::Chi2PrimPi1,
hf_cand_xic_to_xi_pi_pi::Chi2XiToPV,
hf_cand_xic_to_xi_pi_pi::Chi2Pi0ToPV,
hf_cand_xic_to_xi_pi_pi::Chi2Pi1ToPV,
hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Pi1,
hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Xi,
hf_cand_xic_to_xi_pi_pi::Chi2DevPi1Xi,
Expand Down Expand Up @@ -294,6 +295,7 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFullKfs, "AOD", "HFXICXI2PIFULKF",
full::PtXi,
full::PtPi0,
full::PtPi1,
hf_cand_xic_to_xi_pi_pi::PtBachelorPi,
full::M,
full::Chi2SV,
full::Ct,
Expand All @@ -309,6 +311,9 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFullKfs, "AOD", "HFXICXI2PIFULKF",
hf_cand_xic_to_xi_pi_pi::CpaXYLambda,
hf_cand_xic_to_xi_pi_pi::CpaLambdaToXi,
hf_cand_xic_to_xi_pi_pi::CpaXYLambdaToXi,
hf_cand_xic_to_xi_pi_pi::RadiusLambda,
hf_cand_xic_to_xi_pi_pi::InvMassXi,
hf_cand_xic_to_xi_pi_pi::InvMassLambda,
full::ImpactParameterXi,
full::ImpactParameterNormalisedXi,
full::ImpactParameterPi0,
Expand All @@ -324,10 +329,8 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFullKfs, "AOD", "HFXICXI2PIFULKF",
hf_cand_xic_to_xi_pi_pi::DcaPosToPV,
hf_cand_xic_to_xi_pi_pi::DcaNegToPV,
// additional columns only stored in the full candidate table
hf_cand_xic_to_xi_pi_pi::InvMassXi,
hf_cand_xic_to_xi_pi_pi::InvMassXiPi0,
hf_cand_xic_to_xi_pi_pi::InvMassXiPi1,
hf_cand_xic_to_xi_pi_pi::InvMassLambda,
full::P,
full::PPi0,
full::PPi1,
Expand All @@ -348,11 +351,11 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFullKfs, "AOD", "HFXICXI2PIFULKF",
// KF-specific columns
full::Chi2GeoXi,
full::Chi2GeoLambda,
hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPVBefConst,
hf_cand_xic_to_xi_pi_pi::Chi2XicPlusToPV,
hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPV,
hf_cand_xic_to_xi_pi_pi::Chi2PrimXi,
hf_cand_xic_to_xi_pi_pi::Chi2PrimPi0,
hf_cand_xic_to_xi_pi_pi::Chi2PrimPi1,
hf_cand_xic_to_xi_pi_pi::Chi2XiToPV,
hf_cand_xic_to_xi_pi_pi::Chi2Pi0ToPV,
hf_cand_xic_to_xi_pi_pi::Chi2Pi1ToPV,
hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Pi1,
hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Xi,
hf_cand_xic_to_xi_pi_pi::Chi2DevPi1Xi,
Expand Down Expand Up @@ -541,6 +544,7 @@ struct HfTreeCreatorXicToXiPiPi {
candidate.ptProng0(),
candidate.ptProng1(),
candidate.ptProng2(),
candidate.ptBachelorPi(),
candidate.invMassXicPlus(),
candidate.chi2PCA(),
candidate.ct(o2::constants::physics::MassXiCPlus),
Expand All @@ -554,15 +558,15 @@ struct HfTreeCreatorXicToXiPiPi {
candidate.cpaXYXi(),
candidate.cpaLambda(),
candidate.cpaXYLambda(),
candidate.cpaLambdaToXi(),
candidate.cpaXYLambdaToXi(),
candidate.radiusLambda(),
candidate.invMassXi(),
candidate.invMassLambda(),
candidate.impactParameter0(),
candidate.impactParameterNormalised0(),
candidate.impactParameter1(),
candidate.impactParameterNormalised1(),
candidate.impactParameter2(),
candidate.impactParameterNormalised2(),
candidate.maxNormalisedDeltaIP(),
candidate.dcaXiDaughters(),
candidate.dcaV0Daughters(),
candidate.dcaXYCascToPV(),
Expand All @@ -584,11 +588,11 @@ struct HfTreeCreatorXicToXiPiPi {
// KF-specific columns
candidate.kfCascadeChi2(),
candidate.kfV0Chi2(),
candidate.chi2TopoXicPlusToPVBefConst(),
candidate.chi2XicPlusToPV(),
candidate.chi2TopoXicPlusToPV(),
candidate.chi2PrimXi(),
candidate.chi2PrimPi0(),
candidate.chi2PrimPi1(),
candidate.chi2XiToPV(),
candidate.chi2Pi0ToPV(),
candidate.chi2Pi1ToPV(),
candidate.chi2DevPi0Pi1(),
candidate.chi2DevPi0Xi(),
candidate.chi2DevPi1Xi(),
Expand All @@ -610,6 +614,7 @@ struct HfTreeCreatorXicToXiPiPi {
candidate.ptProng0(),
candidate.ptProng1(),
candidate.ptProng2(),
candidate.ptBachelorPi(),
candidate.invMassXicPlus(),
candidate.chi2PCA(),
candidate.ct(o2::constants::physics::MassXiCPlus),
Expand All @@ -625,6 +630,9 @@ struct HfTreeCreatorXicToXiPiPi {
candidate.cpaXYLambda(),
candidate.cpaLambdaToXi(),
candidate.cpaXYLambdaToXi(),
candidate.radiusLambda(),
candidate.invMassXi(),
candidate.invMassLambda(),
candidate.impactParameter0(),
candidate.impactParameterNormalised0(),
candidate.impactParameter1(),
Expand All @@ -640,10 +648,8 @@ struct HfTreeCreatorXicToXiPiPi {
candidate.dcaPosToPV(),
candidate.dcaNegToPV(),
// additional columns only stored in the full candidate table
candidate.invMassXi(),
candidate.invMassXiPi0(),
candidate.invMassXiPi1(),
candidate.invMassLambda(),
candidate.p(),
candidate.pProng1(),
candidate.pProng2(),
Expand All @@ -664,11 +670,11 @@ struct HfTreeCreatorXicToXiPiPi {
// KF-specific columns
candidate.kfCascadeChi2(),
candidate.kfV0Chi2(),
candidate.chi2TopoXicPlusToPVBefConst(),
candidate.chi2XicPlusToPV(),
candidate.chi2TopoXicPlusToPV(),
candidate.chi2PrimXi(),
candidate.chi2PrimPi0(),
candidate.chi2PrimPi1(),
candidate.chi2XiToPV(),
candidate.chi2Pi0ToPV(),
candidate.chi2Pi1ToPV(),
candidate.chi2DevPi0Pi1(),
candidate.chi2DevPi0Xi(),
candidate.chi2DevPi1Xi(),
Expand Down
Loading