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

Bin2DPowderDiffraction v1

Summary

Bins TOF powder diffraction event data in 2D space.

See Also

Rebin2D

Properties

Name

Direction

Type

Default

Description

InputWorkspace

Input

EventWorkspace

Mandatory

An input EventWorkspace must be a Histogram workspace, not Point data. X-axis units must be wavelength.

OutputWorkspace

Output

Workspace

Mandatory

An output workspace.

dSpaceBinning

Input

dbl list

A comma separated list of first bin boundary, width, last bin boundary. Optionally this can be followed by a comma and more widths and last boundary pairs. Negative width values indicate logarithmic binning.

dPerpendicularBinning

Input

dbl list

A comma separated list of first bin boundary, width, last bin boundary. Optionally this can be followed by a comma and more widths and last boundary pairs. Negative width values indicate logarithmic binning.

BinEdgesFile

Input

string

Optional: The ascii file containing the list of bin edges. Either this or Axis1- and dPerpendicularBinning need to be specified. Allowed extensions: [‘.txt’, ‘.dat’]

NormalizeByBinArea

Input

boolean

True

Normalize the binned workspace by the bin area.

Description

This algorithm performs binning of the given workspace in \((d, d_{\perp})\) space, where \(d\) is the d-Spacing and

(1)\[ d_{\perp} = \sqrt{\lambda^2 - 2\log\cos\theta}\]

The result is that a Matrix workspace is created. If \(\theta=0\) or \(\cos\theta\le 0\), the algorithm will terminate with an error message, since no reasonable \(d\) or \(d_{\perp}\) value can be calculated. In this case it is recommended to check whether detector positions are correct and to mask the problem detectors.

Warning

The information about correspondence of spectra to detectors is lost in the produced OutputWorkspace. Applying any algorithms like ConvertUnits v1, which require information about \(2\theta\), to this workspace may lead to incorrect results.

Restrictions on the input workspace

  • X-axis must have the wavelength units.

  • Only Histograms can be handled.

  • Only EventWorkspaces are supported for the moment.

  • The input workspace must have an instrument set.

  • The input workspace must have a Spectrum axis as a Y-axis.

Binning parameters

Either dSpaceBinning and dPerpendicularBinning or BinEdgesFile must be specified, but not both. dSpaceBinning contains binning parameters in d-Spacing. dPerpendicularBinning contains binning parameters in d-SpacingPerpendicular. Binning parameters should be set the same way as for Rebin v1 algorithm.

In the case if non-equidistant binning is required, bin edges can be specified in the BinEdgesFile.

BinEdgesFile

BinEdgesFile is an ascii-file, where the bin edges are specified in a following format.

The first 2 lines contain header:

#dp_min #dp_max
#d_bins

Then follows the line dp = \(d_{\perp\,n}\) \(d_{\perp\,n+1}\) where the bin edges for the n-th bin are specified, starting from the lowest values. In the next line bin edges for d-Spacing are listed as \(d_0, d_1, \dots, d_m\). Then this can be repeated as many times as necessary. For example:

#dp_min #dp_max
#d_bins
dp = 3.0  4.0
    1.0  3.0  6.0

dp = 4.0  4.5
    2.0  4.0  5.15  6.0

In this example the following bin edges are specified for the \(d_{\perp}\)-axis: 3.0, 4.0, 4.5. The d-axis for the first spectrum (\(d_{\perp}\) from 3.0 to 4.0) will contain the bin edges 1.0, 3.0, 6.0 and for the second spectrum (\(d_{\perp}\) from 4.0 to 4.5) the bin edges 2.0, 4.0, 5.15, 6.0.

Usage

Example - Bin2DPowderDiffraction

# Create an input workspace
wsIn = CreateSampleWorkspace(WorkspaceType="Event", Function="Powder Diffraction",
                             NumBanks=1, XUnit="Wavelength", NumEvents=10,
                             XMin=1.0, XMax=6.0, BinWidth=1.0)
# Move detector to get reasonable 2theta
MoveInstrumentComponent(wsIn, 'bank1', X=1,Y=0,Z=1, RelativePosition=False)

# Do binning
wsOut = Bin2DPowderDiffraction(wsIn, dSpaceBinning="2,2,6", dPerpendicularBinning="1,2,5", NormalizeByBinArea=False)

# Do binning and normalize the result by bin area
wsOutNorm = Bin2DPowderDiffraction(wsIn, dSpaceBinning="2,2,6", dPerpendicularBinning="1,2,5", NormalizeByBinArea=True)

# Print the result
print("Y values without normalization:")
print(wsOut.extractY())
print("Y values with normalization by bin area:")
print(wsOutNorm.extractY())

Output:

 Y values without normalization:
 [[ ... ...]
  [  ... ...]]
 Y values with normalization by bin area:
 [[ ... ...]
  [ ... ...]]

References

More details on the multidimensional TOF powder diffraction data reduction can be found in the following papers.

  1. P. Jacobs, A. Houben, W. Schweika, A. L. Tchougréeff and R. Dronskowski, A Rietveld refinement method for angular- and wavelength-dispersive neutron time-of-flight powder diffraction data, J. Appl. Cryst. (2015) 48, 1627-1636 doi: 10.1107/S1600576715016520

  2. P. Jacobs, A. Houben, W. Schweika, A. L. Tchougréeff and R. Dronskowski, Instrumental resolution as a function of scattering angle and wavelength as exemplified for the POWGEN instrument, J. Appl. Cryst. (2017) 50, 866-875. doi: 10.1107/S1600576717005398

Categories: AlgorithmIndex | Diffraction\Focussing

Source

C++ header: Bin2DPowderDiffraction.h

C++ source: Bin2DPowderDiffraction.cpp