\(\renewcommand\AA{\unicode{x212B}}\)
Table of Contents
Group several muon detector IDs together and perform an analysis (either counts or asymmetry).
Name | Direction | Type | Default | Description |
---|---|---|---|---|
InputWorkspace | Input | Workspace | Mandatory | Input workspace containing data from detectors which are to be grouped. |
InputWorkspaceGroup | InOut | WorkspaceGroup | Mandatory | The workspace group to which the output will be added. |
GroupName | Input | string | The name of the group. Must contain at least one alphanumeric character. | |
Grouping | Input | string | 1 | The grouping of detectors, comma separated list of detector IDs or hyphenated ranges of IDs. |
AnalysisType | Input | string | Counts | The type of analysis to perform on the spectra. Allowed values: [‘Counts’, ‘Asymmetry’] |
TimeMin | Input | number | 0.1 | Start time for the data in ms. Only used with the asymmetry analysis. |
TimeMax | Input | number | 32 | End time for the data in ms. Only used with the asymmetry analysis. |
RebinArgs | Input | string | Rebin arguments. No rebinning if left empty. | |
TimeOffset | Input | number | 0 | Shift the times of all data by a fixed amount. The value given corresponds to the bin that will become 0.0 seconds. |
SummedPeriods | Input | string | 1 | A list of periods to sum in multiperiod data. |
SubtractedPeriods | Input | string | A list of periods to subtract in multiperiod data. | |
ApplyDeadTimeCorrection | Input | boolean | False | Whether dead time correction should be applied to input workspace |
DeadTimeTable | Input | TableWorkspace | Table with dead time information. Must be specified if ApplyDeadTimeCorrection is set true. |
The algorithm is essentially a wrapper around the MuonProcess v1 algorithm, summing a group of detector IDs, and optionally performing an asymmetry calculation. This algorithm only applies to a grouping of detectors (see … for the equivalent algorithm on pairs of groups), it does not crop the data.
ApplyMuonDetectorGrouping takes an input workspace containing the data (with multiple detector IDs), groups it according to the optional user inputs, creates a unique name for the grouped data, and finally adds it to (or replaces it in) the supplied WorkspaceGroup. Multiple period data is supported through SummedPeriods and SubtractedPeriods. Various other optional behaviours are possible as detailed below.
The algorithm supports two analysis types:
The way in which period data is combined before the analysis is determined by SummedPeriods and SubtractedPeriods. For example, setting SummedPeriods to “1,2” and SubtractedPeriods to “3,4” would result in the period spectra being combined in the form \((1+2)-(3+4)\).
Note that the action of SummedPeriods and SubtractedPeriods is performed before the Counts/Asymmetry analysis.
The workspaces which hold the analysed data are stored in the WorkspaceGroup, using a unique name. From the following variables
then the name would be “inputGroup; Group; test; Counts; #1”. A second workspace is also created with the same name, but ending in “#1_Raw”, the only difference being that the RebinArgs are not applied to the latter workspace. If period arithmetic is required, for example SummedPeriods is “1,2” then the name would be “inputGroup; Group; test; Counts; 1+2; #1”.
An option exists to apply dead time correction to the counts if ApplyDeadTimeCorrection is true, requiring a DeadTimeTable with the format as in ApplyDeadTimeCorr v1.
The TimeOffset parameter shifts the time axis to start at the given time (all bins are offset by the value). In MuonProcess v1 this is equivalent to LoadedTimeZero - TimeZero. Note that the TimeMin and TimeMax refer to the values before the offset is applied.
Note
To run these usage examples please first download the usage data, and add these to your path. In Mantid this is done using Manage User Directories.
Note
For examples of applying custom dead times, please refer to ApplyDeadTimeCorr v1 documentation.
For examples of applying custom grouping, please refer to MuonGroupDetectors v1 documentation.
For examples of applying custom rebinning, please refer to Rebin v1 documentation.
Example - Counts for EMU run with time offset and rebinning:
# Clear the ADS before starting
AnalysisDataService.clear()
# Create the workspace group in which the analysed workspaces will be placed
ws = CreateSampleWorkspace()
wsGroup = GroupWorkspaces("ws")
RenameWorkspace( InputWorkspace="wsGroup",
OutputWorkspace='MUSR00015193',
OverwriteExisting=True)
# Load the data
LoadMuonNexus( Filename='MUSR00015193.nxs',
OutputWorkspace='MuonAnalysis')
ApplyMuonDetectorGrouping(
InputWorkspace='MuonAnalysis',
InputWorkspaceGroup='MUSR00015193',
GroupName='Test',
Grouping='1,2,3,5-10',
TimeOffset=0.0,
RebinArgs = "0.2")
output_rebin = mtd['MUSR00015193; Group; Test; Counts; #1']
print("Total counts (rebinned) : {0:.0f}".format( sum(output_rebin.readY(0))) )
output_noRebin = mtd['MUSR00015193; Group; Test; Counts; #1_Raw']
print("Total counts (no rebin) : {0:.0f}\n".format(sum(output_noRebin.readY(0))) )
print("Time range (original) : {0:.3f} - {1:.3f} mus".format(mtd['MuonAnalysis_1'].readX(0)[0],mtd['MuonAnalysis_1'].readX(0)[-1]))
print("Time range (no rebin) : {0:.3f} - {1:.3f} mus".format(output_noRebin.readX(0)[0],output_noRebin.readX(0)[-1]))
print("Time range (rebinned) : {0:.3f} - {1:.3f} mus\n".format(output_rebin.readX(0)[0],output_rebin.readX(0)[-1]))
print("Time step (original) : {0:.3f} mus".format(mtd['MuonAnalysis_1'].readX(0)[1]-mtd['MuonAnalysis_1'].readX(0)[0]))
print("Time step (no rebin) : {0:.3f} mus".format(output_noRebin.readX(0)[1]-output_noRebin.readX(0)[0]))
print("Time step (rebinned) : {0:.3f} mus".format(output_rebin.readX(0)[1]-output_rebin.readX(0)[0]))
Output:
Total counts (rebinned) : 79970
Total counts (no rebin) : 79970
Time range (original) : -0.550 - 31.450 mus
Time range (no rebin) : 0.106 - 31.450 mus
Time range (rebinned) : 0.106 - 31.306 mus
Time step (original) : 0.016 mus
Time step (no rebin) : 0.016 mus
Time step (rebinned) : 0.200 mus
Categories: AlgorithmIndex | Muon\DataHandling
C++ header: ApplyMuonDetectorGrouping.h (last modified: 2021-03-31)
C++ source: ApplyMuonDetectorGrouping.cpp (last modified: 2021-03-31)