Scattering intensity given by SLD_particle-SLD_layer, not by SLD_particle-SLD_avge
Theory:
S(q) = |F(q)|^2.
F(q) = sum_j (b_j-bb) F_j(q)
where j=1 is the layer (matrix) material, j=2,... runs over embedded particles. b_j is the material SLD. bb is the background SLD. It can be either b_1, or the weighted average of all b_j.
sum_j F_j(q) = \int dr^3 e^{iqr},
which yields, in some approximation, \delta(q). This means that sum_j F_j contributes only to forward scattering, and therefore can be equated with 0.
Write sum' for a sum from which the j=1 term is ommitted.
F(q) = sum' (b_j-bb) F_j + (b_1-bb) (-sum' F_j) = sum' (b_j-b_1) F_j.
Status:
Currently, if option useAvgMat is on, then we compute
F(q) = sum' (b_j-bb) F_j.
This is wrong. The average SLD bb must only be used in the R&T computation, not in the scattering computation.
This error has become even more consequential with MR !3278 (merged) that enabled useAvgMat by default.
Resolution:
-
Set ambient material to native (matrix) slice material. -
Remove ambient material from IReParticle and children.