Geant4 Version: 11.3.1
Operating System: AlmaLinux 9.4 (Seafoam Ocelot)
Compiler/Version: gcc (GCC) 11.4.1 20231218 (Red Hat 11.4.1-3)
CMake Version: 3.20.1
Hello Geant4 developers,
I am using Geant4 for the background model of low threshold dark matter detectors. I recently upgraded from the old v10.5.0 to v11.3.1 and I am observing non-physical discretization artifacts in beta spectra that was not present in the old version. I am simulating natural radioactivity (including full decay chains and beta emitters) for a detector background model with sensitivity down to ~0.5 keV. The relevant isotopes include: H-3, Rb-87, K-40 and several beta emitters in U/Th decay chains.
I expect smooth, continuous beta spectra down to nearly zero energy, and this is important for my physics case since these contributions are relevant for low-threshold spectrum interpretation.
In Geant4 11.3.1 I observe clear spectral “steps” at low energy: for H-3: a visible step around ~0.2 keV, for Rb-87: a structure around ~3–4 keV, … Apparently the position of the feature scales with Q-value. These features are not present in Geant4 10.5 using the previous implementation.
Is there a recommended way to obtain a fully continuous beta spectrum sampling in the current radioactive decay framework? I don’t want to downgrade back to v10.5.0 since I understand that many low energy processes have been improved in v11.x.
I copy here the relevant part of my Physics List:
RegisterPhysics(new G4DecayPhysics());
RegisterPhysics(new G4RadioactiveDecayPhysics());
RegisterPhysics( new G4HadronElasticPhysicsHP(verbose) );
G4HadronPhysicsShielding* hps;
hps = new G4HadronPhysicsShielding("hInelastic Shielding", verbose, 4.0*GeV, 5.0*GeV);
RegisterPhysics(new G4EmStandardPhysics_option4(verbose));
RegisterPhysics(new G4EmExtraPhysics());
G4EmParameters* emParameters = G4EmParameters::Instance();
emParameters->SetFluo(true);
emParameters->SetPixe(true);
emParameters->SetAuger(true);
defaultCutValue = 0.001*mm;
cutForGamma = defaultCutValue;
cutForElectron = defaultCutValue;
cutForPositron = defaultCutValue;
I also attach the macro used for H3 decay generation and a plot of the beta energy in the two versions v10.5.0 and v11.3.1.
#######
/gps/particle ion
# to be changed with Z and A of the isotope
/gps/ion 1 3 0 0
# define energy (set 0 for radioactive decaying nuclei)
/gps/energy 0. keV
/gps/pos/shape Para
/gps/pos/centre 0. 0. 0. m
/gps/pos/halfx 20. cm
/gps/pos/halfy 20. cm
/gps/pos/halfz 20. cm
#
# to use if there is in the code a Source volume
#
/gps/pos/type Volume
/gps/pos/confine Crystal
#
# Physics: radioactive decay enabled
/run/initialize
/process/had/rdm/thresholdForVeryLongDecayTime 1.0e+60 year
/run/verbose 0
/event/verbose 0
/tracking/verbose 0
/SABRE/outfile Crystal_3H
/random/setSeeds 263675941 398808690
## define number of even
Thank you in advance for your help!
Best,
Giulia




