Difference between recorded energies and energy deposited


I’ll start by describing a simplified example I’m running and then I’ll explain what I’m struggling with. Hopefully someone will be able to give me some pointers as to what might be going on.

I’m aiming a 250 MeV mono-energetic proton pencil beam at a 33 cm cube of water. The cube of water sits in the centre of a world filled with air. I have a sensitive detector 1 cm before and 1 cm after the cube and there I record the protons’ entry and exit energies, respectively. I use the difference of these to calculate the energy each proton deposited between the entrance and exit detectors, i.e. ∆E = Ein - Eout. As a sanity check, I have a stepping action that updates a cumulative sum of energy deposited in each step, Edep (step->GetTotalEnergyDeposit()).

Now onto the problem. For some reason ∆E and Edep don’t agree and I’m not sure why. I’ve attached a plot that shows ∆E being consistently larger than Edep. This is where I’m out of my depth and need help. Are there processes that don’t contribute to GetTotalEnergyDeposit() but can lead to a difference of 2.5 MeV or more in the final energy lost by a proton?

I should add that I’m using the physics list QGSP_BIC_HP and I’m running a multithreaded version of Geant4 10.7.2.

Please let me know if I need to clarify anything.


The proton is probably knocking out secondary electrons along its trajectory. Those secondaries obviously carry away some of the proton’s kinetic energy (Ein-Eout), but they are not included in Edep (if they were, you’d be double counting the total energy in the system).


there are processes, which provides local energy deposition additionally to change of energy. Delta energy not necessary equal to energy deposition. For correct energy balance you need to take into account all processes, all secondaries happen at a step including change of atom and atomic nuclei.