FairMQ and DPL

The Alice O2 components rely on widely used C++ libraries such as Boost and STL. In addition it depends on custom libraries:

  • FairMQ - transport layer developed by FAIR team, with contributions from ALICE team
  • Data Processing Layer (DPL) - abstraction layer developed by ALICE team


FairMQ is part of a framework called FairRoot, developed at GSI. It started as a C++ simulation, reconstruction and analysis framework for the FAIR accelerator. It is now accelerator and experiment agnostic. We use it in ALICE and we contribute back whenever possible. We often refer to the common parts in between FairRoot and O2 as ALFA.

FairMQ provides an asynchronous message passing API to be used in a multi-process topology. Each process is called a Device. The underlying transport can be zeromq, shmem, nanomsg, and ofi.

In case of problem or questions, we usually create an issue in their GitHub or tag the main developers in our JIRA or Discourse.


Data Processing Layer (DPL)

The DPL is part of AliceO2 and sits on top of FairMQ. We use it on the FLPs and the EPNs, synchronously and asynchronously, for all kind of data processing. In particular, the reconstruction and the data quality control operate within the DPL.

To use it, one has to express the topology programmatically in a workflow. Each step of the processing is described as a DataProcessor and is mapped automatically to a FairMQ Device.

See the extensive README here for more details.