Ejemplo n.º 1
0
    def test_tof_range(self):

        run = CreateSampleWorkspace(Function='Multiple Peaks',
                                    NumBanks=6,
                                    BankPixelWidth=1,
                                    NumEvents=10,
                                    XUnit='Energy',
                                    XMin=5,
                                    XMax=75,
                                    BinWidth=0.2)
        LoadInstrument(run, InstrumentName='MARI', RewriteSpectraMap=True)

        red = DirectEnergyConversion(run.getInstrument())

        red.prop_man.incident_energy = 26.2
        red.prop_man.energy_bins = [-20, 0.1, 20]
        red.prop_man.multirep_tof_specta_list = [4, 5, 6]
        MoveInstrumentComponent(Workspace='run',
                                ComponentName='Detector',
                                DetectorID=1102,
                                Z=3)
        MoveInstrumentComponent(Workspace='run',
                                ComponentName='Detector',
                                DetectorID=1103,
                                Z=6)

        run_tof = ConvertUnits(run, Target='TOF', EMode='Elastic')

        tof_range = red.find_tof_range_for_multirep(run_tof)

        self.assertEqual(len(tof_range), 3)

        x = run_tof.readX(3)
        xMin = min(x)
        x = run_tof.readX(5)
        xMax = max(x)

        self.assertGreater(tof_range[0], xMin)
        # self.assertAlmostEqual(tof_range[1],dt)
        self.assertLess(tof_range[2], xMax)

        # check another working mode
        red.prop_man.multirep_tof_specta_list = 4
        red.prop_man.incident_energy = 47.505
        red.prop_man.energy_bins = [-20, 0.1, 45]

        tof_range1 = red.find_tof_range_for_multirep(run_tof)

        self.assertGreater(tof_range1[0], xMin)
        self.assertLess(tof_range1[2], xMax)

        self.assertLess(tof_range1[2], tof_range[2])
        self.assertLess(tof_range1[0], tof_range[0])
        self.assertLess(tof_range1[1], tof_range[1])
    def test_tof_range(self):

        run = CreateSampleWorkspace(
            Function="Multiple Peaks",
            NumBanks=6,
            BankPixelWidth=1,
            NumEvents=10,
            XUnit="Energy",
            XMin=5,
            XMax=75,
            BinWidth=0.2,
        )
        LoadInstrument(run, InstrumentName="MARI", RewriteSpectraMap=True)

        red = DirectEnergyConversion(run.getInstrument())

        red.prop_man.incident_energy = 26.2
        red.prop_man.energy_bins = [-20, 0.1, 20]
        red.prop_man.multirep_tof_specta_list = [4, 5, 6]
        MoveInstrumentComponent(Workspace="run", ComponentName="Detector", DetectorID=1102, Z=3)
        MoveInstrumentComponent(Workspace="run", ComponentName="Detector", DetectorID=1103, Z=6)

        run_tof = ConvertUnits(run, Target="TOF", EMode="Elastic")

        tof_range = red.find_tof_range_for_multirep(run_tof)

        self.assertEqual(len(tof_range), 3)

        x = run_tof.readX(3)
        dx = abs(x[1:] - x[:-1])
        xMin = min(x)
        dt = min(dx)
        x = run_tof.readX(5)
        xMax = max(x)

        self.assertTrue(tof_range[0] > xMin)
        # self.assertAlmostEqual(tof_range[1],dt)
        self.assertTrue(tof_range[2] < xMax)

        # check another working mode
        red.prop_man.multirep_tof_specta_list = 4
        red.prop_man.incident_energy = 47.505
        red.prop_man.energy_bins = [-20, 0.1, 45]

        tof_range1 = red.find_tof_range_for_multirep(run_tof)

        self.assertTrue(tof_range1[0] > xMin)
        self.assertTrue(tof_range1[2] < xMax)

        self.assertTrue(tof_range1[2] < tof_range[2])
        self.assertTrue(tof_range1[0] < tof_range[0])
        self.assertTrue(tof_range1[1] < tof_range[1])