20 return StatusCode::SUCCESS;
26 return StatusCode::SUCCESS;
36 std::map<int, unsigned int> childTargets;
42 if (childTargets.end() != childTargets.find(childPdgId)) childTargets[childPdgId] +=1;
43 else childTargets[childPdgId] = 1;
48 for (truthEvent =
events()->
begin(); truthEvent !=
events()->end(); ++truthEvent){
51 const HepMC::GenEvent* genEvent = (*truthEvent);
58 std::map<int, unsigned int> childCounters;
60 int nonListValue = -999;
61 childCounters[nonListValue]= 0;
64 for (
auto childPdgId :
m_pdgIdChildren.value()) childCounters[childPdgId] = 0;
69 ATH_MSG_DEBUG(
"Number of children is " << decayVtx->particles_out_size());
71 for(
auto thisChild: *decayVtx) {
72 int childPdgId = thisChild->pdg_id();
75 if (childTargets.end() != childTargets.find(childPdgId)) childCounters[childPdgId] += 1;
76 else childCounters[nonListValue] += 1;
80 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){
82 setFilterPassed(
true);
83 return StatusCode::SUCCESS;
90 setFilterPassed(
false);
91 return StatusCode::SUCCESS;