def test_finds_all_monitor_indices_when_monitor_is_present(self): # Arrange test_ws = self._load_workspace_with_monitors() ws = mtd[test_ws] remover = DarkRunMonitorAndDetectorRemover() # Act indices = remover.find_monitor_workspace_indices(ws) # Assert ws_index, det_ids = zip(*indices) self.assertEqual(len(indices), 2, "There should be two monitors") self.assertEqual( ws_index[0], 0, "The first monitor should have a workspace index of 0") self.assertEqual( ws_index[1], 1, "The second monitor should have a workspace index of 1") self.assertEqual(det_ids[0], 1, "The first monitor should have a detector ID of 1") self.assertEqual(det_ids[1], 2, "The second monitor should have a detector ID of 2") # Clean up ws_to_clean = [test_ws] self._clean_up(ws_to_clean)
def test_that_individual_monitors_can_be_selected(self): # Arrange test_ws = self._load_workspace_with_monitors() ws = mtd[test_ws] remover = DarkRunMonitorAndDetectorRemover() zero_reference = np.copy(ws.dataY(0)) * 0 dataY0_reference = np.copy(ws.dataY(0)) dataE0_reference = np.copy(ws.dataE(0)) number_histograms_reference = ws.getNumberHistograms() monitor_selection = [1] # We select the monitor with detector ID 1 # which is workspace index 0 for this workspace # Act dark_run_corrected = remover.set_pure_monitor_dark_run( ws, monitor_selection) # Assert self.assertEqual(dark_run_corrected.getNumberHistograms(), number_histograms_reference, "The number of histograms should not have changed") self._assert_items_are_equal(dark_run_corrected.dataY(0), dataY0_reference, "First monitor Y data should be 0") self._assert_items_are_equal(dark_run_corrected.dataE(0), dataE0_reference, "First monitor E data should be 0") self._assert_items_are_equal( dark_run_corrected.dataY(1), zero_reference, "Second monitor Y data should not have changed") self._assert_items_are_equal( dark_run_corrected.dataE(1), zero_reference, "Second monitor E data should not have changed") for element in range(2, dark_run_corrected.getNumberHistograms()): self._assert_items_are_equal( dark_run_corrected.dataY(element), zero_reference, "The Y data of non-monitor detectors should be 0") self._assert_items_are_equal( dark_run_corrected.dataE(element), zero_reference, "The E data of non-monitor detectors should be 0") # Clean up ws_to_clean = [test_ws] self._clean_up(ws_to_clean)
def test_find_no_monitors_when_no_monitors_are_present(self): # Arrange test_ws = self._load_workspace_without_monitors() ws = mtd[test_ws] remover = DarkRunMonitorAndDetectorRemover() # Act indices = remover.find_monitor_workspace_indices(ws) # Assert self.assertEqual(len(indices), 0, "There should be no monitors") # Clean up ws_to_clean =[test_ws] self._clean_up(ws_to_clean)
def test_keep_all_monitors_discard_detectors(self): # Arrange test_ws = self._load_workspace_with_monitors() ws = mtd[test_ws] remover = DarkRunMonitorAndDetectorRemover() dataY0_reference = np.copy(ws.dataY(0)) dataE0_reference = np.copy(ws.dataE(0)) dataY1_reference = np.copy(ws.dataY(1)) dataE1_reference = np.copy(ws.dataE(1)) number_histograms_reference = ws.getNumberHistograms() zero_reference = dataY0_reference * 0 # Act monitor_selection = [] dark_run_corrected = remover.set_pure_monitor_dark_run( ws, monitor_selection) # Assert self.assertEqual(dark_run_corrected.getNumberHistograms(), number_histograms_reference, "The number of histograms should not have changed") self._assert_items_are_equal( dark_run_corrected.dataY(0), dataY0_reference, "First monitor Y data should not have changed") self._assert_items_are_equal( dark_run_corrected.dataE(0), dataE0_reference, "First monitor E data should not have changed") self._assert_items_are_equal( dark_run_corrected.dataY(1), dataY1_reference, "Second monitor Y data should not have changed") self._assert_items_are_equal( dark_run_corrected.dataE(1), dataE1_reference, "Second monitor E data should not have changed") for element in range(2, dark_run_corrected.getNumberHistograms()): self._assert_items_are_equal( dark_run_corrected.dataY(element), zero_reference, "The Y data of non-monitor detectors should be 0") self._assert_items_are_equal( dark_run_corrected.dataE(element), zero_reference, "The E data of non-monitor detectors should be 0") # Clean up ws_to_clean = [test_ws] self._clean_up(ws_to_clean)
def test_that_throws_if_selection_does_not_match_available_monitor_list(self): # Arrange test_ws = self._load_workspace_with_monitors() ws = mtd[test_ws] remover = DarkRunMonitorAndDetectorRemover() zero_reference = np.copy(ws.dataY(0))*0 dataY1_reference = np.copy(ws.dataY(1)) dataE1_reference = np.copy(ws.dataE(1)) number_histograms_reference = ws.getNumberHistograms() monitor_selection = [0,2] # Act+ Assert args = [ws, monitor_selection] dark_run_corrected = self.assertRaises(RuntimeError, remover.set_pure_monitor_dark_run, *args) # Clean up ws_to_clean = [test_ws] self._clean_up(ws_to_clean)