Welcome to the otsdaq Source 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.
|