def _spline_old_background(in_workspace): van_stripped = mantid.ConvertUnits(InputWorkspace=in_workspace, Target="dSpacing") # remove bragg peaks before spline van_stripped = mantid.StripPeaks(InputWorkspace=van_stripped, FWHM=15, Tolerance=6, WorkspaceIndex=0) van_stripped = mantid.StripPeaks(InputWorkspace=van_stripped, FWHM=15, Tolerance=6, WorkspaceIndex=2) van_stripped = mantid.StripPeaks(InputWorkspace=van_stripped, FWHM=15, Tolerance=6, WorkspaceIndex=3) van_stripped = mantid.StripPeaks(InputWorkspace=van_stripped, FWHM=40, Tolerance=12, WorkspaceIndex=1) van_stripped = mantid.StripPeaks(InputWorkspace=van_stripped, FWHM=60, Tolerance=12, WorkspaceIndex=1) # Mask low d region that is zero before spline for reg in range(0, 4): if reg == 1: van_stripped = mantid.MaskBins(InputWorkspace=van_stripped, XMin=0, XMax=0.14, SpectraList=reg) else: van_stripped = mantid.MaskBins(InputWorkspace=van_stripped, XMin=0, XMax=0.06, SpectraList=reg) van_stripped = mantid.ConvertUnits(InputWorkspace=van_stripped, Target="TOF") splined_ws_list = [] for i in range(0, 4): out_ws_name = "spline" + str(i+1) if i == 1: coeff = 80 else: coeff = 100 splined_ws_list.append(mantid.SplineBackground(InputWorkspace=van_stripped, OutputWorkspace=out_ws_name, WorkspaceIndex=i, NCoeff=coeff)) common.remove_intermediate_workspace(van_stripped) return splined_ws_list
def _spline_new_background(in_workspace, num_splines, instrument_version): # Remove bragg peaks before spline alg_range, unused = _get_instrument_ranges(instrument_version) van_stripped = _strip_peaks_new_inst(in_workspace, alg_range) van_stripped = mantid.ConvertUnits(InputWorkspace=van_stripped, Target="TOF") splined_ws_list = _perform_spline_range(instrument_version, num_splines, van_stripped) common.remove_intermediate_workspace(van_stripped) return splined_ws_list
def _run_attenuate_workspace(self, input_workspace): if self._old_atten_file is None: # For old API support attenuation_path = self._attenuation_full_path else: attenuation_path = self._old_atten_file wc_attenuated = mantid.PearlMCAbsorption(attenuation_path) wc_attenuated = mantid.ConvertToHistogram(InputWorkspace=wc_attenuated, OutputWorkspace=wc_attenuated) wc_attenuated = mantid.RebinToWorkspace(WorkspaceToRebin=wc_attenuated, WorkspaceToMatch=input_workspace, OutputWorkspace=wc_attenuated) pearl_attenuated_ws = mantid.Divide(LHSWorkspace=input_workspace, RHSWorkspace=wc_attenuated) common.remove_intermediate_workspace(workspace_name=wc_attenuated) return pearl_attenuated_ws
def _spline_new2_background(in_workspace, num_splines, instrument_version): # remove bragg peaks before spline alg_range, unused = _get_instrument_ranges(instrument_version) van_stripped_ws = _strip_peaks_new_inst(in_workspace, alg_range) # run twice on low angle as peaks are very broad for i in range(0, 2): van_stripped_ws = mantid.StripPeaks(InputWorkspace=van_stripped_ws, FWHM=100, Tolerance=10, WorkspaceIndex=12) van_stripped_ws = mantid.StripPeaks(InputWorkspace=van_stripped_ws, FWHM=60, Tolerance=10, WorkspaceIndex=13) van_stripped_ws = mantid.ConvertUnits(InputWorkspace=van_stripped_ws, Target="TOF") splined_ws_list = _perform_spline_range(instrument_version, num_splines, van_stripped_ws) common.remove_intermediate_workspace(van_stripped_ws) return splined_ws_list
def _run_get_monitor(self, run_number, input_dir, spline_terms): load_monitor_ws = common._load_monitor(run_number, input_dir=input_dir, instrument=self) get_monitor_ws = mantid.ConvertUnits(InputWorkspace=load_monitor_ws, Target="Wavelength") common.remove_intermediate_workspace(load_monitor_ws) lmin, lmax = self._get_lambda_range() get_monitor_ws = mantid.CropWorkspace(InputWorkspace=get_monitor_ws, XMin=lmin, XMax=lmax) ex_regions = numpy.zeros((2, 4)) ex_regions[:, 0] = [3.45, 3.7] ex_regions[:, 1] = [2.96, 3.2] ex_regions[:, 2] = [2.1, 2.26] ex_regions[:, 3] = [1.73, 1.98] # ConvertToDistribution(works) for reg in range(0, 4): get_monitor_ws = mantid.MaskBins(InputWorkspace=get_monitor_ws, XMin=ex_regions[0, reg], XMax=ex_regions[1, reg]) monitor_ws = mantid.SplineBackground(InputWorkspace=get_monitor_ws, WorkspaceIndex=0, NCoeff=spline_terms) common.remove_intermediate_workspace(get_monitor_ws) return monitor_ws
def _do_silicon_calibration(self, runs_to_process, cal_file_name, grouping_file_name): create_si_ws = common._read_ws(number=runs_to_process, instrument=self) cycle_details = self._get_cycle_information(runs_to_process) instrument_version = cycle_details["instrument_version"] if instrument_version == "new" or instrument_version == "new2": create_si_ws = mantid.Rebin(InputWorkspace=create_si_ws, Params="100,-0.0006,19950") create_si_d_spacing_ws = mantid.ConvertUnits(InputWorkspace=create_si_ws, Target="dSpacing") if instrument_version == "new2": create_si_d_spacing_rebin_ws = mantid.Rebin(InputWorkspace=create_si_d_spacing_ws, Params="1.71,0.002,2.1") create_si_cross_corr_ws = mantid.CrossCorrelate(InputWorkspace=create_si_d_spacing_rebin_ws, ReferenceSpectra=20, WorkspaceIndexMin=9, WorkspaceIndexMax=1063, XMin=1.71, XMax=2.1) elif instrument_version == "new": create_si_d_spacing_rebin_ws = mantid.Rebin(InputWorkspace=create_si_d_spacing_ws, Params="1.85,0.002,2.05") create_si_cross_corr_ws = mantid.CrossCorrelate(InputWorkspace=create_si_d_spacing_rebin_ws, ReferenceSpectra=20, WorkspaceIndexMin=9, WorkspaceIndexMax=943, XMin=1.85, XMax=2.05) elif instrument_version == "old": create_si_d_spacing_rebin_ws = mantid.Rebin(InputWorkspace=create_si_d_spacing_ws, Params="3,0.002,3.2") create_si_cross_corr_ws = mantid.CrossCorrelate(InputWorkspace=create_si_d_spacing_rebin_ws, ReferenceSpectra=500, WorkspaceIndexMin=1, WorkspaceIndexMax=1440, XMin=3, XMax=3.2) else: raise NotImplementedError("The instrument version is not supported for creating a silicon calibration") common.remove_intermediate_workspace(create_si_d_spacing_ws) common.remove_intermediate_workspace(create_si_d_spacing_rebin_ws) calibration_output_path = self.calibration_dir + cal_file_name create_si_offsets_ws = mantid.GetDetectorOffsets(InputWorkspace=create_si_cross_corr_ws, Step=0.002, DReference=1.920127251, XMin=-200, XMax=200, GroupingFileName=calibration_output_path) create_si_aligned_ws = mantid.AlignDetectors(InputWorkspace=create_si_ws, CalibrationFile=calibration_output_path) grouping_output_path = self.calibration_dir + grouping_file_name create_si_grouped_ws = mantid.DiffractionFocussing(InputWorkspace=create_si_aligned_ws, GroupingFileName=grouping_output_path) del create_si_offsets_ws, create_si_grouped_ws
def _create_calibration(self, calibration_runs, offset_file_name, grouping_file_name): input_ws = common._read_ws(number=calibration_runs, instrument=self) cycle_information = self._get_cycle_information(calibration_runs) # TODO move these hard coded params to instrument specific if cycle_information["instrument_version"] == "new" or cycle_information["instrument_version"] == "new2": input_ws = mantid.Rebin(InputWorkspace=input_ws, Params="100,-0.0006,19950") d_spacing_cal = mantid.ConvertUnits(InputWorkspace=input_ws, Target="dSpacing") d_spacing_cal = mantid.Rebin(InputWorkspace=d_spacing_cal, Params="1.8,0.002,2.1") if cycle_information["instrument_version"] == "new2": cross_cor_ws = mantid.CrossCorrelate(InputWorkspace=d_spacing_cal, ReferenceSpectra=20, WorkspaceIndexMin=9, WorkspaceIndexMax=1063, XMin=1.8, XMax=2.1) elif cycle_information["instrument_version"] == "new": cross_cor_ws = mantid.CrossCorrelate(InputWorkspace=d_spacing_cal, ReferenceSpectra=20, WorkspaceIndexMin=9, WorkspaceIndexMax=943, XMin=1.8, XMax=2.1) else: cross_cor_ws = mantid.CrossCorrelate(InputWorkspace=d_spacing_cal, ReferenceSpectra=500, WorkspaceIndexMin=1, WorkspaceIndexMax=1440, XMin=1.8, XMax=2.1) if self._old_api_uses_full_paths: # Workaround for old API setting full paths grouping_file_path = grouping_file_name offset_file_path = offset_file_name else: offset_file_path = self.calibration_dir + offset_file_name grouping_file_path = self.calibration_dir + grouping_file_name # Ceo Cell refined to 5.4102(3) so 220 is 1.912795 offset_output_path = mantid.GetDetectorOffsets(InputWorkspace=cross_cor_ws, Step=0.002, DReference=1.912795, XMin=-200, XMax=200, GroupingFileName=offset_file_path) del offset_output_path # This isn't used so delete it to keep linters happy aligned_ws = mantid.AlignDetectors(InputWorkspace=input_ws, CalibrationFile=offset_file_path) cal_grouped_ws = mantid.DiffractionFocussing(InputWorkspace=aligned_ws, GroupingFileName=grouping_file_path) common.remove_intermediate_workspace(d_spacing_cal) common.remove_intermediate_workspace(cross_cor_ws) common.remove_intermediate_workspace(aligned_ws) common.remove_intermediate_workspace(cal_grouped_ws)