| Summary: | Possible Rayleigh scattering bug | ||
|---|---|---|---|
| Product: | Geant4 | Reporter: | ps |
| Component: | processes/optical | Assignee: | gum |
| Status: | RESOLVED INVALID | ||
| Severity: | normal | ||
| Priority: | P2 | ||
| Version: | 5.1 | ||
| Hardware: | PC | ||
| OS: | Linux | ||
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 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. |
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?