/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/IndirectFlatPlateAbsorption2Test.py

https://github.com/mantidproject/mantid · Python · 164 lines · 90 code · 32 blank · 42 comment · 2 complexity · 91312e65d5120e6f16de721ded1505be MD5 · raw file

  1. # Mantid Repository : https://github.com/mantidproject/mantid
  2. #
  3. # Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
  4. # NScD Oak Ridge National Laboratory, European Spallation Source,
  5. # Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
  6. # SPDX - License - Identifier: GPL - 3.0 +
  7. import unittest
  8. from mantid.simpleapi import LoadNexusProcessed, IndirectFlatPlateAbsorption, DeleteWorkspace
  9. from mantid.api import *
  10. class IndirectFlatPlateAbsorption2Test(unittest.TestCase):
  11. def setUp(self):
  12. """
  13. Loads the reduced container and sample files.
  14. """
  15. can_ws = LoadNexusProcessed(Filename='irs26173_graphite002_red.nxs')
  16. red_ws = LoadNexusProcessed(Filename='irs26176_graphite002_red.nxs')
  17. self._can_ws = can_ws
  18. self._red_ws = red_ws
  19. def tearDown(self):
  20. """
  21. Removes sample workspaces.
  22. """
  23. DeleteWorkspace(self._can_ws)
  24. DeleteWorkspace(self._red_ws)
  25. def _test_workspaces(self, corrected, factor_group):
  26. """
  27. Checks the units of the Ass and corrected workspaces.
  28. @param corrected Corrected workspace
  29. @param factor_group WorkspaceGroup containing factors
  30. """
  31. # Test units of corrected workspace
  32. corrected_x_unit = corrected.getAxis(0).getUnit().unitID()
  33. self.assertEqual(corrected_x_unit, 'DeltaE')
  34. # Test units of factor workspaces
  35. for ws in factor_group:
  36. x_unit = ws.getAxis(0).getUnit().unitID()
  37. self.assertEqual(x_unit, 'Wavelength')
  38. y_unit = ws.YUnitLabel()
  39. self.assertEqual(y_unit, 'Attenuation factor')
  40. def test_sample_corrections_only(self):
  41. """
  42. Tests corrections for the sample only.
  43. """
  44. corrected, fact = IndirectFlatPlateAbsorption(SampleWorkspace=self._red_ws,
  45. SampleChemicalFormula='H2-O',
  46. NumberWavelengths=10,
  47. Events = 200)
  48. self.assertEqual(fact.size(), 1)
  49. self._test_workspaces(corrected, fact)
  50. def test_beam_dimensions(self):
  51. """
  52. Tests beam dimensions
  53. """
  54. corrected, fact = IndirectFlatPlateAbsorption(SampleWorkspace=self._red_ws,
  55. SampleChemicalFormula='H2-O',
  56. NumberWavelengths=10,
  57. Events=200,
  58. BeamHeight=2,
  59. BeamWidth=3)
  60. self.assertEqual(fact.size(), 1)
  61. self._test_workspaces(corrected, fact)
  62. def test_sample_and_can_subtraction(self):
  63. """
  64. Tests corrections for the sample and simple container subtraction.
  65. """
  66. corrected, fact = IndirectFlatPlateAbsorption(SampleWorkspace=self._red_ws,
  67. SampleChemicalFormula='H2-O',
  68. CanWorkspace=self._can_ws,
  69. UseCanCorrections=False,
  70. Events=200)
  71. self.assertEqual(fact.size(), 1)
  72. self._test_workspaces(corrected, fact)
  73. def test_sample_and_can_subtraction_with_scale(self):
  74. """
  75. Tests corrections for the sample and simple container subtraction
  76. with can scale.
  77. """
  78. corrected, fact = IndirectFlatPlateAbsorption(SampleWorkspace=self._red_ws,
  79. SampleChemicalFormula='H2-O',
  80. CanWorkspace=self._can_ws,
  81. CanScaleFactor=0.8,
  82. UseCanCorrections=False,
  83. Events=200)
  84. self.assertEqual(fact.size(), 1)
  85. self._test_workspaces(corrected, fact)
  86. def test_sample_and_can_correction(self):
  87. """
  88. Tests corrections for the sample and container.
  89. """
  90. corrected, fact = IndirectFlatPlateAbsorption(SampleWorkspace=self._red_ws,
  91. SampleChemicalFormula='H2-O',
  92. CanWorkspace=self._can_ws,
  93. CanChemicalFormula='V',
  94. UseCanCorrections=True,
  95. Events=200)
  96. self.assertEqual(fact.size(), 2)
  97. self._test_workspaces(corrected, fact)
  98. def test_mass_density_for_sample_can(self):
  99. """
  100. Test simple run with sample and can workspace and number density for both
  101. """
  102. corrected, fact = IndirectFlatPlateAbsorption(SampleWorkspace=self._red_ws,
  103. SampleChemicalFormula='H2-O',
  104. SampleDensityType='Number Density',
  105. SampleDensity=0.5,
  106. CanWorkspace=self._can_ws,
  107. CanChemicalFormula='V',
  108. CanDensityType='Number Density',
  109. CanDensity=0.5,
  110. UseCanCorrections=True,
  111. Events=200)
  112. self.assertEqual(fact.size(), 2)
  113. self._test_workspaces(corrected, fact)
  114. def test_number_density_for_sample_can(self):
  115. """
  116. Test simple run with sample and can workspace and number density for both
  117. """
  118. corrected, fact = IndirectFlatPlateAbsorption(SampleWorkspace=self._red_ws,
  119. SampleChemicalFormula='H2-O',
  120. SampleDensityType='Mass Density',
  121. SampleDensity=0.5,
  122. CanWorkspace=self._can_ws,
  123. CanChemicalFormula='V',
  124. CanDensityType='Mass Density',
  125. CanDensity=0.5,
  126. UseCanCorrections=True,
  127. Events=200)
  128. self.assertEqual(fact.size(), 2)
  129. self._test_workspaces(corrected, fact)
  130. if __name__ == '__main__':
  131. unittest.main()