New FairRoot release v-15.11 available

Release info:

New Features

  • Redesign the FairRoot IO manager
  • Introduce FairSource as base class for different sources
  • Extend the FairRunOnline functionality to support THttpServer
  • New FairMonitor to monitor the task execution time
  • New MQ front end of the parameter manager (ParameterMQServer)



  • Add possibility to poll on multiple channels.
  • Include command channel when polling on blocking calls (for unblocking without termination).
  • Add new Send/Receive methods with smart pointers and no flag checks.
  • Add methods to FairMQChannel to set timeout on blocking Send/Receive
  • Add ExpectsAnotherPart() method to check if another msg part is expected (old approach still works).
  • Add orthogonal OK/ERROR states. Entering ERROR state will leave the executable running to allow easier debugging.
  • Move signal handler from run-files to the FairMQDevice class (call FairMQDevice::CatchSignals() in the main function).
  • Add thread-safe 'bool CheckCurrentState(statename)' (instead of 'GetCurrentState() == statename' that cannot be thread safe).
  • Add 'InteractiveStateLoop()' method that can be used to change states from the command line.
  • Add automatic transition to IDLE state if Run() exits without an external event.
  • Implement reset of FairMQDevice.
  • Add FairMQ tests (PUB-SUB, PUSH-PULL, REQ-REP).
  • Use same executable for bin/boost/protobuf/root data format, configured now via --data-format <binary/boost/protobuf/tmessage> command line parameter.
  • FairMQStateMachine: improve feedback on invalid transitions (more readable).
  • Add a logger for FairMQ based on Boost.Log v2
  • Refactor the generic MQ devices
  • Add CRTP base class for (de)serialization, source, task, and file sink policies, which can be used as guideline for the policies of the generic MQ devices
  • Add template functions to use simple interactive or non-interactive state machine sequence.
  • Add helper functions for the FairProgramOptions

Base/MQ :

  • Add a serializeMsg function member in boost serializer policy that take a pointer to the data type
  • Add FairRoot-like directory structure in root files produced by the RootOutputManager storage policy
  • Add FairMQFileSource, an interface to the FairFileSource, which can be used as policy for the generic sampler device
  • Add FairMQLmdSampler device to read Lmd file and send binary to another device (most likely an unpacker)
  • Add FairMQUnpacker device which take an Unpacker as template parameter


  • Simplify the Tutorial7 and add an example of using FairMQFileSource policy. Use FairProgramOptions to configure the data generator.
  • Add an usage example of FairMQLmdSampler and FairMQUnpacker using the data of tutorial8
  • Restructure the examples directory and add new documentation
  • New: MBS data unpacking from LMD file and corresponding test.
  • New: Dynamic configuration of devices with DDS.
  • New: Multiplicating data with zero copy and push pattern.
  • New: Working with multiple channels in FairDevices
  • New: Sending multipart messages.
  • New: Using ParameterMQServer

Bug fixes:

  • FairRunAnaProof for the ROOT6
  • Various smaller bug fixes and error handling in FairMQ
  • ReadEvent with time stamps 102
  • Return value of FairRootManager::ReadEvent() 101
  • FairRoot dev does not compile on SL6 90