diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py index 3fbceb1e06bfdf463629095bec9074a34948ac39..727032268eb198c6c49c2b48b89b2400f5fb3ae0 100644 --- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py +++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py @@ -88,8 +88,8 @@ def generate_ts_pdf(run_number, focus_file_path, merge_banks=False, q_lims=None, ws_group_list = [] for i in range(self_scattering_correction.getNumberHistograms()): ws_name = 'correction_' + str(i) - mantid.ExtractSpectra(InputWorkspace=self_scattering_correction, OutputWorkspace=ws_name, StartWorkspaceIndex=i, - EndWorkspaceIndex=i) + mantid.ExtractSpectra(InputWorkspace=self_scattering_correction, OutputWorkspace=ws_name, + WorkspaceIndexList=[i]) ws_group_list.append(ws_name) self_scattering_correction = mantid.GroupWorkspaces(InputWorkspaces=ws_group_list) self_scattering_correction = mantid.RebinToWorkspace(WorkspaceToRebin=self_scattering_correction, @@ -196,8 +196,18 @@ def _calculate_self_scattering_correction(run_number, cal_file_name, sample_deta mantid.SetSample(InputWorkspace=raw_ws, Geometry=common.generate_sample_geometry(sample_details), Material=common.generate_sample_material(sample_details)) - # TODO find way to automaticaly select best monitor for incident spectrum - monitor = mantid.ExtractSpectra(InputWorkspace=raw_ws, WorkspaceIndexList=[11]) + # find the closest monitor to the sample for incident spectrum + raw_spec_info = raw_ws.spectrumInfo() + incident_index = None + for i in range(raw_spec_info.size()): + if raw_spec_info.isMonitor(i): + l2 = raw_spec_info.position(i)[2] + if not incident_index: + incident_index = i + else: + if raw_spec_info.position(incident_index)[2] < l2 < 0: + incident_index = i + monitor = mantid.ExtractSpectra(InputWorkspace=raw_ws, WorkspaceIndexList=[incident_index]) monitor = mantid.ConvertUnits(InputWorkspace=monitor, Target="Wavelength") x_data = monitor.dataX(0) min_x = np.min(x_data)