91 std::unique_ptr<TruthParticleHitCounts>
92 truth_particle_hit_counts( std::make_unique<TruthParticleHitCounts>() );
109 measurement_to_truth_association_maps{};
115 const ActsTrk::MeasurementToTruthParticleAssociation *assoc = measurement_to_truth_association_maps[Acts::toUnderlying(type)];
116 return assoc ? assoc->size() : 0
ul;
124 unsigned int measurement_type_i=0;
125 --measurement_type_i;
126 for(
const ActsTrk::MeasurementToTruthParticleAssociation *associated_truth_particles : measurement_to_truth_association_maps ) {
127 ++measurement_type_i;
128 if (!associated_truth_particles)
continue;
131 assert (truth_particle);
133 if (mother_particle) {
134 assert(measurement_type_i < (*truth_particle_hit_counts)[mother_particle].
size());
135 ++(*truth_particle_hit_counts)[mother_particle][measurement_type_i];
141 unsigned int truth_particles_without_enough_measurements
143 [
this, n_hits_min](
const std::pair<const xAOD::TruthParticle * const,HitCounterArray> &elm) {
144 unsigned int n_measurements=std::accumulate(elm.second.begin(), elm.second.end(),0u);
146 return n_measurements<n_hits_min;
149 m_nTruthParticlesWithHits += truth_particle_hit_counts->size();
151 ATH_MSG_DEBUG(
"Truth particles with hits:" << truth_particle_hit_counts->size()
152 <<
", without enough hits: " << truth_particles_without_enough_measurements);
154 SG::WriteHandle<TruthParticleHitCounts> truth_particle_hit_counts_out_handle(
m_truthHitCountsOut, ctx);
155 if (truth_particle_hit_counts_out_handle.record( std::move(truth_particle_hit_counts)).isFailure()) {
157 return StatusCode::FAILURE;
160 return StatusCode::SUCCESS;