From 30bc7d592af0130c3ae5f2e98ec1520b426f0721 Mon Sep 17 00:00:00 2001 From: David Fairbrother <DavidFair@users.noreply.github.com> Date: Mon, 14 Nov 2016 11:36:17 +0000 Subject: [PATCH] Re #17949 Load Solid Angle instead of recalculating --- .../Diffraction/isis_powder/abstract_inst.py | 2 +- scripts/Diffraction/isis_powder/focus.py | 2 +- scripts/Diffraction/isis_powder/polaris.py | 28 +++++++++++++------ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/scripts/Diffraction/isis_powder/abstract_inst.py b/scripts/Diffraction/isis_powder/abstract_inst.py index 759fda4b9a1..954b17fd9e0 100644 --- a/scripts/Diffraction/isis_powder/abstract_inst.py +++ b/scripts/Diffraction/isis_powder/abstract_inst.py @@ -262,7 +262,7 @@ class AbstractInst(object): def _subtract_sample_empty(self, input_sample): return input_sample - def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, vanadium_path=None): + def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, calibration_dict=None): return ws_to_correct def _load_monitor(self, number, cycle): diff --git a/scripts/Diffraction/isis_powder/focus.py b/scripts/Diffraction/isis_powder/focus.py index a22598b898a..da980a745a0 100644 --- a/scripts/Diffraction/isis_powder/focus.py +++ b/scripts/Diffraction/isis_powder/focus.py @@ -25,7 +25,7 @@ def _run_focus(instrument, run_number, perform_attenuation, perform_vanadium_nor # TODO fix this - maybe have it save solid angle corrections and just load/apply input_workspace = instrument._apply_solid_angle_efficiency_corr(ws_to_correct=input_workspace, - vanadium_path=calibration_file_paths["vanadium"]) + calibration_dict=calibration_file_paths) focused_ws = mantid.DiffractionFocussing(InputWorkspace=input_workspace, GroupingFileName=calibration_file_paths["grouping"]) diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py index 1d450e47c28..f7149f37e26 100644 --- a/scripts/Diffraction/isis_powder/polaris.py +++ b/scripts/Diffraction/isis_powder/polaris.py @@ -120,24 +120,34 @@ class Polaris(AbstractInst): common.remove_intermediate_workspace(empty_sample) return input_sample - def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, vanadium_path=None): - assert(vanadium_number or vanadium_path) + def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, calibration_dict=None): + assert(vanadium_number or calibration_dict) + if not calibration_dict or not os.path.isfile(calibration_dict["solid_angle_corr"]): + corrections = self.generate_solid_angle_corrections(calibration_dict, vanadium_number) + else: + corrections = mantid.Load(Filename=calibration_dict["solid_angle_corr"]) + + corrected_ws = mantid.Divide(LHSWorkspace=ws_to_correct, RHSWorkspace=corrections) + common.remove_intermediate_workspace(corrections) + common.remove_intermediate_workspace(ws_to_correct) + ws_to_correct = corrected_ws + return ws_to_correct + + def generate_solid_angle_corrections(self, calibration_dict, vanadium_number): if vanadium_number: solid_angle_vanadium_ws = common._load_raw_files(run_number=vanadium_number, instrument=self) else: - solid_angle_vanadium_ws = mantid.Load(Filename=vanadium_path) - + solid_angle_vanadium_ws = mantid.Load(Filename=calibration_dict["vanadium"]) normalised_vanadium_ws = self._normalise_ws(solid_angle_vanadium_ws) corrections = self._calculate_solid_angle_efficiency_corrections(normalised_vanadium_ws) - corrected_ws = mantid.Divide(LHSWorkspace=ws_to_correct, RHSWorkspace=corrections) + if calibration_dict: + mantid.SaveNexusProcessed(InputWorkspace=corrections, Filename=calibration_dict["solid_angle_corr"]) + common.remove_intermediate_workspace(solid_angle_vanadium_ws) common.remove_intermediate_workspace(normalised_vanadium_ws) - common.remove_intermediate_workspace(corrections) - common.remove_intermediate_workspace(ws_to_correct) - ws_to_correct = corrected_ws - return ws_to_correct + return corrections def correct_sample_vanadium(self, focused_ws, index, vanadium_ws=None): spectra_name = "sample_ws-" + str(index + 1) -- GitLab