Problem 556 - Possible Rayleigh scattering bug
Summary: Possible Rayleigh scattering bug
Status: RESOLVED INVALID
Alias: None
Product: Geant4
Classification: Unclassified
Component: processes/optical (show other problems)
Version: 5.1
Hardware: PC Linux
: P2 normal
Assignee: gum
URL:
Depends on:
Blocks:
 
Reported: 2003-12-09 04:14 CET by ps
Modified: 2004-02-05 12:04 CET (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this problem.
Description ps 2003-12-09 04:14:00 CET
Not sure whether this is a bug or just me mis-understanding the implementation.

G4OpRayleigh.cc, in its calculation of the Rayleigh scattering mean free path
in water has at line 318:

                c3 = pow( ( (refsq - 1.0) * (refsq + 2.0) / 3.0 ), 2);

refsq is the square of the refractive index of water. The MFP is proportional to
1/c3.

All the literature I've checked has given the cross section of Rayleigh
scattering as proportional to pow((refsq - 1) / (refsq + 2), 2), which would
mean c3 has to be:

                c3 = pow( ( (refsq - 1.0) / (refsq + 2.0) / 3.0 ), 2);

Which makes a difference of a factor of 200 or so for water in the MFP. Is this
a mistake, or is there something I'm missing in the calculation?
Comment 1 pia 2004-01-13 05:03:59 CET
The problem is stated to concern G4OpRayleigh, that is in the optical package,
not in the lowenergy package; it is therefore re-assigned to the pertinent
Working Group coordinator.
Best wishes,
Maria Grazia
Comment 2 gum 2004-02-05 12:04:59 CET
The expression in the code, first obtained by Einstein in 1910, is called the
Einstein-Smoluchowski formula. A derivation can be found in J.D. Jackson,
Classical Electrodynamics, 2nd Edition, Sect. 9.7(d) - (9.118). Now, to be
honest, this derivation is, even for Jackson, exceedingly sketchy, and I can't
claim that I verified it and that there is no error in print.

On the other hand, the Rayleigh scattering length in water must be well known
from measurement and I'd expect that the method
G4OpRayleigh::RayleighAttenuationLengthGenerator returns these numbers
faithfully. I am pretty sure I checked this at some point but it won't hurt if
it's checked again.