Handling of elastic interactions
How do we want to treat interactions without "new" particles, i.e. when only a few properties of the projectile are modified? Create a secondary (option A) or just modify the projectile (option B)?
Option A is certainly slower than B but has the advantage of preserving the whole history when we implement that option. If we opt for option B we do not find the particle in the history as it was produced on the stack anymore. Instead, we see it after it has undergone a number of these "elastic" interactions.