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) 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_van_ws) run_details = instrument._get_run_details(run_number=van) corrected_van_ws = instrument. _apply_van_calibration_tof_rebinning(vanadium_ws=corrected_van_ws, tof_rebin_pass=1, return_units="TOF") corrected_van_ws = mantid.AlignDetectors(InputWorkspace=corrected_van_ws, CalibrationFile=run_details.calibration) corrected_van_ws = instrument.apply_solid_angle_efficiency_corr(ws_to_correct=corrected_van_ws, run_details=run_details) if absorb: corrected_van_ws = _apply_absorb_corrections(instrument=instrument, run_details=run_details, corrected_van_ws=corrected_van_ws, gen_absorb=gen_absorb) focused_van_file = mantid.DiffractionFocussing(InputWorkspace=corrected_van_ws, GroupingFileName=run_details.grouping) # Optional focused_van_file = instrument. _apply_van_calibration_tof_rebinning(vanadium_ws=focused_van_file, tof_rebin_pass=2, return_units="dSpacing") common.remove_intermediate_workspace(corrected_van_ws) cycle_information = instrument._get_run_details(run_number=van) splined_ws_list = instrument._spline_background(focused_van_file, num_of_splines, cycle_information.instrument_version) # Figure out who will provide the path name if instrument._PEARL_filename_is_full_path(): out_van_file_path = output_van_file_name elif output_van_file_name: # The user has manually specified the output file out_van_file_path = os.path.join(instrument.calibration_dir, output_van_file_name) elif run_details.splined_vanadium: out_van_file_path = run_details.splined_vanadium else: raise ValueError("The output name must be manually specified for this instrument/run") append = False for ws in splined_ws_list: mantid.SaveNexus(Filename=out_van_file_path, InputWorkspace=ws, Append=append) common.remove_intermediate_workspace(ws) append = True output_ws = mantid.LoadNexus(Filename=out_van_file_path, OutputWorkspace="Van_data") return output_ws
def _run_focus(instrument, run_number, perform_attenuation, perform_vanadium_norm): # Read read_ws = common.load_current_normalised_ws(run_number_string=run_number, instrument=instrument) input_workspace = instrument._do_tof_rebinning_focus(read_ws) # Rebins for PEARL 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 with these settings yet?") # Compensate for empty sample if specified 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, CalibrationFile=run_details.calibration) input_workspace = instrument.apply_solid_angle_efficiency_corr(ws_to_correct=input_workspace, run_details=run_details) focused_ws = mantid.DiffractionFocussing(InputWorkspace=input_workspace, GroupingFileName=run_details.grouping) # Process rebinning_params = instrument.calculate_focus_binning_params(sample=focused_ws) calibrated_spectra = _divide_sample_by_vanadium(instrument=instrument, run_number=run_number, input_workspace=focused_ws, perform_vanadium_norm=perform_vanadium_norm) _apply_binning_to_spectra(spectra_list=calibrated_spectra, binning_list=rebinning_params) # Output processed_nexus_files = instrument._process_focus_output(calibrated_spectra, run_details=run_details, attenuate=perform_attenuation) # Tidy common.remove_intermediate_workspace(read_ws) common.remove_intermediate_workspace(input_workspace) common.remove_intermediate_workspace(focused_ws) for ws in calibrated_spectra: common.remove_intermediate_workspace(ws) pass return processed_nexus_files