@@ -137,7 +137,10 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiLites, "AOD", "HFXICXI2PILITE",
137137 full::ImpactParameterNormalisedPi0,
138138 full::ImpactParameterPi1,
139139 full::ImpactParameterNormalisedPi1,
140- full::MaxNormalisedDeltaIP);
140+ full::MaxNormalisedDeltaIP,
141+ // parameters of matched MC particle
142+ mc_match::PGen,
143+ mc_match::DecayLengthGen);
141144
142145DECLARE_SOA_TABLE (HfCandXicToXiPiPiLiteKfs, " AOD" , " HFXICXI2PILITKF" ,
143146 full::ParticleFlag,
@@ -207,7 +210,10 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiLiteKfs, "AOD", "HFXICXI2PILITKF",
207210 hf_cand_xic_to_xi_pi_pi::DcaPi1Xi,
208211 hf_cand_xic_to_xi_pi_pi::DcaXYPi0Pi1,
209212 hf_cand_xic_to_xi_pi_pi::DcaXYPi0Xi,
210- hf_cand_xic_to_xi_pi_pi::DcaXYPi1Xi);
213+ hf_cand_xic_to_xi_pi_pi::DcaXYPi1Xi,
214+ // parameters of matched MC particle
215+ mc_match::PGen,
216+ mc_match::DecayLengthGen);
211217
212218DECLARE_SOA_TABLE (HfCandXicToXiPiPiLiteMLs, " AOD" , " HFXICXI2PIMLITE" ,
213219 full::ParticleFlag,
@@ -231,7 +237,10 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiLiteMLs, "AOD", "HFXICXI2PIMLITE",
231237 hf_cand_xic_to_xi_pi_pi::NSigTpcPrFromLambda,
232238 full::MlScoreBkg,
233239 full::MlScorePrompt,
234- full::MlScoreNonPrompt);
240+ full::MlScoreNonPrompt,
241+ // parameters of matched MC particle
242+ mc_match::PGen,
243+ mc_match::DecayLengthGen);
235244
236245DECLARE_SOA_TABLE (HfCandXicToXiPiPiFulls, " AOD" , " HFXICXI2PIFULL" ,
237246 full::ParticleFlag,
@@ -293,7 +302,10 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFulls, "AOD", "HFXICXI2PIFULL",
293302 hf_cand_xic_to_xi_pi_pi::NSigTofPiFromXicPlus1,
294303 hf_cand_xic_to_xi_pi_pi::NSigTofBachelorPi,
295304 hf_cand_xic_to_xi_pi_pi::NSigTofPiFromLambda,
296- hf_cand_xic_to_xi_pi_pi::NSigTofPrFromLambda);
305+ hf_cand_xic_to_xi_pi_pi::NSigTofPrFromLambda,
306+ // parameters of matched MC particle
307+ mc_match::PGen,
308+ mc_match::DecayLengthGen);
297309
298310DECLARE_SOA_TABLE (HfCandXicToXiPiPiFullKfs, " AOD" , " HFXICXI2PIFULKF" ,
299311 full::ParticleFlag,
@@ -375,7 +387,10 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFullKfs, "AOD", "HFXICXI2PIFULKF",
375387 hf_cand_xic_to_xi_pi_pi::DcaPi1Xi,
376388 hf_cand_xic_to_xi_pi_pi::DcaXYPi0Pi1,
377389 hf_cand_xic_to_xi_pi_pi::DcaXYPi0Xi,
378- hf_cand_xic_to_xi_pi_pi::DcaXYPi1Xi);
390+ hf_cand_xic_to_xi_pi_pi::DcaXYPi1Xi,
391+ // parameters of matched MC particle
392+ mc_match::PGen,
393+ mc_match::DecayLengthGen);
379394
380395DECLARE_SOA_TABLE (HfCandXicToXiPiPiFullPs, " AOD" , " HFXICXI2PIFULLP" ,
381396 hf_cand_mc_flag::FlagMcMatchGen,
@@ -419,6 +434,7 @@ struct HfTreeCreatorXicToXiPiPi {
419434 Configurable<float > ptMaxForDownSample{" ptMaxForDownSample" , 10 ., " Maximum pt for the application of the downsampling factor" };
420435
421436 static constexpr int kNumBinaryClasses = 2 ;
437+ static constexpr float UndefValueFloat = -999 .f;
422438
423439 using SelectedCandidates = soa::Filtered<soa::Join<aod::HfCandXic, aod::HfSelXicToXiPiPi>>;
424440 using SelectedCandidatesKf = soa::Filtered<soa::Join<aod::HfCandXic, aod::HfCandXicKF, aod::HfSelXicToXiPiPi>>;
@@ -448,9 +464,15 @@ struct HfTreeCreatorXicToXiPiPi {
448464 {
449465 int8_t particleFlag = candidate.sign ();
450466 int8_t originMc = 0 ;
467+ float pGen{UndefValueFloat};
468+ float decayLengthGen{UndefValueFloat};
451469 if constexpr (DoMc) {
452470 particleFlag = candidate.flagMcMatchRec ();
453471 originMc = candidate.originMcRec ();
472+ if (particle.has_value ()) {
473+ pGen = particle->p ();
474+ decayLengthGen = particle->decayLengthMcGen ();
475+ }
454476 }
455477 if constexpr (!DoKf && !DoMl) {
456478 if (fillCandidateLiteTable) {
@@ -489,7 +511,10 @@ struct HfTreeCreatorXicToXiPiPi {
489511 candidate.impactParameterNormalised1 (),
490512 candidate.impactParameter2 (),
491513 candidate.impactParameterNormalised2 (),
492- candidate.maxNormalisedDeltaIP ());
514+ candidate.maxNormalisedDeltaIP (),
515+ // parameters of matched MC particle
516+ pGen,
517+ decayLengthGen);
493518 } else {
494519 rowCandidateFull (
495520 particleFlag,
@@ -551,7 +576,10 @@ struct HfTreeCreatorXicToXiPiPi {
551576 candidate.nSigTofPiFromXicPlus1 (),
552577 candidate.nSigTofBachelorPi (),
553578 candidate.nSigTofPiFromLambda (),
554- candidate.nSigTofPrFromLambda ());
579+ candidate.nSigTofPrFromLambda (),
580+ // parameters of matched MC particle
581+ pGen,
582+ decayLengthGen);
555583 }
556584 } else if constexpr (DoKf) {
557585 if (fillCandidateLiteTable) {
@@ -623,7 +651,10 @@ struct HfTreeCreatorXicToXiPiPi {
623651 candidate.dcaPi1Xi (),
624652 candidate.dcaXYPi0Pi1 (),
625653 candidate.dcaXYPi0Xi (),
626- candidate.dcaXYPi1Xi ());
654+ candidate.dcaXYPi1Xi (),
655+ // parameters of matched MC particle
656+ pGen,
657+ decayLengthGen);
627658 } else {
628659 rowCandidateFullKf (
629660 particleFlag,
@@ -705,7 +736,10 @@ struct HfTreeCreatorXicToXiPiPi {
705736 candidate.dcaPi1Xi (),
706737 candidate.dcaXYPi0Pi1 (),
707738 candidate.dcaXYPi0Xi (),
708- candidate.dcaXYPi1Xi ());
739+ candidate.dcaXYPi1Xi (),
740+ // parameters of matched MC particle
741+ pGen,
742+ decayLengthGen);
709743 }
710744 }
711745 if constexpr (DoMl) {
@@ -740,7 +774,10 @@ struct HfTreeCreatorXicToXiPiPi {
740774 candidate.nSigTpcPrFromLambda (),
741775 mlScoreBkg,
742776 mlScorePrompt,
743- mlScoreNonPrompt);
777+ mlScoreNonPrompt,
778+ // parameters of matched MC particle
779+ pGen,
780+ decayLengthGen);
744781 }
745782 }
746783
@@ -811,23 +848,6 @@ struct HfTreeCreatorXicToXiPiPi {
811848 return particleMother;
812849 }
813850
814- template <typename CandType>
815- float evaluateDecayLengthGenerated (CandType const & candidate, MatchedGenXicToXiPiPi::iterator const & particle)
816- {
817- const auto mcParticlePi0 = candidate.template pi0_as <o2::aod::TracksWMc>().template mcParticle_as <MatchedGenXicToXiPiPi>();
818- const auto decayVertexX = mcParticlePi0.vx ();
819- const auto decayVertexY = mcParticlePi0.vy ();
820- const auto decayVertexZ = mcParticlePi0.vz ();
821-
822- const auto mcCollision = particle.template mcCollision_as <aod::McCollisions>();
823- const auto primaryVertexX = mcCollision.posX ();
824- const auto primaryVertexY = mcCollision.posY ();
825- const auto primaryVertexZ = mcCollision.posZ ();
826-
827- const auto decayLendth = RecoDecay::distance (std::array<float , 3 >{primaryVertexX, primaryVertexY, primaryVertexZ}, std::array<float , 3 >{decayVertexX, decayVertexY, decayVertexZ});
828- return decayLendth;
829- }
830-
831851 void processData (SelectedCandidates const & candidates)
832852 {
833853 // Filling candidate properties
0 commit comments