I have an application where we track low energy electrons and holes in a solid. The tracks are created with initial energy of order 1 eV, and we have the appropriate
G4EqMagElectricField subclass to define the momentum change (drift electrons follow valleys in the solid lattice, which the code implements).
The problem I’m having at the moment, with just one track out of many, is that it appears to get stopped during transport, and the job spews an infinite number of
G4ChordFinder “GeomField0003” warning messages:
-------- WWWW ------- G4Exception-START -------- WWWW ------- *** G4Exception : GeomField0003 issued by : G4ChordFinder::FindNextChord() Exceeded maximum number of trials= 75 Current sagita dist= nan Step sizes (actual and proposed): Last trial = 4.29198e-80 Next trial = 4.29198e-81 Proposed for chord = 8.58397e-80 *** This is just a warning message. *** -------- WWWW -------- G4Exception-END --------- WWWW -------
I ran in the debugger (LLDB on a MacBook), and found that the track was created with 0.16 eV of kinetic energy, and at this error, during the second step of the trajectory, the track’s fDynamicParticle reported zero kinetic energy.
I know that G4 does not like having particles get stopped and turned around in an electric field (I remember several old Hypernews postings about it). Is there something relatively safe and robust I could do in our own code, e.g., in the equation of motion, to protect against this? Alternatively, we are using 10.03.p03 as our base G4 version; is this an issue that’s been fixed in 10.4 or 10.5?