6 #include "G4RunManager.hh"
11 const G4Track *track,
const G4ClassificationOfNewTrack ¤tTrackClass) {
22 return currentTrackClass;
30 auto track{step->GetTrack()};
33 auto particleName{track->GetParticleDefinition()->GetParticleName()};
36 auto incidentParticleEnergy{step->GetPostStepPoint()->GetTotalEnergy()};
38 auto pdgID{track->GetParticleDefinition()->GetPDGEncoding()};
41 auto volume{track->GetVolume()};
42 auto volumeName{volume->GetName()};
60 track->SetTrackStatus(fSuspend);
68 if (volumeName.find(
"module_L4") != std::string::npos) {
71 track->SetTrackStatus(fKillTrackAndSecondaries);
72 G4RunManager::GetRunManager()->AbortEvent();
74 }
else if ((volumeName.find(
"module_L1") == std::string::npos) &&
75 (volumeName.find(
"module_L2") == std::string::npos) &&
76 (volumeName.find(
"module_L3") == std::string::npos)) {
83 const std::vector<const G4Track *> *secondaries =
84 step->GetSecondaryInCurrentStep();
92 if (secondaries->size() == 0) {
99 auto processName{(*secondaries)[0]->GetCreatorProcess()->GetProcessName()};
100 if (processName.compareTo(
"conv") == 0) {
103 std::cout <<
"[ PairConvFilter ]: "
104 <<
"WAB converted in " << volumeName <<
std::endl;
107 track->SetTrackStatus(fKillTrackAndSecondaries);
108 G4RunManager::GetRunManager()->AbortEvent();
116 std::cout <<
"[ PairConvFilter ]: "
#define DECLARE_PLUGIN(NS, NAME)
bool hasPairConv_
Flag that denotes whether a conversion has been found.
void endRun(const G4Run *run) final override
G4ClassificationOfNewTrack stackingClassifyNewTrack(const G4Track *, const G4ClassificationOfNewTrack ¤tTrackClass) final override
short pairConvCount_
Counter to keep track of the pair conversion count.
G4Track * currentTrack_
Pointer to the current track being processed.
void endEvent(const G4Event *) final override
void stepping(const G4Step *step) final override