#include "G4BeamTestUserTrackingAction.h" #include "G4Track.hh" #include "G4UserLimits.hh" #include "G4TrackVector.hh" #include "G4TrackingManager.hh" G4BeamTestUserTrackingAction::G4BeamTestUserTrackingAction(){} void G4BeamTestUserTrackingAction::PreUserTrackingAction(const G4Track*){} void G4BeamTestUserTrackingAction::PostUserTrackingAction(const G4Track* track) { // const G4LogicalVolume *volume = track->GetLogicalVolumeAtVertex(); // G4UserLimits *limit = volume->GetUserLimits(); // if(!limit) G4cout << "----> G4LogicalVolume: " << volume->GetName() << " has no defined G4UserLimit" << G4endl; // G4double threshold = limit->GetUserMinEkine(*track); // G4double max_threshold = 3.54; // G4TrackVector* secondaries = fpTrackingManager->GimmeSecondaries(); // if(secondaries) // { // size_t nSeco = secondaries->size(); // if(nSeco>0) // { // for(size_t i=0;iGetDefinition()->GetParticleName(); // if(particle == "gamma" || particle == "opticalphoton") // { // //check if particle energy is below threshold; if true, kill the particle // G4double energy = (*secondaries)[i]->GetTotalEnergy(); // if(energy < threshold){ // G4cout << "TrackingAction: killing particle " << particle << " with energy " << energy << " < " << threshold << G4endl; // (*secondaries)[i]->SetTrackStatus(fStopAndKill); // } // if (energy > max_threshold * CLHEP::eV){ // G4cout << "TrackingAction: killing particle " << particle << " with energy " << energy << " > " << max_threshold << G4endl; // (*secondaries)[i]->SetTrackStatus(fStopAndKill); // } // } // } // } // } }