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;
66 if (!truthParticles.
isValid()) {
67 ATH_MSG_ERROR(
"Couldn't retrieve TruthParticle collection with name " << m_particlesKey);
68 return StatusCode::FAILURE;
71 unsigned int nParticles = truthParticles->
size();
72 m_ntotpart += nParticles;
80 for (
unsigned int i=0;
i<nParticles; ++
i) {
82 auto classification = m_classifier->particleTruthClassifier((*truthParticles)[
i], &
info);
83 unsigned int particleOutCome =
info.particleOutCome;
86 unsigned int particleOrigin = classification.second;
88 originDecorator(*((*truthParticles)[
i])) = particleOrigin;
89 outcomeDecorator(*((*truthParticles)[
i])) = particleOutCome;
91 classificationDecorator(*((*truthParticles)[
i])) =
result;
94 return StatusCode::SUCCESS;