Table of Contents
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 |
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 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.
Note
To run these usage examples please first download the usage data, and add these to your path. In MantidPlot 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:
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:
Categories: AlgorithmIndex | Transforms\Masking
Python: MaskAngle.py (last modified: 2019-08-01)