def test_relative_peak_width_updates_distributions(self): generator = BraggPeakEventGenerator(['5.431 5.431 5.431', 'F d -3 m', 'Si 0 0 0 1.0 0.01'], 3.0, 4.0, MockTOFFactorCalculator([2500.])) with patch.object(generator, '_update_distributions_and_weights') as mock_method: generator.relative_peak_width = 4.0 self.assertEquals(generator.relative_peak_width, 4.0) self.assertEqual(mock_method.call_count, 1, '_update_distributions_and_weights has been called the wrong number of times when setting relative_peak_width: {}'.format( mock_method.call_count))
def test_get_events(self): generator = BraggPeakEventGenerator(['5.431 5.431 5.431', 'F d -3 m', 'Si 0 0 0 1.0 0.01'], 3.0, 4.0, MockTOFFactorCalculator([2500.])) generator.relative_peak_width = 0.0001 # Generates events only for one peak, and only for one detector. events = generator.get_events(10) # All events should have the same detector id self.assertTrue(np.all(events['detector_id'] == 0)) # The TOFs should correspond to d values of roughly 5.431 / sqrt(3) delta_d_values = np.fabs((events['tof'] / 2500. * np.sqrt(3)) - 5.431) self.assertTrue(np.all(delta_d_values < 2e-3))