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

TransformToIqt v1

../_images/ImageNotFound.png

Enable screenshots using DOCS_SCREENSHOTS in CMake

Summary

Transforms an inelastic reduction to I(Q, t)

Properties

Name

Direction

Type

Default

Description

SampleWorkspace

Input

MatrixWorkspace

Mandatory

Name for the sample workspace.

ResolutionWorkspace

Input

MatrixWorkspace

Mandatory

Name for the resolution workspace.

EnergyMin

Input

number

-0.5

Minimum energy for fit.

EnergyMax

Input

number

0.5

Maximum energy for fit.

BinReductionFactor

Input

number

10

Decrease total number of spectrum points by this ratio through merging of intensities from neighbouring bins.

NumberOfIterations

Input

long

50

Number of randomised simulations for monte-carlo error calculation.

SeedValue

Input

long

89631139

Seed for pseudo-random number generator in monte-carlo error calculation.

ParameterWorkspace

Output

TableWorkspace

Table workspace for saving TransformToIqt properties

OutputWorkspace

Output

MatrixWorkspace

Output workspace

DryRun

Input

boolean

False

Only calculate and output the parameters

CalculateErrors

Input

boolean

True

Calculate monte-carlo errors.

Description

This algorithm transforms either a reduced (_red) or S(Q, w) (_sqw) workspace to a I(Q, t) workspace.

Theory

The measured spectrum \(I(Q, \omega)\) is proportional to the four dimensional convolution of the scattering law \(S(Q, \omega)\) with the resolution function \(R(Q, \omega)\) of the spectrometer via \(I(Q, \omega) = S(Q, \omega) \circledast R(Q, \omega)\), so \(S(Q, \omega)\) can be obtained, in principle, by a deconvolution in \(Q\) and \(\omega\). The method employed here is based on the Fourier Transform (FT) technique [6,7]. On Fourier transforming the equation becomes \(I(Q, t) = S(Q, t) x R(Q, t)\) where the convolution in \(\omega\)-space is replaced by a simple multiplication in \(t\)-space. The intermediate scattering law \(I(Q, t)\) is then obtained by simple division and the scattering law \(S(Q, \omega)\) itself can be obtained by back transformation. The latter however is full of pitfalls for the unwary. The advantage of this technique over that of a fitting procedure such as SWIFT is that a functional form for \(I(Q, t)\) does not have to be assumed. On IRIS the resolution function is close to a Lorentzian and the scattering law is often in the form of one or more Lorentzians. The FT of a Lorentzian is a decaying exponential, \(exp(-\alpha t)\) , so that plots of \(ln(I(Q, t))\) against t would be straight lines thus making interpretation easier.

In general, the origin in energy for the sample run and the resolution run need not necessarily be the same or indeed be exactly zero in the conversion of the RAW data from time-of-flight to energy transfer. This will depend, for example, on the sample and vanadium shapes and positions and whether the analyser temperature has changed between the runs. The procedure takes this into account automatically, without using an arbitrary fitting procedure, in the following way. From the general properties of the FT, the transform of an offset Lorentzian has the form \((cos(\omega_{0}t) + isin(\omega_{0}t))exp(-\Gamma t)\) , thus taking the modulus produces the exponential \(exp(-\Gamma t)\) which is the required function. If this is carried out for both sample and resolution, the difference in the energy origin is automatically removed. The results of this procedure should however be treated with some caution when applied to more complicated spectra in which it is possible for \(I(Q, t)\) to become negative, for example, when inelastic side peaks are comparable in height to the elastic peak.

The interpretation of the data must also take into account the propagation of statistical errors (counting statistics) in the measured data as discussed by Wild et al [1]. If the count in channel \(k\) is \(X_{k}\) , then \(X_{k}=<X_{k}>+\Delta X_{k}\) where \(<X_{k}>\) is the mean value and \(\Delta X_{k}\) the error. The standard deviation for channel \(k\) is \(\sigma k\) \(2=<\Delta X_{k}>2\) which is assumed to be given by \(\sigma k=<X_{k}>\). The FT of \(X_{k}\) is defined by \(X_{j}=<X_{j}>+\Delta X_{j}\) and the real and imaginary parts denoted by \(X_{j} I\) and \(X_{j} I\) respectively. The standard deviations on \(X_{j}\) are then given by \(\sigma 2(X_{j} R)=1/2 X0 R + 1/2 X2j R\) and \(\sigma 2(X_{j} I)=1/2 X0 I - 1/2 X2j I\).

Note that \(\sigma 2(X_{0} R) = X_{0} R\) and from the properties of FT \(X_{0} R = X_{k}\). Thus the standard deviation of the first coefficient of the FT is the square root of the integrated intensity of the spectrum. In practice, apart from the first few coefficients, the error is nearly constant and close to \(X_{0} R\). A further point to note is that the errors make the imaginary part of \(I(Q, t)\) non-zero and that, although these will be distributed about zero, on taking the modulus of \(I(Q, t)\), they become positive at all times and are distributed about a non-zero positive value. When \(I(Q, t)\) is plotted on a log-scale the size of the error bars increases with time (coefficient) and for the resolution will reach a point where the error on a coefficient is comparable to its value. This region must therefore be treated with caution. For a true deconvolution by back transforming, the data would be truncated to remove this poor region before back transforming. If the truncation is severe the back transform may contain added ripples, so an automatic back transform is not provided.

References

  1. U P Wild, R Holzwarth & H P Good, Rev Sci Instr 48 1621 (1977)

Workflow

../_images/ImageNotFound.png

diagram generation was disabled

Usage

Example - TransformToIqt with IRIS data.

sample = Load('irs26176_graphite002_red.nxs')
can = Load('irs26173_graphite002_red.nxs')

params, iqt = TransformToIqt(SampleWorkspace=sample,
                             ResolutionWorkspace=can,
                             EnergyMin=-0.5,
                             EnergyMax=0.5,
                             BinReductionFactor=10)

print('Number of output bins: %d' % (params.cell('SampleOutputBins', 0)))
print('Resolution bins: %d' % (params.cell('ResolutionBins', 0)))

Output:

Number of output bins: 172
Resolution bins: 6

Categories: AlgorithmIndex | Workflow\Inelastic | Workflow\MIDAS

Source

Python: TransformToIqt.py