Scan models

Scans are needed to construct simulations of types reflectometry, off-specular scattering, depth probe.

There are two types of scan:

  • Alpha scans, for instruments that are mechanically scanning the glancing angle $\alpha_\text{i}$;
  • Qz scans, for time-of-flight instruments.

Alpha scans

To specify a scan with n equidistant steps in the glancing angle $\alpha_\text{i}$, use

scan = ba.AlphaScan(n, alpha_start, alpha_stop)

Usage is demonstrated by most examples in Examples/specular .

For other sequences of $\alpha_\text{i}$ values, use the more generic

scan = ba.AlphaScan(axis)

The Axis API may change soon and will be documented then.

After constructing a scan, set the wavelength and optionally a constant offset $\delta\alpha_\text{i}$ using

scan.setWavelength(lambda)
scan.setAlphaOffset(dalpha)

Qz scans

To specify a scan with n equidistant steps in the vertical wavenumber $q_z$, use

scan = ba.QzScan(n, qz_start, qz_stop)

For other sequences of $q_z$ values, use the more generic

scan = ba.AlphaScan(axis)

The Axis API may change soon and will be documented then.

A third alternative consists in passing a NumPy array,

import numpy as np
qz_vector = np.linspace(0.01, 1, n)
scan = ba.QzScan(qz_vector)

After constructing a scan, set the wavelength and optionally a constant offset $\delta q_z$ using

scan.setWavelength(lambda)
scan.setOffset(dqz)

Usage is demonstrated in page time-of-flight reflectometry.

Handling of resolution will change soon. The current API is demonstrated in page time-of-flight reflectometry with resolution.