Sigma_alpha Roughness of surfaces

Hi, could you please clarify whether the sigma_alpha unit (Roughness of surfaces) is expressed in degrees or radians? Also, what are its minimum and maximum allowed values?

1 Like

That’s a good question. The example code in the Application Developers Guide has

OpSurface->SetSigmaAlpha(0.1);

Which is dimensionless by construction (compare other G4 quantities which are always written with a units multiplier). Looking at the source code which uses it (G4OpBoundaryProcess::GetFacetNormal()), the main comment there says

    /* This function codes alpha to a random value taken from the
    distribution p(alpha) = g(alpha; 0, sigma_alpha)*std::sin(alpha),
    for alpha > 0 and alpha < 90, where g(alpha; 0, sigma_alpha) is a
    gaussian distribution with mean 0 and standard deviation sigma_alpha.  */

The Gaussian g(alpha) is a multiplier for sin(alpha), and is dimensionless in both value and argument.

If it helps to think about it conceptually, sigma_alpha has units of “sine” :slight_smile:

1 Like

Based on my research, from a mathematical and physical perspective, sigma_alpha should not be significantly larger than a value that reasonably keeps the Gaussian distribution of alpha within the range of [0, 90] degrees (or [0, π/2] radians). Its lower limit is 0 (representing a perfectly smooth surface). In practice, values less than 1 radian (approximately 57 degrees) are typically more common for modeling physical roughness. Geant4 accepts SetSigmaAlpha as a G4double (a floating-point number) and does not impose any strict limitations on its input.