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:
-
Change
run01.mac(in Hadr04) by commenting the line/testhadr/phys/thermalScattering true(this is for consistency, as Shielding does not have that option) -
Change the Material to
/testhadr/det/setMat G4_Gd. (Here it is the easiest to see, but from my testing alsoG4_STAINLESS-STEELandG4_lArseems to be effected). -
Add following macros to only inspect nCapture (after
/run/initialize):/process/inactivate hadElastic neutron,/process/inactivate neutronInelastic neutron -
Change the energy to 0.1 eV (or lower) and increase number of primaries to 20 000 (or more).
-
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