コード例 #1
0
 def test_that_provides_null_q_resolution_calculator_when_is_turned_off(self):
     # Arrange
     mock_state = QResolutionCalculatorTest._provide_mock_state(use_q_resolution=False)
     factory = QResolutionCalculatorFactory()
     # Act
     calculator = factory.create_q_resolution_calculator(mock_state)
     # Assert
     self.assertTrue(isinstance(calculator, NullQResolutionCalculator))
コード例 #2
0
    def _run_q_1d(self, state):
        data_workspace = self.getProperty("InputWorkspace").value
        wavelength_adjustment_workspace = self.getProperty(
            "InputWorkspaceWavelengthAdjustment").value
        pixel_adjustment_workspace = self.getProperty(
            "InputWorkspacePixelAdjustment").value
        wavelength_and_pixel_adjustment_workspace = self.getProperty(
            "InputWorkspaceWavelengthAndPixelAdjustment").value

        # Get QResolution
        convert_to_q = state.convert_to_q
        q_resolution_factory = QResolutionCalculatorFactory()
        q_resolution_calculator = q_resolution_factory.create_q_resolution_calculator(
            state)
        q_resolution_workspace = q_resolution_calculator.get_q_resolution_workspace(
            convert_to_q, data_workspace)

        output_parts = self.getProperty("OutputParts").value

        # Extract relevant settings
        q_binning = convert_to_q.q_1d_rebin_string
        use_gravity = convert_to_q.use_gravity
        gravity_extra_length = convert_to_q.gravity_extra_length
        radius_cutoff = convert_to_q.radius_cutoff * 1000.  # Q1D2 expects the radius cutoff to be in mm
        wavelength_cutoff = convert_to_q.wavelength_cutoff

        q1d_name = "Q1D"
        q1d_options = {
            "DetBankWorkspace": data_workspace,
            "OutputWorkspace": EMPTY_NAME,
            "OutputBinning": q_binning,
            "AccountForGravity": use_gravity,
            "RadiusCut": radius_cutoff,
            "WaveCut": wavelength_cutoff,
            "OutputParts": output_parts,
            "ExtraLength": gravity_extra_length
        }
        if wavelength_adjustment_workspace:
            q1d_options.update(
                {"WavelengthAdj": wavelength_adjustment_workspace})
        if pixel_adjustment_workspace:
            q1d_options.update({"PixelAdj": pixel_adjustment_workspace})
        if wavelength_and_pixel_adjustment_workspace:
            q1d_options.update(
                {"WavePixelAdj": wavelength_and_pixel_adjustment_workspace})
        if q_resolution_workspace:
            q1d_options.update({"QResolution": q_resolution_workspace})

        q1d_alg = create_unmanaged_algorithm(q1d_name, **q1d_options)
        q1d_alg.execute()
        reduced_workspace = q1d_alg.getProperty("OutputWorkspace").value

        # Get the partial workspaces
        sum_of_counts_workspace, sum_of_norms_workspace = self._get_partial_output(
            output_parts, q1d_alg, do_clean=False)

        return reduced_workspace, sum_of_counts_workspace, sum_of_norms_workspace
コード例 #3
0
    def _run_q_1d(self, state):
        data_workspace = self.getProperty("InputWorkspace").value
        wavelength_adjustment_workspace = self.getProperty("InputWorkspaceWavelengthAdjustment").value
        pixel_adjustment_workspace = self.getProperty("InputWorkspacePixelAdjustment").value
        wavelength_and_pixel_adjustment_workspace = self.getProperty("InputWorkspaceWavelengthAndPixelAdjustment").value

        # Get QResolution
        convert_to_q = state.convert_to_q
        q_resolution_factory = QResolutionCalculatorFactory()
        q_resolution_calculator = q_resolution_factory.create_q_resolution_calculator(state)
        q_resolution_workspace = q_resolution_calculator.get_q_resolution_workspace(convert_to_q, data_workspace)

        output_parts = self.getProperty("OutputParts").value

        # Extract relevant settings
        q_binning = convert_to_q.q_1d_rebin_string
        use_gravity = convert_to_q.use_gravity
        gravity_extra_length = convert_to_q.gravity_extra_length
        radius_cutoff = convert_to_q.radius_cutoff * 1000.  # Q1D2 expects the radius cutoff to be in mm
        wavelength_cutoff = convert_to_q.wavelength_cutoff

        q1d_name = "Q1D"
        q1d_options = {"DetBankWorkspace": data_workspace,
                       "OutputWorkspace": EMPTY_NAME,
                       "OutputBinning": q_binning,
                       "AccountForGravity": use_gravity,
                       "RadiusCut": radius_cutoff,
                       "WaveCut": wavelength_cutoff,
                       "OutputParts": output_parts,
                       "ExtraLength": gravity_extra_length}
        if wavelength_adjustment_workspace:
            q1d_options.update({"WavelengthAdj": wavelength_adjustment_workspace})
        if pixel_adjustment_workspace:
            q1d_options.update({"PixelAdj": pixel_adjustment_workspace})
        if wavelength_and_pixel_adjustment_workspace:
            q1d_options.update({"WavePixelAdj": wavelength_and_pixel_adjustment_workspace})
        if q_resolution_workspace:
            q1d_options.update({"QResolution": q_resolution_workspace})

        q1d_alg = create_unmanaged_algorithm(q1d_name, **q1d_options)
        q1d_alg.execute()
        reduced_workspace = q1d_alg.getProperty("OutputWorkspace").value

        # Get the partial workspaces
        sum_of_counts_workspace, sum_of_norms_workspace = self._get_partial_output(output_parts, q1d_alg,
                                                                                   do_clean=False)

        return reduced_workspace, sum_of_counts_workspace, sum_of_norms_workspace
コード例 #4
0
    def test_that_raises_when_unknown_facility_is_chosen(self):
        # Arrange
        mock_state = MockContainer()
        mock_state.data = MockContainer()
        mock_state.data.facility = None
        factory = QResolutionCalculatorFactory()

        # Act + Assert
        args = [mock_state]
        self.assertRaises(RuntimeError, factory.create_q_resolution_calculator, *args)