def PyExec(self): peaks = self.getProperty('Workspace').value wavelength = self.getProperty("Wavelength").value if wavelength == Property.EMPTY_DBL: wavelength = float(peaks.run()['wavelength'].value) if self.getProperty("OverrideProperty").value: flip_x = self.getProperty("FlipX").value inner = self.getProperty("InnerGoniometer").value else: flip_x = peaks.getInstrument().getName() == "HB3A" if peaks.getInstrument().getName() == "HB3A": inner = math.isclose(peaks.run().getTimeAveragedStd("omega"), 0.0) else: inner = False starting_goniometer = peaks.run().getGoniometer().getR() for n in range(peaks.getNumberPeaks()): p = peaks.getPeak(n) g = Goniometer() g.setR(starting_goniometer) g.calcFromQSampleAndWavelength(V3D(*p.getQSampleFrame()), wavelength, flip_x, inner) self.log().information( "Found goniometer omega={:.2f} chi={:.2f} phi={:.2f} for peak {} with Q_sample {}" .format(*g.getEulerAngles('YZY'), n, p.getQSampleFrame())) p.setWavelength(wavelength) p.setGoniometerMatrix(g.getR())
InputWorkspace='ConvertHFIRSCDtoMDETest_data', Wavelength=1.488) ConvertHFIRSCDtoMDETest_peaks = FindPeaksMD( InputWorkspace=ConvertHFIRSCDtoMDETest_Q, PeakDistanceThreshold=2.2, CalculateGoniometerForCW=True, Wavelength=1.488) ConvertHFIRSCDtoMDETest_leanpeaks = FindPeaksMD( InputWorkspace=ConvertHFIRSCDtoMDETest_Q, PeakDistanceThreshold=2.2, OutputType='LeanElasticPeak') LoadMD('./ExternalData/Testing/Data/SystemTest/HB2C_WANDSCD_norm.nxs', OutputWorkspace='ConvertWANDSCDtoQTest_norm') ConvertWANDSCDtoQTest_Q = ConvertWANDSCDtoQ( InputWorkspace='ConvertHFIRSCDtoMDETest_data', NormalisationWorkspace='ConvertWANDSCDtoQTest_norm') ConvertWANDSCDtoQTest_peaks = FindPeaksMD( InputWorkspace=ConvertWANDSCDtoQTest_Q, PeakDistanceThreshold=2, CalculateGoniometerForCW=True, Wavelength=1.488) from mantid.geometry import Goniometer wavelength = 1.488 for n in range(ConvertHFIRSCDtoMDETest_leanpeaks.getNumberPeaks()): p = ConvertHFIRSCDtoMDETest_leanpeaks.getPeak(n) g = Goniometer() g.calcFromQSampleAndWavelength(p.getQSampleFrame(), wavelength) p.setWavelength(wavelength) p.setGoniometerMatrix(g.getR()) print(g.getEulerAngles('YZY'))
def test_setR_getR(self): g = Goniometer() r = np.array([(1., 0., 0.), (0., 0., 1.), (0., -1., 0.)]) g.setR(r) self.assertTrue((g.getR() == r).all())