Issue with very long runtime in Geant4.11


I am running a simulation of an X-ray telescope, with 0.8 mm thick CdZnTe main detectors and an active BGO crystal shield which is has a thickness on the order of 50 mm (see enclosed picture).

The simulation runs fine while inputting x-ray photons entering through the collimator (the green path in the picture), with runs of 1e9 events running in roughly 30 minutes. These photons range from 10-80 keV and are shot by a custom particle gun.

Issues arise, however, when running background simulations with protons, neutrons, electrons and gammas, which have energies up to the 100 GeV level. These are fired by a regular GPS source incident from the sides of the detector (from the right and left in the picture) and thus mainly hit the BGO shield. The problem is that these runs take enormous amounts of time, between 5 and 15 minutes (depending on the particle) for just 50 000 events, which is a problem since we need to simulate over 100 million events to get sufficient background statistics.

My hunch is that the issue is the hadronic showers arising in the BGO shield taking way too much computation time, and that the step length for the secondaries should somehow be reduced. The simulation is set up such that an event is only saved if it hits the CdZnTe detectors (to mimic the actual telescope), even though the BGO part is set up as an active detector volume. This means that what’s happening exactly in the BGO shield is not the crucial part, but on the other hand we want an accurate representation of what goes through the shield and hits the detectors.

And here’s the kicker: the runtime issue is not there on older Geant4 versions. We have an older system (equal in computing power to the 4.11.1 one) running 4.10.2 and there a 50 000 event run takes only a few seconds and gives reasonable outputs (similar to the very long runs on 4.11.1). However, there is a completely unrelated (to my knowledge) issue on that version with G4PhantomParameterisation which causes crashes, so we can’t perform our runs on that system. I suppose that there has been some update since 4.10.2 that increased the sensitivity? Is there a way to set the step length (or similar relevant parameters) in 4.11.1 equal to what they were in 4.10.2?

Is anyone able to help? I can’t really post the code here since it is a huge and complicated structure, but feel free to ask more specific questions. Here is a list of the physicslists used, which I suspect might be relevant:

#include "G4EmLivermorePolarizedPhysics.hh"
#include "G4EmExtraPhysics.hh"
#include "G4IonQMDPhysics.hh"
#include "G4IonElasticPhysics.hh"
#include "G4StoppingPhysics.hh"
#include "G4HadronElasticPhysicsHP.hh"
#include "G4HadronElasticPhysicsLEND.hh"
#include "G4HadronPhysicsShielding.hh"

Thanks in advance!