6#include "GaudiKernel/ISvcLocator.h"
7#include "GaudiKernel/DataSvc.h"
23 return StatusCode::SUCCESS;
32 ATH_MSG_DEBUG(
"Creating new McEventCollection in the event store");
34 if (evtStore()->record(mcevents, m_mcEventKey).isFailure())
40 if (evtStore()->retrieve (mecc, m_mcEventKey).isFailure())
53void GenBase::GeVToMeV(HepMC::GenEvent* evt) {
for (
auto& p:
evt->particles()) {
p->set_momentum(
p->momentum()*1000);
p->set_generated_mass(1000*
p->generated_mass());}}
54void GenBase::MeVToGeV(HepMC::GenEvent* evt) {
for (
auto& p:
evt->particles()) {
p->set_momentum(
p->momentum()*1.0/1000);
p->set_generated_mass(1.0/1000*
p->generated_mass());} }
55void GenBase::cmTomm(HepMC::GenEvent* evt) {
for (
auto& v:
evt->vertices())
v->set_position(
v->position()*10);}
56void GenBase::mmTocm(HepMC::GenEvent* evt) {
for (
auto& v:
evt->vertices())
v->set_position(
v->position()*1.0/10);}
59 for (HepMC::GenEvent::particle_iterator p = evt->particles_begin(); p != evt->particles_end(); ++p) {
60 const HepMC::FourVector fv((*p)->momentum().px() * 1000,
61 (*p)->momentum().py() * 1000,
62 (*p)->momentum().pz() * 1000,
63 (*p)->momentum().e() * 1000);
64 (*p)->set_momentum(fv);
65 (*p)->set_generated_mass(1000 * (*p)->generated_mass());
69 for (HepMC::GenEvent::particle_iterator p = evt->particles_begin(); p != evt->particles_end(); ++p) {
70 const HepMC::FourVector fv((*p)->momentum().px() / 1000,
71 (*p)->momentum().py() / 1000,
72 (*p)->momentum().pz() / 1000,
73 (*p)->momentum().e() / 1000);
74 (*p)->set_momentum(fv);
75 (*p)->set_generated_mass((*p)->generated_mass() / 1000);
79 for (HepMC::GenEvent::vertex_iterator vtx = evt->vertices_begin(); vtx != evt->vertices_end(); ++vtx) {
80 const HepMC::FourVector fv((*vtx)->position().x() * 10,
81 (*vtx)->position().y() * 10,
82 (*vtx)->position().z() * 10,
83 (*vtx)->position().t() * 10);
84 (*vtx)->set_position(fv);
88 for (HepMC::GenEvent::vertex_iterator vtx = evt->vertices_begin(); vtx != evt->vertices_end(); ++vtx) {
89 const HepMC::FourVector fv((*vtx)->position().x() / 10,
90 (*vtx)->position().y() / 10,
91 (*vtx)->position().z() / 10,
92 (*vtx)->position().t() / 10);
93 (*vtx)->set_position(fv);
#define ATH_CHECK
Evaluate an expression and check for errors.
McEventCollection *GenBase::events ATLAS_NOT_CONST_THREAD_SAFE()
Access the current event's McEventCollection.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
std::string m_mcEventKey
StoreGate key for the MC event collection (defaults to GEN_EVENT)
void GeVToMeV(HepMC::GenEvent *evt)
Scale event energies/momenta by x 1000.
virtual StatusCode initialize() override
GenBase(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
ServiceHandle< IPartPropSvc > m_ppSvc
Handle on the particle property service.
void MeVToGeV(HepMC::GenEvent *evt)
Scale event energies/momenta by x 1/1000.
void cmTomm(HepMC::GenEvent *evt)
Scale event lengths by x 10.
void mmTocm(HepMC::GenEvent *evt)
Scale event lengths by x 1/10.
SG::ReadHandleKey< McEventCollection > m_mcevents_const
Const handle to the MC event collection.
This defines the McEventCollection, which is really just an ObjectVector of McEvent objectsFile: Gene...
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring