Readout Priority¶
readoutPriority is a key part of the device configuration that controls when BEC reads a device during a scan. It is independent of the ophyd Kind attribute, which controls which signals are included in those device.read() or device.read_configuration() operations. Together they determine which data will be included in scan data, configuration data or excluded.
Readout Priority Options¶
BEC supports four readout priorities that can be assigned to devices in the configuration. The
most common ones are monitored and baseline, which are used for devices that should be read at
monitored scan read points and baseline points, respectively. The async priority is used for
devices that produce asynchronous data streams, while on_request is for devices that should only
be read when explicitly requested.
Modifications during Scans¶
If the user requests to scan a motor that is not configured as monitored, the scan typically promotes it to monitored for that scan request. This ensures that scan motors are always included in monitored data, even if their static configuration differs.
Practical guidance¶
- Choose
monitoredfor devices that should be monitored in scans. - Choose
baselinefor mostly static setup-state devices and motors. - Choose
on_requestfor devices that should only be read when explicitly requested. - Choose
asyncfor devices like large-area detectors that produce asynchronous data streams.
What to remember
readoutPrioritycontrols when BEC reads a device during acquisition.- Keep
readoutPriorityseparate from ophydKind:Kinddefines which signals appear inread()andread_configuration(), whilereadoutPrioritydefines when BEC asks for those readings during a scan. monitored,baseline,on_request, andasyncserve different scan roles and should be chosen intentionally.- Scan motors may be promoted to
monitoredfor a specific scan even if their static config says otherwise. readoutPriorityand ophydKindsolve different problems: timing versus content.