17 std::unique_ptr<simcore::hepmc::HepMCEvent> hepmc_event =
20 if (hepmc_event !=
nullptr) {
23 G4PrimaryVertex* vertex =
new G4PrimaryVertex();
24 vertex->SetPosition(hepmc_event->getVertex()[0] +
vertex_[0],
25 hepmc_event->getVertex()[1] +
vertex_[1],
26 hepmc_event->getVertex()[2] +
vertex_[2]);
27 vertex->SetT0(hepmc_event->getVertexTime());
28 vertex->SetWeight(hepmc_event->getEventWeight());
31 std::map<std::shared_ptr<HepMC3::GenParticle>, G4PrimaryParticle*>
34 const auto& particles = hepmc_event->getParticles();
35 for (
const auto& particle : particles) {
38 G4PrimaryParticle* primary =
new G4PrimaryParticle();
40 primary->SetPDGcode(particle->getPdgId());
44 primary->Set4Momentum(particle->getMomentum(0) * GeV,
45 particle->getMomentum(1) * GeV,
46 particle->getMomentum(2) * GeV,
47 particle->getMomentum(3) * GeV
50 auto primary_info = std::make_unique<UserPrimaryParticleInformation>();
51 primary_info->setHepEvtStatus(particle->getStatus());
52 primary->SetUserInformation(primary_info.release());
56 particle_map[particle->getGenParticle()] = primary;
61 vertex->SetPrimary(primary);
64 anEvent->AddPrimaryVertex(vertex);
72 ldmx_log(error) <<
"Ran out of input events so run will be aborted!";
73 G4RunManager::GetRunManager()->AbortRun(
true);
74 anEvent->SetEventAborted();