From EUDET-type beam telescopes
Revision as of 14:48, 13 May 2019 by Dreyling (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Introduction and Overview

EUDAQ is a generic data acquisition framework. It is written in C++, and designed to be modular and portable, running on Linux, Mac OS X, and Windows. It was primarily written to run the EUDET-type beam telescopes with its user-specific extensions. However, it is designed, has been developed and is used as a common DAQ having user-specific interfaces for data acquisition (Producers) and for data analysis (DataConverter).

There are two different versions available:

  • EUDAQ1 for running the data acquisition in EUDET mode (one trigger = one event = one sub-detector frame) using one data collector
  • EUDAQ2 for running the data acquisition in AIDA mode (multiple trigger in one sub-detector frame) using optionally multiple data collectors

The first version was and is still used in many test beams showing a reliable performance. The second version is aiming for higher trigger rates which is possible together with the AIDA TLU, plus having more flexibility and options for data taking.


Please find compiled versions here:

The recent manual updates can be found as Latex code in the repository: The pdf is built, if a latex compiler is found by cmake, see below.


The installation is straightforward due to using cmake and is described:

Three steps are necessary:

  1. Getting the code, see below
  2. Required prerequisites for installation
  3. Compiling the code

Installations on the RunControl PCs at DESY TB

Status for the test beam season 2019.

We provide the following versions of EUDAQ on the Hardware#RunControl_PC:

  • EUDAQ v1.6.0-dev-end in /opt/eudaq16 (without FSM, old status functionality)
  • EUDAQ v1.9.1 in /opt/eudaq19 (latest version 1, compatible with versions >1.6)
  • EUDAQ v2.2.x in /opt/eudaq2 (EUDAQ version 2)

EUDAQ 1 can run with the Hardware#EUDET_TLU, EUDAQ 2 with the Hardware#EUDET_TLU or Hardware#AIDA_TLU.

Getting the code

The EUDAQ source code is hosted on github. The recommended way to obtain the software is with git, since this will allow you to easily update to newer versions. Using Unix and a shell, the latest version can be checked out with the following command:

git clone eudaq 

This will create the directory eudaq, and download the latest development version into it (master branch). If you already have a copy installed, and want to update it to the latest version, you do not need to clone the repository again, just change to the eudaq directory use the command:

cd eudaq
git pull

For production environments (e.g. test beams) we strongly recommend to use the latest release version. Use the command

 git branch or 
 git status

to see at which branch you are. Use the command

git tag

to find all versions as well the newest version.

Cmake options (version 1)

Using cmake, the EUDAQ installation is configured and makefiles will be prepared, before installing EUDAQ (make install). There are several options, which can be switch on or off, e.g. in order to compile the TLU producer:

cd build
cmake -DBUILD_tlu=ON ..

Possible options are:

Possible options: mention that -DBUILD_<producername>=ON needed is to enable bulding of a specific producer
option default comment
-DBUILD_manual OFF Builds Manual in pdf-format. pdflatex, scrartcl.cls and upquote.sty are required, e.g. sudo apt-get install texlive-latex-base, sudo apt-get install texlive-latex-recommended and sudo apt-get install texlive-latex-extra
-DBUILD_tlu OFF Builds TLU producer and executables. ZestSC1 and tlufirmware files are required located in extern folder. For Ubuntu, install libusb: sudo apt-get install libusb-dev
-DBUILD_<producername> OFF Builds specific producer: -DBUILD_<producername>=ON is needed to enable bulding of a specific producer.
-DBUILD_gui ON Builds GUI executables. Requires QT4/5.
-DBUILD_main ON Builds main EUDAQ executables.
-DBUILD_python OFF Builds Python EUDAQ binding library.
-DBUILD_pybindgen OFF Builds pybindgen binding libraries.
-DBUILD_onlinemon ON Builds Online Monitor executable. Requires ROOT.
-DBUILD_offlinemon OFF Builds offline monitor executable. Requires ROOT.
-DBUILD_metamon OFF Builds MetaData Monitor executable.
-DBUILD_resender OFF Builds resender producer.
-DBUILD_nreader OFF Builds native reader used for data conversion into LCIO. Requires LCIO/EUTelescope
-DINSTALL_PREFIX <PATH> Default: the EUDAQ folder. Changes the install prefix for libraries and executables, which will be install into the source directory (./lib and ./bin).

Out of box on Ubuntu 18

  • install Ubuntu 18.04 LTS and these packages
    • sudo apt install openssh-server (for ssh access)
    • sudo apt install git
    • sudo apt install cmake
    • sudo apt install build-essential (for compiler)
    • sudo apt install qt5-default (for GUIs)
    • sudo apt install pkg-config (for EUDET TLU in 1.6)
    • sudo apt install libusb-dev (for EUDET TLU)
    • sudo apt install libtbb-dev (for using ROOT6 for EUDAQ version 1)
    • sudo apt install xterm (for examples)
    • sudo apt install zlib1g-dev (for LCIO-build in EUDAQ 2)
  • install root (required for OnlineMonitor):

Out of box on Ubuntu 14/16

Using a freshly installed Ubuntu, you don't need a lot peripherals to install EUDAQ 1 succesfully:

(De-)installation using system path

If you want to place the EUDAQ 1 executables in a standard path of your Unix machine, you can do the following installation and start of euRun:

mkdir eudaq
git clone eudaq/
cd eudaq/build/
cmake -DINSTALL_PREFIX=/usr/local/ ..
make -j4
sudo make install

At the momentm, the corresponding de-installation can be done by

cd eudaq/build/
sudo xargs rm < install_manifest.txt


See the manuals #Manual or the description for the using the telescopes User manual.


Github and git

  • create a personal account on Github
  • fork the EUDAQ repository in your personal one
  • develop and test on your personal one
  • merge it with original EUDAQ repo., opt. solve conflicts
  • creat a pull request

Workflow and "policy"

The workflow we are aiming at would be:

  • having one branch for EUDAQ version 2 for ongoing development: master
  • having one branch for EUDAQ version 1 for optimization of version 1, like v1.7-dev (in May 2018)
  • use the issue tracker on Github:

For version 1: Pull requests should not contain configuration files and data files (ending with .txt or .conf). That should not go into the repository, which helps keeping the code base cleaner. If you need to keep track of settings and configurations and share them with collaborators we recommend setting up a private dedicated git repository inside the ~./conf/` directory and committing your configurations there.

For version 2: You can use the user-dependent folder structure, and organise your code, modules and configuration files in user/your_device/..

DQM4Hep -- online monitoring

Within the AIDA2020 WP5, there is an effort for a new generic, monitoring tool for EUDAQ. You will find the code here: And here is a wiki on one of the first use cases: