Pass HepMC3::(Const)GenParticlePtr and HepMC3::(Const)GenVertexPtr by reference where possible
HepMC3::(Const)GenParticlePtr
and HepMC3::(Const)GenVertexPtr
are implemented as std::shared_ptr
so there is a cost associated with adding and removing entries from list of shared_ptrs "owning" and object.