DAQ++: A C++ Data Acquisition Software Framework C. Lacasta 1 Co-Developers: E. Cochran 2, K. Honscheid 2, G. Llosá 1, A. Studen 3. 1 IFIC- Instituto de.

Slides:



Advertisements
Similar presentations
OOAD Using the UML - Use-Case Analysis, v 4.2 Copyright  Rational Software, all rights reserved 1/18 Use Case Analysis – continued Control Classes.
Advertisements

Yevgeny Petrilin Shay Dan Shadi Ibrahim. GUI : Graphical User Interface DAQ :Data Acquisition Data Acquisition device  a self-powered system that communicated.
A CHAT CLIENT-SERVER MODULE IN JAVA BY MAHTAB M HUSSAIN MAYANK MOHAN ISE 582 FALL 2003 PROJECT.
Page 1 Processes and Threads Chapter Processes 2.2 Threads 2.3 Interprocess communication 2.4 Classical IPC problems 2.5 Scheduling.
CHEP04 - Interlaken - Sep. 27th - Oct. 1st 2004T. M. Steinbeck for the Alice Collaboration1/27 A Control Software for the ALICE High Level Trigger Timm.
Software Frameworks for Acquisition and Control European PhD – 2009 Horácio Fernandes.
©Brooks/Cole, 2003 Chapter 7 Operating Systems Dr. Barnawi.
DAQ WS03 Sept 2006Jean-Sébastien GraulichSlide 1 Interface between Control & Monitoring and DDAQ o Introduction o Some background on DATE o Control Interface.
Chapter 6 - Implementing Processes, Threads and Resources Kris Hansen Shelby Davis Jeffery Brass 3/7/05 & 3/9/05 Kris Hansen Shelby Davis Jeffery Brass.
D. R. BettFONT Meeting 5 th May Current DAQ State D. R. Bett.
DIANE Overview Germán Carrera, Alfredo Solano (CNB/CSIC) EMBRACE COURSE Monday 19th of February to Friday 23th. CNB-CSIC Madrid.
Chapter 8 Windows Outline Programming Windows 2000 System structure Processes and threads in Windows 2000 Memory management The Windows 2000 file.
(C) 2009 J. M. Garrido1 Object Oriented Simulation with Java.
Network Aware Module Implementation of the paper: “Forecasting Network Performance to Support Dynamic Scheduling Using the Network Weather Service”. Its.
G. Maron, Agata Week, Orsay, January Agata DAQ Layout Gaetano Maron INFN – Laboratori Nazionali di Legnaro.
ALICE, ATLAS, CMS & LHCb joint workshop on
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
1 Control Software (CAT) Introduction USB Interface implementation Calorimeter Electronics Upgrade Meeting Frédéric Machefert Wednesday 5 th May, 2010.
Framework for MDO Studies Amitay Isaacs Center for Aerospace System Design and Engineering IIT Bombay.
Processes Introduction to Operating Systems: Module 3.
Apr. 8, 2002Calibration Database Browser Workshop1 Database Access Using D0OM H. Greenlee Calibration Database Browser Workshop Apr. 8, 2002.
The Process Manager in the ATLAS DAQ System G. Avolio, M. Dobson, G. Lehmann Miotto, M. Wiesmann (CERN)
A simple Desktop DAQ for U2F readout Ulf jörnmark Physics Dept. Lund Status and plans.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 31. Review Creational Design Patterns – Singleton Pattern – Builder Pattern.
Online Monitoring System at KLOE Alessandra Doria INFN - Napoli for the KLOE collaboration CHEP 2000 Padova, 7-11 February 2000 NAPOLI.
Mr. Justin “JET” Turner CSCI 3000 – Fall 2015 CRN Section A – TR 9:30-10:45 CRN – Section B – TR 5:30-6:45.
INFSO-RI Enabling Grids for E-sciencE gLite C++ Configurator Practical experience gLite Configuration Meeting, March 1, 2005 Peter.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
EPICS and LabVIEW Tony Vento, National Instruments
THE EYESWEB PLATFORM - GDE The EyesWeb XMI multimodal platform GDE 5 March 2015.
Event Management. EMU Graham Heyes April Overview Background Requirements Solution Status.
Topic 5: CORBA RMI Dr. Ayman Srour
Online Data Monitoring Framework Based on Histogram Packaging in Network Distributed Data Acquisition Systems Tomoyuki Konno 1, Anatael Cabrera 2, Masaki.
1 DAQ++: A C++ Data Acquisition Software Framework C. Lacasta Co-developpers: E. Cochran, K. Honscheid, G. Llosá, A. Studen.
INTRODUCTION TO WIRELESS SENSOR NETWORKS
CompSci 280 S Introduction to Software Development
Development Environment
Behavioral Interactive and Introspective Objects
Operating System Review
Event Loops and GUI Intro2CS – weeks
Calicoes Calice OnlinE System Frédéric Magniette
Course Outcomes of Object Oriented Modeling Design (17630,C604)
CMS High Level Trigger Configuration Management
Object-Oriented Analysis and Design
Self Healing and Dynamic Construction Framework:
Controlling a large CPU farm using industrial tools
Distributed object monitoring for ROOT analyses with Go4 v.3
Singleton Pattern Command Pattern
CS 3305 System Calls Lecture 7.
Out-of-Process Components
Lecture 1 Runtime environments.
Valeria Bartsch UCL David Decotigny LLR Tao Wu RHUL
Ellen Walker Hiram College
Ch > 28.4.
Operating System Review
Programming Models for Distributed Application
Computer Simulation of Networks
Module 01 ETICS Overview ETICS Online Tutorials
Lecture Topics: 11/1 General Operating System Concepts Processes
An Introduction to Software Architecture
Prof. Leonardo Mostarda University of Camerino
Chapter 13: I/O Systems I/O Hardware Application I/O Interface
Out-of-Process Components
Chapter 2 Processes and Threads 2.1 Processes 2.2 Threads
Lecture 1 Runtime environments.
Use Case Analysis – continued
Tools for the Automation of large distributed control systems
Chapter-1 Computer is an advanced electronic device that takes raw data as an input from the user and processes it under the control of a set of instructions.
Message Passing Systems Version 2
Message Passing Systems
Presentation transcript:

DAQ++: A C++ Data Acquisition Software Framework C. Lacasta 1 Co-Developers: E. Cochran 2, K. Honscheid 2, G. Llosá 1, A. Studen 3. 1 IFIC- Instituto de Fisica Corpuscular, CSIC-UVEG, Valencia, Spain. 2 OSU, Ohio State University, Ohio, USA. 3 Josef Stefan Institute, Ljubljana, Slovenia DAQ++: A C++ Data Acquisition Software Framework C. Lacasta 1 Co-Developers: E. Cochran 2, K. Honscheid 2, G. Llosá 1, A. Studen 3. 1 IFIC- Instituto de Fisica Corpuscular, CSIC-UVEG, Valencia, Spain. 2 OSU, Ohio State University, Ohio, USA. 3 Josef Stefan Institute, Ljubljana, Slovenia DAQ++ DAQ++ is a C++ framework to develop Data Acquisition software. DAQObject The main actor is the DAQObject. ParameterHolderParameter ● It derives from ParameterHolder, which maintains a collection of Parameter objects. ✔ Parameters are intended to store values of different types and notify to any Observer any change on their value. RunState ● It contains a RunState object that will notify to any Observer of any change in its state ● They are named objects. Implementations Implementations of DAQObjects are: ● Module ● Module: This object is a Data Producer. It is an abstract class defining the interface of any object that communicates with any device from which we want data from. It can also be, however, thought of as an object that reacts to DAQ commands on an event by event basis. ● RunManager ● RunManager: This object maintains a collection of Module objects and defines the different acquisition modes, like pedestal, scanning parameters or normal data taking. It is also an abstract class that defines the interface of a data receiver and run controller object. RunCommand ✔ The main role of this object is to send commands to the Module objects by means of a RunCommand object that acts as a sort of Visitor. ✔ It is also in charge of getting the data from the different Modules and build the event data stream. ✔ It also contains pointers to a Monitor to monitor the data and a DataLogger to store the data. DAQmanager On top of this structure there is the DAQmanager which controls the active RunManager objects and maintains a list of all existing DAQObjects. The source can be found in DAQ++ DAQ++ is a C++ framework to develop Data Acquisition software. DAQObject The main actor is the DAQObject. ParameterHolderParameter ● It derives from ParameterHolder, which maintains a collection of Parameter objects. ✔ Parameters are intended to store values of different types and notify to any Observer any change on their value. RunState ● It contains a RunState object that will notify to any Observer of any change in its state ● They are named objects. Implementations Implementations of DAQObjects are: ● Module ● Module: This object is a Data Producer. It is an abstract class defining the interface of any object that communicates with any device from which we want data from. It can also be, however, thought of as an object that reacts to DAQ commands on an event by event basis. ● RunManager ● RunManager: This object maintains a collection of Module objects and defines the different acquisition modes, like pedestal, scanning parameters or normal data taking. It is also an abstract class that defines the interface of a data receiver and run controller object. RunCommand ✔ The main role of this object is to send commands to the Module objects by means of a RunCommand object that acts as a sort of Visitor. ✔ It is also in charge of getting the data from the different Modules and build the event data stream. ✔ It also contains pointers to a Monitor to monitor the data and a DataLogger to store the data. DAQmanager On top of this structure there is the DAQmanager which controls the active RunManager objects and maintains a list of all existing DAQObjects. The source can be found in DAQObject objects can be in any of these states. Transition from one state to the next is triggered by the commands sent by the RunCommand. DAQObject objects can be in any of these states. Transition from one state to the next is triggered by the commands sent by the RunCommand. The DAQ loop: The RunManager can be in 2 states: active and inactive. The DAQmanager only deals with active RunManagers. Similarly, the RunManager will only interact on the registered Modulesif they are in Global mode. The run can be executed in 2 modes: ● Sequential: The application starts the run and, if there are active RunManagers, takes data until the EndOfRun condition is met. ● Threaded: The application starts the run, which executes in a different thread. The DAQ thread will wait until there are active RunManagers, and as soon as there is any, it starts taking data. The DAQ loopconsists of 3 stages: ● Initialization: the DAQmanager sends the commands to the RunManager and the RunCommand there will distribute them to the different Modules. ● Data taking: The DAQmanager will ask the Trigger object for existing data. This object will sleep until there are data available. At this stage the RunManager objects will ask their Modules for data and will build the event data stream ● Finalization: when the EndOfRun condition is met, the StopRun phase will start Monitor DataLogger During the Data taking phase, one can optionally monitor the data with a Monitor object and store the data with a DataLogger object. These two processes can also run in a separate thread The DAQ loop: The RunManager can be in 2 states: active and inactive. The DAQmanager only deals with active RunManagers. Similarly, the RunManager will only interact on the registered Modulesif they are in Global mode. The run can be executed in 2 modes: ● Sequential: The application starts the run and, if there are active RunManagers, takes data until the EndOfRun condition is met. ● Threaded: The application starts the run, which executes in a different thread. The DAQ thread will wait until there are active RunManagers, and as soon as there is any, it starts taking data. The DAQ loopconsists of 3 stages: ● Initialization: the DAQmanager sends the commands to the RunManager and the RunCommand there will distribute them to the different Modules. ● Data taking: The DAQmanager will ask the Trigger object for existing data. This object will sleep until there are data available. At this stage the RunManager objects will ask their Modules for data and will build the event data stream ● Finalization: when the EndOfRun condition is met, the StopRun phase will start Monitor DataLogger During the Data taking phase, one can optionally monitor the data with a Monitor object and store the data with a DataLogger object. These two processes can also run in a separate thread Object creation: The DAQmanager is a Singleton. The application gets the only instance by means of a static method. The DAQObjects are created by the application and they are automatically stored in a dictionary by the DAQmanager, so that one can always retrieve them by their name Modules need to register to their corresponding RunManager. Modules can be in 2 states: Global and Local. The RunManager will only consider Modules in Global. The RunManager needs to be activated after creation to be considered by the DAQmanager in the DAQ loop Object creation: The DAQmanager is a Singleton. The application gets the only instance by means of a static method. The DAQObjects are created by the application and they are automatically stored in a dictionary by the DAQmanager, so that one can always retrieve them by their name Modules need to register to their corresponding RunManager. Modules can be in 2 states: Global and Local. The RunManager will only consider Modules in Global. The RunManager needs to be activated after creation to be considered by the DAQmanager in the DAQ loop CORBA There is also an IDL implementation of the interface that allows the DAQObject objects and the DAQmanager to communicate using a CORBA implementation. A possible application is shown below. The DAQmanager is running in a separate host controlling a number of Active RunManagers which run in different machines or environments. Each of those RunManagers handle a collection of Modules which can also be in different hosts. The Corresponding RunCommand will bridge the communication over the hosts. At the same time, data can be monitored from another machine by an instance of a Monitor and, also, data can be processed and stored physically by an EventBuilder, which is an implementation of a DataLogger.CORBA There is also an IDL implementation of the interface that allows the DAQObject objects and the DAQmanager to communicate using a CORBA implementation. A possible application is shown below. The DAQmanager is running in a separate host controlling a number of Active RunManagers which run in different machines or environments. Each of those RunManagers handle a collection of Modules which can also be in different hosts. The Corresponding RunCommand will bridge the communication over the hosts. At the same time, data can be monitored from another machine by an instance of a Monitor and, also, data can be processed and stored physically by an EventBuilder, which is an implementation of a DataLogger. Python There is a Python module that allows to create DAQObjects in Python and write the DAQ software in Python. It also allows to put together DAQObjects implemented in C++ and Python. This module, together with the CORBA interface, makes very easy to implement a DAQ system that runs in different nodes.Python There is a Python module that allows to create DAQObjects in Python and write the DAQ software in Python. It also allows to put together DAQObjects implemented in C++ and Python. This module, together with the CORBA interface, makes very easy to implement a DAQ system that runs in different nodes. An Application: VMEDAQ VMEDAQ is a GUI front end for DAQ++. It uses Gtk as the graphical interface. It has been developed for the data acquisition within the frame of the CIMA collaboration. The application is general enough to allow loading dynamically libraries containing the implementations of different Modules and RunManagers. The application is driven by an XML configuration file where the location of the libraries, as well as the running parameters are stored. It also provides a graphical interface to edit those configuration parameters VMEDAQ also implements the Monitor and DataLogger objects so that data can be monitored and stored. It provides the means to graphically see the monitored data. An Application: VMEDAQ VMEDAQ is a GUI front end for DAQ++. It uses Gtk as the graphical interface. It has been developed for the data acquisition within the frame of the CIMA collaboration. The application is general enough to allow loading dynamically libraries containing the implementations of different Modules and RunManagers. The application is driven by an XML configuration file where the location of the libraries, as well as the running parameters are stored. It also provides a graphical interface to edit those configuration parameters VMEDAQ also implements the Monitor and DataLogger objects so that data can be monitored and stored. It provides the means to graphically see the monitored data. VMEdaq main window VMEdaq monitor window