61 return StatusCode::SUCCESS;
68 std::vector<StatusCode> retvals;
86 for (std::vector<StatusCode>::const_iterator
i = retvals.begin();
i != retvals.end(); ++
i) {
87 if (
i->isFailure()) ok =
false;
89 if (ok)
return StatusCode::SUCCESS;
90 return StatusCode::FAILURE;
94 template <
class PrepDataContainer,
class SIMDATACOLLECTION>
100 ATH_MSG_DEBUG(
"SimDataCollection for key=" << sdoKey.
key() <<
" not in storegate, not adding it ");
101 return StatusCode::SUCCESS;
106 return StatusCode::FAILURE;
112 return StatusCode::FAILURE;
118 ATH_CHECK(
output.record(std::make_unique<PRD_MultiTruthCollection>()));
121 return StatusCode::SUCCESS;
125 template <
class PRD_Container_Iterator,
class SIMDATACOLLECTION>
127 PRD_Container_Iterator collections_begin, PRD_Container_Iterator collections_end,
129 for (PRD_Container_Iterator colNext = collections_begin; colNext != collections_end; ++colNext) {
130 addPRDRange(prdTruth, (*colNext)->begin(), (*colNext)->end(), simDataMap);
136 template <
class PRD_Collection_Iterator,
class SIMDATACOLLECTION>
139 for (PRD_Collection_Iterator nextDatum = range_begin; nextDatum != range_end; nextDatum++) {
145 template <
class SIMDATACOLLECTION>
151 bool gotValidParticle =
false;
154 for (
const auto& nextRDO : prd->
rdoList()) {
155 typename SIMDATACOLLECTION::const_iterator iter(simDataMap->find(nextRDO));
157 if (iter != simDataMap->end()) {
160 typedef typename SIMDATACOLLECTION::mapped_type SIMDATA;
161 const SIMDATA& sdo = iter->second;
162 const std::vector<typename SIMDATA::Deposit>& deposits = sdo.getdeposits();
163 if (deposits.empty()) {
continue; }
164 for (
const auto& [particleLink, mcData] : deposits) {
165 ATH_MSG_VERBOSE(
"addPrepRawDatum(): particleLink.isValid() " << particleLink.isValid());
166 ATH_MSG_VERBOSE(
"addPrepRawDatum(): Barcode " << particleLink.barcode() <<
" evt " << particleLink.eventIndex());
167 if (particleLink.isValid()) {
168 gotValidParticle =
true;
173 std::pair<truthiter, truthiter>
r = prdTruth->equal_range(prd->
identify());
174 const auto& pl = particleLink;
175 if (
r.second == std::find_if(
r.first,
r.second, [pl](
const PRD_MultiTruthCollection::value_type& prd_to_truth) {
176 return prd_to_truth.second == pl;
178 prdTruth->insert(std::make_pair(prd->
identify(), particleLink));
185 if (gotSDO && !gotValidParticle) {
188 ATH_MSG_DEBUG(
"addPrepRawDatum(): got SDO but no particles");