Package gda.device

Interface ScannableMotion

All Superinterfaces:
Configurable, Device, Findable, gda.observable.IObservable, Scannable
All Known Subinterfaces:
ContinuouslyScannable, IAirBearingScannableMotor, IScannableMotor, IScannableMotorObservable, ITweakableScannableMotor, IXesEnergyScannable, IXesSpectrometerScannable, ScannableMotionUnits, SimulatedContinuouslyScannable
All Known Implementing Classes:
AbsorptionCoefficient, AirBearingScannableMotor, B18EnergyScannable, BeamlineWavelength, BeamSize, BeforeAfterScannable, BeforeAfterScannables, BeforeCheckScannable, CalibratedAmplifier, CircHklScannable, ConicHklScannable, ConicIndexScannable, ConicThScannable, ControllerScannable, ConvertorScannable, CoupledScannable, Crystal1PitchScannable, CVScan, CVScan, DataReductionScannable, DeferredScannable, DoseCalculator, DummyConstantVelocityRasterScannable, DummyContinuouslyScannable, DummyControlPoint, DummyMultiFieldUnitsScannable, DummyPersistentScannable, DummyPersistentUnitsScannable, DummyRealPositionReader, DummyScannable, DummyScannableFieldScannableMotion, DummyScannableMotor, DummyTemp, DummyTemperature, DummyUnitsScannable, EndstationPhotonEnergyProvider, EpicsControlPoint, EpicsControlPointWithStatus, EpicsScannable, Eurotherm2K, GapControlCheckingEnergyController, GdaLakeshore340, HklScannable, I18SampleFocusScannable, I23FluoScanEnergyControllerWrapper, IdealBaseX, JohannSpectrometer, JythonEnumPositionerWrapper, JythonScannableWrapper, KeyenceLightScannable, Lakeshore340With4Outputs, Lauda, LinkamCI, LinkamT95, Marlow, MonoMoveWithOffsetScannable, MultiPVScannable, OxfordCryostream700, ParametrisedHklScannable, PassthroughScannableMotionUnitsDecorator, PIE725ConstantVelocityRasterScannable, PIE725ConstantVelocityRasterScannable3Axis, QexafsScannable, QexafsTestingScannable, QueuedScriptDrivenScannableMotionUnits, SampleXYZAxis, ScannableAttenuatorWedge, ScannableMotionBase, ScannableMotionUnitsBase, ScannableMotionUnitsObservableWrapper, ScannableMotionWithScannableFieldsBase, ScannableMotionWithScannableFieldsBase.ScannableField, ScannableMotor, ScannableRotatingGonio, ScanResetDummyUnitScannable, ScriptDrivenScannableMotionUnits, SequentialScannable, SimpleEpicsTemperatureController, SmarGonScannableMotor, TemperatureBase, TrajectoryScannableMotor, TurboXasScannable, TweakableScannableMotor, TwoJawSlitGap, TwoJawSlitPosition, VmxmJacksPiezoScannable, XESEnergyScannable, XesSpectrometerScannable, XesSpectrometerScannableBase, ZebraQexafsScannable, ZebraScannableMotor, ZebraScannableMotorForQexafs

public interface ScannableMotion extends Scannable
Interface for any object which operates in scans and represents a value or array of numbers. This could be a physical value such as motor positions or sample environment attribute, or something abstract such as time.

This extends the Scannable interface with methods relating to an array of limits. These are user limits which can be changed dynamically at runtime and are in addition to any hard limits or those held at another level of software

  • Field Details

    • FIRSTINPUTLIMITS

      static final String FIRSTINPUTLIMITS
      The attribute to ask for to get the effective limits of the first input of the Scannable. Returns Double[2]. The array or individual entries could be null to indicate no limit.
      See Also:
  • Method Details

    • checkPositionWithinGdaLimits

      String checkPositionWithinGdaLimits(Double[] externalPosition)
      Returns null if okay, or a descriptive error if not. Code only called if limits are set.
      Parameters:
      externalPosition - position in external representation
      Returns:
      null if okay, or a descriptive error if not
    • checkPositionWithinGdaLimits

      String checkPositionWithinGdaLimits(Object externalPosition)
      Returns null if okay, or a descriptive error if not. Code only called if limits are set.
      Parameters:
      externalPosition - position in external representation
      Returns:
      null or description of any error
    • setLowerGdaLimits

      void setLowerGdaLimits(Double[] externalLowerLim) throws Exception
      Set lower Scannable limits in external representation. Setting the input null will remove lower limits from the Scannable. Otherwise, any element can be null indicating that the corresponding field has no limit.
      Parameters:
      externalLowerLim - limit in external representation
      Throws:
      Exception
    • setLowerGdaLimits

      void setLowerGdaLimits(Double externalLowerLim) throws Exception
      Set lower Scannable limit in external representation. Setting the input null will remove the lower limit from the Scannable.
      Parameters:
      externalLowerLim - limit in external representation
      Throws:
      Exception
    • getLowerGdaLimits

      Double[] getLowerGdaLimits()
      Get lower Scannable limits in external representation. Will be null if no lower limits are set. Otherwise, any element can be null indicating that the corresponding field has no limit.
      Returns:
      Double[] limit in external representation
    • setUpperGdaLimits

      void setUpperGdaLimits(Double[] externalUpperLim) throws Exception
      Set upper Scannable limits in external representation. Setting the input null will remove upper limits from the Scannable. Otherwise, any element can be null indicating that the corresponding field has no limit.
      Parameters:
      externalUpperLim - limit in external representation
      Throws:
      Exception
    • setUpperGdaLimits

      void setUpperGdaLimits(Double externalUpperLim) throws Exception
      Set upper Scannable limit in external representation. Setting the input null will remove the upper limit from the Scannable.
      Parameters:
      externalUpperLim - limit in external representation
      Throws:
      Exception
    • getUpperGdaLimits

      Double[] getUpperGdaLimits()
      Get upper Scannable limits in external representation
      Returns:
      Double[] limit in external representation
    • getTolerances

      Double[] getTolerances() throws DeviceException
      Gets the scannables values of tolerance. If no values have been set then returns an array of zeros. This is for 'real world' motors which may not move to their desired location and do not throw an exception.
      Returns:
      Double[]
      Throws:
      DeviceException
    • setTolerance

      void setTolerance(Double tolerence) throws DeviceException
      Parameters:
      tolerence -
      Throws:
      DeviceException
    • setTolerances

      void setTolerances(Double[] tolerence) throws DeviceException
      Parameters:
      tolerence -
      Throws:
      DeviceException
    • getNumberTries

      int getNumberTries()
      This is the number of times the Scannable should attempt to move to the target position. Useful when the underlying hardware is problematic and often fails or ignores calls without throwing an exception. This should be used in conjunction with setting the tolerance attribute.
      Returns:
      the numberTries
    • setNumberTries

      void setNumberTries(int numberTries)
      Parameters:
      numberTries - the numberTries to set
    • a

      void a(Object position) throws DeviceException
      Throws:
      DeviceException
    • ar

      void ar(Object position) throws DeviceException
      Throws:
      DeviceException
    • r

      void r(Object position) throws DeviceException
      Throws:
      DeviceException
    • setOffset

      void setOffset(Double... offsetArray)
      Set offset(s) in amounts of external quantities. May be null, or any element may be null, indicating no offset is to be applied/removed.
      Parameters:
      offsetArray - must match number of input fields.
    • setScalingFactor

      void setScalingFactor(Double... scaleArray)
      Set scaling factor(s) as Doubles. May be null, or any element may be null, indicating no scale is to be applied/removed.
      Parameters:
      scaleArray - must match number of input fields.
    • getOffset

      Double[] getOffset()
      Returns offset(s) in amounts of external quantities. May be null, or any element may be null, indicating no offset is to be applied/removed.
    • getScalingFactor

      Double[] getScalingFactor()
      Returns scaling factor(s) as Doubles. May be null, or any element may be null, indicating no scale is to be applied/removed.