Superfluous processes when implementing multiple track-structure physics for multiple G4Regions

I have a simulation with 3 different G4Regions in which I want to implement different physics (by declaring them one-by-one as opposed to using a dedicated constructor), the Regions are:

  • DefaultRegionForTheWorld in which I want to use a multiscattering model such as G4GoudsmitSaundersonMscModel etc.
  • ROI a region in which I want to calculate track structure in water (essentially the same ones used as by G4EmDNAPhysics_option7) and
  • NP a gold particle in which I want to use physics as in the AuNP-example with the dedicated processes D. Sakata.

I will not recite the PhysicsList in its entirety but will provide details upon request. It follows this pattern:

  • Define msc-processes as well as their models
  • Define water as well as the gold processes and initialize DummyModels for them

After this I define the physics for the different Regions by

  • Deactivating the msc models below a certain threshold
  • Activating the water models for the ROI and
  • Activating the gold models for the NP up to that threshold

My expectation is that - below this threshold - these models are active where I explicitly activated them and only there, but what actually happens is that the gold-modes are active in the ROI as well (I know this because when increasing the tracking-verbosity I see particle interactions such as G4DNAELSEPAElasticModel occuring outside of the NP). This is strange for two reasons:

  1. I did not explicitly activate them
  2. the gold models are hard-coded to return zero-cross-sections if the material does not have the correct atomic number of Z=79. Energy-losses however are shown as zero (however the interactions are alls elastic scattering which should have minuscule energy loss)

I acknowledge that the issue might well be rooted in my faulty understanding of how such physics is to be set up in which case I am thankful for any pointers towards the right direction.

In practice I have fixed the - apparent - issue by explicitly deactivating the gold models in the NP-region (actually I just set their lower activation threshold to an energy that is way beyond any expected energy). With this method I do not see any unwanted processes and from what I can tell reasonable results are produced. It feels a bit hacky however.


your task is the most complicate compared to all cases of combined physics, where in each G4Region you need different models. At this point it is critically important to specify, which Geant4 version is used.

For this purpose we have G4DNAModelActivator and G4EmConfigurator classes but there is no guarantee that using them you will have desired configuration of physics and you do not need built EM physics yourself.


Hello, thanks for your swift reply! I did forget to mention the version: I am currently using v11.1.1 I vaguely remember having the same issue with v10.7.3.

I don’t understand what you mean with your last sentence “and you do not need built EM physics yourself.”?

I understand that v11.1.1 has improved functionality for using different physics in the case of constructing PhysicsLists using dedicated constructors (I mean something like RegisterPhysics(new G4EmDNAPhysics_option4())).
Currently such a constructor does not exist for the gold-models, but I have considered making use of this functionality by writing a DNAGoldPhysics()-Constructor. Might that be a reasonable approach?

In the other thread you mention extra fixes for future releases - are these going to address this issue?
In any case, I think this application is not uncommon, amongst the users of the gold models as the medical applications do assume GNPs surrounded by water.