@@ -354,7 +354,7 @@ struct nucleiQC {
354354 return true ;
355355 }
356356
357- template <typename Tparticle>
357+ template <int iSpecies, typename Tparticle>
358358 void fillNucleusFlagsPdgsMc (const Tparticle& particle, nuclei::SlimCandidate& candidate)
359359 {
360360 candidate.pdgCode = particle.pdgCode ();
@@ -385,14 +385,9 @@ struct nucleiQC {
385385 candidate.flags |= nuclei::QcFlags::kQcIsSecondaryFromWeakDecay ;
386386 } else {
387387 candidate.flags |= nuclei::QcFlags::kQcIsSecondaryFromMaterial ;
388- static_for<0 , nuclei::kNspecies - 1 >([&](auto iSpeciesCtV) {
389- constexpr int kSpeciesCt = decltype (iSpeciesCtV)::value;
390- if (nuclei::getSpeciesFromPdg (particle.pdgCode ()) == kSpeciesCt ) {
391- mHistograms .fill (HIST (nuclei::cNames[kSpeciesCt ]) + HIST (" /h2Productionvertex" ), particle.vx (), particle.vy ());
392- }
393- candidate.vx = particle.vx ();
394- candidate.vy = particle.vy ();
395- });
388+ mHistograms .fill (HIST (nuclei::cNames[iSpecies]) + HIST (" /h2Productionvertex" ), particle.vx (), particle.vy ());
389+ candidate.vx = particle.vx ();
390+ candidate.vy = particle.vy ();
396391 }
397392 }
398393
@@ -463,7 +458,12 @@ struct nucleiQC {
463458 if (track.has_mcParticle ()) {
464459
465460 const auto & particle = track.mcParticle ();
466- fillNucleusFlagsPdgsMc (particle, candidate);
461+ static_for<0 , nuclei::kNspecies - 1 >([&](auto iSpeciesCtV) {
462+ constexpr int kSpeciesCt = decltype (iSpeciesCtV)::value;
463+ if (std::abs (particle.pdgCode ()) == nuclei::pdgCodes[kSpeciesCt ]) {
464+ fillNucleusFlagsPdgsMc<kSpeciesCt >(particle, candidate);
465+ }
466+ });
467467 fillNucleusGeneratedVariables (particle, candidate);
468468 }
469469 }
@@ -662,7 +662,12 @@ struct nucleiQC {
662662 const auto & centralityIt = mcCollisionIdToCentrality.find (particle.mcCollisionId ());
663663 candidate.centrality = centralityIt != mcCollisionIdToCentrality.end () ? centralityIt->second : -1 .f ;
664664 fillCollisionFlag (particle, candidate, reconstructedCollisions);
665- fillNucleusFlagsPdgsMc (particle, candidate);
665+ static_for<0 , nuclei::kNspecies - 1 >([&](auto iSpeciesCtV) {
666+ constexpr int kSpeciesCt = decltype (iSpeciesCtV)::value;
667+ if (std::abs (particle.pdgCode ()) == nuclei::pdgCodes[kSpeciesCt ]) {
668+ fillNucleusFlagsPdgsMc<kSpeciesCt >(particle, candidate);
669+ }
670+ });
666671 fillNucleusGeneratedVariables (particle, candidate);
667672
668673 writeCandidate (candidate);
0 commit comments