ess.sans.normalization.normalize_q#

ess.sans.normalization.normalize_q(numerator, denominator, return_events, uncertainties)[source]#

Perform normalization of counts as a function of Q to obtain I(Q) or I(Qx, Qy). division.

In a SANS experiment, the scattering cross section \(I(Q)\) is defined as (Heenan et al. 1997):

\[I(Q) = \frac{\partial\Sigma{Q}}{\partial\Omega} = \frac{A_{H} \Sigma_{R,\lambda\subset Q} C(R, \lambda)}{A_{M} t \Sigma_{R,\lambda\subset Q}M(\lambda)T(\lambda)D(\lambda)\Omega(R)}\]

where \(A_{H}\) is the area of a mask (which avoids saturating the detector) placed between the monitor of area \(A_{M}\) and the main detector. \(\Omega\) is the detector solid angle, and \(C\) is the count rate on the main detector, which depends on the position \(R\) and the wavelength. \(t\) is the sample thickness, \(M\) represents the incident monitor count rate for the sample run, and \(T\) is known as the transmission fraction.

Note that the incident monitor used to compute the transmission fraction is not necessarily the same as \(M\), as the transmission fraction is usually computed from a separate ‘transmission’ run (in the ‘sample’ run, the transmission monitor is commonly moved out of the beam path, to avoid polluting the sample detector signal).

Finally, \(D\) is the ‘direct beam function’, and is defined as

\[D(\lambda) = \frac{\eta(\lambda)}{\eta_{M}(\lambda)} \frac{A_{H}}{A_{M}}\]

where \(\eta\) and \(\eta_{M}\) are the detector and monitor efficiencies, respectively.

Hence, in order to normalize the main detector counts \(C\), we need compute the transmission fraction \(T(\lambda)\), the direct beam function \(D(\lambda)\) and the solid angle \(\Omega(R)\).

The denominator is then simply: \(M_{\lambda} T_{\lambda} D_{\lambda} \Omega_{R}\).

Parameters:
  • numerator (ReducedQ[TypeVar(ScatteringRunType, ess.reduce.nexus.types.BackgroundRun (int), ess.reduce.nexus.types.SampleRun (int), ess.reduce.nexus.types.VanadiumRun (int)), types.Numerator (scipp.DataArray)]) – The data whose counts will be divided by the denominator. This can either be event or dense (histogrammed) data.

  • denominator (ReducedQ[TypeVar(ScatteringRunType, ess.reduce.nexus.types.BackgroundRun (int), ess.reduce.nexus.types.SampleRun (int), ess.reduce.nexus.types.VanadiumRun (int)), types.Denominator (scipp.DataArray)]) – The divisor for the normalization operation. This cannot be event data, it must contain histogrammed data.

  • return_events (types.ReturnEvents (bool)) – Whether to return the result as event data or histogrammed data.

  • uncertainties (UncertaintyBroadcastMode) – The mode for broadcasting uncertainties. See ess.reduce.uncertainty.UncertaintyBroadcastMode for details.

Returns:

IofQ[TypeVar(ScatteringRunType, ess.reduce.nexus.types.BackgroundRun (int), ess.reduce.nexus.types.SampleRun (int), ess.reduce.nexus.types.VanadiumRun (int))] – Normalized I(Q) or I(Qx, Qy).