Protons gain more energy than neutrons lose in hadElastic process, only with HP physics

Hi there,

I’m simulating neutrons with 14 MeV kinetic energy into a volume of hydrogen gas and observing energy change in the neutrons as well as energy of the protons that get “created” through elastic scattering.

When using HP physics lists (I’ve tried FTFP_BERT_HP and QGSP_BIC_HP) I see that the neutrons lose some amount of kinetic energy in the hadElastic process but the protons created as secondaries always have slightly more kinetic energy than what the neutron lost. It appears to be a gain in about 0.054% of the neutron energy loss every time. The fraction is not always exactly the same, but does have a lower bound around 0.0535%.

If I use precisely the same simulation but change only the incoming neutron energy to be above 20 MeV, there is no difference in energy. Similarly if I use the same physics lists but without HP and neutron energies below 20 MeV, there is no difference in energy.

In the screenshot above I am using /tracking/verbose 2 and printing out the PreStepPoint kinetic energy of the particle at each step for higher precision. You can see that the change in neutron kinetic energy is 14 - 4.306450540794685 = 9.693549459205315 MeV, and yet the proton is initialised with 9.698771571486061 MeV.

I can’t work out if this is an intentional feature of the HP physics lists or if something strange is going on. Any help with this would be greatly appreciated.

Thanks!

Edit: I’m using version 10.07.p04

It appears that the second paragraph on this page of the Reference Manual

https://geant4-userdoc.web.cern.ch/UsersGuides/PhysicsReferenceManual/html/hadronic/LowEnergyNeutron/summary.html

provides some clarity on this. I’ve seen people mention before that energy is conserved only on average, but that seems to not be the case according to my findings as well as that statement.