Class XesSpectrometerScannable

All Implemented Interfaces:
INeXusInfoWriteable, Device, Scannable, ScannableMotion, ScannableMotionUnits, IXesSpectrometerScannable, Configurable, Findable, gda.observable.IObservable, gda.observable.IObserver

Controls the I20 XES Secondary Spectrometer.

Provides a mapping between the motors which support the detector and analyser crystals, and the energy of the x-rays incident on the detector.

Assumes the detector motor has been calibrated in such a way that its position is the same as the Bragg angle.

  • Constructor Details

    • XesSpectrometerScannable

      public XesSpectrometerScannable()
  • Method Details

    • configure

      public void configure() throws FactoryException
      Description copied from class: ConfigurableBase
      Default implementation for classes that do not have to do any specific configuration.
      Classes that do their own configuration should *not* call this superclass function, as it may cause the object to appear configured before it really is.
      Specified by:
      configure in interface Configurable
      Overrides:
      configure in class ConfigurableBase
      Throws:
      FactoryException - if there is an error in configuration e.g. required variable not set or cannot connect to device
    • reconfigure

      public void reconfigure() throws FactoryException
      Description copied from interface: Configurable
      Re-initialisation of values and states.

      Moved from Reconfigurable which has been deleted

      Specified by:
      reconfigure in interface Configurable
      Overrides:
      reconfigure in class ConfigurableBase
      Throws:
      FactoryException
    • stop

      public void stop() throws DeviceException
      Description copied from class: ScannableBase
      Stop the current move/operation. Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.
      Specified by:
      stop in interface Scannable
      Overrides:
      stop in class XesSpectrometerScannableBase
      Throws:
      DeviceException
      See Also:
    • isBusy

      public boolean isBusy() throws DeviceException
      Description copied from class: ScannableMotionBase
      Check if the Scannable is moving/operating.. Calls onto rawIsBusy for historical reasons, although there is currently no need for this.
      Specified by:
      isBusy in interface Scannable
      Overrides:
      isBusy in class XesSpectrometerScannableBase
      Returns:
      true - if operation carried out by moveTo has not completed yet
      Throws:
      DeviceException
      See Also:
    • rawAsynchronousMoveTo

      public void rawAsynchronousMoveTo(Object position) throws DeviceException
      Description copied from class: ScannableBase
      [Consider abstract] Trigger a move/operation to an internal/hardware position and return immediately.
      Overrides:
      rawAsynchronousMoveTo in class ScannableBase
      Parameters:
      position - Position in its internal/hardware representation. e.g. with units and offsets removed
      Throws:
      DeviceException
      See Also:
    • getSpectrometerPositions

      public Map<Scannable,Double> getSpectrometerPositions(double targetBragg)
      This is used externally, to return all the spectrometer motor values for a given bragg angle
      Parameters:
      targetBragg -
      Returns:
      map of scannable positions (key = scannable, value = position)
    • getDetectorAxisAngle

      public double getDetectorAxisAngle()
    • setDetectorAxisAngle

      public void setDetectorAxisAngle(double detectorAxisAngle)
      Set the angle of the detector translation axis relative to the analyser coordinate system.
      Parameters:
      detectorAxisAngle -
    • rawGetPosition

      public Object rawGetPosition() throws DeviceException
      Description copied from class: ScannableBase
      [Consider abstract] Read the position in its internal (user) representation.
      Overrides:
      rawGetPosition in class ScannableBase
      Returns:
      the value represented by this Scannable
      Throws:
      DeviceException
      See Also:
    • toFormattedString

      public String toFormattedString()
      Description copied from interface: Scannable
      Returns a string representation of the Scannable and its current position/value/status

      Typically should return:

      name : position

      or for detectors, name : status

      If the position/status cannot be determined, the function should return Scannable.VALUE_UNAVAILABLE in its place.

      Specified by:
      toFormattedString in interface Scannable
      Overrides:
      toFormattedString in class ScannableMotionUnitsBase
      Returns:
      string as defined above
    • getTrajectoryStepSize

      public Double getTrajectoryStepSize()
    • setTrajectoryStepSize

      public void setTrajectoryStepSize(Double trajectoryStepSize)
    • getHorizontalCrystalOffset

      public double getHorizontalCrystalOffset()
    • setHorizontalCrystalOffset

      public void setHorizontalCrystalOffset(double horizontalOffset)
    • setUpperRow

      public void setUpperRow(boolean isUpper)
    • isUpperRow

      public boolean isUpperRow()
    • getPositionAngleMultiplier

      public double[] getPositionAngleMultiplier()
    • getAnalyserDemandPrecision

      public double[] getAnalyserDemandPrecision()
    • setAnalyserDemandPrecision

      public void setAnalyserDemandPrecision(double[] analyserDemandPrecisions)
    • getAnalyserPositionTolerance

      public double[] getAnalyserPositionTolerance()
    • setAnalyserPositionTolerance

      public void setAnalyserPositionTolerance(double[] analyserPositionTolerance)
    • getDetectorDemandPrecision

      public double[] getDetectorDemandPrecision()
    • setDetectorDemandPrecision

      public void setDetectorDemandPrecision(double[] detectorDemandPrecision)
    • getDetectorPositionTolerance

      public double[] getDetectorPositionTolerance()
    • setDetectorPositionTolerance

      public void setDetectorPositionTolerance(double[] detectorPositionTolerance)
    • getDirectDemandScannablesMap

      public Map<Scannable,Scannable> getDirectDemandScannablesMap()
    • setDirectDemandScannablesMap

      public void setDirectDemandScannablesMap(Map<Scannable,Scannable> directDemandScannablesMap)
    • getDeferredMoveStartStopGroup

      public ScannableGroup getDeferredMoveStartStopGroup()
    • setDeferredMoveStartStopGroup

      public void setDeferredMoveStartStopGroup(ScannableGroup deferredMoveStartStopGroup)
    • isUseDeferredMove

      public boolean isUseDeferredMove()
    • setUseDeferredMove

      public void setUseDeferredMove(boolean useDeferredMove)