Skip to content
Tag notes

o Fixes:
 - DataFlowManager: remove segfault due to improper use of bitsets
 - Cmake: Treat Root as all other externals
 - HiveEventLoopMgr: (legacy component): check for WB existence and not DataSvc only
 - AIDA: properly found also with the new externals infrastructure
 - HiveReadAlgorithm: Can be used also with old Gaudi infrastructure

o ForwardScheduler: Improved output info in case of stall.

o HiveWhiteBoard: use recursive mutex instead of a spin mutex in order to
support MiniBrunel.

o HiveSlimEventLoopMgr: run the 1st event alone even if multiple events in
flight are selected (eases measurements since some loading happens in
minibrunel at the first event). Add per event RSS and timing measurements.

o IDataSvc: allow to pass a particular IDataProviderSvc in order to properly
use the slots in the whiteboard.

o MDF input: It is now possible to read multiple events simultaneously starting
from MDF files. RawDataAddresses now do not share the same buffer for banks.
The fix (code mainly from M. Frank) consists in the following steps:
  1) StreamBuffer class: add an adopt 'method' which corresponds to the 'data'
  one but passing the ownership of the banks to the client
  2) RawDataAddress class: add an adoptData method which corresponds to the
  setData one. If data is adopted, the destructor of the class will trigger the
  deletion of the data
  3) RawDataSelector class: add a flag to decide if the data is to be adopted
  by the address or not. It should be an option in the future.
  4) MDFSelector class: wire into the method getDataSpace the buffer adoption.
  As for 3, this should be dynamically chosable.
As for the ROOT I/O, the createAddress and next methods of the selector must be
called serially and in this order! In any case, this is ensured by the
structure of the HiveSlimEventLoopManager.

o DetDataSvc: Replace the DataSvc with a version with thread safe retrieve
methods:'TsDataSvc'. The DetDataSvc inherits from this TS version of DataSvc.
The RegistryEntry had to be made friend of this new svc. Recusrive lock is used
given the "richness" of the IDataManager interface. Reentrant methods should be
identified and recursive lock eliminated in favour of a rapid spin lock
(or no lock at all?)

o TimerForSequencer: Eliminate doubles to accumulate statistics in favour of
uint64_t-s. Add sigma of the timing measurements

o CPUCruncher scenario for MiniBrunel

o First iteration of coding conventions