otsdaq
3.03.00
|
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.
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:
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
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.
This class provides the XDAQ functionality for otsdaq supervisors, such as inter-process communication and web request binding to C++ handlers.
This class provides supervisor property get and set functionality. It has member variables generally useful to the configuration of client supervisors.
This class provides finite state machine functionality for otsdaq supervisors.
The otsdaq Core Supervisors are the supervisors provided with otsdaq and otsdaq-utilities distribution.
Class Name and Link
Brief Description
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
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.
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.
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.
This class handles the otsdaq user chat functionality available in the web desktop environment.
This class handles the user requests to read and write the Configuration Tree.
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.
This class handles the write and read requests for web users interfacing to the web desktop Logbook.
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.
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.
The classes in this section are involved in user account management and system security.
Class Name and Link
Brief Description
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
This class provides the functionality for managing all otsdaq user account preferences and permissions, including password access and CILogon certificate access.
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.
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
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.
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.
This class is a virtual class that handles a collection of front-end interface plugins.
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.
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).
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).
These classes are associated with the handling of data being received by the otsdaq system.
Class Name and Link
Brief Description
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.
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.
This class is the base class that handles a collection of Buffers and associated Data Processor plugins.
This class is the base class for the otsdaq Buffer
This class provides base class functionality for Data Consumer plugin classes to extracts and process streaming data from a Buffer.
This class provides common functionality for Data Producers and Consumers.
This class provides base class functionality for Data Producer plugin classes to receive incoming streaming data and places it in a Buffer.
This class provides adds workloop functionality for Data Producer plugin classes for running.
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.
The classes in this section are involved with the otsdaq layer on top of the artdaq toolkit.
Class Name and Link
Brief Description
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.
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.
The classes in this section are involved with data visualization and Data Quality Monitoring (DQM).
Class Name and Link
Brief Description
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.
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.
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.
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.
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.
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.
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.