21 const IInterface*
p ) :
24 m_classifier(
"MCTruthClassifier/MCTruthClassifier")
40 ATH_MSG_INFO(
"Decorating " << m_particlesKey.key() <<
" with classification information");
43 ATH_CHECK(m_originDecoratorKey.initialize());
44 ATH_CHECK(m_typeDecoratorKey.initialize());
45 ATH_CHECK(m_outcomeDecoratorKey.initialize());
46 ATH_CHECK(m_classificationDecoratorKey.initialize());
48 return StatusCode::SUCCESS;
54 ATH_MSG_INFO(
"Processed and decorated "<< m_ntotpart <<
" truth particles");
55 return StatusCode::SUCCESS;
63 const EventContext& ctx = Gaudi::Hive::currentContext();
67 if (!truthParticles.
isValid()) {
68 ATH_MSG_ERROR(
"Couldn't retrieve TruthParticle collection with name " << m_particlesKey);
69 return StatusCode::FAILURE;
72 unsigned int nParticles = truthParticles->
size();
73 m_ntotpart += nParticles;
81 for (
unsigned int i=0;
i<nParticles; ++
i) {
83 auto classification = m_classifier->particleTruthClassifier((*truthParticles)[
i], &
info);
84 unsigned int particleOutCome =
info.particleOutCome;
87 unsigned int particleOrigin = classification.second;
89 originDecorator(*((*truthParticles)[
i])) = particleOrigin;
90 outcomeDecorator(*((*truthParticles)[
i])) = particleOutCome;
92 classificationDecorator(*((*truthParticles)[
i])) =
result;
95 return StatusCode::SUCCESS;