In principal, AMOS is a non-analogue Monte Carlo code, where so-calles Monte Carlo particles are attributed with a weight. Over this weight, variance reducing methods can be applied.
One possibility is the enforcement of interactions. If a certain interaction shall be performed more often than physically correct or even at every interaction point, it is possible to split up the history of the Monte Carlo particle at this point in separate subhistories. The weights of the part strands are set according to the interaction probabilities, so that the sum weight satisfies the conservation law. Such an approach is computationally profitable, if the task of the calculation premises a certain interaction, i.e. the at the calculation of an X-Ray spectrum the Bremsstrahlungs production of the accelerated electrons inside the anode. But also the opposite is possible: At shielding calculations it is preferable to suppress absorption. Thus, all absorption interactions are handled implicitly, and the "scattered histories" reach the detector through the shielding material - with accordingly lower weight.
Furtheron, the carrying of the weight enables the hitting of discrete space points - the realisation of so-called point estimators. Another, generally less critical variance reducing method is the weight window technique. Here, the particle histories are either split up (splitting) or ceased (Russian Roulette) depending on their actual weight and in reference to their energy and/or location.
One reason, that electron transport is implemented only analogue, is that there are no absorbing interactions for electrons. Further, the large number of secondary particles would lead to an even larger number of subhistories, which would not differ significantly. So, the implementation of non-analogue electron transport would only involve large memory and computational resources, but only little gain for the result. Thus, electron transport in AMOS is exclusively carried out in analogue mode.