Understanding Rayleigh scattering simulation in Geant

Dear all,

I would like to understand once and for all Rayleigh scattering simulation in Geant. Not the technical or implementation details, but basically “how the scattering direction is sampled”.

Reading various sources I find e.g. this:

“Naming the polar deflection angle (final polarization relative to initial polarization) of the scattered photon θ, the atomic cross section for Rayleigh scattering is proportional to 1 + cos2 θ. For modeling Rayleigh scattering in Geant4, after the random selection of an atom, the polar angle is sampled based on the photon energy and total cross section, while the azimuthal angle is sampled uniformly.”

“The scattered photon direction is perpendicular to the new photon’s polarization in such a way that the final direction, initial and final polarization are all in one plane.“

However, giving a look to the source code G4OpRayleigh.cc I see something like this:

do { // Try to simulate the scattered photon mom direction w.r.t. the initial photon mom direction}

while {std::pow(cosTheta,2) < G4UniformRand()}

So it seems to me that the sampling is with cos^2(theta) rather than 1 + cos^2 theta

From the literature, I find 1 + cos^2 theta in the unpolarized Rayleigh cross section, with theta being the angle between the initial and final photon direction, and (epsilon_i . epsilon_f)^2 for the polarized Rayleigh cross section, with epsilon_i and epsilon_f the initial and final polarization vectors. This second expression would give the dependence with cos^2 theta, but with theta here intended as the angle between the polarization vectors (and not the photon directions).

So my questions are,

  1. Is Geant sampling “theta” with the equivalent of the polarized cross section distribution, with theta being the angle between the initial and final polarization?

  2. is the sampling with “cos theta^2” as I read from the code or as 1 + cos^2 theta, in “an unpolarized manner”, as I read e.g. from Geant4 documentation, tutorials, etc.?

Geant4 Version: 11.0.3


1 Like