diff --git a/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py b/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py index 345d2a6995453873ddc6d02e243d811da754a657..cbc847192cbd080879179153e3c5c9604d602c3e 100644 --- a/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py +++ b/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py @@ -77,13 +77,13 @@ def _run_vanadium_calibration(): def _run_focus(): run_number = 79514 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): _validation_setup(cls) 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) reference_file_name = "ISIS_Powder-PEARL78338_Van_Cal.nxs" diff --git a/Testing/SystemTests/tests/analysis/reference/ISIS_Powder-PEARL78338_Van_Cal.nxs.md5 b/Testing/SystemTests/tests/analysis/reference/ISIS_Powder-PEARL78338_Van_Cal.nxs.md5 index ac9fac5a1c4185c797ce7bbba1b536c0eda86fb7..76e055cb075a06a960d13796e52829829e3fb141 100644 --- a/Testing/SystemTests/tests/analysis/reference/ISIS_Powder-PEARL78338_Van_Cal.nxs.md5 +++ b/Testing/SystemTests/tests/analysis/reference/ISIS_Powder-PEARL78338_Van_Cal.nxs.md5 @@ -1 +1 @@ -19390f1b54bb9f7837c9c4d7fe991691 +7e80088fe9a61995c18fa1f9156321b9 diff --git a/scripts/Diffraction/isis_powder/abstract_inst.py b/scripts/Diffraction/isis_powder/abstract_inst.py index 0ac25d6bc785c825472c0366dde5cf9d8839d207..0661c6f8a732305e48389006e33bb7cc50448805 100644 --- a/scripts/Diffraction/isis_powder/abstract_inst.py +++ b/scripts/Diffraction/isis_powder/abstract_inst.py @@ -231,9 +231,6 @@ class AbstractInst(object): def _process_focus_output(self, processed_spectra, run_details, attenuate=False): 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): return ws_to_correct diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py index e6dcaae38f668ee67769a5d6db3de6bc4300e5f1..9ba46ab7be9ced82972b27c2ef0f712969eb9a11 100644 --- a/scripts/Diffraction/isis_powder/polaris.py +++ b/scripts/Diffraction/isis_powder/polaris.py @@ -26,7 +26,7 @@ class Polaris(AbstractInst): super(Polaris, self).__init__(user_name=user_name, calibration_dir=calibration_dir, 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 self._run_details_last_run_number = None @@ -56,26 +56,28 @@ class Polaris(AbstractInst): 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]) - 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: chopper_config = configuration["chopper_on"] else: chopper_config = configuration["chopper_off"] + empty_runs = chopper_config["empty_run_numbers"] vanadium_runs = chopper_config["vanadium_run_numbers"] 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 + 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) calibration_details = RunDetails(calibration_path=calibration_full_path, grouping_path=grouping_full_path, vanadium_runs=vanadium_runs, run_number=run_number) calibration_details.label = cycle + calibration_details.sample_empty = empty_runs calibration_details.splined_vanadium = splined_vanadium calibration_details.solid_angle_corr = solid_angle_file_path @@ -123,17 +125,6 @@ class Polaris(AbstractInst): 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): assert(vanadium_number or run_details) diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_calibration.yaml b/scripts/Diffraction/isis_powder/polaris_routines/polaris_calibration.yaml index 606f1ac16540c91a618fcae5b4377595bb16bca6..ca3322c6a63c2d93415f20c8c35855e91e51dade 100644 --- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_calibration.yaml +++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_calibration.yaml @@ -6,11 +6,11 @@ label : "15_2" chopper_on: vanadium_run_numbers : "78338" - empty_run = "78339" + empty_run_numbers : "78339" chopper_off: vanadium_run_numbers : "78338" - empty_run = "78339" + empty_run_numbers : "78339" 93105-95614: @@ -19,5 +19,7 @@ label : "15_2" chopper_on: vanadium_run_numbers : "95603-95607,95613-95614" + empty_run_numbers : "78339" chopper_off: - vanadium_run_numbers : "95603-95607,95613-95614" \ No newline at end of file + vanadium_run_numbers : "95603-95607,95613-95614" + empty_run_numbers : "78339" \ No newline at end of file diff --git a/scripts/Diffraction/isis_powder/routines/calibrate.py b/scripts/Diffraction/isis_powder/routines/calibrate.py index 5757e75a46e99477cf540c9341b06bf5b9119587..4ee32f734b3801008523d376278f8dd8370af974 100644 --- a/scripts/Diffraction/isis_powder/routines/calibrate.py +++ b/scripts/Diffraction/isis_powder/routines/calibrate.py @@ -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): 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) run_details = instrument._get_run_details(run_number=van) diff --git a/scripts/Diffraction/isis_powder/routines/common.py b/scripts/Diffraction/isis_powder/routines/common.py index cd988bcf38c8a966f8acf60d59ce86902c9d5abd..99d7ee87605e200573eceedc6482b6a56f8b6038 100644 --- a/scripts/Diffraction/isis_powder/routines/common.py +++ b/scripts/Diffraction/isis_powder/routines/common.py @@ -58,6 +58,16 @@ def load_monitor(run_numbers, instrument): 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): run_number_list = generate_run_numbers(run_number_string=run_number_string) instrument.PEARL_setup_input_directories(run_number=run_number_list[0]) diff --git a/scripts/Diffraction/isis_powder/routines/focus.py b/scripts/Diffraction/isis_powder/routines/focus.py index 49fc5f41440ba9225676aeb6c887e2148ef87c0a..ca0ee09ef946d1849b8be4d099372d3051a93410 100644 --- a/scripts/Diffraction/isis_powder/routines/focus.py +++ b/scripts/Diffraction/isis_powder/routines/focus.py @@ -3,6 +3,7 @@ from __future__ import (absolute_import, division, print_function) import mantid.simpleapi as mantid import isis_powder.routines.common as common +import os def focus(number, instrument, attenuate=True, van_norm=True): @@ -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) + # 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 - 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 input_workspace = mantid.AlignDetectors(InputWorkspace=input_workspace,