At the event level the tracking is controlled by the subroutine GTREVE called by the subroutine GUTREV where the user can perform additional actions. GTREVE loops over all vertices and for every vertex in turn stores all tracks in the stack JSTAK. Then tracking begins: particles are fetched from JSTAK by GLTRAC which prepares the commons for tracking. GUTRAK is then called, which calls GTRACK. The subroutine GTRACK transports the particle up to the its end: stop, decay, interaction or escape. During this phase it may happen that secondary products have been generated and stored by the user, as explained below, in the JSTAK stack, and possibly in the permanent structure JKINE.
The subroutine GTRACK transports the track through the geometrical volumes identifying, through the subroutine GTMEDI, every new volume which the particle has reached, and storing the corresponding material and tracking medium constants in the common blocks /GCMATE/ and /GCTMED/. The actual transport is performed by a different routine for each tracking type, as indicated in the previous section. These compute the physical step size according to the activated physics processes, and compute the geometrical limit for the step, only when necessary, through GTNEXT, and propagate the particle over the computed step.