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

Rebin2D v1

../_images/Rebin2D-v1_dlg.png

Rebin2D dialog.

Summary

Rebins both axes of a 2D workspace using the given parameters

Properties

Name Direction Type Default Description
InputWorkspace Input MatrixWorkspace Mandatory An input workspace.
OutputWorkspace Output MatrixWorkspace Mandatory An output workspace.
Axis1Binning Input dbl list Mandatory 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.
Axis2Binning Input dbl list Mandatory 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.
UseFractionalArea Input boolean False Flag to turn on the using the fractional area tracking RebinnedOutput workspace .Default is false.
Transpose Input boolean False Run the Transpose algorithm on the resulting matrix.

Description

The bin parameters are used to form an output grid. A positive \(\Delta x_i\,\) makes constant width bins, whilst negative ones create logarithmic binning using the formula \(x(j+1)=x(j)(1+|\Delta x_i|)\,\). The overlap of the polygons formed from the old and new grids is tested to compute the required signal weight for the each of the new bins on the workspace, like in Rebin v1, and the errors are summed in quadrature, as:

\[Y^{\mathrm{new}} = \sum_i Y^{\mathrm{old}}_i F_i\]
\[E^{\mathrm{new}} = \sqrt{\sum_i (E^{\mathrm{old}}_i)^2 F_i}\]

where \(F_i = A^{\mathrm{overlap}}_i / A^{\mathrm{old}}_i\) is the ratio of the overlap area of the new and old bin over the area of the old bin.

If the input workspace is not of type: RebinnedOutput, and the UseFractionalArea option is set to True, the algorithm will assume that the input fraction is unity. This is correct if this workspace has not been previously rebinned, but will give incorrect error (standard deviation) estimates if it has been rebinned.

Requirements

The algorithms currently requires the second axis on the workspace to be a numerical axis so ConvertSpectrumAxis v2 may need to run first.

Usage

Example - A simple example using the fractional area

ws = CreateSampleWorkspace()
#Convert the Spectrum Axis to theta
wsc = ConvertSpectrumAxis(ws,"theta")

rb = Rebin2D(wsc,[0,100,20000],[0,0.01,1.2],UseFractionalArea=True)
print("Bins in the X axis: {}".format(rb.blocksize()))
print("Bins in the Y axis: {}".format(rb.getNumberHistograms()))

Output:

Bins in the X axis: 200
Bins in the Y axis: 120

Example - Transposing the Result

ws = CreateSampleWorkspace()
#Convert the Spectrum Axis to theta
wsc = ConvertSpectrumAxis(ws,"theta")

rb = Rebin2D(wsc,[0,100,20000],[0,0.01,1.2],Transpose=True)
print("Bins in the X axis: {}".format(rb.blocksize()))
print("Bins in the Y axis: {}".format(rb.getNumberHistograms()))

Output:

Bins in the X axis: 120
Bins in the Y axis: 200

Example - Rebinning twice preserves signal/errors

import numpy as np
# prepare an input workspace
theta_tof = CreateSampleWorkspace()
theta_tof = ConvertSpectrumAxis(theta_tof, "theta")

theta_tof_rb1 = Rebin2D(theta_tof, '100,400,20000', '0, 0.001,1', UseFractionalArea=True)
theta_tof_rb2 = Rebin2D(theta_tof_rb1, '100,400,20000', '0, 0.004,1', UseFractionalArea=True)
theta_tof_rb_final = Rebin2D(theta_tof,  '100,400,20000', '0, 0.004, 1', UseFractionalArea=True)
print(f'Signal difference = {np.median(np.abs(theta_tof_rb_final.readY(0) - theta_tof_rb2.readY(0))):.3f}')
print(f'Errors difference = {np.median(np.abs(theta_tof_rb_final.readE(0) - theta_tof_rb2.readE(0))):.3f}')
Signal difference = 0.000
Errors difference = 0.000

Categories: AlgorithmIndex | Transforms\Rebin

Source

C++ header: Rebin2D.h (last modified: 2021-03-31)

C++ source: Rebin2D.cpp (last modified: 2021-03-31)