\(\renewcommand\AA{\unicode{x212B}}\)
Units¶
What are units?¶
Units are a set of small classes in Mantid that define a unit of measure, and the conversions between various units.
The Unit Factory is a Dynamic Factory that creates and hands out instances of Mantid Unit objects.
Available TOF Convertible units¶
The following units are available in the default Mantid distribution. These units are TOF convertible.
Name 
ID (as known by Unit Factory) 
Unit 
Relevant equation 

Time of flight 
TOF 
\(\mu s\) 
TOF 
Wavelength 
Wavelength 
\(\mathrm{\AA}\) 
\(\lambda = \frac{h}{p} = \frac{h \times \mathrm{tof}}{m_N \times L_{tot}}\) (see below) 
Energy 
Energy 
\(meV\) 
\(E = \frac{1}{2} mv^2 = \frac{m_N}{2} \left ( \frac{L_{tot}}{\mathrm{tof}} \right )^2\) 
Energy in wavenumber 
Energy_inWavenumber 
\(cm^{1}\) 
\(8.06554465 \times E\) 
Momentum (k) 
Momentum 
\(\mathrm{\AA}^{1}\) 
\(k = \frac{2 \pi }{\lambda}=\frac{2 \pi \times m_N \times L_{tot}}{h \times \mathrm{tof}}\) 
dspacing 
dSpacing 
\(\mathrm{\AA}\) 
\(TOF = DIFA \, d^2 + DIFC d + TZERO\) (see below) 
Momentum transfer (Q) 
MomentumTransfer 
\(\mathrm{\AA}^{1}\) 
\(Q = 2 \, k \, sin \, \theta = \frac{4 \pi sin \theta}{\lambda}\) 
Momentum transfer squared (\(Q^2\)) 
QSquared 
\(\mathrm{\AA}^{2}\) 
\(Q^2 \frac{}{}\) 
Energy transfer 
DeltaE 
\(meV\) 
\(\Delta E = E_{i}\frac{1}{2}m_N \left ( \frac{L_2}{\mathrm{tof}L_1\sqrt{\frac{m_N}{2E_i}}} \right )^2\) 
Energy transfer in wavenumber 
DeltaE_inWavenumber 
\(cm^{1}\) 
\(8.06554465 \times \Delta E\) 
Spin Echo Length 
SpinEchoLength 
\(nm\) 
\(constant \times \lambda^2\)
The constant is supplied in eFixed

Spin Echo Time 
SpinEchoTime 
\(ns\) 
\(constant \times \lambda^3\)
The constant is supplied in eFixed

dspacingPerpendicular 
dSpacingPerpendicular 
\(\mathrm{\AA}\) 
\(d_{\perp} = \sqrt{\lambda^2  2\log\cos\theta}\) 
Where \(L_1\) and \(L_2\) are sample to the source and sample to detector distances respectively, \(L_{tot} = L_1+L_2\) and \(E_i\) is the energy of neutrons leaving the source. \(\theta\) here is the Bragg scattering angle (e.g. half of the \(\theta\)angle used in spherical coordinate system directed along Mantid zaxis)
Note on Wavelength: If the emode property in ConvertUnits is specified as inelastic Direct/Indirect (inelastic) then the conversion to wavelength will take into account the fixed initial/final energy respectively. Units conversion into elastic momentum transfer (MomentumTransfer) will throw in elastic mode (emode=0) on inelastic workspace (when energy transfer is specified along xaxis)
Note on dspacing: The coefficients DIFA, DIFC and TZERO may be obtained via calibration of a TOF diffraction instrument. In the absence of a calibration, DIFA=TZERO=0 and the default value of DIFC is:
\(DIFC = 10^{4} \frac{m_N}{h} (L_1 + L_2) 2 \sin(\theta)\)
where the scaling factor adjusts for the fact that DIFC is required in units of \(\mu s\) per \(\mathrm{\AA}\).
dspacingPerpendicular is a unit invented in J. Appl. Cryst. (2015) 48, pp. 1627–1636 for 2D Rietveld refinement of angular and wavelengthdispersive neutron timeofflight powder diffraction data. Together with the dSpacing \(d\), dSpacingPerpendicular \(d_{\perp}\) forms a new orthogonal coordinate system.
Available nonTOF Convertible units¶
The following units are available in the default Mantid distribution. These units cannot be converted to or from TOF.
Name 
ID (as known by Unit Factory) 
Unit 
Description 

Empty 
No unit 
An empty label 

t 
Time 
\(s\) 
An independent unit of time not related to energy or TOF 
Scattering angle 
Degrees 
\(degrees\) 
Degrees is a measurement of angular position 
Temperature 
Temperature 
\(K\) 
Temperature in Kelvin 
Working with Units in Python¶
Accessing units on workspaces¶
Units on MatrixWorkspaces are accessed via the Axis.
ws = CreateSampleWorkspace()
for i in range(ws.axes()):
axis = ws.getAxis(i)
print("Axis {0} is a {1}{2}{3}".format(i,
"Spectrum Axis" if axis.isSpectra() else "",
"Text Axis" if axis.isText() else "",
"Numeric Axis" if axis.isNumeric() else ""))
unit = axis.getUnit()
print("\t caption:{0}".format(unit.caption()))
print("\t symbol:{0}".format(unit.symbol()))
Output:
Axis 0 is a Numeric Axis
caption:Timeofflight
symbol:microsecond
Axis 1 is a Spectrum Axis
caption:Spectrum
symbol:
Setting the axisLabel to a Label of your choice¶
ws = CreateSampleWorkspace()
axis = ws.getAxis(1)
# Create a new axis
axis.setUnit("Label").setLabel('Temperature', 'K')
unit = axis.getUnit()
print("New caption:{0}".format(unit.caption()))
print("New symbol:{0}".format(unit.symbol()))
Output:
New caption:Temperature
New symbol:K
Adding new units¶
Writing and adding a new unit is relatively straightforward. Instructions will appear here in due course. In the meantime if a unit that you require is missing, then please contact the development team and we will add it to the default Mantid library.
Category: Concepts