scippneutron.conversion.beamline.scattering_angle_in_yz_plane#

scippneutron.conversion.beamline.scattering_angle_in_yz_plane(incident_beam, scattered_beam, wavelength, gravity)[source]#

Compute polar scattering angles in the y-z plane using gravity.

Note

This function uses the reflectometry definition of the polar scattering angle. Other techniques define the angle w.r.t. the incident beam. See scattering_angles_with_gravity() for those use cases.

With the definitions given in scattering_angles_with_gravity(), and ignoring \(x_d\), we get

\[\mathsf{tan}(\gamma) = \frac{|y_d^{\prime}|}{z_d}\]

with

\[y'_d = y_d + \frac{|g| m_n^2}{2 h^2} L_2^{\prime\, 2} \lambda^2\]

The angle \(\gamma\) is defined as in Fig. 5 of [SG16].

Attention

The above equation for \(y'_d\) contains \(L_2^{\prime\, 2} = |b'_2|\) which in turn depends on \(y'_d\). Solving this equation for \(y'_d\) is too difficult. Instead, we approximate \(L'_2 \approx L_2\). The impact of this approximation on \(\gamma\) is of the order of \(10^{-6}\) or less for beamlines at ESS. This is within the expected statistical uncertainties and can be ignored.

See two_theta gravity correction for details.

Parameters:
  • incident_beam (Variable) – Beam from source to sample. Expects dtype=vector3.

  • scattered_beam (Variable) – Beam from sample to detector. Expects dtype=vector3.

  • wavelength (Variable) – Wavelength of neutrons.

  • gravity (Variable) – Gravity vector.

Returns:

Variable – The polar scattering angle \(\gamma\).

See also

scattering_angles_with_gravity

Includes the x component when computing theta. This is used in techniques other than reflectometry.