Geant4 Version: 10.7.p02
Operating System: CentOS7
Compiler/Version: G++ 8.3
CMake Version: 3.17.3
We run our simulations using the Shielding physics list with some additions (tritium decay, optical physics); that means we’re using NeutronHP.
One of my collaborators reported seeing odd energy non-conservation in some of our simulated nuclear recoil events, and was able to isolate things to a specific problem.
It seems that nuclear de-excitation is producing multiple iterations of the full excitation energy for a single nucleus in a single G4Step. Here’s a specific example for neutron capture on C-12, producing C-13* and de-excitation:
G4WT0 > *********************************************************************************************************
G4WT0 > * G4Track Information: Particle = neutron, Track ID = 1, Parent ID = 0
G4WT0 > *********************************************************************************************************
G4WT0 >
G4WT0 > Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName
G4WT0 > 0 -81.9 -1.18e+03 -221 0.001 0 0 0 Shield/InnerPoly initStep
...
G4WT0 > 35 -65.5 -1.2e+03 -152 0 0 0.666 163 Shield/InnerPoly nCapture
G4WT0 > :----- List of 2ndaries - #SpawnInStep= 5(Rest= 0,Along= 0,Post= 5), #SpawnTotal= 39 ---------------
G4WT0 > : -65.5 -1.2e+03 -152 4.95 gamma
G4WT0 > : -65.5 -1.2e+03 -152 4.95 gamma
G4WT0 > : -65.5 -1.2e+03 -152 3.68 gamma
G4WT0 > : -65.5 -1.2e+03 -152 1.26 gamma
G4WT0 > : -65.5 -1.2e+03 -152 0.000321 C13
G4WT0 > :----------------------------------------------------------------- EndOf2ndaries Info ---------------
Our user wrote:
Looking up the gamma energies from the 12C(n,gamma)13C process in the NNDC database for C-12 (note the level scheme available as pdf download, also attached here), I expect to see from one neutron capture of C12 either:
- exactly 1 gamma with 4945 keV, or
- 1 gamma with 1261 keV and 1 gamma with 3683 keV, or
- the lower probability stuff you see in the level scheme.
What I do not expect at all, is to see from one single neutron capture 2 gammas of 4945 keV, and also not 2 gammas of 4945 keV and additional gammas. This doesn’t make sense to me. Where is this energy coming from? Does Geant4 ignore energy conservation here? Btw, this doesn’t happen every time. Often enough, there is just 1 gamma of 4945 keV as it should be.
There are a couple of forum topics from 2021 which report the same issue:
It seems as thought this problem arises from having G4NEUTRONHP_USE_ONLY_PHOTONEVAPORATION=0 (the default). Users in the above topics report that setting that flag to 1 eliminates the spurious multiple energies problem.
But that doesn’t seem entirely right to me. Generating multiple instances of a full de-excitation cascade can’t simply be a “feature” of the code. Is anyone sufficiently familiar with the non-photoevaporation side of de-excitation to understand what’s going on under the hood?