The way to handle multiple solutions coming from blocks has changed. A module is no longer responsible for looping over the solutions itself, this role is delegated to the Looper module. As a consequence, most of the module were rewritten to handle this change. See this pull request and this one for a more technical description, and this documentation entry for more details
The way input tags corresponding to phase-space points are defined in Lua has changed. It is no longer allowed to specify them explicitly (through cuba::ps_point/i). The function getpspoint() has been changed to add_dimension() and should be used each time an additional dimension is needed for the integration (the function returns an input tag for the corresponding phase-space components). Modules do not declare how many dimensions they need (counting the number of dimensions is done automatically through the add_dimension() function). See this Pull Request for more details.
GaussianTransferFunction renamed to GaussianTransferFunctionOnEnergy to be consistent. Also, the width of the Gaussian is computed from the 'gen' energy, not the 'reco' (more correct). The width over which the integration is performed, however, is still computed using the 'reco' energy (no choice there): i.e. integrating over +/- 5 sigma with a resolution of 10% gives an integration range of 'E_gen' in +/- 5*0.1*E_reco.
Cuba smoothing option is now enabled by default to mitigate numerical instabilities during the integration. See this for more details.
If no integration dimension is requested, no integration is performed and the graph is only evaluated once. As such, no error is provided on the final result.
Cuba logging is now handled by MoMEMta logger, at debug level.
We no longer use boost-log for logging, but our own implementation heavily inspired by spdlog. As a consequence, boost-log is no longer required to build MoMEMta.
Boost is no longer a dependency when using MoMEMta (but it's still a build dependency)
MoMEMta::computeWeights now expects a vector of Particle and no longer a vector of LorentzVector. A Particle has a name, a LorentzVector and a type. As a result, configuration files must now declare which inputs are expected.
The way the inputs are passed to the blocks is changed (the particles entering the change of variables are set explicitly, the others are put into the branches vector of input tags)
Built-in lua version is now v5.3.4
Block B, D and F: support massive invisible particles