Capture cross-section issues using Shielding in G4.11.4

Since the update to G4.11.4 the capture cross-sections NeutronHPCaptureXS seem to have issues to be loaded with the use of pre-defined physicslists like Shielding or QGSP_BIC_HP. This can be easily reproduced using the Hadr04 example:

  1. Change run01.mac (in Hadr04) by commenting the line /testhadr/phys/thermalScattering true (this is for consistency, as Shielding does not have that option)

  2. Change the Material to /testhadr/det/setMat G4_Gd. (Here it is the easiest to see, but from my testing also G4_STAINLESS-STEEL and G4_lAr seems to be effected).

  3. Add following macros to only inspect nCapture (after /run/initialize): /process/inactivate hadElastic neutron, /process/inactivate neutronInelastic neutron

  4. Change the energy to 0.1 eV (or lower) and increase number of primaries to 20 000 (or more).

  5. comment the verbose commands (/control/verbose 2, /run/verbose 2) to not get blasted.

Now run it once with the default NeutronHP physics in this example. You will see the expected list of generated particles: Almost all captures on Gd-155 and Gd-157 (creating Gd-156 and Gd-158).

Now in Hadr04.cc replace PhysicsList* phys = new PhysicsList; with G4VModularPhysicsList* phys = new Shielding; (and add the include). Re-make and re-run the simulation. You should see completely wrong isotope production.

I can also quickly swap between Geant4 versions. If i go to Geant4.11.3.2 and use Shielding i see something different than the “standard” physics in Hadr04 but comparable. If i compare the two versions the issue occurs in PhysicsLists using NeutronHPCaptureXS, but not in QGSP_BERT_HP which uses neutronCaptureHP.

I did a lot of investigating to find the reason for this but i have no idea. I did see that in the release notes it says: “New hadronic datasets G4PhotonEvaporation-6.1.2, G4INCL-1.3, G4PARTICLEXS-4.2 are required and should be used.” but “G4PARTICLEXS-4.2” does exist in the data folder. I tried going through the source code on Github, as there were plenty of Changes for G4.11.4 but i did not really find anything immediately obvious (at least to me).

TLDR: Am i making a mistake or are pre-defined physicslists unusable for neutron physics in G4.11.4?

Geant4 Version: geant4-11-04 [MT]
Operating System: Ubuntu 20.04
Compiler/Version: g++ 13.3.0
CMake Version: 3.28.3


1 Like

Hello @Eric_Esch ,

welcome to the Geant4 forum and thank you for your nice reproducible report.

Our colleague @dkonst, had a look at your issue and it seems there is an issue when combining physics that are element-driven and the ones that are more isotope-driven. We’ll back to you as soon as we have had a closer look at this.

Cheers,

/Pico

Hello @pico,

Thanks for the reply, keep me updated!

Best,

Eric