@@ -481,6 +481,18 @@ struct NonPromptCascadeTask {
481481 continue ;
482482 }
483483 auto particle = mcParticles.iteratorAt (c.mcParticleId );
484+ int motherDecayDaughters{0 };
485+ if (c.isFromBeauty || c.isFromCharm ) {
486+ auto mom = particle.template mothers_as <aod::McParticles>()[0 ];
487+ auto daughters = mom.template daughters_as <aod::McParticles>();
488+ motherDecayDaughters = daughters.size ();
489+ for (const auto & d : daughters) {
490+ if (std::abs (d.pdgCode ()) == 11 || std::abs (d.pdgCode ()) == 13 ) {
491+ motherDecayDaughters *= -1 ;
492+ break ;
493+ }
494+ }
495+ }
484496 auto mcCollision = particle.template mcCollision_as <aod::McCollisions>();
485497 auto recCollision = collisions.iteratorAt (c.collisionID );
486498
@@ -493,7 +505,7 @@ struct NonPromptCascadeTask {
493505 c.pionTPCNSigma , c.bachKaonTPCNSigma , c.bachPionTPCNSigma , c.protonHasTOF , c.pionHasTOF , c.bachHasTOF ,
494506 c.protonTOFNSigma , c.pionTOFNSigma , c.bachKaonTOFNSigma , c.bachPionTOFNSigma ,
495507 particle.pt (), particle.eta (), particle.phi (), particle.pdgCode (), mcCollision.posX () - particle.vx (), mcCollision.posY () - particle.vy (),
496- mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId ());
508+ mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId (), motherDecayDaughters );
497509 }
498510 }
499511
@@ -547,7 +559,20 @@ struct NonPromptCascadeTask {
547559 int pdgCodeMom = p.has_mothers () ? p.template mothers_as <aod::McParticles>()[0 ].pdgCode () : 0 ;
548560 auto mcCollision = p.template mcCollision_as <aod::McCollisions>();
549561
550- NPCTableGen (p.pt (), p.eta (), p.phi (), p.pdgCode (), pdgCodeMom, mcCollision.posX () - p.vx (), mcCollision.posY () - p.vy (), mcCollision.posZ () - p.vz (), fromHF[0 ], fromHF[1 ]);
562+ int motherDecayDaughters{0 };
563+ if (fromHF[0 ] || fromHF[1 ]) {
564+ auto mom = p.template mothers_as <aod::McParticles>()[0 ];
565+ auto daughters = mom.template daughters_as <aod::McParticles>();
566+ motherDecayDaughters = daughters.size ();
567+ for (const auto & d : daughters) {
568+ if (std::abs (d.pdgCode ()) == 11 || std::abs (d.pdgCode ()) == 13 ) {
569+ motherDecayDaughters *= -1 ;
570+ break ;
571+ }
572+ }
573+ }
574+
575+ NPCTableGen (p.pt (), p.eta (), p.phi (), p.pdgCode (), pdgCodeMom, mcCollision.posX () - p.vx (), mcCollision.posY () - p.vy (), mcCollision.posZ () - p.vz (), fromHF[0 ], fromHF[1 ], motherDecayDaughters);
551576 }
552577 }
553578 PROCESS_SWITCH (NonPromptCascadeTask, processGenParticles, " process gen cascades: MC analysis" , false );
0 commit comments