Navigation service
The main functionality of the navigation service is to propagate states to any surface,
volume or length within the Setup, taking into account the volume hierarchy.
In Setup's with more than one Volume the propagation functionality is provided by special Propagator's, called
Navigator's, which are able to handle the volume hierarchy.
A default Navigator is provided, but others can be added easily (i.e. Geant4).
The default Navigator propagates a State in several steps.
Propagation in each step is performed by the Propagator
associated to the Model of the State.
Before and after each step a list of Inspector's
(associated to volumes and surfaces) is called. An Inspector is a tool that performs
a concrete action: set the properties of the entering volume, sum up intermediate path lengths,
set the length of the next step (dynamic stepping), etc.
User defined Inspector's can be added to any surface or volume.
Two important features of the default navigator are:
i) the intersection with surfaces (the problem of intersecting a volume is always reduced to the intersection with its outer walls)
is done analytically whenever is possible
(and numerically otherwise) and ii) user defined NavigationLogic's allow to establish
the sequence in which volumes and surfaces must be traversed.
If any of the volume properties is inhomogeneous the propagation occurs through dynamic stepping
(several steps of variable length according to the derivative of the
inhomogeneous property).
If all the properties are homogeneous there is no reason for small steps.
In that case default Navigator propagates to the next intersected surface.