Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/feature/9960_legacy_IDF_reduction'
Browse files Browse the repository at this point in the history
  • Loading branch information
mantid-roman committed Aug 29, 2014
2 parents 455ea7e + fc7b065 commit b5d5816
Show file tree
Hide file tree
Showing 10 changed files with 45 additions and 64 deletions.
12 changes: 9 additions & 3 deletions Code/Mantid/instrument/BASIS_Parameters.xml
Expand Up @@ -43,13 +43,19 @@
<parameter name="Workflow.MaskFile" type="string">
<value val="BASIS_Mask.xml" />
</parameter>
<parameter name="Workflow.MonitorArea" >
<parameter name="Workflow.Monitor1-SpectrumNumber" >
<value val="0" />
</parameter>
<parameter name="Workflow.Monitor1-SpectrumNumber" >
<value val="0" />
</parameter>
<parameter name="Workflow.Monitor1-Area" >
<value val="1.276e-3" />
</parameter>
<parameter name="Workflow.MonitorThickness" >
<parameter name="Workflow.Monitor1-Thickness" >
<value val="0.025" />
</parameter>
<parameter name="Workflow.MonitorScalingFactor">
<parameter name="Workflow.Monitor1-ScalingFactor">
<value val="1e6" />
</parameter>
<parameter name="Workflow.UnwrapMonitor" type="string">
Expand Down
4 changes: 2 additions & 2 deletions Code/Mantid/instrument/IRIS_Parameters.xml
Expand Up @@ -36,7 +36,7 @@
</parameter>

<!-- Reduction workflow parameters under this line -->
<parameter name="Workflow.Monitor1-ID" >
<parameter name="Workflow.Monitor1-SpectrumNumber" >
<value val="0" />
</parameter>
<parameter name="Workflow.Monitor1-Area" >
Expand All @@ -51,7 +51,7 @@
<parameter name="Workflow.Monitor1-ScalingFactor">
<value val="1e6" />
</parameter>
<parameter name="Workflow.Monitor2-ID" >
<parameter name="Workflow.Monitor2-SpectrumNumber" >
<value val="1" />
</parameter>
<parameter name="Workflow.Monitor2-Area" >
Expand Down
4 changes: 2 additions & 2 deletions Code/Mantid/instrument/OSIRIS_Parameters.xml
Expand Up @@ -28,7 +28,7 @@
</parameter>

<!-- Reduction workflow parameters under this line -->
<parameter name="Workflow.Monitor1-ID" >
<parameter name="Workflow.Monitor1-SpectrumNumber" >
<value val="0" />
</parameter>
<parameter name="Workflow.Monitor1-Area" >
Expand All @@ -43,7 +43,7 @@
<parameter name="Workflow.Monitor1-ScalingFactor">
<value val="1e6" />
</parameter>
<parameter name="Workflow.Monitor2-ID" >
<parameter name="Workflow.Monitor2-SpectrumNumber" >
<value val="1" />
</parameter>
<parameter name="Workflow.Monitor2-Area" >
Expand Down
4 changes: 2 additions & 2 deletions Code/Mantid/instrument/TOSCA_Parameters.xml
Expand Up @@ -39,8 +39,8 @@
<parameter name="Workflow.InfoTable" type="string">
<value val="inst_abrv, run_number, user_name, run_title, hd_dur" />
</parameter>
<parameter name="Workflow.Monitor1-ID" >
<value val="0" />
<parameter name="Workflow.Monitor1-SpectrumNumber" >
<value val="140" />
</parameter>
<parameter name="Workflow.Monitor1-Area" >
<value val="5.391011e-5" />
Expand Down
Expand Up @@ -31,13 +31,17 @@
<value val="1" />
</parameter>

<parameter name="Workflow.Monitor1-SpectrumNumber">
<value val="0" />
</parameter>

<!-- These two properties being set to invalid values (-1) will signal to the
reducer that it is not to correct for monitor efficiency.
-->
<parameter name="Workflow.MonitorArea">
<parameter name="Workflow.Monitor1-Area">
<value val="-1" />
</parameter>
<parameter name="Workflow.MonitorThickness">
<parameter name="Workflow.Monitor1-Thickness">
<value val="-1" />
</parameter>

Expand Down
9 changes: 6 additions & 3 deletions Code/Mantid/instrument/VISION_Parameters.xml
Expand Up @@ -36,13 +36,16 @@
<!-- This is the step size to optionally rebin the monitor to"-->
<value val="10.0" />
</parameter>
<parameter name="Workflow.MonitorArea" >
<parameter name="Workflow.Monitor1-SpectrumNumber" >
<value val="0" />
</parameter>
<parameter name="Workflow.Monitor1-Area" >
<value val="5.391011e-5" />
</parameter>
<parameter name="Workflow.MonitorThickness" >
<parameter name="Workflow.Monitor1-Thickness" >
<value val="0.013" />
</parameter>
<parameter name="Workflow.MonitorScalingFactor">
<parameter name="Workflow.Monitor1-ScalingFactor">
<value val="1e9" />
</parameter>
<parameter name="Workflow.UnwrapMonitor" type="string">
Expand Down
4 changes: 2 additions & 2 deletions Code/Mantid/instrument/VISION_diffraction__Parameters.xml
Expand Up @@ -37,10 +37,10 @@
<!-- These two properties being set to invalid values (-1) will signal to the
reducer that it is not to correct for monitor efficiency.
-->
<parameter name="Workflow.MonitorArea">
<parameter name="Workflow.Monitor1-Area">
<value val="-1" />
</parameter>
<parameter name="Workflow.MonitorThickness">
<parameter name="Workflow.Monitor1-Thickness">
<value val="-1" />
</parameter>

Expand Down
3 changes: 1 addition & 2 deletions Code/Mantid/scripts/Inelastic/IndirectEnergyConversion.py
Expand Up @@ -58,8 +58,7 @@ def resolution(files, iconOpt, rebinParam, bground,
reducer.set_detector_range(iconOpt['first']-1,iconOpt['last']-1)
for file in files:
reducer.append_data_file(file)
parfile = config['instrumentDefinition.directory']
parfile += instrument +"_"+ analyser +"_"+ reflection +"_Parameters.xml"
parfile = instrument +"_"+ analyser +"_"+ reflection +"_Parameters.xml"
reducer.set_parameter_file(parfile)
reducer.set_grouping_policy('All')
reducer.set_sum_files(True)
Expand Down
Expand Up @@ -47,6 +47,7 @@ def __init__(self):
def execute(self, reducer, file_ws):
"""Loads the data.
"""
self._reducer = reducer
wsname = ''

for output_ws, filename in self._data_files.iteritems():
Expand Down Expand Up @@ -78,9 +79,6 @@ def set_sum(self, value):
def set_parameter_file(self, value):
self._parameter_file = value

def set_monitor_index(self, index):
self._monitor_index = index

def set_detector_range(self, start, end):
self._detector_range_start = start
self._detector_range_end = end
Expand Down Expand Up @@ -119,6 +117,7 @@ def _load_single_file(self, filename, output_ws):
if self._parameter_file != None:
LoadParameterFile(Workspace=output_ws,Filename= self._parameter_file)

self._monitor_index = self._reducer._get_monitor_index(mtd[output_ws])

if self._require_chop_data(output_ws):
ChopData(InputWorkspace=output_ws,OutputWorkspace= output_ws,Step= 20000.0,NChops= 5, IntegrationRangeLower=5000.0,
Expand Down Expand Up @@ -482,9 +481,9 @@ class HandleMonitor(ReductionStep):
"""Handles the montior for the reduction of inelastic indirect data.
This uses the following parameters from the instrument:
* Workflow.MonitorArea
* Workflow.MonitorThickness
* Workflow.MonitorScalingFactor
* Workflow.Monitor1-Area
* Workflow.Monitor1-Thickness
* Workflow.Monitor1-ScalingFactor
* Workflow.UnwrapMonitor
"""
_multiple_frames = False
Expand Down
50 changes: 10 additions & 40 deletions Code/Mantid/scripts/Inelastic/msg_reducer.py
Expand Up @@ -17,7 +17,6 @@ class MSGReducer(reducer.Reducer):
_instrument_name = None #: Name of the instrument used in experiment.
_sum = False #: Whether to sum input files or treat them sequentially.
_load_logs = False #: Whether to load the log file(s) associated with the raw file.
_monitor_index = None #: Index of Monitor specturm.
_multiple_frames = False
_detector_range = [-1, -1]
_masking_detectors = {}
Expand All @@ -38,7 +37,6 @@ def pre_process(self):
loadData.set_ws_list(self._data_files)
loadData.set_sum(self._sum)
loadData.set_load_logs(self._load_logs)
loadData.set_monitor_index(self._monitor_index)
loadData.set_detector_range(self._detector_range[0],
self._detector_range[1])
loadData.set_parameter_file(self._parameter_file)
Expand Down Expand Up @@ -98,24 +96,16 @@ def set_instrument_name(self, instrument):
if not isinstance(instrument, str):
raise ValueError("Instrument name must be given.")
self._instrument_name = instrument
self._load_empty_instrument()
self._get_monitor_index()
if ( self._monitor_index is None ):
raise RuntimeError("Could not find Monitor in Instrument.")

def set_parameter_file(self, file):
def set_parameter_file(self, file_name):
"""Sets the parameter file to be used in the reduction. The parameter
file will contain some settings that are used throughout the reduction
process.
Note: This is *not* the base parameter file, ie "IRIS_Parameters.xml"
but, rather, the additional parameter file.
"""
if self._instrument_name is None:
raise ValueError("Instrument name not set.")
self._parameter_file = \
os.path.join(config["parameterDefinition.directory"], file)
LoadParameterFile(Workspace=self._workspace_instrument,Filename=
self._parameter_file)
os.path.join(config["parameterDefinition.directory"], file_name)

def set_rebin_string(self, rebin):
"""Sets the rebin string to be used with the Rebin algorithm.
Expand Down Expand Up @@ -185,33 +175,13 @@ def get_result_workspaces(self):
raise RuntimeError("None of the reduction steps implement "
"the get_result_workspaces() method.")

def _load_empty_instrument(self):
"""Returns an empty workspace for the instrument.
Raises:
* ValueError if no instrument is selected.
* RuntimeError if there is a problem with the IDF.
"""
if self._instrument_name is None:
raise ValueError('No instrument selected.')
self._workspace_instrument = '__empty_' + self._instrument_name
if not mtd.doesExist(self._workspace_instrument):
idf_dir = config.getString('instrumentDefinition.directory')
idf = idf_dir + self._instrument_name + '_Definition.xml'
try:
LoadEmptyInstrument(Filename=idf,OutputWorkspace= self._workspace_instrument)
except RuntimeError:
raise ValueError('Invalid IDF')
return mtd[self._workspace_instrument]

def _get_monitor_index(self):
def _get_monitor_index(self, workspace):
"""Determine the workspace index of the first monitor spectrum.
"""
workspace = self._load_empty_instrument()
for counter in range(0, workspace.getNumberHistograms()):
try:
detector = workspace.getDetector(counter)
except RuntimeError:
pass
if detector.isMonitor():
self._monitor_index = counter
return
inst = workspace.getInstrument()
try:
monitor_index = inst.getNumberParameter('Workflow.Monitor1-SpectrumNumber')[0]
return int(monitor_index)
except IndexError:
raise ValueError('Unable to retrieve spectrum number of monitor.')

0 comments on commit b5d5816

Please sign in to comment.