From 7a370c9499060adb69475ef4329ba2a991ae2efc Mon Sep 17 00:00:00 2001 From: Harriet Brown <harriet.brown@stfc.ac.uk> Date: Wed, 2 Oct 2019 14:15:15 +0100 Subject: [PATCH] undo running vanadium and corrections withiout focussing --- scripts/Diffraction/isis_powder/polaris.py | 5 +- .../polaris_routines/polaris_algs.py | 29 +++++------ .../isis_powder/routines/calibrate.py | 35 ++++++------- .../Diffraction/isis_powder/routines/focus.py | 52 ++++++++----------- 4 files changed, 54 insertions(+), 67 deletions(-) diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py index 2196abb39ba..cb078aaf55a 100644 --- a/scripts/Diffraction/isis_powder/polaris.py +++ b/scripts/Diffraction/isis_powder/polaris.py @@ -57,8 +57,9 @@ class Polaris(AbstractInst): pdf_output = polaris_algs.generate_ts_pdf(run_number=self._inst_settings.run_number, focus_file_path=focus_file_path, merge_banks=self._inst_settings.merge_banks, - q_lims=self._inst_settings.q_lims, - grouping_file_path=run_details.grouping_file_path) + # q_lims=self._inst_settings.q_lims, + # grouping_file_path=run_details.grouping_file_path + ) return pdf_output def set_sample_details(self, **kwargs): diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py index b1a1fa5047b..fd6e6062a4f 100644 --- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py +++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py @@ -63,24 +63,25 @@ def get_run_details(run_number_string, inst_settings, is_vanadium_run): def save_unsplined_vanadium(vanadium_ws, output_path): converted_workspaces = [] + if vanadium_ws.id() != "Workspace2D": + for ws_index in range(vanadium_ws.getNumberOfEntries()): + ws = vanadium_ws.getItem(ws_index) + previous_units = ws.getAxis(0).getUnit().unitID() - for ws_index in range(vanadium_ws.getNumberOfEntries()): - ws = vanadium_ws.getItem(ws_index) - previous_units = ws.getAxis(0).getUnit().unitID() + if previous_units != WORKSPACE_UNITS.tof: + ws = mantid.ConvertUnits(InputWorkspace=ws, Target=WORKSPACE_UNITS.tof) - if previous_units != WORKSPACE_UNITS.tof: - ws = mantid.ConvertUnits(InputWorkspace=ws, Target=WORKSPACE_UNITS.tof) + ws = mantid.RenameWorkspace(InputWorkspace=ws, OutputWorkspace="van_bank_{}".format(ws_index + 1)) + converted_workspaces.append(ws) - ws = mantid.RenameWorkspace(InputWorkspace=ws, OutputWorkspace="van_bank_{}".format(ws_index + 1)) - converted_workspaces.append(ws) - - converted_group = mantid.GroupWorkspaces(",".join(ws.name() for ws in converted_workspaces)) - mantid.SaveNexus(InputWorkspace=converted_group, Filename=output_path, Append=False) - mantid.DeleteWorkspace(converted_group) + converted_group = mantid.GroupWorkspaces(",".join(ws.name() for ws in converted_workspaces)) + mantid.SaveNexus(InputWorkspace=converted_group, Filename=output_path, Append=False) + mantid.DeleteWorkspace(converted_group) + else: + mantid.SaveNexus(InputWorkspace=vanadium_ws, Filename=output_path, Append=False) -def generate_ts_pdf(run_number, focus_file_path, merge_banks=False, instrument=None, q_lims=None, - grouping_file_path=None): +def generate_ts_pdf(run_number, focus_file_path, merge_banks=False, q_lims=None): focused_ws = _obtain_focused_run(run_number, focus_file_path) pdf_output = mantid.ConvertUnits(InputWorkspace=focused_ws.name(), Target="MomentumTransfer") @@ -88,8 +89,6 @@ def generate_ts_pdf(run_number, focus_file_path, merge_banks=False, instrument=N placzek_self_scattering = mantid.CalculatePlaczekSelfScattering(InputWorkspace=pdf_output) pdf_output = mantid.Subtract(LHSWorkspace=pdf_output, RHSWorkspace=placzek_self_scattering) - pdf_output = mantid.DiffractionFocussing(InputWorkspace=pdf_output, - GroupingFileName=grouping_file_path) pdf_output = mantid.MatchSpectra(InputWorkspace=pdf_output, ReferenceSpectrum=1) if type(q_lims) == str: q_min = [] diff --git a/scripts/Diffraction/isis_powder/routines/calibrate.py b/scripts/Diffraction/isis_powder/routines/calibrate.py index a5a238c9c0a..8e211edf8fa 100644 --- a/scripts/Diffraction/isis_powder/routines/calibrate.py +++ b/scripts/Diffraction/isis_powder/routines/calibrate.py @@ -47,33 +47,28 @@ def create_van(instrument, run_details, absorb): CalibrationFile=run_details.offset_file_path) solid_angle = instrument.get_solid_angle_corrections(run_details.run_number, run_details) if solid_angle: - aligned_ws = mantid.Divide(LHSWorkspace=aligned_ws, RHSWorkspace=solid_angle) + aligned_ws = mantid.Divide(LHSWorkspace=aligned_ws,RHSWorkspace=solid_angle) mantid.DeleteWorkspace(solid_angle) + focused_vanadium = mantid.DiffractionFocussing(InputWorkspace=aligned_ws, + GroupingFileName=run_details.grouping_file_path) - if instrument._inst_settings.mode != 'PDF': - focused_vanadium = mantid.DiffractionFocussing(InputWorkspace=aligned_ws, - GroupingFileName=run_details.grouping_file_path) + focused_spectra = common.extract_ws_spectra(focused_vanadium) + focused_spectra = instrument._crop_van_to_expected_tof_range(focused_spectra) - focused_spectra = common.extract_ws_spectra(focused_vanadium) - focused_spectra = instrument._crop_van_to_expected_tof_range(focused_spectra) + d_spacing_group, tof_group = instrument._output_focused_ws(processed_spectra=focused_spectra, + run_details=run_details) - d_spacing_group, tof_group = instrument._output_focused_ws(processed_spectra=focused_spectra, - run_details=run_details) + _create_vanadium_splines(focused_spectra, instrument, run_details) - _create_vanadium_splines(focused_spectra, instrument, run_details) + common.keep_single_ws_unit(d_spacing_group=d_spacing_group, tof_group=tof_group, + unit_to_keep=instrument._get_unit_to_keep()) - common.keep_single_ws_unit(d_spacing_group=d_spacing_group, tof_group=tof_group, - unit_to_keep=instrument._get_unit_to_keep()) + common.remove_intermediate_workspace(corrected_van_ws) + common.remove_intermediate_workspace(aligned_ws) + common.remove_intermediate_workspace(focused_vanadium) + common.remove_intermediate_workspace(focused_spectra) - common.remove_intermediate_workspace(corrected_van_ws) - common.remove_intermediate_workspace(aligned_ws) - common.remove_intermediate_workspace(focused_vanadium) - common.remove_intermediate_workspace(focused_spectra) - - return d_spacing_group - else: - common.remove_intermediate_workspace(corrected_van_ws) - return aligned_ws + return d_spacing_group def _create_vanadium_splines(focused_spectra, instrument, run_details): diff --git a/scripts/Diffraction/isis_powder/routines/focus.py b/scripts/Diffraction/isis_powder/routines/focus.py index ab10416d755..8f59f279656 100644 --- a/scripts/Diffraction/isis_powder/routines/focus.py +++ b/scripts/Diffraction/isis_powder/routines/focus.py @@ -65,43 +65,35 @@ def _focus_one_ws(input_workspace, run_number, instrument, perform_vanadium_norm mantid.DeleteWorkspace(solid_angle) # Focus the spectra into banks - if instrument._inst_settings.mode != 'PDF': - focused_ws = mantid.DiffractionFocussing(InputWorkspace=aligned_ws, - GroupingFileName=run_details.grouping_file_path) + focused_ws = mantid.DiffractionFocussing(InputWorkspace=aligned_ws, + GroupingFileName=run_details.grouping_file_path) - calibrated_spectra = _apply_vanadium_corrections(instrument=instrument, - input_workspace=focused_ws, - perform_vanadium_norm=perform_vanadium_norm, - vanadium_splines=vanadium_path) + calibrated_spectra = _apply_vanadium_corrections(instrument=instrument, + input_workspace=focused_ws, + perform_vanadium_norm=perform_vanadium_norm, + vanadium_splines=vanadium_path) - output_spectra = instrument._crop_banks_to_user_tof(calibrated_spectra) + output_spectra = instrument._crop_banks_to_user_tof(calibrated_spectra) - bin_widths = instrument._get_instrument_bin_widths() - if bin_widths: - # Reduce the bin width if required on this instrument - output_spectra = common.rebin_workspace_list(workspace_list=output_spectra, - bin_width_list=bin_widths) + bin_widths = instrument._get_instrument_bin_widths() + if bin_widths: + # Reduce the bin width if required on this instrument + output_spectra = common.rebin_workspace_list(workspace_list=output_spectra, + bin_width_list=bin_widths) - # Output - d_spacing_group, tof_group = instrument._output_focused_ws(output_spectra, run_details=run_details) + # Output + d_spacing_group, tof_group = instrument._output_focused_ws(output_spectra, run_details=run_details) - common.keep_single_ws_unit(d_spacing_group=d_spacing_group, tof_group=tof_group, - unit_to_keep=instrument._get_unit_to_keep()) + common.keep_single_ws_unit(d_spacing_group=d_spacing_group, tof_group=tof_group, + unit_to_keep=instrument._get_unit_to_keep()) - # Tidy workspaces from Mantid - common.remove_intermediate_workspace(input_workspace) - common.remove_intermediate_workspace(aligned_ws) - common.remove_intermediate_workspace(focused_ws) - common.remove_intermediate_workspace(output_spectra) + # Tidy workspaces from Mantid + common.remove_intermediate_workspace(input_workspace) + common.remove_intermediate_workspace(aligned_ws) + common.remove_intermediate_workspace(focused_ws) + common.remove_intermediate_workspace(output_spectra) - return d_spacing_group - else: - calibrated_spectra = _apply_vanadium_corrections(instrument=instrument, - input_workspace=aligned_ws, - perform_vanadium_norm=perform_vanadium_norm, - vanadium_splines=vanadium_path) - common.remove_intermediate_workspace(input_workspace) - return calibrated_spectra + return d_spacing_group def _apply_vanadium_corrections(instrument, input_workspace, perform_vanadium_norm, vanadium_splines): -- GitLab