Releases: FairRootGroup/FairRoot
Forth patch of FairRoot v18
The patch release contain the following changes compared to v18.0.3:
-
Correct dictionary generation such that header files are included in the dictionaries. This is needed to properly compile ROOT macros using FairRoot classes when only the FairRoot installation directory is available.
-
add a missing include statement and fix a wrong namespace to be able to compile the release with FairMQ versions larger than 1.3.2
Third patch of FairRoot release v18
The patch release contain the following changes compared to v18.0.2:
- Fix an ambiguous function call to make the call unique.
- Fix some memory leaks.
- Run some tests only serial do to errors when running the parallel.
Second patch of FairRoot release v18
The patch release contain the following changes compared to v18.0.1:
- Allow to build FairRoot with C++17.
- Reintroduce a removed interface since it is used by derived projects.
- Correct bug in FairTrajFilter.
Fourth patch of FairRoot release v-17.10
The patch release contain the following changes compared to v-17.10c:
- Fix ambiguous method call in BaseMQFileSink (did not build with GCC 8).
First patch of FairRoot release v18
The patch release contain the following changes compared to v18.0.0:
- Add the Geant3 include directory to the environment variable ROOT_INCLUDE_PATH. Without this change it could come to errors when compiling ROOT macros using Geant3 classes.
Release v18.0.0
General
With this release there comes a change in the versioning scheme. Instead of a version number denoting the year and month of the release (e.g. v-17.10) the version now denotes major, minor and patch version as numbers (e.g. 18.0.0). To avoid possible conflicts with the old versioning scheme the first major version was chosen to be 18. So all scripts which extracts the year from the old version scheme as a version number will work as before.
FairMQ
The FairMQ related code was extracted from FairRoot and is now a project on its own. The code is availble from https://github.com/FairRootGroup/FairMQ.
The change was done since it allows to use FairMQ without FairRoot. It also allows to decouple the development of FairRoot and FairMQ.
FairLogger
Also the logger classes have been put to a separate project. This was necessary since the logger is used by FairMQ as well as by FairRoot.
CMake
- Require external FairLogger installation
- Require at least ROOT 6.10.00
- Add find_package for FairMQ (at least 1.2.0)
- Remove several find_package since they are dependencies of FairMQ
- Use exported FairMQ::FairMQ target
Base
-
Correct copyright information
-
Use new external logger to unify the logging
-
make the folder name in output file configurable (cbmroot/cbmout)
-
Add new class FairPrintFairLinks to print all FairLinks of a given branch to the scren
-
Add new base class FairPropagator and use it in already existing propagators
-
Add new base class FairSink
-
Use FairRootFileSink instead of output files
-
Store also subtasks to FairFileHeader's task list
-
Allow user to decide if an event is saved after the simulation. The default is still to save all events. To disable the saving of one event after the simulation a task running after the simulation is needed which take the decision and call rootmgr->SetSaveCurrentEvent(kFALSE);
-
Allow to place a TGeoVolume when using FairModule::ConstructRootGeometry(TGeoMatrix*)
Third patch of FairRoot release v-17.10
The patch release contain the following changes compared to v-17.10b
Add a missing environment variable to template of root run script. The environment variable FAIRROOTPATH which is needed by some projects was missing.
Don't require SIMPATH when using MODULAR_BUILD. When using the modular build mode which allows to use dependencies (like ROOT, GEANT3, ...) installed at different directories, don't require that the environment SIMPATH is set.
Allow to switch off the writing of an event to the output file in case of a simulation run. A task running after the simulation in FairRunSim events loop can set the flag to false which skips writting the whole event to the output file.
Second patch of FairRoot release v-17.10
The patch release contain the following changes compared to v-17.10a
Add correct version numbers all over the place. There have been still places were the version numbers haven't been correct.
First patch of FairRoot release v-17.10
The patch release contain the following changes compared to v-17.10
Add correct version numbers. The release still contains the information for v-17.03
v-17.10
CMake
- Bump minimum required cmake version to 3.9.4
- Fix overlinking of
libFairMQ
- Add new
FairMQFull
,FairMQAll
,FairMQInstall
, andFairMQTests
targets, see comments. - Add
gtest
,cotire
, andFindPStreams
modules - Link
FairMQLogger
intolibFairMQ
instead of its own shared library. - Add many comments
FairMQ
- [breaking change] FairMQ headers are now installed to
$CMAKE_INSTALL_PREFIX/include/fairmq
. - [new feature] Introduce
FairMQShmMonitor
for shared memory monitoring & cleanup. - [new feature] Introduce
FairMQUnmanagedRegion
for allocating memory via transport (filled, transfered from and cleaned up by the user). - [new feature] Introduce
fair::mq::PluginManager
for loadingfair::mq::Plugin
s from shared libraries. See the example plugin. - [new feature] Introduce
fair::mq::PluginServices
APIs to give FairMQ plugins the ability to control and configure the device. - [new feature] Introduce
fair::mq::DeviceRunner
helper as a more flexible alternative to the fairmq/runFairMQDevice.h header. - [bugfix] Fix monitor not cleaning up more than one region.
- [bugfix] Avoid using placement new for allocating shm meta header that caused problems on some systems.
- [bugfix] Fix
example/advanced/Region
being built only if Geant is found. - [bugfix] Fixed example9 memory leak.
- [bugfix] Fix rate limiting in benchmarkSampler.
- [enhancement] Refactor the transport interface:
- Give transports
Initialize()
method with access to device config. - Avoid using global context in the transport.
- Simplify shutdown procedure (no need for extra thread).
- Move
New*Message
APIs up to the TransportFactory and provide facades atFairMQChannel
andFairMQDevice
.
- Give transports
- [enhancement] Stop device if binding was unsuccessful (both static and dynamic).
- [enhancement]
FairMQDevice::InitTask
runs now in the worker thread (same as other state handlers). - [enhancement] Extend shared memory transport configuration: segment size & name.
- [enhancement] Refactor unit tests (googletest) and extend test coverage
- [enhancement] Extend documentation
- [enhancement] STL iterator interface for
FairMQParts
- [enhancement]
FairMQDevice
can generate an ID, if none provided. - [enhancement] Refactor
FairMQEventManager
tofair::mq::EventManager
to support multiple subscribers. - [misc] Cleanup examples: serialization, Lmd.
General
- IO Manager :
Enabling the user to register branches based on arbitrary types. In particular, it is now possible to register stl containers as branch entries, extending the current TObject* or TCollection* APIs. (See Example/simulation/Tutorial2) - Fixed FairRootManager to return correct event time.
Simulation
- Migration of G4 simulation to multi-threading
- Make FairLink not inherit from TObject
-- reduce memory footprint for FairLinks by removing
inheritance from TObject (which is not needed)
-- remove virtual keyword from operators
-- overall this will gain 24bytes per FairLink
-- other smaller improvements: default destructor, inline trivial constructors - Remove data members / virtual functions from FairMultiLinkedData_Interface
-- remove fVerbose data member which was not used
-- remove fInserHistory member which is duplicated behind the link pointer
-- make accessor to link pointer not virtual - Remove FairLink member + remove virtual functions from FairTimeStamp
- Reduce size of FairLink to 15 byte
- Avoid InheritsFrom function from ROOT
-- This seemingly cosmetic change saves a lot of CPU time because ROOT triggered a lot of internal TClass generation stuff
-- It is also not needed since the dynamic cast does the same job