otsdaq  v2_05_02_indev
otsdaq Documentation

Welcome to the otsdaq Source Code Documentation


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

  • Supervisor Base Classes
  • otsdaq Core Supervisors
  • Configuration Primer
  • Web Desktop Login and Requests
  • Front-ends
  • Data Managers
  • artdaq
  • Visualization and DQM
  • Slow Controls


  • 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
  • otsdaq_utilities
  • otsdaq_components
  • otsdaq_demo


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

  • artdaq
  • XDAQ
  • otsdaq





  • 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.