14 ATH_MSG_INFO(
"xAODParticleDecayFilter::filterInitialize()");
19 return StatusCode::SUCCESS;
24 ATH_MSG_INFO(
"xAODParticleDecayFilter::filterFinalize()");
25 return StatusCode::SUCCESS;
35 std::map<int, unsigned int> childTargets;
42 if (childTargets.end() != childTargets.find(childPdgId)) childTargets[childPdgId] += 1;
43 else childTargets[childPdgId] = 1;
51 ATH_MSG_ERROR(
"No TruthParticle collection with name " <<
"TruthGen" <<
" found in StoreGate!");
52 return StatusCode::FAILURE;
56 unsigned int nPart = xTruthParticleContainer->
size();
57 for (
unsigned int iPart = 0; iPart < nPart; ++iPart) {
62 std::map<int, unsigned int> childCounters;
64 int nonListValue = -999;
65 childCounters[nonListValue] = 0;
68 for (
auto childPdgId :
m_pdgIdChildren.value()) childCounters[childPdgId] = 0;
80 int childPdgId = thisChild->
pdg_id();
83 if (childTargets.end() != childTargets.find(childPdgId)) childCounters[childPdgId] += 1;
84 else childCounters[nonListValue] += 1;
88 if (std::all_of(childTargets.begin(), childTargets.end(), [&](
const std::pair<unsigned int, unsigned int> &
p) { return p.second == childCounters[p.first]; }) && childCounters[nonListValue] == 0)
91 setFilterPassed(
true);
92 return StatusCode::SUCCESS;
99 setFilterPassed(
false);
100 return StatusCode::SUCCESS;