14 std::unique_ptr<simcore::hepmc::HepMCEvent> hepmc_event =
17 if (hepmc_event !=
nullptr) {
20 G4PrimaryVertex* vertex =
new G4PrimaryVertex();
21 vertex->SetPosition(hepmc_event->getVertex()[0] +
vertex_[0],
22 hepmc_event->getVertex()[1] +
vertex_[1],
23 hepmc_event->getVertex()[2] +
vertex_[2]);
24 vertex->SetT0(hepmc_event->getVertexTime());
25 vertex->SetWeight(hepmc_event->getEventWeight());
28 std::map<std::shared_ptr<HepMC3::GenParticle>, G4PrimaryParticle*>
31 const auto& particles = hepmc_event->getParticles();
32 for (
const auto& particle : particles) {
35 G4PrimaryParticle* primary =
new G4PrimaryParticle();
37 primary->SetPDGcode(particle->getPdgId());
41 primary->Set4Momentum(particle->getMomentum(0) * GeV,
42 particle->getMomentum(1) * GeV,
43 particle->getMomentum(2) * GeV,
44 particle->getMomentum(3) * GeV
47 auto primary_info = std::make_unique<UserPrimaryParticleInformation>();
48 primary_info->setHepEvtStatus(particle->getStatus());
49 primary->SetUserInformation(primary_info.release());
53 particle_map[particle->getGenParticle()] = primary;
58 vertex->SetPrimary(primary);
61 anEvent->AddPrimaryVertex(vertex);
69 ldmx_log(error) <<
"Ran out of input events so run will be aborted!";
70 G4RunManager::GetRunManager()->AbortRun(
true);
71 anEvent->SetEventAborted();