36 G4Track* track = step->GetTrack();
39 if (track->GetParentID() != 0)
return;
42 G4int pdgID = track->GetParticleDefinition()->GetPDGEncoding();
45 if (pdgID != 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;
62 track->SetTrackStatus(fKillTrackAndSecondaries);
63 G4RunManager::GetRunManager()->AbortEvent();
68 const G4TrackVector* secondaries = step->GetSecondary();
72 if (secondaries->size() == 0) {
78 track->SetTrackStatus(fKillTrackAndSecondaries);
79 G4RunManager::GetRunManager()->AbortEvent();
82 G4String processName =
83 secondaries->at(0)->GetCreatorProcess()->GetProcessName();
91 if (!processName.contains(
process_)) {
97 track->SetTrackStatus(fKillTrackAndSecondaries);
98 G4RunManager::GetRunManager()->AbortEvent();
102 std::cout <<
"[ TargetENProcessFilter ]: "
103 <<
"Electronuclear reaction resulted in " << secondaries->size()
104 <<
" particles via " << processName <<
" process." << std::endl;