本文整理汇总了C++中hepmc::GenEvent::length_unit方法的典型用法代码示例。如果您正苦于以下问题:C++ GenEvent::length_unit方法的具体用法?C++ GenEvent::length_unit怎么用?C++ GenEvent::length_unit使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类hepmc::GenEvent
的用法示例。
在下文中一共展示了GenEvent::length_unit方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
StatusCode EDMToHepMCConverter::execute() {
const fcc::MCParticleCollection* particles = m_genphandle.get();
// ownership of event given to data service at the end of execute
HepMC::GenEvent* event = new HepMC::GenEvent;
// conversion of units to EDM standard units:
// First cover the case that hepMC file is not in expected units and then convert to EDM default
double hepmc2EdmLength = conversion_factor(event->length_unit(), gen::hepmcdefault::length) * gen::hepmc2edm::length;
double hepmc2EdmEnergy =
conversion_factor(event->momentum_unit(), gen::hepmcdefault::energy) * gen::hepmc2edm::energy;
for (auto p : *(particles)) {
if (p.status() == 1) { // only final state particles
GenParticle* pHepMC =
new GenParticle(HepMC::FourVector(p.p4().px, p.p4().py, p.p4().pz, p.p4().mass / hepmc2EdmEnergy),
p.pdgId(),
p.status()); // hepmc status code for final state particle
fcc::ConstGenVertex vStart = p.startVertex();
if (p.startVertex().isAvailable()) {
HepMC::GenVertex* v =
new HepMC::GenVertex(HepMC::FourVector(vStart.position().x / hepmc2EdmLength,
vStart.position().y / hepmc2EdmLength,
vStart.position().z / hepmc2EdmLength,
vStart.ctau() / Gaudi::Units::c_light / hepmc2EdmLength));
v->add_particle_out(pHepMC);
event->add_vertex(v);
}
}
}
m_hepmchandle.put(event);
return StatusCode::SUCCESS;
}