Class MockNeXusScannable
- All Implemented Interfaces:
INexusDevice<NXpositioner>,IActivatable,IBoundable<Number>,ILevel,INameable,IScanAttributeContainer,IScannable<Number>,ITerminatable,ITimeoutable,ITolerable<Number>,IPositionListenable
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.eclipse.scanning.api.ITerminatable
ITerminatable.TerminationPreference -
Field Summary
FieldsFields inherited from class org.eclipse.scanning.example.scannable.MockScannable
positionFields inherited from class org.eclipse.scanning.api.AbstractScannable
delegate -
Constructor Summary
ConstructorsConstructorDescriptionMockNeXusScannable(String name, Number position, int level) MockNeXusScannable(String name, Number position, int level, String unit) -
Method Summary
Modifier and TypeMethodDescriptionReturns the object provider required for writing correct NeXus files.booleanvoidsetPosition(Number value, IPosition position) Moves to the position required, blocking until it is complete.voidsetWritingOn(boolean writingOn) Methods inherited from class org.eclipse.scanning.example.scannable.MockScannable
abort, doRealisticMove, equalsWithinTolerance, getMaximum, getMinimum, getMoveRate, getPosition, getUnit, getValues, isRealisticMove, isRequireSleep, setInitialPosition, setMaximum, setMinimum, setMoveRate, setPosition, setRealisticMove, setRequireSleep, setUnit, terminate, toString, verifyMethods inherited from class org.eclipse.scanning.api.CountableScannable
count, getCount, getMethodName, resetCountMethods inherited from class org.eclipse.scanning.api.AbstractScannable
addPositionListener, getDeviceInformation, getLevel, getModel, getScanAttribute, getScanAttributeNames, getTolerance, isActivated, register, removePositionListener, setActivated, setLevel, setModel, setPublisher, setScanAttribute, setToleranceMethods inherited from class org.eclipse.scanning.api.AbstractNameableTimeoutable
equals, getTimeout, hashCode, setTimeoutMethods inherited from class org.eclipse.scanning.api.AbstractNameable
getName, setNameMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.scanning.api.IBoundable
getPermittedValuesMethods inherited from interface org.eclipse.dawnsci.nexus.INexusDevice
getCustomNexusModification, getName, getNexusProviders, registerMethods inherited from interface org.eclipse.scanning.api.scan.event.IPositionListenable
getPositioner, setPositionerMethods inherited from interface org.eclipse.scanning.api.ITimeoutable
getTimeout, setTimeout
-
Field Details
-
FIELD_NAME_SET_VALUE
- See Also:
-
-
Constructor Details
-
MockNeXusScannable
public MockNeXusScannable() -
MockNeXusScannable
-
MockNeXusScannable
-
-
Method Details
-
isWritingOn
public boolean isWritingOn() -
setWritingOn
public void setWritingOn(boolean writingOn) -
scanFinally
public void scanFinally() -
getNexusProvider
Description copied from interface:INexusDeviceReturns the object provider required for writing correct NeXus files.In this method you should prepare the
LazyDatasets the device will fill during the scan. You can also write out static device metadata, which will not change during the scan.Use the methods on
NexusNodeFactoryto create a NeXus object which matches the device e.g. aNXdetector.final NXdetector detector = NexusNodeFactory.createNXdetector();On the detector object you can create
In this method you can also write static metadata such as the detector exposure e.g.LazyDatasets and keep references which you can later use during the scan to write data. e.g.imageData = detector.initializeLazyDataset(NXdetector.NX_DATA, info.getRank() + 2, Double.class);You should also set chunking on theLazyDatasets you create e.g.imageData.setChunking(info.createChunk(detectorXSize, detectorYSize));.detector.setField("exposure_time", model.getExposure());. Or static datasets such as the image axis datadetector.setDataset("image_x_axis", DatasetFactory.createLinearSpace(DoubleDataset.class, minX, maxX, xPoints));For fields that are defined in the NXDL base class definition for the returned nexus object, a setXXX or setXXXScalar method may be used as appropriate, e.g.detector.setLocalName(DatasetFactory.createFromObject("my detector"));ordetector.setLocalNameScalar("my detector");If this device is a 'metadata scannable', then the device should write its data at this point directly into the returned nexus object. This can be done with the
NXobject.setField(String, Object)method, or thesetXXXScalarmethods for fields defined in the appropriate NXDL base class definition.The default implementation of this method throws
UnsupportedOperationException. One of either this method orINexusDevice.getNexusProviders(NexusScanInfo)must be overridden to create and return the nexus object(s) for thisINexusDevice.- Specified by:
getNexusProviderin interfaceINexusDevice<NXpositioner>- Parameters:
info- information about the scan which can be useful when creating datasets e.g.info.getRank()- Returns:
- The
NXobjectcreated using thenodeFactoryto represent this device - Throws:
NexusException- if the nexus object could not be created for any reason
-
setPosition
Description copied from interface:IScannableMoves to the position required, blocking until it is complete. Similar to moveTo(...) in GDA8- Specified by:
setPositionin interfaceIScannable<Number>- Overrides:
setPositionin classMockScannable- Parameters:
value- that this scalar should take.position- if within in a scan or null if not within a scan.- Returns:
- the new position attained by the device, if known. (Saves additional call to getPosition()) If not know the demand value is returned. NOTE if null is returned the system will call getPosition() again.
- Throws:
ScanningException
-