\(\renewcommand\AA{\unicode{x212B}}\)
AlignAndFocusPowderSlim v1¶
Warning
This algorithm is currently for the VULCAN instrument testing purposes
Summary¶
VULCAN ONLY Algorithm to focus powder diffraction data into a number of histograms according to a grouping scheme defined in a CalFile.
See Also¶
Properties¶
Name |
Direction |
Type |
Default |
Description |
---|---|---|---|---|
Filename |
Input |
string |
Mandatory |
The name of the Event NeXus file to read, including its full or relative path. The file name is typically of the form INST_####_event.nxs. Allowed extensions: [‘.nxs.h5’, ‘.nxs’, ‘_event.nxs’] |
FilterByTimeStart |
Input |
number |
Optional |
To only include events after the provided start time, in seconds (relative to the start of the run). |
FilterByTimeStop |
Input |
number |
Optional |
To only include events before the provided stop time, in seconds (relative to the start of the run). |
SplitterWorkspace |
Input |
Input workspace specifying “splitters”, i.e. time intervals and targets for event filtering. Currently only a single output workspace is supported. |
||
RelativeTime |
Input |
boolean |
False |
Flag indicating whether in SplitterWorkspace the times are absolute or relative. If true, they are relative to the run start time. |
SplitterTarget |
Input |
number |
0 |
The target workspace index for the splitter. |
FilterBadPulses |
Input |
boolean |
False |
Filter bad pulses in the same way that FilterBadPulses v1 does. |
BadPulsesLowerCutoff |
Input |
number |
95 |
The percentage of the average to use as the lower bound when filtering bad pulses. |
CalFileName |
Input |
string |
The .cal file containing the position correction factors. Either this or OffsetsWorkspace needs to be specified. Allowed extensions: [‘.h5’, ‘.hd5’, ‘.hdf’, ‘.cal’] |
|
XMin |
Input |
dbl list |
0.1 |
Minimum x-value for the output binning |
XDelta |
Input |
dbl list |
0.0016 |
Bin size for output data |
XMax |
Input |
dbl list |
2 |
Minimum x-value for the output binning |
BinningUnits |
Input |
string |
dSpacing |
The units of the input X min, max and delta values. Output will always be TOF. Allowed values: [‘dSpacing’, ‘TOF’, ‘MomentumTransfer’] |
BinningMode |
Input |
string |
Logarithmic |
Specify binning behavior (‘Logarithmic’). Allowed values: [‘Logarithmic’, ‘Linear’] |
OutputWorkspace |
Output |
Mandatory |
An output workspace. |
|
ReadSizeFromDisk |
Input |
number |
100000000 |
Number of elements of time-of-flight or detector-id to read at a time. This is a maximum |
EventsPerThread |
Input |
number |
1000000 |
Number of events to read in a single thread. Higher means less threads are created. |
Description¶
This is a simplified version of AlignAndFocusPowderFromFiles v1 which uses very few child algorithms. The main feature is that this reads the events, filters and adjusts their time-of-flight, then increments the correct bin in the output workspace. As a result, there is a significantly smaller memory usage and the processing is significantly faster.
Current limitations compared to AlignAndFocusPowderFromFiles
only supports the VULCAN instrument
hard coded for 6 particular groups
does not support copping data
does not support removing prompt pulse
Child algorithms used are
Usage¶
Example - event filtering
This algorithm accepts the same SplitterWorkspace
inputs as FilterEvents and more information can be found on the Event Filtering page.
# create splitter table using relative time
splitter = CreateEmptyTableWorkspace()
splitter.addColumn('float', 'start')
splitter.addColumn('float', 'stop')
splitter.addColumn('str', 'target')
splitter.addRow((10,20, '0'))
splitter.addRow((200,210, '0'))
splitter.addRow((400,410, '0'))
# pass the splitter table to AlignAndFocusPowderSlim
ws = AlignAndFocusPowderSlim("VULCAN_218062.nxs.h5",
SplitterWorkspace=splitter, RelativeTime=True,
XMin=0, XMax=50000, XDelta=50000,
BinningMode="Linear",
BinningUnits="TOF")
# This is equivalent to using FilterEvents with the same splitter table.
# But note that this example doesn't align the data so put everything in 1 big bin to compare.
ws2 = LoadEventNexus("VULCAN_218062.nxs.h5", NumberOfBins=1)
grp = CreateGroupingWorkspace(ws2, GroupDetectorsBy='bank')
ws2 = GroupDetectors(ws2, CopyGroupingFromWorkspace="grp")
FilterEvents(ws2,
SplitterWorkspace=splitter, RelativeTime=True,
FilterByPulseTime=True,
OutputWorkspaceBaseName="filtered")
out = Rebin("filtered_0", "0,50000,50000", PreserveEvents=False)
CompareWorkspaces(ws, out, CheckUncertainty=False, CheckSpectraMap=False, CheckInstrument=False)
Example - filter events based on log values
# Load only the log we need
cave_temperature = LoadEventNexus("VULCAN_218062.nxs.h5",
MetaDataOnly=True,
AllowList="CaveTemperature")
# Use GenerateEventsFilter to create a splitter table based on the log values
GenerateEventsFilter(cave_temperature,
OutputWorkspace='splitter',
InformationWorkspace='info',
LogName='CaveTemperature',
MinimumLogValue=70.10,
MaximumLogValue=70.15)
# Use the splitter table to filter the events during loading
ws = AlignAndFocusPowderSlim("VULCAN_218062.nxs.h5", SplitterWorkspace='splitter')
Example - filter bad pulses
ws = AlignAndFocusPowderSlim("VULCAN_218062.nxs.h5",
XMin=0, XMax=50000, XDelta=50000,
BinningMode="Linear",
BinningUnits="TOF",
FilterBadPulses=True)
# This is equivalent to using FilterBadPulses.
# But note that this example doesn't align the data so put everything in 1 big bin to compare.
ws2 = LoadEventNexus("VULCAN_218062.nxs.h5")
grp = CreateGroupingWorkspace(ws2, GroupDetectorsBy='bank')
ws2 = GroupDetectors(ws2, CopyGroupingFromWorkspace="grp")
ws2 = FilterBadPulses(ws2)
ws2 = Rebin(ws2, "0,50000,50000", PreserveEvents=False)
CompareWorkspaces(ws, ws2, CheckUncertainty=False, CheckSpectraMap=False, CheckInstrument=False)
Note
While we currently only support a single output workspace when filtering events from a splitter table but the output target can be selected with the SplitterTarget
property and you can run the algorithm multiple times with different targets. We also can currently only filter based on the pulse time, not the event time-of-flight.
Categories: AlgorithmIndex | Workflow\Diffraction
Source¶
C++ header: AlignAndFocusPowderSlim.h
C++ source: AlignAndFocusPowderSlim.cpp