Release version 7.0.0
This major release focuses on an extensive code refactoring of PROPOSAL, next to the release of several new features and bug fixes.
Due to these restructurings of large parts of the code, most scripts using PROPOSAL need to be adapted.
The following points have been implemented in the commits listed in PR #137.
Note that PROPOSAL now requires a C++14 compatible compiler.
Major Features
- Calculation of stochastic deflections, i.e. the deflection of the initial particle direction during stochastic interactions (PR #121)
- Improved
Secondaries
class for the output of thePropagator
class. It provides possibilities such as Queries for arbitrary geometries and/or interaction types as well as the possibility to "repropagate" particles to a certain, arbitrary particle state (PR #114, related issue #71). - Installation of PROPOSAL with package manager conan (PR #130)
- Using spdlog instead of log4cplus as a logger (related issue #44, commit 6e83249)
- New dependency on the CubicInterpolation library for better stability and maintainability using boost and Eigen (related issue #48) to outsource the interpolation tasks. Therefore boost and Eigen are indirectly new dependencies.
Minor features
- Provide (recommended) default CrossSections for different particles
- Add function to set logging level in python (related issue #106, related commit b4ba0c0)
- Add "hierarchy condition" as a new termination condition for
Propagator::Propagate
(see commit 3051774) - Provide the possibility to apply multipliers to multiple scattering and stochastic deflection
- Vectorization of many functions in Python, which allows calling these functions directly with an array
Code refactoring
- Modularization of physical calculations in PROPOSAL into separate modules. This makes the individual modules usable for users which are not interested in the whole
Propagator
class but only individual calculation steps (see this proceeding for more information about this process). Furthermore, this gives PROPOSAL a more clear code structure (related issue #40) - Implement a more intuitive structure of the geometry class
Vector3D
by creating two separate subclassesCartesian3D
andSpherical3D
(PR #122). This will take away the responsibility from to user to pay attention to whether certain transformations between coordinate systems have actually been calculated (related issues: #119, #45). - More intuitive implementation of classes describing particles and particles losses by creating and/or refactoring the classes
ParticleState
,StochasticLoss
,ContinuousLoss
(PR #114, related issue #104) - Calculations in PROPOSAL are now done using grammage instead of distances (transformation is done inside Propagator class)
- Consistent use of smart pointers to avoid memory leaks (related issue #109)
- New structure of json configuration file (see here for a documentation of the new structure)
- Special
EnergyCutSettings
options have been changed to be more intuitive: Using no absolute EnergyCut now corresponds toINF
(formerly-1
), using no relative EnergyCut now corresponds to1
(formerly-1
)
Fixes
- Fix uninitalized values in ManyBodyPhaseSpace::SampleEstimateMaxWeight (PR #132)
- False documentation of
Interpolant::Exp
method and unclear variable name (related issue #39, commit 1e5b851) - Fix underestimation of dE2dx (and therefore ContinousRandomization) for ionization (see commit a916cc6)
- Geometries in PROPOSAL are now intialized in
cm
instead ofm
to have consistent usage of units throughout PROPOSAL (see commit db516bd)