A reflection arriving at an angle to the detector normal crosses D/cos(alpha) of
whatever lies between the sample and the sensor, not D, so it is attenuated more than
one arriving head-on and reads low. That is the same geometry as the sensor crossing
already corrected here and the opposite sign, and it was missing.
The factor is exp(D/L*(1/cos(alpha)-1)) from the NIST attenuation coefficient of the
medium, the stated distance and the stated wavelength. Nothing in it is fitted, and
it is not justified by any measured amplitude: the flight path and the sensor
crossing are collinear to better than 0.998 over the angular range any single
experiment samples, so no fit of one can be evidence for the other. It is the
tabulated absorption of a known thickness of a known material over a known path.
The medium cannot be detected. No field of the NXmx application definition describes
it, none of the masters this program reads carries one, and it cannot be inferred
from the implied transmission either - in this corpus a station confirmed to use
helium sits at 51% implied air transmission and one confirmed to use air at 63%, so
any rule separating them is a threshold fitted between two points. It is therefore
assumed, stated, and overridable: --flight-path air|helium|vacuum, defaulting to air.
Helium is its own material rather than an alias for vacuum, attenuating about a six
hundredth of air rather than nothing.
On an untilted detector the correction is a function of resolution alone, so its
entire effect on merged data is a shift in the Wilson B - which is what the report
now prints beside the assumption, accurate to better than a tenth of an angstrom
squared against measurement from 0.05 up to 28. Where that shift is large the report
warns, because a wrong medium is then the largest number in the run: applied to data
from the confirmed helium station it returns a B of 14 A^2 at 3.0 A resolution, which
is not a value a crystal can have.
The corpus contains its own control. One crystal, one station, three collections a
quarter of an hour apart at falling energy through the same air: corrected, the
Wilson B rises monotonically with the dose, as it must.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EFEJG6WBQv8th4UJFNe53N
A photon entering a flat sensor at an angle alpha to its normal crosses t/cos(alpha)
of material instead of t, so the absorbed fraction rises toward the detector edge.
The correction is QE(0)/QE(alpha) taken on the diffracted-beam direction against the
detector normal, not on the scattering angle, so it follows a tilted or swung-out
detector rather than assuming the two coincide.
On an untilted detector this is a function of |s| alone: it is 99.7% a Wilson B
offset and cancels exactly within a resolution shell, so merged protein data barely
moves and no gain is claimed. It stops cancelling the moment the detector is tilted,
because the incidence angle then acquires an azimuthal dependence: on a 30 degree
swung-out geometry at 18 keV the within-shell spread reaches 21% median and 31% peak,
and the anisotropy tensor moves with it.
Attenuation lengths are the tabulated NIST coefficients rather than a wavelength-cubed
approximation, which is within 0.2% for silicon above 10 keV but wrong for CdTe by a
factor of two, and by six above the cadmium K edge. Photoelectric branching cancels in
the ratio; K-fluorescence escape is not modelled, and the header says so.
The correction self-disables where the physics makes it meaningless - an opaque
sensor - so it needs no flag and is exactly neutral on all long-wavelength data and on
thick CdTe. That also makes it a no-op on a file that stores its sensor thickness in
the wrong unit, of which the corpus holds one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EFEJG6WBQv8th4UJFNe53N