Please fill out the following information to help in answering your question, and also see tips for posting code snippets. If you don’t provide this information it will take more time to help with your problem!
Geant4 Version:11.4-patch-01
Operating System:Ubuntu 22.04 (Google Colab)
Compiler/Version:geant4-pybind 0.1.3 (prebuilt manylinux wheel)
CMake Version:N/A (prebuilt geant4-pybind wheel, no local CMake build)
I’m measuring the Coulomb-scattering mean free path in Geant4 by using the
single-scattering physics constructor (G4EmStandardPhysicsSS) and fitting the
unscattered fraction P0 vs. target thickness to the Poisson form
P0 = exp(-x/lambda).
For heavy charged particles this gives consistent physics: at 2 GeV/c in
copper, lambda = 161.4 nm for pi- and 161.5 nm for mu- (agreement <0.1%),
and lambda/beta^2 is constant to 1.4% across 0.25-8 GeV/c. This all matches
the expected screened-Coulomb scaling.
Electrons don’t follow this. At 2 GeV/c in copper, lambda(e-) = 60.4 nm vs.
lambda(pi-) = 161.4 nm – a factor of 2.67 at essentially identical beta^2
(0.99515 vs 1.00000). The ratio is:
- momentum-independent: 0.371-0.374 from 100 MeV/c to 8 GeV/c
- charge-sign-independent: e+ gives 60.68 nm vs e- 60.43 nm
- unaffected by /process/msc/UseMottCorrection (verified the parameter
block changed from 1 to 0; lambda unchanged at 60.25 nm) - not consistent with a Z^2-scaling radiative contribution: electrons give
sigma ~ Z^1.29 vs pions’ Z^1.23 over 10 elements, too close for a
bremsstrahlung-sized effect, and the ratio lambda_pi/lambda_e shows no
monotonic Z trend (scatters 2.67-4.18 about ~3.4)
Is the angular threshold theta_S that separates “single scattering” from
“no interaction” defined differently for e-/e+ than for hadrons in
G4EmStandardPhysicsSS – e.g. via different lowest-bin energy or different
handling in the electron vs. hadron single-scattering model classes? That
would be a natural source of a threshold-dependent quantity like lambda
differing between species at fixed beta.
Geometry: thin slab in vacuum, primary scored on the slab-exit boundary
crossing, lambda extracted from a fit of -ln(P0) vs thickness (R^2 > 0.9999
in all cases). Happy to share the full setup if useful.