otsdaq  3.03.00
otsdaq Documentation

otsdaq

otsdaq is a Ready-to-Use data-acquisition (DAQ) solution aimed at scaling down to test-beam, detector development, and other rapid-deployment scenarios; and scaling up through the development cycle to fullscale production and operation. otsdaq uses the artdaq DAQ framework under-the-hood, providing flexibility and scalability to meet evolving DAQ needs.

otsdaq provides a library of supported front-end boards and firmware modules which implement a custom UDP protocol. Additionally, an integrated Run Control GUI and readout software are provided, preconfigured to communicate with otsdaq firmware.

Code Documentation

Below are some helpful links to otsdaq C++ classes organized by topic. The topics are as follows:

otsdaq is composed of three core repositories (otsdaq, otsdaq-utilities, and otsdaq-components) and one example user repository (otsdaq-demo). The intention is for users to clone otsdaq-demo into one or many of their own repositories for their own specific applications. Here are the links to the source code documentation for each respository:

otsdaq is built on top of the artdaq toolkit and the XDAQ toolkit:


Jump to Topics List

Supervisor Base Classes

All client otsdaq supervisors should inherit functionality from these classes. Inheriting from CoreSupervisorBase should be sufficient for most user-created supervisors for compatibility within otsdaq.

Class Name and Link

Brief Description

CoreSupervisorBase

This class should be the base class for all client otsdaq, XDAQ-based, supervisors. That is, all supervisors that need web requests through the ots desktop with access verified by the Gateway Supervisor, or that need a state machines driven by the Gateway Supervisor.

xdaq::Application

This class provides the XDAQ functionality for otsdaq supervisors, such as inter-process communication and web request binding to C++ handlers.

CorePropertySupervisorBase

This class provides supervisor property get and set functionality. It has member variables generally useful to the configuration of client supervisors.

RunControlStateMachine

This class provides finite state machine functionality for otsdaq supervisors.

Jump to Topics List

otsdaq Core Supervisors

The otsdaq Core Supervisors are the supervisors provided with otsdaq and otsdaq-utilities distribution.

Class Name and Link

Brief Description

GatewaySupervisor

This class is the gateway server for all otsdaq requests in "Normal Mode." It validates user access for every request. It synchronizes the state machines of all other superviso

WizardSupervisor

This class is a xdaq application. It is instantiated by the xdaq context when otsdaq is in "Wiz Mode." It is different from the "Normal Mode" Gateway Supervisor in that it does not have a state machine and does not inherit properties from CorePropertySupervisorBase. The assumption is that only admins have access to wiz mode, and they have access to all features of it.

FESupervisor

This class handles a collection of front-end interface pluginss. It provides an interface to Macro Maker for writes and reads to the front-end interfaces.

DataManagerSupervisor

This class handles a collection of Data Processor plugins. It provides a mechanism for Data Processor Producers to store data in Buffers, and for Data Processor Consumers to retrive data from the Buffers.

ChatSupervisor

This class handles the otsdaq user chat functionality available in the web desktop environment.

ConfigurationGUISupervisor

This class handles the user requests to read and write the Configuration Tree.

ConsoleSupervisor

This class handles the presentation of Message Facility printouts to the web desktop Console.

SlowControlsDashboardSupervisor

This class handles the management of slow controls interface plugins, as well as the user web interface.

LogbookSupervisor

This class handles the write and read requests for web users interfacing to the web desktop Logbook.

MacroMakerSupervisor

This class handles the user interface to the web desktop MacroMaker. MacroMaker is a tool to conduct read and write commands with front-end interfaces and to manage sequence of commands on a per user basis.

VisualSupervisor

This class handles the web user interface to a VisualDataManager with reqgard to the web desktop Visualizer. The Visualizer can display ROOT object in real-time, as well as 2D and 3D displays of streaming data.

Jump to Topics List

Web Desktop Login and Requests

The classes in this section are involved in user account management and system security.

Class Name and Link

Brief Description

GatewaySupervisor

This class is the gateway server for all otsdaq requests in "Normal Mode." It validates user access for every request. It synchronizes the state machines of all other superviso

WebUsers

This class provides the functionality for managing all otsdaq user account preferences and permissions, including password access and CILogon certificate access.

RemoteWebUsers

This class provides the functionality for client supervisors to check with the Gateway Supervisor to verify user access. It also provides the functionality for client supervisors to retreive user info.

Jump to Topics List

Front-ends

The classes in this section are involved with the control and management of front-end interface. Front-end interfaces are considered to be the specifics for how to interface to a device external to otsdaq. For example, a front-end interface might interface to physics detector readout electronics or a detector readout software emulator.

Class Name and Link

Brief Description

FESupervisor

This class handles a collection of front-end interface pluginss. It provides an interface to Macro Maker for writes and reads to the front-end interfaces.

FEDataManagerSupervisor

This class handles two collections: a collection of Front-end plugins, and a collection of Data Processor plugins (see Data Managers). The unique functionality of the FEDataManagerSupervisor is if a FEProducerVInterface plugin is instantiated in the collection of Front-end plugins, then that FEProducerVInterface will also be included in the collection of Data Processor plugin as a Data Producer - thus creating a single plugin instance that is a hybrid between Front-end plugin and Data Producer. This may be useful if, for example, it is convenient for the front-end interface to also receive streaming data to be saved or monitored.

FEVInterfacesManager

This class is a virtual class that handles a collection of front-end interface plugins.

FEVInterface

This class is a virtual class defining the features of front-end interface plugin class. The features include configuration hooks, finite state machine handlers, Front-end Macros for web accessible C++ handlers, slow controls hooks, as well as universal write and read for Macro Maker compatibility.

FEProducerVInterface

This class provides base class functionality for Front-end Data Producer plugin classes that interface to front-end devices and place incoming streaming data in a Buffer. This is a plugin base that class that is a hybrid between a FEVInterface and a DataProducerBase (see Data Managers).

FESlowControlsChannel

This class provides base slow controls channel functionality for Front-end plugin classes to monitor slow controls channels. Slow controls channels have fields like name, address, bit-field size, alarm thresholds, etc. (see Slow Controls).

Jump to Topics List

Data Managers

These classes are associated with the handling of data being received by the otsdaq system.

Class Name and Link

Brief Description

DataManagerSupervisor

This class handles a collection of Data Processor plugins. It provides a mechanism for Data Processor Producers to store data in Buffers, and for Data Processor Consumers to retrive data from the Buffers.

FEDataManagerSupervisor

This class handles two collections: a collection of Front-end plugins (see Front-ends), and a collection of Data Processor plugins. The unique functionality of the FEDataManagerSupervisor is if a FEProducerVInterface plugin is instantiated in the collection of Front-end plugins, then that FEProducerVInterface will also be included in the collection of Data Processor plugin as a Data Producer - thus creating a single plugin instance that is a hybrid between Front-end plugin and Data Producer. This may be useful if, for example, it is convenient for the front-end interface to also receive streaming data to be saved or monitored.

DataManager

This class is the base class that handles a collection of Buffers and associated Data Processor plugins.

CircularBufferBase

This class is the base class for the otsdaq Buffer

DataConsumer

This class provides base class functionality for Data Consumer plugin classes to extracts and process streaming data from a Buffer.

DataProcessor

This class provides common functionality for Data Producers and Consumers.

DataProducerBase

This class provides base class functionality for Data Producer plugin classes to receive incoming streaming data and places it in a Buffer.

DataProducer

This class provides adds workloop functionality for Data Producer plugin classes for running.

FEProducerVInterface

This class provides base class functionality for Front-end Data Producer plugin classes that interface to front-end devices and place incoming streaming data in a Buffer. This is a plugin base that class that is a hybrid between a FEVInterface (see Front-ends) and a DataProducerBase.

Jump to Topics List

artdaq

The classes in this section are involved with the otsdaq layer on top of the artdaq toolkit.

Class Name and Link

Brief Description

ARTDAQSupervisor

This class is the supervisor which handles interfacing to the artdaq DAQ interface which, in turn, manages all artdaq processes in a one or many node system. There can only be one ARTDAQSupervisor in your system. artdaq processes that are managed include Board Readers, Event Builders, Data Loggers, Dispatcher, Metric plugins, and Routing Masters. The artdaq Configuration editor, in conjunction with ARTDAQTableBase establish the configuration of artdaq processes for the ARTDAQSupervisor.

ARTDAQTableBase

This class provides the base functionality for artdaq configuration table plugins (i.e. ARTDAQBoardReaderTable, ARTDAQEventBuilderTable ARTDAQDataLoggerTable, ARTDAQDispatcherTable, ARTDAQRoutingMasterTable) to generate the configuration (including FHiCL) of artdaq processes in the system.

Jump to Topics List

Visualization and DQM

The classes in this section are involved with data visualization and Data Quality Monitoring (DQM).

Class Name and Link

Brief Description

VisualSupervisor

This class is the web server to visualize objects found on disk and also the container of the VisualDataManager for serving live visualization objects during a finite state machine Run. Essentailly, this supervisor provides Data Quality Monitoring (DQM) features including ROOT historgram visualization, as well as an ots custom protocol for 2-D and 3-D displays in the web browser.

VisualDataManager

This class provides functionality for handling Visualizer data consumer plugin classes that can produce live visualization objects during a finite state machine Run. It inherits all Data Manager (see Data Managers) functionality as well.

RawDataVisualizerConsumer

This class provides example functionality for creating live visualization objects from the incoming data. It inherits all functionality of a DataConsumer plugin class (see Data Managers). Custom visualizer plugins can be created using this class as an example, and can be children plugins to the VisualDataManager container. An example DQM use case is to create a live ROOT TTree based on incoming data, then users can use the Visualizer web-app to browser live data during a finite state machine Run.

Jump to Topics List

Slow Controls

The classes in this section are involved with slow controls and monitoring. Generally, slow controls refers to a management and archiving system involving many channels. EPICS is one such slow controls system. Slow controls channels are usually treated independently. Channels have associated fields (e.g. name, value, timestamp, alarm thresholds, etc.) and persistent history. In EPICS, a “Channel” is known as a “Process Variable” (PV), so PV and channel are often used interchangeably.

Class Name and Link

Brief Description

SlowControlsDashboardSupervisor

This class is the web server and also the container of a SlowControlsVInterface plugin for serving slow controls channels to the Slow Controls Dashboard web app.

SlowControlsVInterface

This class establishes the base functionality for slow controls interface plugins, which are responsible for handling slow controls channels within the SlowControlsDashboardSupervisor. Channels (or PVs) have a notion of subscription, current values, and historical values.

OtsSlowControlsInterface

This class is an example slow controls interface plugin inheriting functionality from the SlowControlsVInterface. It implements a custom ots slow controls protocol for saving and retrieving channel values.

EpicsInterface

This class is the EPICS slow controls interface plugin inheriting functionality from the SlowControlsVInterface. It implements a the EPICS channel access protocol for handling PVs.