52void PrimaryGeneratorAction::GeneratePrimaries(G4Event* event) {
58 if (event->GetUserInformation()) {
61 "There was a UserEventInformation attached before beginning event."
62 "\nI don't know how this happend!!");
68 event->SetUserInformation(event_info);
70 PrimaryGenerator::Factory::get().apply([event](
const auto& generator) {
71 generator->GeneratePrimaryVertex(event);
75 int n_pv =
event->GetNumberOfPrimaryVertex();
78 for (
int i_pv = 0; i_pv < n_pv; ++i_pv) {
79 G4PrimaryVertex* primary_vertex =
event->GetPrimaryVertex(i_pv);
81 if (not primary_vertex) {
84 "One of the primary generators created a NULL primary vertex.");
89 for (
int iparticle = 0; iparticle < primary_vertex->GetNumberOfParticle();
91 G4PrimaryParticle* primary = primary_vertex->GetPrimary(iparticle);
96 "One of the primary generators created a NULL primary particle.");
100 primary->GetUserInformation())};
101 if (not primary_info) {
105 primary->SetUserInformation(primary_info);
108 int hep_status = primary_info->getHepEvtStatus();
109 if (hep_status <= 0) {
111 primary_info->setHepEvtStatus(1);
117 event_info->incWeight(primary_vertex->GetWeight());
121 if (time_shift_primaries_) {
122 primary_vertex->SetT0(primary_vertex->GetT0() +
123 primary_vertex->GetZ0() / 299.702547);
130 "No primary vertices were produced by any of the generators.");