Skip to content
Snippets Groups Projects
Commit cf1bf58c authored by David Fairbrother's avatar David Fairbrother
Browse files

Re #17949 Add logic for handling empty runs

parent 85341630
No related branches found
No related tags found
No related merge requests found
...@@ -77,13 +77,13 @@ def _run_vanadium_calibration(): ...@@ -77,13 +77,13 @@ def _run_vanadium_calibration():
def _run_focus(): def _run_focus():
run_number = 79514 run_number = 79514
polaris_obj = setup_polaris_instrument() polaris_obj = setup_polaris_instrument()
return polaris_obj.focus(run_number=run_number, focus_mode="") return polaris_obj.focus(run_number=run_number)
def _calibration_validation(cls, results): def _calibration_validation(cls, results):
_validation_setup(cls) _validation_setup(cls)
output_full_path = os.path.join(_get_calibration_dir(), _get_calibration_output_name()) output_full_path = os.path.join(_get_calibration_dir(), _get_calibration_output_name())
ws_to_validate_output_name = "pearl_van_cal_output" ws_to_validate_output_name = "POLARIS_Vanadium_Calibration_Output"
mantid.LoadNexus(Filename=output_full_path, OutputWorkspace=ws_to_validate_output_name) mantid.LoadNexus(Filename=output_full_path, OutputWorkspace=ws_to_validate_output_name)
reference_file_name = "ISIS_Powder-PEARL78338_Van_Cal.nxs" reference_file_name = "ISIS_Powder-PEARL78338_Van_Cal.nxs"
......
19390f1b54bb9f7837c9c4d7fe991691 7e80088fe9a61995c18fa1f9156321b9
...@@ -231,9 +231,6 @@ class AbstractInst(object): ...@@ -231,9 +231,6 @@ class AbstractInst(object):
def _process_focus_output(self, processed_spectra, run_details, attenuate=False): def _process_focus_output(self, processed_spectra, run_details, attenuate=False):
return _empty_hook_return_none() return _empty_hook_return_none()
def _subtract_sample_empty(self, input_sample):
return input_sample
def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, run_details=None): def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, run_details=None):
return ws_to_correct return ws_to_correct
......
...@@ -26,7 +26,7 @@ class Polaris(AbstractInst): ...@@ -26,7 +26,7 @@ class Polaris(AbstractInst):
super(Polaris, self).__init__(user_name=user_name, calibration_dir=calibration_dir, super(Polaris, self).__init__(user_name=user_name, calibration_dir=calibration_dir,
output_dir=output_dir, kwargs=kwargs) output_dir=output_dir, kwargs=kwargs)
self._chopper_on = kwargs.get("chopper_on") self._chopper_on = chopper_on
# Caches the last dictionary to avoid us having to keep parsing the YAML # Caches the last dictionary to avoid us having to keep parsing the YAML
self._run_details_last_run_number = None self._run_details_last_run_number = None
...@@ -56,26 +56,28 @@ class Polaris(AbstractInst): ...@@ -56,26 +56,28 @@ class Polaris(AbstractInst):
input_run_number_list = common.generate_run_numbers(run_number_string=run_number) input_run_number_list = common.generate_run_numbers(run_number_string=run_number)
configuration = polaris_calib_parser.get_calibration_dict(run_number=input_run_number_list[0]) configuration = polaris_calib_parser.get_calibration_dict(run_number=input_run_number_list[0])
cycle = configuration["label"]
calibration_dir = os.path.join(self.calibration_dir, cycle)
calibration_full_path = os.path.join(calibration_dir, configuration["offset_file_name"])
grouping_full_path = os.path.join(calibration_dir, configuration["offset_file_name"])
if self._chopper_on: if self._chopper_on:
chopper_config = configuration["chopper_on"] chopper_config = configuration["chopper_on"]
else: else:
chopper_config = configuration["chopper_off"] chopper_config = configuration["chopper_off"]
empty_runs = chopper_config["empty_run_numbers"]
vanadium_runs = chopper_config["vanadium_run_numbers"] vanadium_runs = chopper_config["vanadium_run_numbers"]
solid_angle_file_name = "SAC_" + vanadium_runs solid_angle_file_name = "SAC_" + vanadium_runs
solid_angle_file_path = os.path.join(calibration_dir, solid_angle_file_name)
splined_vanadium_name = "SplinedVan_" + vanadium_runs splined_vanadium_name = "SplinedVan_" + vanadium_runs
cycle = configuration["label"]
calibration_dir = os.path.join(self.calibration_dir, cycle)
calibration_full_path = os.path.join(calibration_dir, configuration["offset_file_name"])
grouping_full_path = os.path.join(calibration_dir, configuration["offset_file_name"])
solid_angle_file_path = os.path.join(calibration_dir, solid_angle_file_name)
splined_vanadium = os.path.join(calibration_dir, splined_vanadium_name) splined_vanadium = os.path.join(calibration_dir, splined_vanadium_name)
calibration_details = RunDetails(calibration_path=calibration_full_path, grouping_path=grouping_full_path, calibration_details = RunDetails(calibration_path=calibration_full_path, grouping_path=grouping_full_path,
vanadium_runs=vanadium_runs, run_number=run_number) vanadium_runs=vanadium_runs, run_number=run_number)
calibration_details.label = cycle calibration_details.label = cycle
calibration_details.sample_empty = empty_runs
calibration_details.splined_vanadium = splined_vanadium calibration_details.splined_vanadium = splined_vanadium
calibration_details.solid_angle_corr = solid_angle_file_path calibration_details.solid_angle_corr = solid_angle_file_path
...@@ -123,17 +125,6 @@ class Polaris(AbstractInst): ...@@ -123,17 +125,6 @@ class Polaris(AbstractInst):
return corrections_ws return corrections_ws
def _subtract_sample_empty(self, input_sample):
# TODO when calibration mapping has sample.empty enable this
return input_sample
if self._sample_empty is not None:
empty_sample_path = os.path.join(self.calibration_dir, self._sample_empty)
empty_sample = mantid.Load(Filename=empty_sample_path)
empty_sample = self._normalise_ws(empty_sample)
input_sample = mantid.Minus(LHSWorkspace=input_sample, RHSWorkspace=empty_sample)
common.remove_intermediate_workspace(empty_sample)
return input_sample
def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, run_details=None): def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, run_details=None):
assert(vanadium_number or run_details) assert(vanadium_number or run_details)
......
...@@ -6,11 +6,11 @@ ...@@ -6,11 +6,11 @@
label : "15_2" label : "15_2"
chopper_on: chopper_on:
vanadium_run_numbers : "78338" vanadium_run_numbers : "78338"
empty_run = "78339" empty_run_numbers : "78339"
chopper_off: chopper_off:
vanadium_run_numbers : "78338" vanadium_run_numbers : "78338"
empty_run = "78339" empty_run_numbers : "78339"
93105-95614: 93105-95614:
...@@ -19,5 +19,7 @@ ...@@ -19,5 +19,7 @@
label : "15_2" label : "15_2"
chopper_on: chopper_on:
vanadium_run_numbers : "95603-95607,95613-95614" vanadium_run_numbers : "95603-95607,95613-95614"
empty_run_numbers : "78339"
chopper_off: chopper_off:
vanadium_run_numbers : "95603-95607,95613-95614" vanadium_run_numbers : "95603-95607,95613-95614"
\ No newline at end of file empty_run_numbers : "78339"
\ No newline at end of file
...@@ -9,11 +9,10 @@ import isis_powder.routines.common as common ...@@ -9,11 +9,10 @@ import isis_powder.routines.common as common
def create_van(instrument, van, empty, output_van_file_name, num_of_splines, absorb, gen_absorb): def create_van(instrument, van, empty, output_van_file_name, num_of_splines, absorb, gen_absorb):
input_van_ws = common.load_current_normalised_ws(run_number_string=van, instrument=instrument) input_van_ws = common.load_current_normalised_ws(run_number_string=van, instrument=instrument)
input_empty_ws = common.load_current_normalised_ws(run_number_string=empty, instrument=instrument)
corrected_van_ws = mantid.Minus(LHSWorkspace=input_van_ws, RHSWorkspace=input_empty_ws) corrected_van_ws = common.subtract_sample_empty(ws_to_correct=input_van_ws, empty_sample_ws_string=empty,
instrument=instrument)
common.remove_intermediate_workspace(input_empty_ws)
common.remove_intermediate_workspace(input_van_ws) common.remove_intermediate_workspace(input_van_ws)
run_details = instrument._get_run_details(run_number=van) run_details = instrument._get_run_details(run_number=van)
......
...@@ -58,6 +58,16 @@ def load_monitor(run_numbers, instrument): ...@@ -58,6 +58,16 @@ def load_monitor(run_numbers, instrument):
return load_monitor_ws return load_monitor_ws
def subtract_sample_empty(ws_to_correct, empty_sample_ws_string, instrument):
output = ws_to_correct
if empty_sample_ws_string is not None:
empty_sample = load_current_normalised_ws(run_number_string=empty_sample_ws_string, instrument=instrument)
corrected_ws = mantid.Minus(LHSWorkspace=ws_to_correct, RHSWorkspace=empty_sample)
remove_intermediate_workspace(empty_sample)
output = corrected_ws
return output
def _load_raw_files(run_number_string, instrument): def _load_raw_files(run_number_string, instrument):
run_number_list = generate_run_numbers(run_number_string=run_number_string) run_number_list = generate_run_numbers(run_number_string=run_number_string)
instrument.PEARL_setup_input_directories(run_number=run_number_list[0]) instrument.PEARL_setup_input_directories(run_number=run_number_list[0])
......
...@@ -3,6 +3,7 @@ from __future__ import (absolute_import, division, print_function) ...@@ -3,6 +3,7 @@ from __future__ import (absolute_import, division, print_function)
import mantid.simpleapi as mantid import mantid.simpleapi as mantid
import isis_powder.routines.common as common import isis_powder.routines.common as common
import os
def focus(number, instrument, attenuate=True, van_norm=True): def focus(number, instrument, attenuate=True, van_norm=True):
...@@ -17,8 +18,14 @@ def _run_focus(instrument, run_number, perform_attenuation, perform_vanadium_nor ...@@ -17,8 +18,14 @@ def _run_focus(instrument, run_number, perform_attenuation, perform_vanadium_nor
run_details = instrument._get_run_details(run_number=run_number) run_details = instrument._get_run_details(run_number=run_number)
# Check the necessary splined vanadium file has been created
if not os.path.isfile(run_details.splined_vanadium):
raise ValueError("Processed vanadium runs not found at this path: "
+ str(run_details.splined_vanadium) + " \n\nHave you created a vanadium calibration yet?")
# Compensate for empty sample if specified # Compensate for empty sample if specified
input_workspace = instrument._subtract_sample_empty(input_workspace) input_workspace = common.subtract_sample_empty(ws_to_correct=input_workspace, instrument=instrument,
empty_sample_ws_string=run_details.sample_empty)
# Align / Focus # Align / Focus
input_workspace = mantid.AlignDetectors(InputWorkspace=input_workspace, input_workspace = mantid.AlignDetectors(InputWorkspace=input_workspace,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment