v18.8.0
Features
- Added
Alignmenthandler (04527ab 9d8010e) - Implemented
FairGenerator::Finish()function (d59e2aa) - Added new test which checks if the correct unit system is set in
FairRun(95a3868) - Introduced base class for
Fair{File,Mixed}Source(23b1c99 59b9352 2bbf5f5) - Reworked the Doxygen documentation (83e4075)
Breaking Changes
- Move online related code into the new Online library (e61a0e7)
- The special steering class
FairRunOnlinewas moved from
theBaseinto theOnlinelibrary. - Also the MBS/LMD related source classes were moved to
the newOnlinelibrary. - If one of these classes are used in your code, you need
to link against new targetFairRoot::Online.
- The special steering class
- Dropped
CheckCXX11Features(This was also released in 18.6.8 and 18.4.8) (34ca7e6)- FairRoot assumes a recent compiler that fully supports C++17. (e6003d0)
- Remove the following things from your
CMakeLists.txt:-
Set(CheckSrcDir "${FAIRROOTPATH}/share/fairbase/cmake/checks")`
-
include(CheckCXX11Features) -
IF(HAS_CXX11_SHAREDPOINTER) Add_Definitions(-DHAS_SHAREDPOINTER) ENDIF(HAS_CXX11_SHAREDPOINTER)
-
- If your C++ code depends on
HAS_SHAREDPOINTERbeing set, rewrite it accordingly. - If any of your CMake code depends on
HAS_CXX11_*being set, rewrite it accordingly. - If your code has specific C++ needs, consider CMake's
target_compile_features().
- Dropped
CHECK_EXTERNAL_PACKAGE_INSTALL_DIR(1d0e5b0)- Just remove it from your
CMakeLists.txt.
- Just remove it from your
- Dropped
USE_PATH_INFOCMake option. It was an anti-pattern. Don't use it! (21c7535) - Dropped
ROOT_GENERATE_ROOTMAP. It was used on ROOT 5.x. (e7f2a96)- Rewrite your build system, if you still use it.
FairRootManager::Get{Tree,Folder}Name()now returnconst char *. (585e1a8)
Do NOTdeletethe returned pointer!FairRunSim::SetSimulationConfig()now takes a
unique_ptrinstead of a raw pointer with unknown
ownership. (43536bf)- Some headers were cleaned up and now
#includefewer
other headers. You might have to add some#includes
in your code. - Added a new build switch
BUILD_BASEMQfor controlling whetherFairRoot::BaseMQand
dependent targets are built (FairRoot::FairMQandFairRoot::ParMQ). It is enabled
by default and will now require its external package dependencies FairMQ and Boost. (00a9b9c 7b1547b eb8cf04) - Boost serialization support for
FairTimeStamp,FairHit, andFairMCPointhas been
moved to theFairRoot::BaseMQtarget to haveFairRoot::Baseno longer depend on
Boost.Serialization. The user must opt-in to the previously baseline Boost serialization
support by including one of the new headers, e.g. forFairHit:There is also a convenience header#include <FairHit.h> #include <FairHitBoostSerializationSupport.h>
<FairBoostSerializationSupport.h>which includes all
class-based support headers currently offered. (d40f9d9) - Removed
USE_DB_METHODdefine and dependent code (c56a1f7)
Deprecations
This release of FairRoot deprecates many APIs for various
reasons. If you think you really require some API, please
file an issue, so that we can see how to handle this.
- Deprecating MbsAPI (a5587bb 812b1cc 3c43363)
- This release deprecates MbsAPI.
- It will be disabled by default in FairRoot 19.
- We plan to remove it completely in FairRoot 20.
- If you need it, speak up NOW.
- This release deprecates MbsAPI.
- Deprecate some singleton-like APIs:
FairRunAnaProof::Instance()- keep a pointer to the
object after instantiating it in your code. (29b7cbf)FairRadGridManager::Instance()- Consider using the
GetRadGridMan()method onFairMCApplcation. (e595507)FairRadMapManager::Instance,FairRadLenManager::Instance(cd84521)FairGeaneApplication::Instance(9c6ac00)
- Deprecated some other APIs
FairGeoVector::roundwas nonfunctional and never did anything. (3c7305d)FairTask::*InputPersistance: (b6cbd8e)
There's no getter forfInputPersistance,
no other code in FairRoot uses the setters,
we're not aware of anyone using it.FairFieldFactory::fCreatorpoints tothis. (4446223)FairRootManager::FillEventHeaderis only a wrapper around
FairSource::FillEventHeader. (b46784a)FairModule::ConstructASCIIGeometry(T*, TString, U*), use
FairModule::ConstructASCIIGeometry(TString)instead. (bde97a4)FairRootManager::RunWithTimeStamps()(cb78b4e)
- Many items were already deprecated in prior versions.
Marked them with proper C++14 deprecation warnings.
Scheduled them for removal in v20. (f386f3b 9459446) - Deprecated DataMatch library (8a75c8b)
- Contact the developers should you need it.
- Scheduled to remove without replacement in a future major release of FairRoot.
- Added option to disable deprecated
PROOFsupport (024660d)
Other Notable Changes
-
Added CHANGELOG.md to trace important changes (50c7c2b)
-
CMake targets for libraries are now exported. (dc9001b bc8282b ebf61b4 e2f3f0a 59fe7ca)
Some have names different from the filesystem library name.Old Library Name Target Name TrkBase FairRoot::TrackBaseFairDataMatch FairRoot::DataMatchFairTools FairRoot::ToolsFairFastSim FairRoot::FastSimFairMCStepLogger FairRoot::MCStepLoggerGen FairRoot::GeneratorsAll those not listed here have the library name prefixed
withFairRoot::as the target name. -
Note that the library filesystem name is scheduled to be
changed in 19.2 to afairroot-trackbasestyle naming.
For those using the targets this change will not be visible. -
Use
overrideto mark overriden methods (b7102b2 ceb98ea 3e591d0 731a6f8 51783a0 224598b 1292f9d b1146c7) -
Tests using Geant3 have been disabled by default, because
those tests have a probability > 0 for failing.
If you want to run them anyways, pass
-DENABLE_GEANT3_TESTING=ONto CMake. (829ccc4) -
Use
Fixturesinstead ofDependsin test orchestration (5bcc5b8 7997124) -
Undeprecate
FairRootManager::GetOut{File,Tree}
It has been deprecated since 18.0.0. (e342df3)