The routine MCG_GENERATOR handles the event generation. Initialization is done by the routine INGENR, whose first task is to read in the titles bank MCMA. This bank contains various constants used by the EGS4 Cerenkov photon generation that the user might wish to adjust (see the discussion in section 13.3.8) and flags for turning on or off various physical processes or vertex storage. The last entry of the MCMA banks is a bank number, and INGENR then opens the MCPI titles bank of that number. The MCPI bank gives the number of particles to be simulated and the information needed to determine their positions, directions, energies, times, and polarizations (if relevant). There are also MCDS banks which are opened if needed, they contain the decay schemes for various nuclei which can produce gamma cascades from thermal neutron capture or beta-gamma backgrounds.
MCG_GENERATOR.FOR then creates the source interactions for whatever type of event is desired. The program can now generate an enormous variety of types of events (in fact, it can generate many that it cannot subsequently evolve and fit so it barfs and dies). Positions can be generated at a point, in a shell, in any combination of detector regions (with adjustable weights), on the surface of the AV, along a line, or exponentially distributed from a previous particle.