From c5302303f42a333bb4bfefae85923e73321f845b Mon Sep 17 00:00:00 2001 From: Antti Soininen <soininen@ill.fr> Date: Wed, 12 Dec 2018 14:29:43 +0100 Subject: [PATCH] IN5: Monitor detector ID 0 -> 100000 Additionally fix the DirectILL* unit tests. Re #24137 --- .../DirectILLCollectDataTest.py | 16 ++++++++-------- .../WorkflowAlgorithms/DirectILLReductionTest.py | 15 ++++++--------- .../test/testhelpers/illhelpers.py | 16 ++++++++-------- instrument/IN5_Definition.xml | 4 ++-- 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLCollectDataTest.py b/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLCollectDataTest.py index b1b9176f591..97657fbb32d 100644 --- a/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLCollectDataTest.py +++ b/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLCollectDataTest.py @@ -51,7 +51,7 @@ class DirectILLCollectDataTest(unittest.TestCase): self.assertEquals(outWS.getNumberHistograms(), inWS.getNumberHistograms() - 1) ys = outWS.extractY() originalYs = inWS.extractY() - numpy.testing.assert_almost_equal(ys, originalYs[1:, :] - self._BKG_LEVEL) + numpy.testing.assert_almost_equal(ys, originalYs[:-1, :] - self._BKG_LEVEL) def testBackgroundOutput(self): outWSName = 'outWS' @@ -90,10 +90,10 @@ class DirectILLCollectDataTest(unittest.TestCase): inWS = mtd[self._TEST_WS_NAME] ys = outWS.extractY() originalYs = inWS.extractY() - numpy.testing.assert_almost_equal(ys, originalYs[1:, :] / duration) + numpy.testing.assert_almost_equal(ys, originalYs[:-1, :] / duration) es = outWS.extractE() originalEs = inWS.extractE() - numpy.testing.assert_almost_equal(es, originalEs[1:, :] / duration) + numpy.testing.assert_almost_equal(es, originalEs[:-1, :] / duration) def testRawWorkspaceOutput(self): outWSName = 'outWS' @@ -112,10 +112,10 @@ class DirectILLCollectDataTest(unittest.TestCase): rawWS = mtd[rawWSName] ys = rawWS.extractY() originalYS = inWS.extractY() - numpy.testing.assert_almost_equal(ys, originalYS[1:, :]) + numpy.testing.assert_almost_equal(ys, originalYS[:-1, :]) es = rawWS.extractE() originalES = inWS.extractE() - numpy.testing.assert_almost_equal(es, originalES[1:, :]) + numpy.testing.assert_almost_equal(es, originalES[:-1, :]) xs = rawWS.extractX() outXS = outWS.extractX() numpy.testing.assert_almost_equal(xs, outXS) @@ -144,13 +144,13 @@ class DirectILLCollectDataTest(unittest.TestCase): self.assertEquals(outWS.getNumberHistograms(), inWS.getNumberHistograms() - 1) xs = outWS.extractX() originalXs = inWS.extractX() - numpy.testing.assert_almost_equal(xs, originalXs[1:, :]) + numpy.testing.assert_almost_equal(xs, originalXs[:-1, :]) ys = outWS.extractY() originalYs = inWS.extractY() - numpy.testing.assert_almost_equal(ys, originalYs[1:, :]) + numpy.testing.assert_almost_equal(ys, originalYs[:-1, :]) es = outWS.extractE() originalEs = inWS.extractE() - numpy.testing.assert_almost_equal(es, originalEs[1:, :]) + numpy.testing.assert_almost_equal(es, originalEs[:-1, :]) def testOutputIncidentEnergyWorkspaceWhenEnergyCalibrationIsOff(self): outWSName = 'outWS' diff --git a/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLReductionTest.py b/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLReductionTest.py index 9c4a7e95e82..448b6cece72 100644 --- a/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLReductionTest.py +++ b/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLReductionTest.py @@ -10,7 +10,6 @@ import collections from mantid.api import mtd import numpy import numpy.testing -from scipy import constants from testhelpers import illhelpers, run_algorithm import unittest @@ -175,7 +174,7 @@ class DirectILLReductionTest(unittest.TestCase): def _groupingTestDetectors(ws): """Mask detectors for detector grouping tests.""" - indexBegin = 63106 # Detector at L2 and at 2theta = 40.6. + indexBegin = 63105 # Detector at L2 and at 2theta = 40.6. kwargs = { 'Workspace': ws, 'StartWorkspaceIndex': 0, @@ -183,20 +182,18 @@ def _groupingTestDetectors(ws): 'child': True } run_algorithm('MaskDetectors', **kwargs) - referenceDetector = ws.getDetector(indexBegin) - reference2Theta1 = ws.detectorTwoTheta(referenceDetector) - referenceDetector = ws.getDetector(indexBegin + 256) - reference2Theta2 = ws.detectorTwoTheta(referenceDetector) + spectrumInfo = ws.spectrumInfo() + reference2Theta1 = spectrumInfo.twoTheta(indexBegin) + reference2Theta2 = spectrumInfo.twoTheta(indexBegin + 256) mask = list() tolerance = numpy.deg2rad(0.01) for i in range(indexBegin + 1, indexBegin + 10000): - det = ws.getDetector(i) - twoTheta = ws.detectorTwoTheta(det) + twoTheta = spectrumInfo.twoTheta(i) if abs(reference2Theta1 - twoTheta) >= tolerance and abs(reference2Theta2 - twoTheta) >= tolerance: mask.append(i) kwargs = { 'Workspace': ws, - 'DetectorList': mask, + 'WorkspaceIndexList': mask, 'child': True } run_algorithm('MaskDetectors', **kwargs) diff --git a/Framework/PythonInterface/test/testhelpers/illhelpers.py b/Framework/PythonInterface/test/testhelpers/illhelpers.py index 34c6b39d643..690a2a4d9a2 100644 --- a/Framework/PythonInterface/test/testhelpers/illhelpers.py +++ b/Framework/PythonInterface/test/testhelpers/illhelpers.py @@ -94,14 +94,13 @@ def _fillTemplateTOFWorkspace(templateWS, bkgLevel): xs = numpy.empty(nHistograms*(nBins+1)) ys = numpy.empty(nHistograms*nBins) es = numpy.empty(nHistograms*nBins) + spectrumInfo = templateWS.spectrumInfo() instrument = templateWS.getInstrument() - sample = instrument.getSample() - l1 = sample.getDistance(instrument.getSource()) + l1 = spectrumInfo.l1() l2 = float(instrument.getStringParameter('l2')[0]) tofElastic = UnitConversion.run('Energy', 'TOF', E_i, l1, l2, 0.0, DeltaEModeType.Direct, 0.0) tofBegin = tofElastic - elasticIndex * binWidth - monitor = instrument.getDetector(0) - monitorSampleDistance = sample.getDistance(monitor) + monitorSampleDistance = 0.5 tofElasticMonitor = tofBegin + monitorElasticIndex * binWidth tofMonitorDetector = UnitConversion.run('Energy', 'TOF', E_i, monitorSampleDistance, l2, 0.0, DeltaEModeType.Direct, 0.0) @@ -121,11 +120,11 @@ def _fillTemplateTOFWorkspace(templateWS, bkgLevel): ys[yIndexOffset+binIndex] = y es[yIndexOffset+binIndex] = numpy.sqrt(y) - fillBins(0, tofElasticMonitor, 1623 * elasticPeakHeight, bkgMonitor) - for histogramIndex in range(1, nHistograms): - trueL2 = sample.getDistance(templateWS.getDetector(histogramIndex)) + for histogramIndex in range(0, nHistograms - 1): + trueL2 = spectrumInfo.l2(histogramIndex) trueTOF = UnitConversion.run('Energy', 'TOF', E_i, l1, trueL2, 0.0, DeltaEModeType.Direct, 0.0) fillBins(histogramIndex, trueTOF, elasticPeakHeight, bkgLevel) + fillBins(nHistograms - 1, tofElasticMonitor, 1623 * elasticPeakHeight, bkgMonitor) kwargs = { 'DataX': xs, 'DataY': ys, @@ -180,7 +179,7 @@ def _fillTemplateTOFWorkspace(templateWS, bkgLevel): 'Workspace': ws, 'ParameterName': 'default-incident-monitor-spectrum', 'ParameterType': 'Number', - 'Value': '1', + 'Value': str(98305), 'child': True } run_algorithm('SetInstrumentParameter', **kwargs) @@ -325,6 +324,7 @@ def default_test_detectors(ws): kwargs = { 'Workspace': ws, 'StartWorkspaceIndex': 512, + 'EndWorkspaceIndex': ws.getNumberHistograms() - 2, 'child': True } run_algorithm('MaskDetectors', **kwargs) diff --git a/instrument/IN5_Definition.xml b/instrument/IN5_Definition.xml index fa241a0442c..79111ae7bb1 100644 --- a/instrument/IN5_Definition.xml +++ b/instrument/IN5_Definition.xml @@ -1,5 +1,5 @@ <?xml version='1.0' encoding='ASCII'?> -<instrument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.mantidproject.org/IDF/1.0" last-modified="2018-12-12 12:17:50.421262" name="IN5" valid-from="1900-01-31 23:59:59" valid-to="2100-01-31 23:59:59" xsi:schemaLocation="http://www.mantidproject.org/IDF/1.0 http://schema.mantidproject.org/IDF/1.0/IDFSchema.xsd"> +<instrument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.mantidproject.org/IDF/1.0" last-modified="2018-12-12 12:23:39.832773" name="IN5" valid-from="1900-01-31 23:59:59" valid-to="2100-01-31 23:59:59" xsi:schemaLocation="http://www.mantidproject.org/IDF/1.0 http://schema.mantidproject.org/IDF/1.0/IDFSchema.xsd"> <!-- This is the instrument definition file of the IN5 spectrometer at the ILL. This file was automatically generated by mantidgeometry/ILL/IDF/in5_generateIDF.py --> @@ -39,7 +39,7 @@ <algebra val="cyl-approx"/> </type> <idlist idname="monitors"> - <id val="0"/> + <id val="100000"/> </idlist> <type is="detector" name="standard_pixel"> <cylinder id="pixel_shape"> -- GitLab