Rayleigh scattering form factors from PENELOPE appear lower than literature

Dear all,

I instantiate a water material
G4NistManager* nist = G4NistManager::Instance();
G4Material* mymat = nist->FindOrBuildMaterial("G4_WATER")

and then, using G4PenelopeRayleighModel::DumpFormFactorTable(mymat), I retrieve the Rayleigh scattering form factors which are calculated according to the independent atom model(IAM).

I then edit the form factors to add molecular interference (MI) effects and retrieve them back again to plot the MI form factors in comparison with the IAM form factors.

Common practice has it that the plots be normalised(divided) by sqrt(W), where W is the molecular weight of water but if I do that using 18.01528 g/mol then the results(first figure) are half of what they are reported in the literature(second figure)***SEE EDIT BELOW Geant4 implementation of inter-atomic interference effect in small-angle coherent X-ray scattering for materials of medical interest.

I notice units of “mol” missing from the y axis(W has units of g/mol and F has no units) in the literature so I am wondering why they disappear and if this is the reason why both Geant4 IAM and my MI form factors are half of those in the literature.

Results are not half. It is that if I use 9 g/mol instead of 18 g/mol that makes the results be equal.

Many thanks,

The reason behind this discrepancy is the way G4PenelopeRayleighModel.cc calculates the form factor.

The Independent Atom Model states that for a material with molecular weight W, comprised of N elements with atomic weight A_i, mass fraction w_i and atomic form factor f_i, the molecular form factor is
F(x)^2 = W * Sum[ (w_i/A_i) * f_i(x)^2 ]
and so
F(x)^2/W = Sum[ (w_i/A_i) * f_i(x)^2 ] Eq(1)

On the other hand, G4PenelopeRayleighModel.cc (probably all models in general) calculates the form factor according to the IAM model a little differently:
F'(x)^2 = Sum[ (w_i/A_i) * f_i(x)^2 ] / Max(w_i/A_i)
and so
F'(x)^2 * Max(w_i/A_i) = Sum[ (w_i/A_i) * f_i(x)^2 ]
and from Eq(1) we get
F'(x)^2 * Max(w_i/A_i) = F(x)^2/W

So, when I Get the form factor table with G4PenelopeRayleighModel::DumpFormFactorTable, I get F’ so I have to multiply by SQRT(Max(w_i/A_i)) to get F/SQRT(W).