I have defined a process and a particle to which the process is applicable. This process is of the
G4VContinuousDiscreteProcess kind and I have implemented a
GetContinuousStepLimit method, which proposes a step length. The process is a drift in an electric field, therefore the proposed step length is the full length of the drift region. The process is forced, so that it always happens. On top of that, I remove the
Transportation process from my particle, since I don’t want it to apply.
If I run a simulation, I can see that the process occurs and the particle moves correctly according to it, from the cathode to the anode of the defined electric field, as desired. However, the step length associated to the process (which I retrieve through the
GetStepLength() function of the
Step class) is always zero. This is a problem in my simulation, because I’m using that step length to calculate the amount of electroluminescent photon created in the drift, which is proportional to the length of the drift region.
I have the following questions: how is the step length assigned? Which other process could be assigning a zero step length to a particle created by the user? Is there any other process than
Transportation which I should turn off?
Finally, I’d like to remark that this behaviour has started happening with the
11.1 version of G4: in the
11.0 release, the step length was calculated correctly.
Thanks for the help!