The user can define artificial limits affecting to the Geant4 tracking.
G4UserLimits(G4double uStepMax = DBL_MAX, G4double uTrakMax = DBL_MAX, G4double uTimeMax = DBL_MAX, G4double uEkinMin = 0., G4double uRangMin = 0. );
||Maximum step length|
||Maximum total track length|
||Maximum global time for a track|
||Minimum remaining kinetic energy for a track|
||Minimum remaining range for a track|
uStepMax is affecting to each step, while all
other limits are affecting to a track.
The user can assign
G4UserLimits to logical volume and/or
to a region. User limits assigned to logical volume do not
propagate to daughter volumes, while User limits assigned to region
propagate to daughter volumes unless daughters belong to another
region. If both logical volume and associated region have user
limits, those of logical volume win.
A G4UserLimits object must be instantiated for the duration of whatever logical volume or region to which it is assigned. It is the responsibility of the user's code to delete the object after the assigned volume(s)/region(s) have been deleted.
In addition to instantiating
G4UserLimits and setting it
to logical volume or region, the user has to assign the following
process(es) to particle types he/she wants to affect. If none of
these processes is assigned, that kind of particle is not affected
Limitation to step (
G4StepLimiterprocess must be defined to affected particle types. This process limits a step, but it does not kill a track.
Limitations to track (
uTrakMax, uTimeMax, uEkinMin, uRangMin)
G4UserSpecialCutsprocess must be defined to affected particle types. This process limits a step and kills the track when the track comes to one of these limits. Step limitation occurs only for the final step.
G4UserLimits can be found in
examples/basic/B2 : see
process is added in the Geant4 physics list via the
class in the
main() function in