Low Energy Positron Implantation, Artefact Creation

Geant4 Version: 11.4.1
Operating System:Ubuntu 24.04 under WSL2 on Windows
Compiler/Version: GCC/G++ 13.3.0
CMake Version: 3.28.3


Hello,

I am currently building an application to run positron implantation simulations. The energy range would be 1-30 keV. Here, the important quantities would be the resulting implantation profile and backscattering rates; positrons would be tracked until termination.

For this, I have looked at the different electromagnetic physics lists provided; however, during preliminary runs, I encountered low-energy artifacts that persisted up to 3 keV in incident beam energy. These appear when the Goudsmit–Saunderson model is used for multiple Coulomb scattering. I have run some diagnostics, and my results indicate that the artefacts may be related to source-code conditions controlling when multiple scattering is allowed to sample a scattering displacement or direction change. Below is a summary of the artefact and what I have observed.

( Aluminium target, monoenergetic beam 10nm away from the target)

  • All artefact events are two-step events. The first step transports the primary positron from its creation position to the target boundary, and the second and final step occurs inside the material.
  • In all artefact events, eIoni is the process defining the final step.
  • In all artefact events, the ratio finalStepLength/restrictedRange is exactly 1.
  • All artefact events have exactly the same implantation depth and no lateral displacement.

My source code observations:

  • In G4VEnergyLossProcess::AlongStepDoIt(), the stopping branch is entered when the step length reaches or exceeds the remaining range.
  • In this branch, the remaining pre-step kinetic energy is assigned to energy loss, the proposed kinetic energy is set to zero, and the remaining energy is proposed as a local energy deposit.
  • In G4VMultipleScattering::AlongStepDoIt(), SampleScattering() is called only when the true path length is smaller than the remaining range and larger than geomMin. Therefore, multiple-scattering angular and displacement sampling is not performed when the final step reaches the remaining range.

I varied the finalRange, which decreased the number of artefact events by restricting ionisation from depositing all the remaining energy in one step. Here, standard Option 4 was used. I have attached the two model comparisons at 1 keV and 2 keV, as well as the plot showing how the number of artefact events changes when finalRange is varied.

I have the following questions:

  1. Is this expected, or am I doing something wrong?

  2. I am thinking of using the following physics list for my use case: G4eDPWACoulombScatteringModel, Penelope ionisation, bremmsstrahlung, and annihilation. Is this sensible, or should I continue using a multiple-scattering model?

  3. Why doesn’t this artefact appear when using Urban MSC?

I could only add one attachment, so I combined the three graphs into a single image. I apologize if some details are difficult to read.

Thank you so much. I would be grateful for any help or suggestions.