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

ReflectometrySliceEventWorkspace v1

../_images/ReflectometrySliceEventWorkspace-v1_dlg.png

ReflectometrySliceEventWorkspace dialog.

Summary

Split an input workspace into multiple slices according to time or log values

Properties

Name Direction Type Default Description
InputWorkspace Input MatrixWorkspace Mandatory An input Matrix workspace.
StartTime Input string   The start time, such that all events before this time are filtered out. It could be (1) relative time to run start time in unit as specified property ‘UnitOfTime’ or (2) absolute time. Absolute time takes a string in format as 1990-01-01T00:00:00, while the relative time takes integer or float.
StopTime Input string   The stop time, such that all events after this time are filtered out. It could be (1) relative time to run start time in unit as specified property ‘UnitOfTime’ or (2) absolute time. Absolute time takes a string in format as 1990-01-01T00:00:00, while the relative time takes integer or float.
TimeInterval Input dbl list   Array for lengths of time intervals for splitters. If the array is empty, then there will be one splitter created from StartTime and StopTime. If the array has one value, then all splitters will have same time intervals. If the size of the array is larger than one, then the splitters can have various time interval values.
LogName Input string   Name of the sample log to use to filter. For example, the pulse charge is recorded in ‘ProtonCharge’.
MinimumLogValue Input number Optional Minimum log value for which to keep events.
MaximumLogValue Input number Optional Maximum log value for which to keep events.
LogValueInterval Input number Optional Delta of log value to be sliced into from min log value and max log value. If not given, then only value
LogBoundary Input string Centre How to treat log values as being measured in the centre of time. There are three options, ‘Centre’, ‘Left’ and ‘Other’. Allowed values: [‘Centre’, ‘Left’, ‘Other’]
LogValueTolerance Input number Optional Tolerance of the log value to be included in filter. It is used in the case to filter by multiple values.
MonitorWorkspace Input MatrixWorkspace Mandatory Input monitor workspace
OutputWorkspace Output WorkspaceGroup Mandatory Group name for the output workspace(s).
UseNewFilterAlgorithm Input boolean True If true, use the new FilterEvents algorithm instead of FilterByTime.

ReflectometrySliceEventWorkspace

This algorithm slices an input workspace into one or more grouped output workspaces based on input filtering properties.

It uses GenerateEventsFilter v1 to define the way splitting should be done and exposes the relevant input properties for that algorithm. It then performs the filtering using FilterEvents v1.

The sliced workspaces are then rebinned to histogram data and combined with the given monitor workspace, to produce a workspace suitable for input to ReflectometryReductionOneAuto v3. The monitors for each slice are scaled according to the percentage of proton_charge in that slice.

Usage

Example: slice by time interval

from __future__ import print_function
input_ws = CreateSampleWorkspace("Event",BankPixelWidth=1,BinWidth=20000)
AddTimeSeriesLog(input_ws, Name="proton_charge", Time="2010-01-01T00:00:00", Value=100)
AddTimeSeriesLog(input_ws, Name="proton_charge", Time="2010-01-01T00:10:00", Value=100)
AddTimeSeriesLog(input_ws, Name="proton_charge", Time="2010-01-01T00:20:00", Value=80)
AddTimeSeriesLog(input_ws, Name="proton_charge", Time="2010-01-01T00:30:00", Value=80)
AddTimeSeriesLog(input_ws, Name="proton_charge", Time="2010-01-01T00:40:00", Value=15)
AddTimeSeriesLog(input_ws, Name="proton_charge", Time="2010-01-01T00:50:00", Value=100)
monitor_ws = CreateSampleWorkspace(NumBanks=0, NumMonitors=3, BankPixelWidth=1, NumEvents=10000)

output = ReflectometrySliceEventWorkspace(InputWorkspace=input_ws, MonitorWorkspace=monitor_ws,
                                          TimeInterval=600, StartTime='1800', StopTime='3300')

print(str(output.getNumberOfEntries()) + ' slices')
print(str(output[0].getNumberHistograms()) + ' spectra')
print('Y values for first bin:')
for i in range(output.getNumberOfEntries()):
    print('Slice '  + str(i))
    for j in range(output[i].getNumberHistograms()):
        print(output[i].dataY(j)[0])

Output:

3 slices
5 spectra
Y values for first bin:
Slice 0
0.173684210526
0.173684210526
0.173684210526
4.0
4.0
Slice 1
0.0726315789474
0.0726315789474
0.0726315789474
4.0
4.0
Slice 2
0.0631578947368
0.0631578947368
0.0631578947368
1.0
1.0

Categories: AlgorithmIndex | Reflectometry

Source

Python: ReflectometrySliceEventWorkspace.py (last modified: 2020-03-27)