\(\renewcommand\AA{\unicode{x212B}}\)

CalculateSlits v1

../_images/ImageNotFound.png

Enable screenshots using DOCS_SCREENSHOTS in CMake

Summary

Calculates appropriate slit widths for reflectometry instruments based on the instrument setup, desired resolution, and desired footprint of the experiment.

See Also

NRCalculateSlitResolution

Properties

Name

Direction

Type

Default

Description

Slit1Slit2

Input

number

Optional

Distance between Slit 1 and Slit 2 in mm. Where Slit 1 and Slit 2 are the two slits before the sample holder.

Slit2SA

Input

number

Optional

Offset in the beam direction in mm. (Due to Slit 2 being translatable in the vertical axis)

Resolution

Input

number

Optional

The Resolution that you desire to obtain in the experiment

Footprint

Input

number

Optional

The Footprint you wish to achieve for the experiment, in mm

Angle

Input

number

Optional

Incident angle in degrees.

Slit1

Output

number

Calculated Slit 1 width in mm

Slit2

Output

number

Calculated Slit 2 width in mm

Description

This algorithm can be used to calculate the slit dimensions to use for reflectometry instruments. It is effectively the inverse of NRCalculateSlitResolution v1.

CalculateSlits uses nothing but the input properties to calculate the output, specifically:

\[ \begin{align}\begin{aligned}Slit2 = (Footprint \times sin\alpha) - (2 \times Slit2SA \times tan(\alpha \times Resolution))\\Slit1 = (2 \times Slit1Slit2 \times tan(\alpha \times Resolution)) - Slit2\end{aligned}\end{align} \]

where \(\alpha\) is the angle in radians (conversion between degrees and radians is implemented by the algorithm).

Footprint

The footprint of the experiment is not necessarily instrument specific and can be thought of as the area of the sample that is reach by the beam during the experiment. When providing the value of the footprint to the algorithm it should be based on the footprint that you would wish to use for the experiment as this information cannot be taken directly from the instrument definition and is experiment-dependant.

Usage

s1, s2 = CalculateSlits(Slit1Slit2=1940.5, Slit2SA=364, Angle=0.7, Footprint=50, Resolution=0.03)
print("Slit 1: {:.3f} mm".format(s1))
print("Slit 2: {:.3f} mm".format(s2))
Slit 1: 1.078 mm
Slit 2: 0.344 mm

Categories: AlgorithmIndex | Reflectometry\ISIS

Source

C++ header: CalculateSlits.h

C++ source: CalculateSlits.cpp