32 const std::string& name,
33 const IInterface* parent ) :
41 "Name of the reference McEventCollection" );
45 "Name of the 'to-be-validated' TruthParticleContainer" );
49 "Tool to write the TruthParticleContainer into a "
69 ATH_MSG_ERROR(
"Could not configure the McAod writer tools !!");
70 return StatusCode::FAILURE;
73 return StatusCode::SUCCESS;
79 return StatusCode::SUCCESS;
87 nullptr == mcEvents ) {
90 return StatusCode::FAILURE;
99 nullptr == mcParts ) {
100 ATH_MSG_ERROR(
"Could not retrieve TruthParticleContainer at ["
102 return StatusCode::FAILURE;
115 if (
nullptr == mcEvents ) {
116 ATH_MSG_ERROR(
"NULL pointer to reference McEventCollection !!");
117 return StatusCode::FAILURE;
120 if (
nullptr == mcParts ) {
122 "TruthParticleContainer !!");
123 return StatusCode::FAILURE;
126 if ( mcEvents->
empty() ) {
128 return mcParts->
empty() ? StatusCode::SUCCESS : StatusCode::FAILURE;
131 const HepMC::GenEvent * genEvt = (*mcEvents)[0];
132 if (
nullptr == genEvt ) {
134 return StatusCode::FAILURE;
137 int particles_size=genEvt->particles_size();
138 if (
static_cast<int>( mcParts->
size() ) != particles_size ) {
139 ATH_MSG_ERROR(
"TruthParticleContainer and McEventCollection don't have "\
140 "the same number of particles !!" <<
endmsg
141 <<
"\tTruthParticleContainer: " << mcParts->
size() <<
endmsg
142 <<
"\tHepMC::GenEvent: " << particles_size);
143 return StatusCode::FAILURE;
147 ATH_MSG_WARNING(
"Could NOT write out the TruthParticleContainer through the IIOMcAodTool !!");
155 auto hepMc =
mc->genParticle();
157 if ( hepMc->momentum() != HepMC::FourVector(
mc->hlv().x(),
mc->hlv().y(),
mc->hlv().z(),
mc->hlv().t()) ) {
158 ATH_MSG_ERROR(
"TruthParticle and GenParticle-link don't have same 4-mom !!");
159 return StatusCode::FAILURE;
164 if ( hepMc->momentum() != genPart->momentum() ) {
165 ATH_MSG_ERROR(
"GenParticle-link and GenParticle from McEvtColl "\
166 "don't have same 4-mom !!");
167 return StatusCode::FAILURE;
172 return StatusCode::SUCCESS;
182 return StatusCode::FAILURE;
188 ATH_MSG_ERROR(
"Could not set property [" << prop.name() <<
"] for tool ["
192 return StatusCode::FAILURE;
194 return StatusCode::SUCCESS;
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ServiceHandle< StoreGateSvc > & evtStore()
DataModel_detail::const_iterator< DataVector > const_iterator
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.
This defines the McEventCollection, which is really just an ObjectVector of McEvent objectsFile: Gene...
TruthParticleValidationBaseTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
(HepMC) Monte Carlo particle.
GenParticle * barcode_to_particle(const GenEvent *e, int id)