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

MaskAngle v1

Summary

Algorithm to mask detectors with scattering angles in a given interval (in degrees).

See Also

MaskDetectors

Properties

Name

Direction

Type

Default

Description

Workspace

Input

Workspace

Mandatory

Input workspace

MinAngle

Input

number

0

Angles above MinAngle are going to be masked

MaxAngle

Input

number

180

Angles below MaxAngle are going to be masked

Angle

Input

string

TwoTheta

Which angle to use. Allowed values: [‘TwoTheta’, ‘Phi’, ‘InPlane’]

MaskedDetectors

Output

int list

List of detector masked, with scattering angles between MinAngle and MaxAngle

Description

Algorithm to mask detectors with scattering angles in a given interval (in degrees) By default MinAngle=0, MaxAngle=180, so if no keywords are set, all detectors are going to be masked Returns a list of detectors that were masked

When masking the phi angle the absolute value of phi is used.

The three angle options are subtly different: * TwoTheta is the detector’s \(2 \theta\) value as calcualted from the downstream beam. This is the angle from the pole and not constrained to be in-plane. * Phi is the detector’s angle with respect to the positive z-axis not constrained to be in-plane. For many geometries this will be the same as the TwoTheta option. * InPlane is the detector’s angle with respect to the positive z-axis constrained within the x-z-plane.

For the TwoTheta and Phi options, only positive angles are allowed.

Usage

Note

To run these usage examples please first download the usage data, and add these to your path. In Mantid this is done using Manage User Directories.

Two theta example

#Load a workspace
ws = Load("CNCS_7860")

#Do the masking for direct beam
mask = MaskAngle(ws, MinAngle=0, MaxAngle=10)
print("The algorithm has masked {} detectors".format(mask.size))

#to test check a couple of detectors
inst = ws.getInstrument()
print("Is the minimum element in the mask list (detector {}) masked?  {}".format(mask.min(), inst.getDetector(int(mask.min())).isMasked()))
print("Is the maximum element in the mask list (detector {}) masked?  {}".format(mask.max(), inst.getDetector(int(mask.max())).isMasked()))
print("Is a detector outside the list masked (for example detector 100)?  {}".format(inst.getDetector(100).isMasked()  ))

Output:

The algorithm has masked 1516 detectors
Is the minimum element in the mask list (detector 35126) masked?  True
Is the maximum element in the mask list (detector 38601) masked?  True
Is a detector outside the list masked (for example detector 100)?  False

The instrument view would look like:

MaskAngle.png

Phi example

#Load a workspace
ws = Load("CNCS_7860")

#Do the masking for direct beam
mask = MaskAngle(ws, MinAngle=30, MaxAngle=150, Angle='Phi')
print("The algorithm has masked {} detectors".format(mask.size))

#to test check a couple of detectors
inst = ws.getInstrument()
print("Is the minimum element in the mask list (detector {}) masked?  {}".format(mask.min(), inst.getDetector(int(mask.min())).isMasked()))
print("Is the maximum element in the mask list (detector {}) masked?  {}".format(mask.max(), inst.getDetector(int(mask.max())).isMasked()))
print("Is a detector outside the list masked (for example detector 100)?  {}".format(inst.getDetector(100).isMasked()  ))

Output:

The algorithm has masked 6348 detectors
Is the minimum element in the mask list (detector 29568) masked?  True
Is the maximum element in the mask list (detector 44287) masked?  True
Is a detector outside the list masked (for example detector 100)?  False

The instrument view would look like:

MaskAngle_phi.png

Categories: AlgorithmIndex | Transforms\Masking

Source

Python: MaskAngle.py