#include "SteppingAction.hh" #include "G4SystemOfUnits.hh" #include "G4SteppingManager.hh" #include "G4EventManager.hh" #include "G4Event.hh" SteppingAction::SteppingAction(): G4UserSteppingAction() {} SteppingAction::~SteppingAction() {} void SteppingAction::UserSteppingAction(const G4Step* step) { G4StepPoint * preStep = step->GetPreStepPoint(); G4Track* track = step->GetTrack(); const G4String& volume_name = preStep->GetTouchable()->GetVolume()->GetName(); const G4String& particle_name = track->GetDynamicParticle()->GetDefinition()->GetParticleName(); const G4ThreeVector particle_coordinates = track->GetPosition(); //According to equation of spheroid this value has to be <= 1 double lesser_than_one = particle_coordinates[0] * particle_coordinates[0] / (5.0 * um) / (5.0 * um) + particle_coordinates[1] * particle_coordinates[1] / (5.0 * um) / (5.0 * um) + particle_coordinates[2] * particle_coordinates[2] / (1.0 * um) / (1.0 * um); //We add very small value to 1 because of inaccuracy of numerical //operations with nonintegral values if (lesser_than_one > 1 + 1e-012) printf("\nParticle travels outside of world volume, particle = %s, coordinates = (%e,%e,%e), lesser_than_one = %e\n", particle_name.c_str(), particle_coordinates[0], particle_coordinates[1], particle_coordinates[2], lesser_than_one); }