User Limits¶
General Concepts¶
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. );
where:
|
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 |
Note that 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.
Processes co-working with G4UserLimits¶
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 by G4UserLimits
.
- Limitation to step (
uStepMax
) G4StepLimiter
process 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
) G4UserSpecialCuts
process 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.
Example of G4UserLimits
can be found in examples/basic/B2 : see
B2a::DetectorConstruction
(or B2b::DetectorConstruction
). The
G4StepLimiter
process is added in the Geant4 physics list via the
G4StepLimiterPhysics
class in the main()
function in
exampleB2a.cc
(or exampleB2b.cc
).