Class BufferedNXDetector
- All Implemented Interfaces:
Detector,BufferedDetector,NexusDetector,Device,Scannable,Configurable,Findable,gda.observable.IObservable,Serializable
readFrames(int, int)) are determined by the 'additional plugin' chain on the detector
and are the same as returned during a step scan. (This detector class also works in a step scan.)- See Also:
-
Field Summary
Fields inherited from class gda.device.detector.DetectorBase
collectionTimeFields inherited from class gda.device.scannable.ScannableBase
__doc__, DEFAULT_INPUT_NAME, DEFAULT_OUTPUT_FORMAT, extraNames, inputNames, level, outputFormatFields inherited from class gda.device.DeviceBase
DEFAULT_PROTECTION_LEVEL_PROPERTYFields inherited from interface gda.device.Scannable
ATTR_NEXUS_CATEGORY, ATTR_NX_CLASS, DEFAULT_INPUT_NAME, VALUE_UNAVAILABLE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidHook to be used by Scan and pos commands to inform the Scannable that an exception, such as a DeviceExcpetion, has occurred.voidCalled for every Scannable at the end of a group of nested scans (or a single scan if that is the case).voidCalled for every Scannable at the end of every scanvoidCalled for every Scannable at the start of every scanvoidCalled for every Scannable at the start of a group of nested scans (or a single scan if that is the case)voidClears the detector memoryvoidTells the detector to begin to collect a set of data, then returns immediately.voidDefault 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.booleanReturns a value which indicates whether the detector creates its own files.doubleReturns the time, in seconds, the detector collects for during the next call to collectData()String[]Additional names for extra values that returned by getPosition().intString[]Returns an array of strings which are the format strings to use when pretty printing parts of the outputintReturns the current collecting state of the device.booleanintAs certain detectors may cause memory issues if too many frames are attempted to be read in one go, this is the maximum for this detector based on its current configuration (i.e.voidDefault which should be overridden by subclasses.Object[]An array of the data from the detector.Object[]readFrames(int startFrame, int finalFrame) An array of the data from the detector.readout()Returns the latest data collected.voidsetBaseRoiPvName(String baseRoiPvName) Set base PV name of ROI plugin to use (e.g.voidsetBaseStatPvName(String baseStatPvName) Set base PV name of Stat plugin to use.voidsetCollectionStrategy(NXCollectionStrategyPlugin collectionStrategy) Set the collection strategy to be used to prepare the detector for a ContinuousScan.voidsetCollectionTime(double collectionTime) Sets the collection time, in seconds, to be used during the next call of collectData.voidsetContinuousMode(boolean on) When in slave mode the detector will be triggered by an external signal to collect each frame of data.voidsetContinuousParameters(ContinuousParameters parameters) Sets the parameters which define the continuous movement to usevoidsetCurrentPointPointPvName(String currentPointPointPvName) Set this to manually set the PV to use to get the current number of points in the time series array.voidsetDetector(NXDetector detector) voidsetMaximumReadFrames(int numFrames) voidstop()Stop the current move/operation.voidReturns when operation carried out by moveTo has completedMethods inherited from class gda.device.detector.DetectorBase
asynchronousMoveTo, checkPositionValid, endCollection, getDataDimensions, getDescription, getDetectorID, getDetectorType, getPosition, isBusy, toFormattedStringMethods inherited from class gda.device.scannable.ScannableBase
__call__, __call__, __doc__, __getitem__, __len__, __repr__, __str__, atLevelEnd, atLevelMoveStart, atLevelStart, atPointEnd, atPointStart, externalToInternal, getInputNames, getLevel, getScanMetadataAttribute, getScanMetadataAttributeNames, getScanMetadataAttributes, internalToExternal, isAt, moveTo, rawAsynchronousMoveTo, rawGetPosition, setExtraNames, setInputNames, setLevel, setOutputFormat, setScanMetadataAttribute, setScanMetadataAttributes, throwExceptionIfInvalidTarget, toString, validateScannable, valueUnavailableString, waitWhileBusyMethods inherited from class gda.device.DeviceBase
addIObserver, close, deleteIObserver, deleteIObservers, getAttribute, getName, getProtectionLevel, isBeingObserved, isConfigureAtStartup, notifyIObservers, setAttribute, setConfigureAtStartup, setName, setProtectionLevelMethods inherited from class gda.factory.ConfigurableBase
isConfigured, reconfigure, setConfiguredMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface gda.factory.Configurable
isConfigureAtStartup, isConfigured, reconfigureMethods inherited from interface gda.device.Detector
endCollection, getDataDimensions, getDescription, getDetectorID, getDetectorType, getFileStructureMethods inherited from interface gda.device.Device
close, getAttribute, getProtectionLevel, setAttribute, setProtectionLevelMethods inherited from interface gda.observable.IObservable
addIObserver, deleteIObserver, deleteIObserversMethods inherited from interface gda.device.Scannable
asynchronousMoveTo, atLevelEnd, atLevelMoveStart, atLevelStart, atPointEnd, atPointStart, checkPositionValid, getInputNames, getLevel, getPosition, getScanMetadataAttribute, getScanMetadataAttributeNames, getScanMetadataAttributes, isAt, isBusy, moveTo, setExtraNames, setInputNames, setLevel, setOutputFormat, setScanMetadataAttribute, setScanMetadataAttributes, toFormattedString
-
Constructor Details
-
BufferedNXDetector
public BufferedNXDetector()
-
-
Method Details
-
configure
Description copied from class:ConfigurableBaseDefault 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:
configurein interfaceConfigurable- Overrides:
configurein classConfigurableBase- Throws:
FactoryException- if there is an error in configuration e.g. required variable not set or cannot connect to device
-
setContinuousParameters
Description copied from interface:BufferedDetectorSets the parameters which define the continuous movement to use- Specified by:
setContinuousParametersin interfaceBufferedDetector- Parameters:
parameters-- Throws:
DeviceException
-
getContinuousParameters
- Specified by:
getContinuousParametersin interfaceBufferedDetector- Returns:
- ContinuousParameters
- Throws:
DeviceException
-
setContinuousMode
Description copied from interface:BufferedDetectorWhen in slave mode the detector will be triggered by an external signal to collect each frame of data.- Specified by:
setContinuousModein interfaceBufferedDetector- Parameters:
on-- Throws:
DeviceException
-
isContinuousMode
- Specified by:
isContinuousModein interfaceBufferedDetector- Returns:
- true if the detector is ready to accept trigger pulses
- Throws:
DeviceException
-
readFrames
Description copied from interface:BufferedDetectorAn array of the data from the detector. Each element is one frame of data. The first frame is 0.- Specified by:
readFramesin interfaceBufferedDetector- Parameters:
startFrame-finalFrame-- Returns:
- Object
- Throws:
DeviceException
-
readAllFrames
Description copied from interface:BufferedDetectorAn array of the data from the detector. Each element is one frame of data.- Specified by:
readAllFramesin interfaceBufferedDetector- Returns:
- Object
- Throws:
DeviceException
-
getNumberFrames
- Specified by:
getNumberFramesin interfaceBufferedDetector- Returns:
- number of frames of data in memory which have been collected
- Throws:
DeviceException
-
clearMemory
Description copied from interface:BufferedDetectorClears the detector memory- Specified by:
clearMemoryin interfaceBufferedDetector- Throws:
DeviceException
-
maximumReadFrames
Description copied from interface:BufferedDetectorAs certain detectors may cause memory issues if too many frames are attempted to be read in one go, this is the maximum for this detector based on its current configuration (i.e. after setContinuousMode(True) has been called.The lowest value returned from any of the detectors in a continuous scan will be the limit set.
If there is no limit then this method should return Integer.MAX_VALUE.
- Specified by:
maximumReadFramesin interfaceBufferedDetector- Returns:
- int - the maximum number of frames which should be read at any one time from this detector
- Throws:
DeviceException
-
setMaximumReadFrames
public void setMaximumReadFrames(int numFrames) -
collectData
Description copied from interface:DetectorTells the detector to begin to collect a set of data, then returns immediately. Should cause the hardware to start collecting immediately: if there is any delay then detectors used in the same scan would collect over different times when beam conditions may differ.- Specified by:
collectDatain interfaceDetector- Throws:
DeviceException
-
prepareForCollection
Description copied from class:DetectorBaseDefault which should be overridden by subclasses.- Specified by:
prepareForCollectionin interfaceDetector- Overrides:
prepareForCollectionin classDetectorBase- Throws:
DeviceException- See Also:
-
getStatus
Description copied from interface:DetectorReturns the current collecting state of the device.- Specified by:
getStatusin interfaceDetector- Returns:
- BUSY if the detector has not finished the requested operation(s), IDLE if in an completely idle state and STANDBY if temporarily suspended.
- Throws:
DeviceException
-
createsOwnFiles
Description copied from interface:DetectorReturns a value which indicates whether the detector creates its own files. If it does (return true) the readout() method returns the name of the latest file created as a string. If it does not (return false) the readout() method will return the data directly.- Specified by:
createsOwnFilesin interfaceDetector- Returns:
- true if readout() returns filenames
- Throws:
DeviceException
-
readout
Description copied from interface:DetectorReturns the latest data collected. The size of the Object returned must be consistent with the values returned by getDataDimensions and getExtraNames.If
LocalProperties.GDA_SCAN_CONCURRENTSCAN_READOUT_CONCURRENTLYis true then motors may be moved while the detector readouts. The value returned must not be effected by any concurrent motor or shutter movements. SeeDetector.waitWhileBusy()andConcurrentScan. Readout must block until the detector is ready to respond quickly toDetector.collectData()again.- Specified by:
readoutin interfaceDetector- Specified by:
readoutin interfaceNexusDetector- Returns:
- the data collected
- Throws:
DeviceException
-
setCollectionTime
Description copied from interface:DetectorSets the collection time, in seconds, to be used during the next call of collectData.- Specified by:
setCollectionTimein interfaceDetector- Overrides:
setCollectionTimein classDetectorBase- Parameters:
collectionTime- the collection time in seconds- Throws:
DeviceException
-
getCollectionTime
Description copied from interface:DetectorReturns the time, in seconds, the detector collects for during the next call to collectData()- Specified by:
getCollectionTimein interfaceDetector- Overrides:
getCollectionTimein classDetectorBase- Returns:
- double
- Throws:
DeviceException
-
atScanStart
Description copied from class:ScannableBaseCalled for every Scannable at the start of a group of nested scans (or a single scan if that is the case) Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.- Specified by:
atScanStartin interfaceScannable- Overrides:
atScanStartin classScannableBase- Throws:
DeviceException- See Also:
-
atScanLineStart
Description copied from class:ScannableBaseCalled for every Scannable at the start of every scan Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.- Specified by:
atScanLineStartin interfaceScannable- Overrides:
atScanLineStartin classScannableBase- Throws:
DeviceException- See Also:
-
atScanEnd
Description copied from class:ScannableBaseCalled for every Scannable at the end of a group of nested scans (or a single scan if that is the case).Note that this is only called if the Scan finishes normally, or has been requested to finish early. This will not be called if the scan finishes due to an exception of any kind. See
Scannable.atCommandFailure()Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.- Specified by:
atScanEndin interfaceScannable- Overrides:
atScanEndin classScannableBase- Throws:
DeviceException- See Also:
-
atScanLineEnd
Description copied from class:ScannableBaseCalled for every Scannable at the end of every scan Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.- Specified by:
atScanLineEndin interfaceScannable- Overrides:
atScanLineEndin classScannableBase- Throws:
DeviceException- See Also:
-
atCommandFailure
Description copied from class:ScannableBaseHook to be used by Scan and pos commands to inform the Scannable that an exception, such as a DeviceExcpetion, has occurred. However not called when the command is aborted using an InterruptionException. If a Scan is aborted then onlyScannable.stop()will be called by the Scan or pos command.Useful for telling Scannables which hold state during a scan for example, to reset themselves. Used for example by CoordinatedMotionScannables. This hook should be used not in the same way as the stop hook. Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.
- Specified by:
atCommandFailurein interfaceScannable- Overrides:
atCommandFailurein classScannableBase- Throws:
DeviceException- See Also:
-
stop
Description copied from class:ScannableBaseStop 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:
stopin interfaceScannable- Overrides:
stopin classScannableBase- Throws:
DeviceException- See Also:
-
waitWhileBusy
Description copied from class:ScannableBaseReturns when operation carried out by moveTo has completed If this is to be overriden, isBusy must also be valid. Although the pos and scan command currently use this method to determine if the Scannable is busy, this must not be relied upon.- Specified by:
waitWhileBusyin interfaceDetector- Specified by:
waitWhileBusyin interfaceScannable- Overrides:
waitWhileBusyin classScannableBase- Throws:
InterruptedExceptionDeviceException
-
getDetector
-
setDetector
-
getOutputFormat
Description copied from interface:ScannableReturns an array of strings which are the format strings to use when pretty printing parts of the output- Specified by:
getOutputFormatin interfaceScannable- Overrides:
getOutputFormatin classScannableBase- Returns:
- string array
-
getExtraNames
Description copied from interface:ScannableAdditional names for extra values that returned by getPosition().- Specified by:
getExtraNamesin interfaceScannable- Overrides:
getExtraNamesin classScannableBase- Returns:
- array of names of the extra elements if the array returned by getPosition is larger than the array required by moveTo
-
getBaseStatPvName
-
setBaseStatPvName
Set base PV name of Stat plugin to use. (e.g. "ws146-AD-SIM-01:STAT:") -
getBaseRoiPvName
-
setBaseRoiPvName
Set base PV name of ROI plugin to use (e.g. "ws146-AD-SIM-01:ROI:") -
getCollectionStrategy
-
setCollectionStrategy
Set the collection strategy to be used to prepare the detector for a ContinuousScan.- Parameters:
collectionStrategy-
-
getCurrentPointPointPvName
-
setCurrentPointPointPvName
Set this to manually set the PV to use to get the current number of points in the time series array. If not set (or set to empty string), the PV provided by NXDetector ADRoiStatsPair plugin will be used. (i.e. TSCurrentPoint, or TS:TSCurrentPoint for RHEL7)- Parameters:
currentPointPointPvName-
-