Trapping/Recombination does trap far too early in a sensor region with very low electric field and diffusion enabled
In case the electric field is very small, the drift velocity is small. In MediumSilicon::ElectronAttachment the drift velocity is only taken via the electric field, while in case of a small electric field, the current drift velocity is actually determined by the diffusion step.
So if the taken drift velocity is very small, the eta value in MediumSilicon::ElectronAttachment under m_trappingModel=1 gets extremely big. Back in AvalancheMC::ComputeGainLoss where via AvalancheMC::ComputeAlphaEta this method is called the eta values for each point of the drift line are divided by the factor probth=0.01. There is no gain in a typical sensor, so only the eta values are taken.
eta/probth is casted to int. In case this value exceeds the int limit, it is casted to a negative value, thus always being lower than 1, so the number of divisions is always 1. This then leaves q at the same extremely high value that eta had. Creating a random number via RndmUniform between 0 and 1 will then always be lower than q, thus leading to immediate trapping of the particle.
In case the drift velocity is slightly lower, the eta/probth value won't exceed the int barrier, thus nDiv is 100 times higher than eta. To calculate q, eta will be divided by nDiv again, leading back to probth. So q is always 0.01. The number of subdivisions is then still extremely high, so in the loop this high amount of random numbers will be drawn from RndmUniform leading to a very high probability of trapping immediately.
Another strange part of this algorithm is, that the whole DriftLine is calculated and only then, after the time consuming calculation is finished, it is checked if the particle get trapped. This leads to the fact that a simulation without any trapping time set takes as long as one with a very small trapping time. Even though in the second case only one step in the DriftLine would actually need to be calculated.