def PyExec(self): import EnginXUtils # Get peaks in dSpacing from file expectedPeaksD = EnginXUtils.readInExpectedPeaks(self.getPropertyValue("ExpectedPeaksFromFile"), self.getProperty('ExpectedPeaks').value) if len(expectedPeaksD) < 1: raise ValueError("Cannot run this algorithm without any input expected peaks") # Get expected peaks in TOF for the detector inWS = self.getProperty("InputWorkspace").value dimType = inWS.getXDimension().getName() if self.EXPECTED_DIM_TYPE != dimType: raise ValueError("This algorithm expects a workspace with %s X dimension, but " "the X dimension of the input workspace is: '%s'" % (self.EXPECTED_DIM_TYPE, dimType)) wsIndex = self.getProperty("WorkspaceIndex").value # FindPeaks will return a list of peaks sorted by the centre found. Sort the peaks as well, # so we can match them with fitted centres later. expectedPeaksToF = sorted(self._expectedPeaksInTOF(expectedPeaksD, inWS, wsIndex)) foundPeaks = self._peaksFromFindPeaks(inWS, expectedPeaksToF, wsIndex) if foundPeaks.rowCount() < len(expectedPeaksToF): txt = "Peaks effectively found: " + str(foundPeaks)[1:-1] self.log().warning("Some peaks from the list of expected peaks were not found by the algorithm " "FindPeaks which this algorithm uses to check that the data has the the " "expected peaks. " + txt) peaksTableName = self.getPropertyValue("OutFittedPeaksTable") difc, zero = self._fitAllPeaks(inWS, wsIndex, (foundPeaks, expectedPeaksD), peaksTableName) self._produceOutputs(difc, zero)
def PyExec(self): import EnginXUtils focussed_ws = self._focusRun(self.getProperty('InputWorkspace').value, self.getProperty('Bank').value, self.getProperty(self.INDICES_PROP_NAME).value) # Get peaks in dSpacing from file expectedPeaksD = EnginXUtils.readInExpectedPeaks(self.getPropertyValue("ExpectedPeaksFromFile"), self.getProperty('ExpectedPeaks').value) if len(expectedPeaksD) < 1: raise ValueError("Cannot run this algorithm without any input expected peaks") difc, zero = self._fitParams(focussed_ws, expectedPeaksD) self._produceOutputs(difc, zero)
def PyExec(self): # Get peaks in dSpacing from file, and check we have what we need, before doing anything expectedPeaksD = EnginXUtils.readInExpectedPeaks(self.getPropertyValue("ExpectedPeaksFromFile"), self.getProperty('ExpectedPeaks').value) if len(expectedPeaksD) < 1: raise ValueError("Cannot run this algorithm without any input expected peaks") inWS = self.getProperty('Workspace').value WSIndices = EnginXUtils.getWsIndicesFromInProperties(inWS, self.getProperty('Bank').value, self.getProperty(self.INDICES_PROP_NAME).value) rebinnedWS = self._prepareWsForFitting(inWS) posTbl = self._calculateCalibPositionsTbl(rebinnedWS, WSIndices, expectedPeaksD) # Produce 2 results: 'output table' and 'apply calibration' + (optional) calibration file self.setProperty("OutDetPosTable", posTbl) self._applyCalibrationTable(inWS, posTbl) self._outputDetPosFile(self.getPropertyValue('OutDetPosFilename'), posTbl)