Exemple #1
0
def setup_back_scattering():
    test_ws = ms.LoadVesuvio(Filename="15039-15045", InstrumentParFile="IP0004_10.par",
                             Mode="SingleDifference", SpectrumList="3-6")
    test_container_ws = ms.LoadVesuvio(Filename="15036", InstrumentParFile="IP0004_10.par",
                                       Mode="SingleDifference", SpectrumList="3-6")

    return test_ws, test_container_ws
Exemple #2
0
    def _run_load(self, runs, spectra, diff_opt, ip_file="", sum_runs=False, load_mon=False, do_size_check=True):
        ms.LoadVesuvio(Filename=runs,OutputWorkspace=self.ws_name,
                       SpectrumList=spectra,Mode=diff_opt,InstrumentParFile=ip_file,
                       SumSpectra=sum_runs, LoadMonitors=load_mon)

        self._do_ads_check(self.ws_name)

        def expected_size():
            if sum_runs:
                if ";" in spectra:
                    return 2
                else:
                    return 1
            elif "-" in spectra:
                elements = spectra.split("-")
                min_e, max_e = (int(elements[0]), int(elements[1]))
                return max_e - min_e + 1
            elif "," in spectra:
                elements = spectra.strip().split(",")
                return len(elements)
            else:
                return 1
        if do_size_check:
            self._do_size_check(self.ws_name, expected_size())

        loaded_data = mtd[self.ws_name]
        if "Difference" in diff_opt:
            self.assertTrue(not loaded_data.isHistogramData())
        else:
            self.assertTrue(loaded_data.isHistogramData())
Exemple #3
0
def load_and_crop_data(runs, spectra, ip_file, diff_mode='single',
                       fit_mode='spectra', rebin_params=None):
    """
    @param runs The string giving the runs to load
    @param spectra A list of spectra to load
    @param ip_file A string denoting the IP file
    @param diff_mode Either 'double' or 'single'
    @param fit_mode If bank then the loading is changed to summing each bank to a separate spectrum
    @param rebin_params Rebin parameter string to rebin data by (no rebin if None)
    """
    instrument = VESUVIO()
    load_banks = (fit_mode == 'bank')
    output_name = _create_tof_workspace_suffix(runs, spectra)

    if load_banks:
        sum_spectra = True
        if spectra == "forward":
            bank_ranges = instrument.forward_banks
        elif spectra == "backward":
            bank_ranges = instrument.backward_banks
        else:
            raise ValueError("Fitting by bank requires selecting either 'forward' or 'backward' "
                             "for the spectra to load")
        bank_ranges = ["{0}-{1}".format(x, y) for x, y in bank_ranges]
        spectra = ";".join(bank_ranges)
    else:
        sum_spectra = False
        if spectra == "forward":
            spectra = "{0}-{1}".format(*instrument.forward_spectra)
        elif spectra == "backward":
            spectra = "{0}-{1}".format(*instrument.backward_spectra)

    if diff_mode == "double":
        diff_mode = "DoubleDifference"
    else:
        diff_mode = "SingleDifference"

    kwargs = {"Filename": runs,
              "Mode": diff_mode, "InstrumentParFile": ip_file,
              "SpectrumList": spectra, "SumSpectra": sum_spectra,
              "OutputWorkspace": output_name}
    full_range = ms.LoadVesuvio(**kwargs)
    tof_data = ms.CropWorkspace(InputWorkspace=full_range,
                                XMin=instrument.tof_range[0],
                                XMax=instrument.tof_range[1],
                                OutputWorkspace=output_name)

    if rebin_params is not None:
        tof_data = ms.Rebin(InputWorkspace=tof_data,
                            OutputWorkspace=output_name,
                            Params=rebin_params)

    return tof_data