PropagatedCharge: Introduce CarrierState
The carrier state indicates the fate of the charge carrier at its end point (i.e. as created and shipped in the respective message:
-
CarrierState::UNKNOWN
- The final state of the charge carrier is not know or provided by the algorithm -
CarrierState::MOTION
- The propagated charge carrier is in motion -
CarrierState::RECOMBINED
- The propagated charge carrier has recombined with the lattice -
CarrierState::TRAPPED
- The propagated charge carrier is trapped temporarily -
CarrierState::HALTED
- The charge carrier has been stopped because it for example reached the sensor surface or an implant
Could be interesting information, so let's store it?
Right now, only MOTION
and RECOMBINED
are set in Generic & Transient, and only MOTION
in Projection since no recombination is supported there. To be extended with TRAPPING
once implemented.
When reaching the end of the integration window, charge carriers are marked as MOTION
anyway - because they still are going strong.
Are we missing more states?
(Side note: code envisaged via InducedTransfer works already with current release, since all carriers are returned (not skipped) and the module loops over all, regardless of their position.