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

EditInstrumentGeometry v1

../_images/EditInstrumentGeometry-v1_dlg.png

EditInstrumentGeometry dialog.

Summary

Adds a new instrument or edits an existing one; currently works in an overwrite mode only.

Properties

Name Direction Type Default Description
Workspace InOut MatrixWorkspace Mandatory Workspace to edit the detector information
PrimaryFlightPath Input number Optional Primary flight path L1 of the powder diffractometer.
SpectrumIDs Input int list   Spectrum Numbers (note that it is not detector ID or workspace indices). The list must be either empty or have a size equal to input workspace’s histogram number.
L2 Input dbl list Mandatory Secondary flight (L2) paths for each detector. Number of L2 given must be same as number of histogram.
Polar Input dbl list Mandatory Polar angles (two thetas) for detectors. Number of 2theta given must be same as number of histogram.
Azimuthal Input dbl list   Azimuthal angles (out-of-plane) for detectors. Number of azimuthal angles given must be same as number of histogram.
DetectorIDs Input int list   User specified detector IDs of the spectra. Number of specified detector IDs must be either zero or number of histogram
InstrumentName Input string   Name of the newly built instrument. If left empty, the original instrument will be used.

Description

This algorithm can:

#. Add an Instrument to a Workspace without any real instrument associated with, or #. Replace a Workspace’s Instrument with a new Instrument, or #. Edit all detectors’ parameters of the instrument associated with a Workspace (partial instrument editing is not supported).

Requirements on input properties

  1. PrimaryFightPath (L1): If it is not given, L1 will be the distance between source and sample in the original instrument. Otherwise, L1 is read from input. The source position of the modified instrument is (0, 0, -L1);
  2. SpectrumIDs: If not specified (empty list), then Spectrum Numbers will be set up to any array such that SpectrumNos[wsindex] is the spectrum Number of workspace index ‘wsindex’;
  3. L2 and Polar cannot be empty list;
  4. SpectrumIDs[i], L2[i], Polar[i], Azimuthal[i] and optional DetectorIDs[i] correspond to the detector of a same spectrum.
  5. Angles are specified in degrees.

Limitations

There are some limitations of this algorithm.

  1. The key to locate the detector is via spectrum Number;
  2. For each spectrum, there is only one and only one new detector. Thus, if one spectrum is associated with a group of detectors previously, the replacement (new) detector is the one which is (diffraction) focused on after this algorithm is called.

Usage

Example - Adding a new instrument to a workspace

import numpy
ws = CreateWorkspace(
    DataX=[0., 1.],
    DataY=[1., 2., 3.],
    NSpec=3)
EditInstrumentGeometry(
    ws,
    PrimaryFlightPath=5.,
    SpectrumIDs=[1, 2, 3],
    L2=[2.0, 2.3, 2.6],
    Polar=[10.0, 15.0, 23.0],
    Azimuthal=[0.0, 0.0, 0.0],
    DetectorIDs=[100, 101, 102],
    InstrumentName='Bizarrio')
spectrumInfo = ws.spectrumInfo()
for i in range(ws.getNumberHistograms()):
    print('Histogram {} scattering angle: {:.3} degrees'.format(i + 1, numpy.rad2deg(spectrumInfo.twoTheta(i))))

Output:

Histogram 1 scattering angle: 10.0 degrees
Histogram 2 scattering angle: 15.0 degrees
Histogram 3 scattering angle: 23.0 degrees

Categories: AlgorithmIndex | Diffraction\DataHandling | DataHandling\Instrument

Source

C++ header: EditInstrumentGeometry.h (last modified: 2020-03-20)

C++ source: EditInstrumentGeometry.cpp (last modified: 2020-06-17)