Table of Contents
Algorithm to focus powder diffraction data into a number of histograms according to a grouping scheme defined in a CalFile.
Name | Direction | Type | Default | Description |
---|---|---|---|---|
InputWorkspace | Input | MatrixWorkspace | Mandatory | A 2D workspace with X values of d-spacing/Q-spacing |
OutputWorkspace | Output | MatrixWorkspace | Mandatory | The result of diffraction focussing of InputWorkspace |
GroupingFileName | Input | string | Optional: The name of the CalFile with grouping data. Allowed extensions: [‘.cal’] | |
GroupingWorkspace | Input | GroupingWorkspace | Optional: GroupingWorkspace to use instead of a grouping file. | |
PreserveEvents | Input | boolean | True | Keep the output workspace as an EventWorkspace, if the input has events (default). If false, then the workspace gets converted to a Workspace2D histogram. |
Given an InputWorkspace and a Grouping filename, the algorithm performs the following:
Within the CalFile any detectors with the ‘select’ flag can be set to zero or with a group number of 0 or -ve groups are not included in the analysis.
Since the new X boundaries depend on the group and not the entire workspace, this focusing algorithm does not create overestimated X ranges for multi-group instruments. However it is important to remember that this means that this algorithm outputs a ragged workspace. Some 2D and 3D plots will not display the data correctly.
The DiffractionFocussing algorithm uses GroupDetectors algorithm to combine data from several spectra according to GroupingFileName file which is a CalFile.
The algorithm can be used with an EventWorkspace input, and will create an EventWorkspace output if a different workspace is specified.
The main difference vs. using a Workspace2D is that the event lists from all the incoming pixels are simply appended in the grouped spectra; this means that you can rebin the resulting spectra to finer bins with no loss of data. In fact, it is unnecessary to bin your incoming data at all; binning can be performed as the very last step.
Note
To run these usage examples please first download the usage data, and add these to your path. In MantidPlot this is done using Manage User Directories.
Example - Diffraction focussing of HRPD data:
# Load HRP dataset
ws = Load("HRP39180.RAW")
# specify groupping file, here using CalFile format
cal_file = "hrpd_new_072_01_corr.cal"
# For HRPD data, perform a unit conversion TOF->d-spacing, taking into account detector position offsets
ws = AlignDetectors(InputWorkspace='ws',CalibrationFile=cal_file)
# Focus the data
ws = DiffractionFocussing(InputWorkspace='ws',GroupingFileName=cal_file)
print("The 51st y-value is: %.3f" % ws.readY(0)[50])
Output:
The 51st y-value is: 900.709
Example - Demonstrating option PreserveEvents:
# create event workspace with one bank of 4 detectors
ws = CreateSampleWorkspace(WorkspaceType="Event", XUnit="dSpacing", NumBanks=1, BankPixelWidth=2)
# focus data in 4 spectra to 2 spectra according to .cal file and don't perserve events
ws = DiffractionFocussing(InputWorkspace='ws', GroupingFileName="4detector_cal_example_file.cal" \
, PreserveEvents=False)
print("Number of focussed spectra: " + str(ws.getNumberHistograms()))
print("What type is the workspace after focussing: " + ws.id())
Output:
Number of focussed spectra: 2
What type is the workspace after focussing: Workspace2D
Version 1 did not support the use of workspaces to carry grouping workspaces and only worked with CalFiles.
Categories: Algorithm Index | Diffraction\Focussing
C++ source: DiffractionFocussing2.cpp (last modified: 2019-01-09)
C++ header: DiffractionFocussing2.h (last modified: 2018-10-05)