Package gda.scan
Class TurboXasMotorParameters
java.lang.Object
gda.scan.TurboXasMotorParameters
This class calculates real space motor positions for a Turbo XAS scan from user specified set of parameters based on energy.
- Since:
- 14/7/2016
-
Constructor Summary
ConstructorsConstructorDescription -
Method Summary
Modifier and TypeMethodDescriptionvoidCalculate motor position step size and number of readouts/steps to use for scan from energy values.static TurboXasMotorParametersCreate newTurboXasMotorParametersobject deserialized from supplied XML string.doubledoublegetEnergyForPosition(double position) doubledoubledoubledoublebooleanValidate motor initial, final positiondoubledoubledoubleintdoublegetPositionForEnergy(double energy) doubleorg.apache.commons.math3.analysis.polynomials.PolynomialFunctiondoubleCalculate resolution limited position step size corresponding to currently set energy.doubledoubledoubledoubledoublegetScanSpeed(double timeForSpectra) Calculate motor speed required to move between start, end scan positions in given timedoubledoubledoubledoubledoublegetTotalTimeForScan(double motorSpeed) Calculate total time to move from one end of scan to the other at specified motor speed, including accel and velocity stabilisationvoidvoidsetMotorHighLimit(double motorHighLimit) voidsetMotorLimits(Scannable scannableMotor) Get motor limits from scannableMotorvoidsetMotorLowLimit(double motorLowLimit) voidsetMotorMaxSpeed(double maxMotorSpeed) voidvoidsetMotorParametersForTime(double timeForSpectrum) Calculate and set motor parameters for given time for spectrum.voidsetMotorParametersForTimingGroup(int timingGroupIndex) Calculate motor parameters for specified timing group of a scan : Initial, final positions including velocity ramp up/down, velocity stabilisation distance; Motor speed is calculated from motor range for energy range of scan and time per spectrum spectrum See Turbo XAS scans confluence page for more details.voidsetMotorParametersForTimingGroup(TurboSlitTimingGroup timingGroup) voidsetMotorStabilisationDistance(double motorStabilisationDistance) voidsetMotorTimeToVelocity(double motorTimeToVelocity) voidsetPositionToEnergyPolynomial(String eqnString) voidsetReturnMotorSpeed(double returnMotorSpeed) voidsetScanParameters(TurboXasParameters params) voidsetStepsizeResolution(double stepsizeResolution) voidtoXML()SerializeTurboXasMotorParametersobject to XML.booleanValidate motor parametersbooleanbooleanValidate the scan motor move range.booleanValidate currently set motor scan speedbooleanValidate motor scan speed for all timing groups
-
Constructor Details
-
TurboXasMotorParameters
public TurboXasMotorParameters() -
TurboXasMotorParameters
-
-
Method Details
-
setDefaultMotorParams
public void setDefaultMotorParams() -
setMotorLimits
Get motor limits from scannableMotor- Parameters:
scannableMotor-
-
setScanParameters
-
setPositionToEnergyPolynomial
-
getPositionToEnergyPolynomial
public org.apache.commons.math3.analysis.polynomials.PolynomialFunction getPositionToEnergyPolynomial() -
getScanParameters
-
getCurrentTimingGroup
- Returns:
- timing group last used to set motor parameters by call to
setMotorParametersForTimingGroup(int)
-
setMotorParameters
public void setMotorParameters() -
setMotorParametersForTimingGroup
public void setMotorParametersForTimingGroup(int timingGroupIndex) Calculate motor parameters for specified timing group of a scan : Initial, final positions including velocity ramp up/down, velocity stabilisation distance; Motor speed is calculated from motor range for energy range of scan and time per spectrum spectrum See Turbo XAS scans confluence page for more details.- Parameters:
timingGroupIndex-
-
getScanSpeed
public double getScanSpeed(double timeForSpectra) Calculate motor speed required to move between start, end scan positions in given time- Parameters:
timeForSpectra-- Returns:
- motor speed
-
getTotalTimeForScan
public double getTotalTimeForScan(double motorSpeed) Calculate total time to move from one end of scan to the other at specified motor speed, including accel and velocity stabilisation- Returns:
- total time
-
getTotalTimeForScan
public double getTotalTimeForScan() -
setMotorParametersForTimingGroup
-
setMotorParametersForTime
public void setMotorParametersForTime(double timeForSpectrum) Calculate and set motor parameters for given time for spectrum.- Parameters:
timeForSpectrum-
-
calculateSetPositionStepSize
public void calculateSetPositionStepSize()Calculate motor position step size and number of readouts/steps to use for scan from energy values. (i.e. 'Pulse step' and 'Max pulses' used for Zebra). Stepsize is encoder resolution limited to avoid rounding errors that can lead to difference between expected number of pulses and number produced by zebra from encoder readout - seegetResolutionLimitedStepSize(). -
getResolutionLimitedStepSize
public double getResolutionLimitedStepSize()Calculate resolution limited position step size corresponding to currently set energy. Step size is rounded down to neareststepsizeResolutionmm.- Returns:
- Resolution limited step size
-
getStepsizeResolution
public double getStepsizeResolution() -
setStepsizeResolution
public void setStepsizeResolution(double stepsizeResolution) -
showParameters
public void showParameters() -
validMotorScanRange
public boolean validMotorScanRange()Validate the scan motor move range. If range is zero, it probably means that the initial, final energies are the same, or that something wrong with energy cal. polynomial.- Returns:
- True if > minimum motor move size
-
validMotorScanSpeed
public boolean validMotorScanSpeed()Validate currently set motor scan speed- Returns:
- True if speed is invalid input: '<' maximum speed of motor
-
validMotorReturnSpeed
public boolean validMotorReturnSpeed() -
validMotorScanSpeeds
public boolean validMotorScanSpeeds()Validate motor scan speed for all timing groups- Returns:
- True if speeds for all groups are invalid input: '<' maximum speed of motor
-
getMotorPositionsWithinLimits
public boolean getMotorPositionsWithinLimits()Validate motor initial, final position- Returns:
- True if motor range is within motor limits
-
validateParameters
public boolean validateParameters()Validate motor parameters- Returns:
- True if motor positions, speed
-
getPositionForEnergy
public double getPositionForEnergy(double energy) -
getEnergyForPosition
public double getEnergyForPosition(double position) -
getMotorMaxSpeed
public double getMotorMaxSpeed() -
setMotorMaxSpeed
public void setMotorMaxSpeed(double maxMotorSpeed) -
getMotorTimeToVelocity
public double getMotorTimeToVelocity() -
setMotorTimeToVelocity
public void setMotorTimeToVelocity(double motorTimeToVelocity) -
getMotorHighLimit
public double getMotorHighLimit() -
setMotorHighLimit
public void setMotorHighLimit(double motorHighLimit) -
getMotorLowLimit
public double getMotorLowLimit() -
setMotorLowLimit
public void setMotorLowLimit(double motorLowLimit) -
getMotorStabilisationDistance
public double getMotorStabilisationDistance() -
setMotorStabilisationDistance
public void setMotorStabilisationDistance(double motorStabilisationDistance) -
getScanStartPosition
public double getScanStartPosition()- Returns:
- Start scan position of motor (from user specified start energy)
-
getScanEndPosition
public double getScanEndPosition()- Returns:
- End scan position of motor (from user specified end energy)
-
getStartPosition
public double getStartPosition()- Returns:
- Start position for motor (including ramp and stabilisation distance)
-
getEndPosition
public double getEndPosition()- Returns:
- End position for motor (including ramp and stabilisation distance)
-
getScanMotorSpeed
public double getScanMotorSpeed()- Returns:
- Motor speed to be used during scan during data collection
-
getReturnMotorSpeed
public double getReturnMotorSpeed() -
setReturnMotorSpeed
public void setReturnMotorSpeed(double returnMotorSpeed) -
getScanPositionRange
public double getScanPositionRange() -
getMotorRampDistance
public double getMotorRampDistance() -
getNumReadoutsForScan
public int getNumReadoutsForScan() -
getPositionStepsize
public double getPositionStepsize() -
getEnergyStepSize
public double getEnergyStepSize()- Returns:
- Energy stepsize corresponding to currently set number of readouts. (Number of readouts is set using a resolution limited position stepsize)
-
toXML
SerializeTurboXasMotorParametersobject to XML.- Returns:
- String with XML serialized object
- Throws:
com.fasterxml.jackson.core.JsonProcessingExceptionIOException
-
fromXML
public static TurboXasMotorParameters fromXML(String xmlString) throws IOException, com.fasterxml.jackson.core.JsonProcessingException Create newTurboXasMotorParametersobject deserialized from supplied XML string.- Parameters:
xmlString-- Returns:
- TurboXasMotorParameters object
- Throws:
com.fasterxml.jackson.core.JsonProcessingExceptioncom.fasterxml.jackson.databind.JsonMappingExceptionIOException
-