51void PrimaryGeneratorAction::GeneratePrimaries(G4Event* event) {
57 if (event->GetUserInformation()) {
60 "There was a UserEventInformation attached before beginning event."
61 "\nI don't know how this happend!!");
67 event->SetUserInformation(event_info);
69 PrimaryGenerator::Factory::get().apply([event](
const auto& generator) {
70 generator->GeneratePrimaryVertex(event);
74 int n_pv =
event->GetNumberOfPrimaryVertex();
77 for (
int i_pv = 0; i_pv < n_pv; ++i_pv) {
78 G4PrimaryVertex* primary_vertex =
event->GetPrimaryVertex(i_pv);
80 if (not primary_vertex) {
83 "One of the primary generators created a NULL primary vertex.");
88 for (
int iparticle = 0; iparticle < primary_vertex->GetNumberOfParticle();
90 G4PrimaryParticle* primary = primary_vertex->GetPrimary(iparticle);
95 "One of the primary generators created a NULL primary particle.");
99 primary->GetUserInformation())};
100 if (not primary_info) {
104 primary->SetUserInformation(primary_info);
107 int hep_status = primary_info->getHepEvtStatus();
108 if (hep_status <= 0) {
110 primary_info->setHepEvtStatus(1);
116 event_info->incWeight(primary_vertex->GetWeight());
120 if (time_shift_primaries_) {
121 primary_vertex->SetT0(primary_vertex->GetT0() +
122 primary_vertex->GetZ0() / 299.702547);
129 "No primary vertices were produced by any of the generators.");