4 - Vetos and Run control
Status
Accepted
Context
Vetos
Vetos are currently used by DAE2/DAE3 to mark neutron data as not useful - these are usually hardware signals fed into the DAE by other sources such as ISIS central timing systems and choppers.
This will remain fairly similar for the streamed data and will be fed in via the VXI control boards, which has registers for viewing the status of vetos.
There are two ways that an event packet could be vetoed, configurable via the VXI streaming control board (and the WLSF modules individually):
Software veto: Emit the frame, but mark it as invalid using veto flags
Hardware veto: Do not emit the frame
Long term, we will likely need to allow for both modes. We may also need to support each mode for each different type of veto - e.g. not emitting frames if one type of veto is active, while emitting frames marked as invalid for another type of veto.
Data is still forwarded by UDP, but may not get processed into the ev44 format if it is vetoed. This is configurable by the streaming boards.
Run control
Run control is controlled by IBEX using the existing Run Control IOC. The concept of ‘suspending’ data collection if sample environment is outside a desired range will still be required.
Decision
There will be a register, in the streaming control VXI crate that kafka_dae_control can write to, which will be set via EPICS by the run control IOC. This register will act exactly like a hardware veto signal, except will be controlled by software. The runcontrol status will be monitored by kafka_dae_control, and when it changes, kafka_dae_control will write to the corresponding register in the streaming control VXI crate.
The overall concept of GOOD Frames and RAW Frames will still be needed, as scientists will use genie.waitfor_frames and similar functions to control their run durations.
We have also agreed with DSG that the WLSF modules should not be allowed to individually veto data despite this being technically possible and this should be the responsibility of the VXI control board.
Consequences
The existing concept of Run Control is retained. This means that commands such as
genie.waitfor_frameswill work largely as before, minimising required changes to instrument scripts.The existing concepts of GOOD Frames and RAW Frames are retained.
Existing vetoes will largely map across onto the new system.
kafka_dae_controlwill need to monitor the run control this PV for changes.