If one adds to the processes list of a particle the process G4UserSpecialCuts, for example to to cut on range or max. time, Geant4 cuts at 100 eV on the kinetic energy. This happens because G4UserSpecialCuts, in order to compare ekin with ekin cut value (zero by default), calculates range for both. But the range table is produced only down to 100 eV, so the range for 100 eV is equal to the range for 0 eV. I use now the following fix in processes/electromagnetic/utils/include/G4VEnergyLossProcess.hh in G4VEnergyLossProcess::GetRange ... if (e < maxKinEnergyForRange) { if(e < minKinEnergy*massRatio) { x = (e/(minKinEnergy*massRatio))* ((*theRangeTable)[currentMaterialIndex])->GetValue(e, b); } else { x = ((*theRangeTable)[currentMaterialIndex])->GetValue(e, b); } } else { ... I realise that for particles below 100 eV I probaly cannot have correct physics, but I trace them in vacuum, so I don't need it. Afterwards they are accelerated to KeV and physics begins.
This problem is corrected in 4.6.1 (at least down to 1 eV) Mikhail