| Geant4 User's Guide For Application Developers Tracking and Physics

5.7 User limits

## 5.7.1 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. );

`uStepMax` | Maximum step length
`uTrakMax` | Maximum total track length
`uTimeMax` | Maximum global time for a track
`uEkinMin` | Minimum remaining kinetic energy for a track
`uRangMin` | 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 set `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.

## 5.7.2 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/novice/N02 : see `DetectorConstruction` and `PhysicsList`.

About the authors