Class MonoOptimisation

java.lang.Object
gda.factory.FindableBase
uk.ac.gda.beamline.i20.scannable.MonoOptimisation
All Implemented Interfaces:
Findable

public class MonoOptimisation extends FindableBase
Functions to perform optimisation of monochromator, i.e. adjust bragg offset to maximise throughput
Since:
26/8/2016
  • Constructor Details

    • MonoOptimisation

      public MonoOptimisation(Scannable scannableToMove, Scannable scannableToMonitor)
  • Method Details

    • optimise

      public void optimise(double lowEnergy, double highEnergy) throws Exception
      Throws:
      Exception
    • setDaServer

      public void setDaServer(DAServer daServerForTfg)
    • getDaServer

      public DAServer getDaServer()
    • setProduceVetoOutput

      public void setProduceVetoOutput(boolean vetoOn)
      Send DAServer commands to switch between normal and no veto output (Veto output is used for for triggering detectors such as Xspress2, XMap, Medipix) NORMAL_VETO_OUTPUT_COMMAND, NO_VETO_OUTPUT_COMMAND are the commands sent to DAServer to switch Veto output on and off.
      Parameters:
      vetoOn - true = veto output, false no veto output
    • optimiseManual

      public void optimiseManual(Scannable bragg, double braggEnergy) throws DeviceException
      Throws:
      DeviceException
    • loadDataFromNexusFile

      public org.eclipse.january.dataset.Dataset loadDataFromNexusFile(String filename) throws NexusException, org.eclipse.january.DatasetException
      Load optimisation scan data from nexus file. Combine position and detector values into a single Dataset..
      Parameters:
      filename -
      Returns:
      Dataset with position data in 1st column, detector data in 2nd.
      Throws:
      NexusException
      org.eclipse.january.DatasetException
    • doManualScan

      public org.eclipse.january.dataset.Dataset doManualScan() throws DeviceException
      Scan bragg offset without using normal scanning mechanism (so it can be run in the middle of a scan)
      Returns:
      Dataset of position and detector values.
      Throws:
      DeviceException
      InterruptedException
    • configureOffsetParameters

      public void configureOffsetParameters(MonoMoveWithOffsetScannable braggWithOffset)
      Setup the offset parameters in a MonoMoveWithOffsetScannable object from the Gaussians fitted during optimise(double, double).
      Parameters:
      braggWithOffset -
    • setSelectNewScansInPlotView

      public void setSelectNewScansInPlotView(boolean selectNewScansInPlotView)
    • getSelectNewScansInPlotView

      public boolean getSelectNewScansInPlotView()
    • getFittedGaussianLowEnergy

      public Gaussian getFittedGaussianLowEnergy()
    • getFittedGaussianHighEnergy

      public Gaussian getFittedGaussianHighEnergy()
    • getScannableToMonitor

      public Scannable getScannableToMonitor()
    • setScannableToMonitor

      public void setScannableToMonitor(Scannable scannableToMonitor)
    • getScannableToMove

      public Scannable getScannableToMove()
    • setScannableToMove

      public void setScannableToMove(Scannable scannableToMove)
    • getOffsetStart

      public double getOffsetStart()
    • setOffsetStart

      public void setOffsetStart(double offsetStart)
    • getOffsetEnd

      public double getOffsetEnd()
    • setOffsetEnd

      public void setOffsetEnd(double offsetEnd)
    • getOffsetNumPoints

      public int getOffsetNumPoints()
    • setOffsetNumPoints

      public void setOffsetNumPoints(int offsetNumPoints)
    • getCollectionTime

      public double getCollectionTime()
    • setCollectionTime

      public void setCollectionTime(double collectionTime)
    • setFitToPeakPointsOnly

      public void setFitToPeakPointsOnly(boolean b)
    • getFitToPeakPointsOnly

      public boolean getFitToPeakPointsOnly()
    • getPeakPointRange

      public int getPeakPointRange()
    • setPeakPointRange

      public void setPeakPointRange(int peakPointRange)
    • goldenSectionSearch

      public static double goldenSectionSearch(Scannable scannableToMove, Scannable scannableToMonitor, double minPos, double maxPos, double tolerance) throws DeviceException, InterruptedException
      Peak finding algorithm based on golden section search method.
      Parameters:
      scannableToMove -
      scannableToMonitor -
      minPos -
      maxPos -
      tolerance -
      Returns:
      position of scannableToMove that gives peak value of scannableToMonitor
      Throws:
      DeviceException
      InterruptedException
      Since:
      31/8/2016
    • getBraggScannable

      public Scannable getBraggScannable()
    • setBraggScannable

      public void setBraggScannable(Scannable braggScannable)
    • getAllowOptimisation

      public boolean getAllowOptimisation()
    • setAllowOptimisation

      public void setAllowOptimisation(boolean allowOptimisation)
    • getPhotonShutter

      public EnumPositioner getPhotonShutter()
    • setPhotonShutter

      public void setPhotonShutter(EnumPositioner photonShutter)
    • getDiagnosticPositioner

      public EnumPositioner getDiagnosticPositioner()
    • setDiagnosticPositioner

      public void setDiagnosticPositioner(EnumPositioner diagnosticPositioner)
    • isUseDiagnosticDetector

      public boolean isUseDiagnosticDetector()
    • setUseDiagnosticDetector

      public void setUseDiagnosticDetector(boolean useDiagnosticDetector)
    • setZeroBraggOffsetAfterFailure

      public void setZeroBraggOffsetAfterFailure(boolean restore)
      Set to true to set Bragg offset to zero after a failed/aborted scan
      Parameters:
      restore -