36 G4Track* track = step->GetTrack();
39 if (track->GetParentID() != 0)
return;
42 G4int pdg_id = track->GetParticleDefinition()->GetPDGEncoding();
45 if (pdg_id != 11)
return;
48 G4VPhysicalVolume* track_volume = track->GetVolume();
50 simcore::g4user::ptrretrieval::getPhysicalVolume(
"target_PV");
52 ldmx_log(warn) <<
"Volume 'target_PV' not found in Geant4 volume store";
55 if (track_volume != target_volume)
return;
60 track->SetTrackStatus(fKillTrackAndSecondaries);
61 G4RunManager::GetRunManager()->AbortEvent();
66 const G4TrackVector* secondaries = step->GetSecondary();
70 if (secondaries->size() == 0) {
72 <<
"Electron did not interact in the target. --> Postponing tracks.";
74 track->SetTrackStatus(fKillTrackAndSecondaries);
75 G4RunManager::GetRunManager()->AbortEvent();
78 G4String process_name =
79 secondaries->at(0)->GetCreatorProcess()->GetProcessName();
81 ldmx_log(debug) <<
"Electron produced " << secondaries->size()
82 <<
" particle via " << process_name <<
" process.";
85 if (!process_name.contains(
process_)) {
86 ldmx_log(debug) <<
"Process was not " <<
process_
87 <<
"--> Killing all tracks!";
89 track->SetTrackStatus(fKillTrackAndSecondaries);
90 G4RunManager::GetRunManager()->AbortEvent();
94 ldmx_log(info) <<
"Electronuclear reaction resulted in "
95 << secondaries->size() <<
" particles via " << process_name