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'))
예제 #3
0
HFIRCalculateGoniometer(filter_int_peaks2)

leanelasticpeaks3 = PredictPeaks("data",
                                 ReflectionCondition='B-face centred',
                                 OutputType='LeanElasticPeak')

ws = CreatePeaksWorkspace()
SetUB(ws, a=2, b=2, c=2)
p = PredictPeaks(ws, OutputType='LeanElasticPeak', CalculateWavelength=False)

peaks = leanelasticpeaks3

wavelength = peaks.run()['wavelength'].value

flip_x = peaks.getInstrument().getName() == "HB3A"

if peaks.getInstrument().getName() == "HB3A":
    inner = math.isclose(peaks.run().getTimeAveragedStd("omega"), 0.0)
else:
    inner = False

for n in range(peaks.getNumberPeaks()):
    p = peaks.getPeak(n)
    g = Goniometer()
    g.calcFromQSampleAndWavelength(V3D(*p.getQSampleFrame()), wavelength,
                                   flip_x, inner)
    p.setWavelength(wavelength)
    p.setGoniometerMatrix(g.getR())
    print(g.getEulerAngles('YZY'))