@@ -12,23 +12,6 @@ thread_local GParticleRecordEvent GPrimaryGeneratorAction::current_generated_par
1212thread_local GParticleRecordEvent GPrimaryGeneratorAction::current_generated_tracked_particle_records;
1313
1414namespace {
15- GParticleRecord make_particle_record (const GparticlePtr& particle) {
16- if (particle == nullptr ) { return {}; }
17- const auto & vertex = particle->getVertex ();
18- return {
19- particle->getName (),
20- particle->getPid (),
21- particle->getGeneratorType (),
22- particle->getMultiplicity (),
23- particle->getMomentum (),
24- particle->getTheta (),
25- particle->getPhi (),
26- vertex.x (),
27- vertex.y (),
28- vertex.z ()
29- };
30- }
31-
3215GParticleRecord make_particle_record (const GparticleRuntimeRecord& particle) {
3316 return {
3417 particle.name ,
@@ -50,6 +33,14 @@ void append_runtime_records(GParticleRecordEvent& records, const GparticlePtr& p
5033 records.emplace_back (make_particle_record (runtime_record));
5134 }
5235}
36+
37+ void append_untracked_file_records (GParticleRecordEvent& records, const GParticleRecordEvent& source_records) {
38+ for (const auto & record : source_records) {
39+ if (record.type != 1 ) {
40+ records.emplace_back (record);
41+ }
42+ }
43+ }
5344}
5445
5546// Build the primary-generator action, load the configured particle definitions,
@@ -94,18 +85,14 @@ void GPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) {
9485 current_generated_tracked_particle_records.clear ();
9586
9687 current_generated_particles.insert (current_generated_particles.end (), gparticles->begin (), gparticles->end ());
97- current_generated_tracked_particles.insert (current_generated_tracked_particles.end (), gparticles->begin (), gparticles->end ());
98- current_generated_particle_records.reserve (gparticles->size ());
99- for (const auto & gparticle : *gparticles) {
100- current_generated_particle_records.emplace_back (make_particle_record (gparticle));
101- }
88+ current_generated_tracked_particles.insert (current_generated_tracked_particles.end (),
89+ gparticles->begin (),
90+ gparticles->end ());
10291
10392 const auto event_id = anEvent->GetEventID ();
10493 if (event_id >= 0 && static_cast <size_t >(event_id) < allGparticleFileRecordEvents.size ()) {
10594 const auto & event_particles = allGparticleFileRecordEvents[static_cast <size_t >(event_id)];
106- current_generated_particle_records.insert (current_generated_particle_records.end (),
107- event_particles.begin (),
108- event_particles.end ());
95+ append_untracked_file_records (current_generated_particle_records, event_particles);
10996 }
11097 if (event_id >= 0 && static_cast <size_t >(event_id) < gparticleFileEvents.size ()) {
11198 const auto & event_particles = gparticleFileEvents[static_cast <size_t >(event_id)];
@@ -117,6 +104,7 @@ void GPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) {
117104 for (const auto & gparticle : *gparticles) {
118105 if (gparticle != nullptr ) {
119106 gparticle->shootParticle (gparticleGun.get (), anEvent);
107+ append_runtime_records (current_generated_particle_records, gparticle);
120108 append_runtime_records (current_generated_tracked_particle_records, gparticle);
121109 }
122110 }
@@ -129,6 +117,7 @@ void GPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) {
129117 for (const auto & gparticle : gparticleFileEvents[static_cast <size_t >(event_id)]) {
130118 if (gparticle != nullptr ) {
131119 gparticle->shootParticle (gparticleGun.get (), anEvent);
120+ append_runtime_records (current_generated_particle_records, gparticle);
132121 append_runtime_records (current_generated_tracked_particle_records, gparticle);
133122 }
134123 }
0 commit comments