45{
46
47
48
49
50 SG::ReadHandle<xAOD::TruthParticleContainer> truthParticles(
m_particlesKey,ctx);
51 if (!truthParticles.isValid()) {
53 return StatusCode::FAILURE;
54 }
55
56 unsigned int nParticles = truthParticles->size();
58
59
60 SG::WriteDecorHandle<xAOD::TruthParticleContainer, unsigned int> originDecorator(
m_originDecoratorKey, ctx);
61 SG::WriteDecorHandle<xAOD::TruthParticleContainer, unsigned int> typeDecorator(
m_typeDecoratorKey, ctx);
62 SG::WriteDecorHandle<xAOD::TruthParticleContainer, unsigned int> outcomeDecorator(
m_outcomeDecoratorKey, ctx);
64
65 for (
unsigned int i=0;
i<nParticles; ++
i) {
66 MCTruthPartClassifier::Info
info;
67 auto classification =
m_classifier->particleTruthClassifier((*truthParticles)[i], &info);
68 unsigned int particleOutCome =
info.particleOutCome;
70 unsigned int particleType = classification.first;
71 unsigned int particleOrigin = classification.second;
72 typeDecorator(*((*truthParticles)[i])) = particleType;
73 originDecorator(*((*truthParticles)[i])) = particleOrigin;
74 outcomeDecorator(*((*truthParticles)[i])) = particleOutCome;
75
76 classificationDecorator(*((*truthParticles)[i])) =
result;
77 }
78
79 return StatusCode::SUCCESS;
80}
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_originDecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_outcomeDecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_typeDecoratorKey
PublicToolHandle< IMCTruthClassifier > m_classifier
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_classificationDecoratorKey
std::atomic< unsigned int > m_ntotpart
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_particlesKey
std::tuple< unsigned int, T > defOrigOfParticle(T thePart)