This is an as detailed as possible outline of the requirement list for physics processes and process-lists:
- The current (first) version of the physics process machinery is entirely designed on static C++ design patterns. However, we should aim for a parallel drop-in replacement that is entirely dynamic. Both can be very useful for different applications. And to develop a dynamic version of the static one might be interesting to some collaborators.
1. All modifications of particles on the stack should be done by "processes"
1. The collection of all processes defines the air shower physics
1. All processes can (or even must) be collected in one single C++ container, this we call ```ProcessList```
1. The ```ProcessList``` is one argument to the air shower machine of CORSIKA, i.e. ```ProcessList list=...; Cascade EAS(list,...);```
1. We want ```ProcessList```s to be mergeable, combineable to create more complicated sequences starting from simpler ones
1. Internally, we must distinguish different types of contained ```Processes``` which is driven by the fact that particle can be modified in very different ways:
1. continuous processes modify the properties of one particle
1. stochastic processes produce new particles, AND remove the current beam particle. This is typical for collisions, or decays.
1. (we also need continuous processes that can _also_ produce extra secondaries, e.g. Bremsstrahlung, maybe Cherenkov photons, etc. - but this is maybe beyond what we need to define here)
1. processes that act on new secondaries produced, typical applications are: