Class SampleMovementServiceAdapter

java.lang.Object
gda.factory.FindableBase
uk.ac.gda.services.samplemovementservice.SampleMovementServiceAdapter
All Implemented Interfaces:
Findable, SampleMovementService

@ServiceInterface(SampleMovementService.class) public class SampleMovementServiceAdapter extends FindableBase implements SampleMovementService
  • Constructor Details

    • SampleMovementServiceAdapter

      public SampleMovementServiceAdapter()
  • Method Details

    • getService

      public SampleMovementService getService()
    • moveSampleByMicrons

      public void moveSampleByMicrons(double h, double v, double b) throws DeviceException
      Description copied from interface: SampleMovementService
      Moves the sample in 'real-world' microns. When standing behind the goniometer, with the beam travelling right, H +ve is away from you, V +ve is vertically up, and B +ve is along the beam:

      In this coordinate system, the B and V axes are not affected by any rotation of the goniometer; they are always orthogonal with respect to the H axis.

      To calculate the required physical movement, this method will take into account the rotation of the goniometer. A movement along 'standard' goniometer axes will be calculated using the current value of ω (along with the direction in which the goniometer rotates for a +ve rotation of ω).

      Specified by:
      moveSampleByMicrons in interface SampleMovementService
      Throws:
      DeviceException
    • moveSampleByMicronsAlongBeamlineAxes

      public void moveSampleByMicronsAlongBeamlineAxes(double x, double y, double z) throws DeviceException
      Description copied from interface: SampleMovementService
      Moves the sample along the beamline's goniometer axes.
      Specified by:
      moveSampleByMicronsAlongBeamlineAxes in interface SampleMovementService
      Throws:
      DeviceException
    • moveSampleByMicronsAlongStandardAxes

      public void moveSampleByMicronsAlongStandardAxes(double h, double v, double b) throws DeviceException
      Description copied from interface: SampleMovementService
      Moves the sample along the three standard goniometer axes. When standing behind the goniometer, with the beam travelling right, H +ve is away from you. The V and B axes are the axes that rotate as the goniometer rotates.

      When ω = 0°, V +ve will be vertically up, and B +ve will be along the beam, as with 'real-world' coordinates:

      As the goniometer rotates, the V and B axes also rotate. If the goniometer rotates anticlockwise for a +ve rotation of ω, then when ω = 90°:

      A beamline-dependent movement will be calculated using the beamline's axis orientation matrix. This simply involves reorienting the three axes.

      Specified by:
      moveSampleByMicronsAlongStandardAxes in interface SampleMovementService
      Throws:
      DeviceException
    • setService

      public void setService(SampleMovementService service)