otsdaq  v2_04_03_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
  • Web Desktop Login and Requests
  • Front-ends
  • Data Managers
  • artdaq


  • 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.
    ARTDAQDataManagerSupervisor This class handles a single artdaq Board Reader instance.
    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
    ControlsDashboardSupervisor 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.
    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).


    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.
    ARTDAQDataManagerSupervisor This class handles a single artdaq Board Reader instance.
    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 otsdaq layer on top of the artdaq toolkit.
    Class Name and Link Brief Description
    ARTDAQSupervisor This class handles interfacing to the artdaq DAQ interface which manages all artdaq processes in the system.
    ARTDAQDataManagerSupervisor This class handles a single artdaq Board Reader instance.
    ARTDAQDataManager This class provides the otsdaq interface to a single artdaq Board Reader.
    ARTDAQProducer This class is a Data Producer Plugin that allows a single artdaq Event Builder to be instantiate as a Producer to an otsdaq Buffer.
    ARTDAQConsumer This class is a Data Consumer Plugin that allows a single artdaq Event Builder to be instantiate as a Consumer to an otsdaq Buffer.
    EventBuilderApp This class provides the otsdaq interface to a single artdaq Event Builder.
    DataLoggerApp This class provides the otsdaq interface to a single artdaq Data Logger.
    DispatcherApp This class provides the otsdaq interface to a single artdaq Dispatcher.