def test_vanadium_annulus(self): PolDiffILLReduction(Run='396917', ProcessAs='Empty', OutputWorkspace='container_ws') sampleProperties = { 'SampleChemicalFormula': 'V', 'SampleMass': 8.54, 'FormulaUnitMass': 50.94, 'SampleInnerRadius': 2, 'SampleOuterRadius': 2.5, 'Height': 2, 'BeamWidth': 2.6, 'BeamHeight': 2.6, 'SampleDensity': 1, 'ContainerChemicalFormula': 'Al', 'ContainerDensity': 2.7, 'ContainerInnerRadius': 0.1, 'ContainerOuterRadius': 2.51, 'EventsPerPoint': 1000 } PolDiffILLReduction(Run='396993', ProcessAs='Vanadium', OutputWorkspace='vanadium_annulus', EmptyContainerWorkspace='container_ws', SampleAndEnvironmentProperties=sampleProperties, SelfAttenuationMethod='MonteCarlo', SampleGeometry='Annulus', OutputTreatment='Individual') self._check_output(mtd['vanadium_annulus'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_annulus'], 'Vanadium')
def test_transmission(self): PolDiffILLReduction(Run='396983', ProcessAs='EmptyBeam', OutputWorkspace='beam_ws') PolDiffILLReduction(Run='396991', ProcessAs='BeamWithCadmium', OutputWorkspace='cadmium_ws') PolDiffILLReduction(Run='396985', ProcessAs='Transmission', OutputWorkspace='quartz_transmission', CadmiumTransmissionInputWorkspace='cadmium_ws_1', BeamInputWorkspace='beam_ws_1',) self._check_output(mtd['quartz_transmission'], 1, 1, 1, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self.assertAlmostEqual(mtd['quartz_transmission_1'].readY(0)[0], 0.692, delta=1e-3) self._check_process_flag(mtd['quartz_transmission'], 'Transmission')
def test_quartz(self): PolDiffILLReduction(Run='396983', ProcessAs='EmptyBeam', OutputWorkspace='beam_ws') PolDiffILLReduction(Run='396985', ProcessAs='Transmission', OutputWorkspace='quartz_transmission', BeamInputWorkspace='beam_ws_1') PolDiffILLReduction(Run='396939', ProcessAs='Quartz', TransmissionInputWorkspace='quartz_transmission_1', OutputTreatment='Average', OutputWorkspace='quartz') self._check_output(mtd['quartz'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['quartz'], 'Quartz')
def test_quartz_transmission_as_value(self): PolDiffILLReduction(Run='396917', ProcessAs='Empty', OutputWorkspace='container_ws') quartz_transmission = '0.95124' PolDiffILLReduction(Run='396939', ProcessAs='Quartz', OutputWorkspace='quartz', Transmission=quartz_transmission, OutputTreatment='AveragePol', EmptyContainerWorkspace='container_ws') self.assertTrue('quartz_transmission' in mtd) self.assertTrue(mtd['quartz_transmission'].readY(0)[0] == float(quartz_transmission)) self._check_output(mtd['quartz'], 1, 132, 3, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['quartz'], 'Quartz')
def d7_reduction_test_sample_sum(self): PolDiffILLReduction(Run='397004,397005', ProcessAs='Sample', OutputWorkspace='sample_sum', SampleAndEnvironmentProperties=self._sampleProperties, ScatteringAngleBinSize=1.0, OutputTreatment='Sum') self._check_output(mtd['sample_sum'], 132, 1, 1, 'Scattering Angle', 'Label', 'Height', 'Label') self._check_process_flag(mtd['sample_sum'], 'Sample')
def d7_reduction_test_vanadium_sum_flat_plate(self): PolDiffILLReduction(Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_sum_num_flat_plate', SelfAttenuationMethod='Numerical', SampleGeometry="FlatPlate", SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Sum') self._check_output(mtd['vanadium_sum_num_flat_plate'], 1, 132, 1, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_sum_num_flat_plate'], 'Vanadium')
def d7_reduction_test_vanadium_individual_annulus_monte_carlo(self): PolDiffILLReduction(Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_ind_mc_annulus', SelfAttenuationMethod='MonteCarlo', SampleGeometry="Annulus", SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Individual') self._check_output(mtd['vanadium_ind_mc_annulus'], 1, 132, 12, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_ind_mc_annulus'], 'Vanadium')
def d7_reduction_test_vanadium_individual_transmission_attenuation(self): PolDiffILLReduction(Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_ind_transmission_att', SelfAttenuationMethod='Transmission', SampleGeometry="None", Transmission='0.95', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Individual') self._check_output(mtd['vanadium_ind_transmission_att'], 1, 132, 12, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_ind_transmission_att'], 'Vanadium')
def test_sample(self): sampleProperties = {'FormulaUnits': 1, 'SampleMass': 2.93, 'FormulaUnitMass': 182.56} PolDiffILLReduction(Run='397004', ProcessAs='Sample', OutputWorkspace='sample', SampleAndEnvironmentProperties=sampleProperties, OutputTreatment='Individual') self._check_output(mtd['sample'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['sample'], 'Sample')
def d7_reduction_test_sample_individual_incoherent(self): PolDiffILLReduction( Run='397004,397005', ProcessAs='Sample', OutputWorkspace='sample_individual', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Individual') self._check_output(mtd['sample_individual'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['sample_individual'], 'Sample') D7AbsoluteCrossSections( InputWorkspace='sample_individual', OutputWorkspace='sample_individual_incoherent', CrossSectionSeparationMethod='XYZ', NormalisationMethod='Incoherent', OutputTreatment='Merge', OutputUnits='TwoTheta', SampleAndEnvironmentProperties=self._sampleProperties) self._check_output(mtd['sample_individual_incoherent'], 263, 1, 6, 'Scattering Angle', 'Label', 'Height', 'Label', post_processed=True)
def test_container(self): PolDiffILLReduction(Run='396917', ProcessAs='Empty', OutputWorkspace='container_ws') self._check_output(mtd['container_ws'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['container_ws'], 'Empty')
def d7_reduction_test_vanadium_individual_cylinder_numerical(self): PolDiffILLReduction(Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_ind_num_cylinder', SelfAttenuationMethod='Numerical', SampleGeometry="Cylinder", SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Individual') self._check_output(mtd['vanadium_ind_num_cylinder'], 1, 132, 12, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_ind_num_cylinder'], 'Vanadium')
def test_sample_tof(self): # creates table workspace with mock elastic peak positions and widths: table_ws = CreateEmptyTableWorkspace() table_ws.addColumn("float", "PeakCentre") table_ws.addColumn("float", "Sigma") for row in range(132): table_ws.addRow([1645.2, 15.0]) sampleProperties = { 'SampleMass': 2.93, 'FormulaUnitMass': 50.94, 'EPWidth': 15 } yig_calibration_file = "D7_YIG_calibration_TOF.xml" PolDiffILLReduction(Run='395639', ProcessAs='Sample', OutputWorkspace='sample_tof', SampleAndEnvironmentProperties=sampleProperties, SampleGeometry='None', OutputTreatment='Individual', InstrumentCalibration=yig_calibration_file, ElasticChannelsWorkspace='table_ws', MeasurementTechnique='TOF') self._check_output(mtd['sample_tof'], 339, 132, 2, 'Energy transfer', 'DeltaE', 'Spectrum', 'Label') self._check_process_flag(mtd['sample_tof'], 'Sample')
def d7_reduction_test_sample_individual_paramagnetic(self): PolDiffILLReduction( Run='397004,397005', ProcessAs='Sample', OutputWorkspace='sample_individual', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Individual') self._check_output(mtd['sample_individual'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['sample_individual'], 'Sample') D7AbsoluteCrossSections( InputWorkspace='sample_individual', OutputWorkspace='sample_individual_paramagnetic', CrossSectionSeparationMethod='XYZ', NormalisationMethod='Paramagnetic', OutputTreatment='Individual', OutputUnits='Q', SampleAndEnvironmentProperties=self._sampleProperties) self._check_output(mtd['sample_individual_paramagnetic'], 132, 1, 6, 'q', 'MomentumTransfer', 'Wavelength', 'Wavelength', post_processed=True, normalised_individually=True)
def d7_reduction_test_vanadium_scatter(self): PolDiffILLReduction(Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_scatter', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='IndividualXY') self._check_output(mtd['vanadium_full'], 264, 1, 1, 'Momentum transfer', 'Momentum transfer', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_scatter'], 'Vanadium')
def test_vanadium(self): sampleProperties = {'FormulaUnits': 1, 'SampleMass': 8.54, 'FormulaUnitMass': 50.94} PolDiffILLReduction(Run='396993', ProcessAs='Vanadium', OutputWorkspace='vanadium', SampleAndEnvironmentProperties=sampleProperties, OutputTreatment='Individual') self._check_output(mtd['vanadium'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium'], 'Vanadium')
def test_absorber(self): PolDiffILLReduction(Run='396928', ProcessAs='Cadmium', OutputWorkspace='absorber_ws') self._check_output(mtd['absorber_ws'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['absorber_ws'], 'Cadmium')
def d7_reduction_test_vanadium_sum_user(self): CloneWorkspace(InputWorkspace='numerical_attenuation_ws', OutputWorkspace='numerical_attenuation_ws_clone') PolDiffILLReduction(Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_sum_user', SelfAttenuationMethod='User', SampleGeometry="Custom", SampleSelfAttenuationFactors='numerical_attenuation_ws_clone', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Sum') self._check_output(mtd['vanadium_sum_user'], 1, 132, 1, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_sum_user'], 'Vanadium')
def test_beam(self): PolDiffILLReduction(Run='396983', ProcessAs='EmptyBeam', OutputWorkspace='beam_ws') self._check_output(mtd['beam_ws'], 1, 1, 1, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['beam_ws'], 'EmptyBeam') self.assertAlmostEqual(mtd['beam_ws_1'].readY(0)[0], 5.566, delta=1e-3)
def d7_reduction_test_sample_tof_gauss_bckg_subtraction(self): yig_calibration_file = "D7_YIG_calibration_TOF.xml" # uses TOF vanadium sample as the source of background PolDiffILLReduction(Run='396016', ProcessAs='Empty', OutputWorkspace='container_ws') PolDiffILLReduction(Run='395639', ProcessAs='Sample', OutputWorkspace='sample_tof_data_bckg', SampleAndEnvironmentProperties=self._sampleProperties, SampleGeometry='None', OutputTreatment='Individual', Transmission='0.95', EmptyContainerWorkspace='container_ws', InstrumentCalibration=yig_calibration_file, MeasurementTechnique='TOF', ConvertToEnergy=False, SubtractTOFBackgroundMethod='Gaussian' ) self._check_output(mtd['sample_tof_data_bckg'], 512, 132, 2, 'Time-of-flight', 'TOF', 'Spectrum', 'Label') self._check_process_flag(mtd['sample_tof_data_bckg'], 'Sample')
def test_absorber_transmission(self): PolDiffILLReduction(Run='396991', ProcessAs='BeamWithCadmium', OutputWorkspace='cadmium_ws') self._check_output(mtd['cadmium_ws'], 1, 1, 1, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['cadmium_ws'], 'BeamWithCadmium') self.assertAlmostEqual(mtd['cadmium_ws_1'].readY(0)[0], 0.06, delta=1e-3)
def d7_reduction_test_vanadium_average_2theta(self): PolDiffILLReduction( Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_average', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='AverageTwoTheta') self._check_output(mtd['vanadium_average'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_average'], 'Vanadium')
def d7_reduction_test_sample_full_reduction(self): PolDiffILLReduction(Run='396983', ProcessAs='EmptyBeam', OutputWorkspace='beam_ws') PolDiffILLReduction(Run='396985', ProcessAs='Transmission', OutputWorkspace='quartz_transmission', EmptyBeamWorkspace='beam_ws') PolDiffILLReduction(Run='396917,396918', ProcessAs='Empty', OutputWorkspace='container_ws') PolDiffILLReduction(Run='396928,396929', ProcessAs='Cadmium', OutputWorkspace='absorber_ws') PolDiffILLReduction(Run='396991', ProcessAs='BeamWithCadmium', OutputWorkspace='cadmium_ws') PolDiffILLReduction(Run='396939,397000', ProcessAs='Quartz', OutputWorkspace='pol_corrections', Transmission='quartz_transmission', CadmiumTransmissionWorkspace='cadmium_ws', OutputTreatment='AveragePol') PolDiffILLReduction(Run='396990', ProcessAs='Transmission', OutputWorkspace='vanadium_transmission', CadmiumTransmissionWorkspace='cadmium_ws', EmptyBeamWorkspace='beam_ws') PolDiffILLReduction(Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_full', CadmiumWorkspace='absorber_ws', EmptyContainerWorkspace='container_ws', Transmission='vanadium_transmission', QuartzWorkspace='pol_corrections', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Sum') PolDiffILLReduction(Run='396986,396987', ProcessAs='Transmission', OutputWorkspace='sample_transmission', CadmiumTransmissionWorkspace='cadmium_ws', EmptyBeamWorkspace='beam_ws') PolDiffILLReduction(Run='397004,397005', ProcessAs='Sample', OutputWorkspace='sample_full', CadmiumWorkspace='absorber_ws', EmptyContainerWorkspace='container_ws', Transmission='vanadium_transmission', QuartzWorkspace='pol_corrections', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Individual') self._check_output(mtd['sample_full'], 1, 132, 12, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['sample_full'], 'Sample') D7AbsoluteCrossSections(InputWorkspace='sample_full', OutputWorkspace='sample_full_normalised', CrossSectionSeparationMethod='XYZ', VanadiumInputWorkspace='vanadium_full', NormalisationMethod='Vanadium', OutputTreatment='Merge', OutputUnits='Q', SampleAndEnvironmentProperties=self._sampleProperties, AbsoluteUnitsNormalisation=True) self._check_output(mtd['sample_full_normalised'], 263, 1, 6, 'q', 'MomentumTransfer', 'Height', 'Label')
def test_vanadium_tof(self): sampleProperties = {'SampleMass': 8.54, 'FormulaUnitMass': 50.94, 'EPWidth': 15} yig_calibration_file = "D7_YIG_calibration_TOF.xml" PolDiffILLReduction(Run='396016', ProcessAs='Vanadium', OutputWorkspace='vanadium_tof', SampleAndEnvironmentProperties=sampleProperties, SampleGeometry='None', OutputTreatment='Sum', InstrumentCalibration=yig_calibration_file, MeasurementTechnique='TOF') self.assertTrue('vanadium_tof' in mtd) self.assertTrue('vanadium_tof_elastic' in mtd) self._check_output(mtd['vanadium_tof'], 1, 132, 1, 'Energy transfer', 'DeltaE', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_tof'], 'Vanadium')
def d7_reduction_test_vanadium_full_reduction(self): PolDiffILLReduction(Run='396983', ProcessAs='EmptyBeam', OutputWorkspace='beam_ws') PolDiffILLReduction(Run='396985', ProcessAs='Transmission', OutputWorkspace='quartz_transmission', EmptyBeamWorkspace='beam_ws') PolDiffILLReduction(Run='396917,396918', ProcessAs='Empty', OutputWorkspace='container_ws') PolDiffILLReduction(Run='396928,396929', ProcessAs='Cadmium', OutputWorkspace='absorber_ws') PolDiffILLReduction(Run='396991', ProcessAs='BeamWithCadmium', OutputWorkspace='cadmium_ws') PolDiffILLReduction(Run='396939,397000', ProcessAs='Quartz', OutputWorkspace='pol_corrections', Transmission='quartz_transmission', CadmiumTransmissionWorkspace='cadmium_ws', OutputTreatment='AveragePol') PolDiffILLReduction(Run='396990', ProcessAs='Transmission', OutputWorkspace='vanadium_transmission', CadmiumTransmissionWorkspace='cadmium_ws', EmptyBeamWorkspace='beam_ws') PolDiffILLReduction( Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_full', CadmiumWorkspace='absorber_ws', EmptyContainerWorkspace='container_ws', Transmission='vanadium_transmission', QuartzWorkspace='pol_corrections', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Sum') self._check_output(mtd['vanadium_full'], 1, 132, 6, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_full'], 'Vanadium')
def d7_reduction_test_sample_crop_tof_axis(self): # creates table workspace with mock elastic peak positions and widths: table_ws = CreateEmptyTableWorkspace() table_ws.addColumn("float", "PeakCentre") table_ws.addColumn("float", "Sigma") for row in range(132): table_ws.addRow([1645.2, 15.0]) sampleProperties = {'SampleMass': 2.93, 'FormulaUnitMass': 50.94} yig_calibration_file = "D7_YIG_calibration_TOF.xml" PolDiffILLReduction(Run='395639', ProcessAs='Sample', OutputWorkspace='sample_tof', SampleAndEnvironmentProperties=sampleProperties, SampleGeometry='None', OutputTreatment='Individual', InstrumentCalibration=yig_calibration_file, ElasticChannelsWorkspace=table_ws, MeasurementTechnique='TOF', ConvertToEnergy=False, MaxTOFChannel=500 ) self._check_output(mtd['sample_tof'], 500, 132, 2, 'Time-of-flight', 'TOF', 'Spectrum', 'Label') self._check_process_flag(mtd['sample_tof'], 'Sample')
def d7_reduction_test_vanadium_individual(self): PolDiffILLReduction(Run='396993,396994', ProcessAs='Vanadium', OutputWorkspace='vanadium_individual', SampleAndEnvironmentProperties=self._sampleProperties, OutputTreatment='Individual') self._check_output(mtd['vanadium_individual'], 1, 132, 12, 'Wavelength', 'Wavelength', 'Spectrum', 'Label') self._check_process_flag(mtd['vanadium_individual'], 'Vanadium')