Is your feature request related to a problem? Please describe.
Currently, the code has a number of near-hacks to perform the binary collision approximation trajectory steps in the correct order. These include storing previous directions/positions in the Particle object, having the electronic stopping calculation broken up for local/nonlocal forms, potentially redundant boundary condition checks, etc.
Proposed solution
Further separating out certain procedures into functions would be helpful. Additionally, an analysis of the BCA order of operations from a programming perspective should be performed prior to the refactor to ensure correctness and simplicity.