diff --git a/docs/CPU_DATA_ANALYSIS.md b/docs/CPU_DATA_ANALYSIS.md index 97d6c0f7e..ff749ff6d 100644 --- a/docs/CPU_DATA_ANALYSIS.md +++ b/docs/CPU_DATA_ANALYSIS.md @@ -107,7 +107,7 @@ bright. For a pixel coordinate $(x,y)$ (in pixels), Jungfraujoch converts to a laboratory direction vector via: -1. shift by direct-beam position $(x_\mathrm{beam}, y_\mathrm{beam})$, +1. shift by the beam-centre pixel $(x_\mathrm{beam}, y_\mathrm{beam})$ — the **PONI**, pyFAI's point of normal incidence, which coincides with the direct-beam impact point only for an untilted detector (see [Detector geometry](DETECTOR_GEOMETRY.md)), 2. scale by pixel size $p$ (mm), 3. set detector distance $D$ (mm), 4. apply detector orientation rotation $R_\mathrm{det}$ (PyFAI-like parameterization). @@ -127,6 +127,8 @@ $ \mathbf{r}_\mathrm{lab} = R_\mathrm{det}\,\mathbf{r}_\mathrm{det}. $ +By this construction $(x_\mathrm{beam}, y_\mathrm{beam})$ maps to $(0,0,D)$ *before* the rotation — the point the detector normal through the sample meets — which is what makes it the PONI rather than the direct beam; the two differ by $D\tan(\mathrm{tilt})$ on a tilted detector. The laboratory frame is fixed the same way everywhere in the system: $+z$ along the beam propagation, $+x$ along increasing pixel **column** (the fast axis) and $+y$ along increasing pixel **row** (the slow axis) — a right-handed triple that coincides with XDS's laboratory frame, which is what makes the geometry echo of [rugnux](RUGNUX.md#comparing-the-geometry-with-xds) directly comparable. The absolute hand of an indexing — and with it the Bijvoet hands of §14.5–§14.6 — follows from this convention. + Let the incident wavevector magnitude be $k = 1/\lambda$ in Å$^{-1}$, and define: $ \mathbf{S}_0 = (0,0,k). @@ -143,9 +145,11 @@ This $\mathbf{s}$ is the fundamental quantity used for spot finding (resolution The scattering angle $2\theta$ is computed from $\mathbf{r}_\mathrm{lab}$ via: $ -2\theta = \arctan\!\left(\frac{\sqrt{x_\mathrm{lab}^2 + y_\mathrm{lab}^2}}{z_\mathrm{lab}}\right). +2\theta = \mathrm{atan2}\!\left(\sqrt{x_\mathrm{lab}^2 + y_\mathrm{lab}^2},\; z_\mathrm{lab}\right), $ +evaluated as a two-argument arctangent, so the mapping stays correct where a strongly tilted detector's far corner reaches past $2\theta = 90°$. + Resolution (Å) at a pixel is: $ d = \frac{\lambda}{2\sin\theta}. @@ -311,7 +315,7 @@ The profile reports both the mean $\bar{I}_b = S_b / N_b$ (when $N_b>0$) and a p Two standard corrections are available: -**(i) Solid angle / geometric correction.** A flat pixel's solid angle falls off with the **incidence angle $\alpha$ between the scattered ray and the detector normal**. With the in-plane detector offsets $u=(x-x_\mathrm{beam})p$ and $v=(y-y_\mathrm{beam})p$ (§1.1) and detector distance $D$, +**(i) Solid angle / geometric correction.** A flat pixel's solid angle falls off with the **incidence angle $\alpha$ between the scattered ray and the detector normal**. With the in-plane detector offsets $u=(x-x_\mathrm{beam})p$ and $v=(y-y_\mathrm{beam})p$ — measured from the PONI (§1.1), which is what the tilt-invariance below rests on — and detector distance $D$, $ \cos\alpha = \frac{D}{\sqrt{u^2+v^2+D^2}},\qquad C_\Omega = \cos^3\alpha,