Package gda.scan

Class ContinuousScan

All Implemented Interfaces:
IConcurrentScanChild, NestableScan, Scan, ScanChild, Serializable
Direct Known Subclasses:
TurboXasScan

public class ContinuousScan extends ConcurrentScanChild
Performs a continuous scan using Histogram detectors. NOTE: bypasses the ScanDataPointPipeline mechanism.

This extends ConcurrentScan so it can be a child scan of a ConcurrentScan and effectively be another dimension in a multi-dimensional scan.

This will not operate any child scans, so must be the lowest dimension in a n-dimensional scan.

See Also:
  • Constructor Details

  • Method Details

    • isReadoutConcurrent

      public boolean isReadoutConcurrent()
      Overrides:
      isReadoutConcurrent in class ConcurrentScanChild
    • getDimension

      public int getDimension()
      Description copied from class: ScanBase
      default implementation. Classes that derive from ScanBase which want to support the reporting of scan dimensions -@see getDimensions need to override this method
      Specified by:
      getDimension in interface Scan
      Overrides:
      getDimension in class ScanBase
      Returns:
      the number of points of this scan object - the whole scan execution can be a hierarchy of parent scan objects and layers of child scan objects
      See Also:
    • isScannableToBeMoved

      protected IScanObject isScannableToBeMoved(Scannable scannable)
      This method is used by the scan base class when preparing for the start of the scan.

      This needs to be overriden by this class to prevent operation of the continuous scannable, but still enable other Scannables in the scan to be setup for the scan. This is especially useful for when a continuous scan is part of a multi-dimensional scan.

      Overrides:
      isScannableToBeMoved in class ConcurrentScanChild
      Parameters:
      scannable -
      Returns:
      the ScanObject
    • doCollection

      public void doCollection() throws Exception
      Description copied from interface: Scan
      The method in which the work of the scan is performed. This method assumes that the data handler has already been created and the baton claimed.
      Specified by:
      doCollection in interface Scan
      Specified by:
      doCollection in class ScanBase
      Throws:
      Exception
    • createContinuousParameters

      protected ContinuousParameters createContinuousParameters()
    • endScan

      protected void endScan() throws DeviceException, InterruptedException
      Description copied from class: ScanBase
      This should be called by all scans when they have finished, including when an exception has been raised.
      Overrides:
      endScan in class ScanBase
      Throws:
      DeviceException
      InterruptedException
    • getCommand

      public String getCommand()
      Specified by:
      getCommand in interface IConcurrentScanChild
      Overrides:
      getCommand in class ConcurrentScanChild
      Returns:
      Returns the command.
    • getTotalNumberOfPoints

      public int getTotalNumberOfPoints()
      Description copied from interface: IConcurrentScanChild
      The total number of points in the multi-dimesional scan i.e. the number of ScanDataPoints which would need displaying/recording
      Specified by:
      getTotalNumberOfPoints in interface IConcurrentScanChild
      Specified by:
      getTotalNumberOfPoints in interface Scan
      Overrides:
      getTotalNumberOfPoints in class ScanBase
      Returns:
      the total number of nodes at which data will be collected in this scan. This includes all the dimensions in a multi-dimensional scan.
    • isBiDirectional

      public boolean isBiDirectional()
    • setBiDirectional

      public void setBiDirectional(boolean biDirectional)
      When true, when this scan is used as the innermost dimension of a multidimensional scan (nest of scans), then each repetition will be in the opposite direction.

      NB: as the data will be coming out in the reversed direction for every other scan then a custom DataWriter will need to be used to perform the corrections to the data. TODO move the functionality in XasAsciiNexusDatapointCompletingDataWriter in the exafs.datawriter plugin to core.

      Parameters:
      biDirectional -
    • getScanAxis

      public ContinuouslyScannable getScanAxis()
    • getScanDetectors

      public BufferedDetector[] getScanDetectors()
    • setStatus

      void setStatus(Scan.ScanStatus status)
      To allow nests of scans to share a common status with each other.
      Parameters:
      status -