Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.

Welcome to FASER/DAQ

Welcome! This documentation is intended to be your initial point of entry for getting involved in the FASER experiment TDAQ system. Detailed information can be found in https://faserdaq.web.cern.ch/faserdaq/ (CERN login required), alternatively the docs/ folder in this repository.

Software Layout

This software is based on the DAQling architecture which orchestrates the running of individual DAQ "processes". In addition to the external DAQling architecture, a number of other FASER-specific software libraries are included that provide hardware specific communication protocols (digitizer-readout and gpiodrivers) as well as tools shared between the online DAQ and offline reconstruction communities (faser-common). All tools are included as git submodules in the faser/online/daq framework.

DAQling

The DAQling architecture is developed by the CERN EP-DT-DI group and is intended to serve as a vanilla framework to flexibly execute processes that run concurrently and communicate between each other. Each process is a specific instance of a "module" and can either control and readout a piece of hardware (e.g. DigitizerReceiverModule) or aggregate and process data entirely in software (e.g. EventBuilder). The generic documentation for DAQ-ling can be found here - daqling.docs.cern.ch.

faser-common

The faser-common library is a central location where utilities that can be shared between online and offline communities can be developed coherently. This includes things such as the EventFormat and hardware payload specific fragments and decoders (e.g. DigitizerDataFragment). See the submodule README for a further description of faser-common utilities.

digitizer-readout

The digitizer-readout library provides a library that can be used to control the sis3153+vx1730 pair of VME boards and retrieve data stored upon an acquisition trigger. This relies on the use of faser-common for the EventFormat and is used within the DigitizerReceiverModule. More extensive documentation of this library can be found in the submodule README.

gpiodrivers

The GPIO Drivers library provides an interface for communication with the GPIO boards, which control the TRB and the TLB. It also provides specific functionality necessary for operation of each of these boards. More extensive documentation of this library can be found in the submodule README.

Initial setup

This repository has several submodules, so it is easiest to clone with the --recursive option. NOTE that several compile options exist, described in the following section.

git clone --recursive <faser-daq git url>
cd faser-daq
source setup.sh
mkdir build; cd build
cmake ..
make

CMake build options

The following CMake build options are available:

Flag Options Default Description
CMAKE_BUILD_TYPE Release/Debug Debug Use Debug for testing, Release for production. Release adds optimization flags and so executes faster.
CMAKE_EMULATION_BUILD ON/OFF OFF ON will only compile code relevant for emulation/playback mode. This should be used if you are not interacting with any detector components.

Use options like so

cmake .. -DCMAKE_EMULATION_BUILD=ON

Running

FASER DAQ is a Finite State Machine. It is interactively controlled by sending state transitions such as start, pause, stop and (shut) down. The FSM is booted up with a configuration file that provides the module configurations for start up.

There are two run modes for FASER DAQ: Via command line or via a Run Control web interface.

Running from terminal

daqpy configs/<config_file_name>.json

Running via the web interface

See the main instructions for the Run Control interface in the README here. To start the web server, you can execute one of two options

(a) Run Control without run service

rcguilocal

(b) Run Control with run service

rcgui

The latter connects the run control to the FASER run database, the run will be assigned a unique run number and all run information will be automatically logged in the database. Option (a) rcguilocal is preferred for debugging tests.

Select your desired configuration file before hitting the control buttons.

Contacts/Experts

If you encounter an issue, do not hesitate to get in contact with someone. The general email list for the group is FASER-tdaq@cern.ch to which you can request subscription via the CERN e-group https://e-groups.cern.ch/ portal. Listed here are the specific individuals who have particular expertise in a specific area and who you are recommended to contact if you have issues :

Codebase

The entry-point for the code itself is stored on the CERN instance of GitLab at https://gitlab.cern.ch/faser/online/faser-daq. A github mirror exists at https://github.com/cantel/faser-daq for external contributors.

This codebase is made public with the GNU Lesser General Public License.