diff --git a/Changes.md b/Changes.md index c287d3e..1b496c6 100644 --- a/Changes.md +++ b/Changes.md @@ -1,234 +1,238 @@ # Changelog This is the log for changes to the HEJ program. Further changes to the HEJ API are documented in [`Changes-API.md`](Changes-API.md). If you are using HEJ as a library, please also read the changes there. ## Version 2.3 ### 2.3.0 #### New Processes * The prediction for jets with a charged lepton-antilepton pair via a virtual Z boson or photon now includes the NLL configurations with an additional quark-antiquark pair. #### Updates to configuration file * `HEJFOG` now also accepts pdf set names. Before, only pdf set IDs could be used. #### Changes to input/output * Event output files in LHEF or HDF5 format now contain the configuration used to generate the events. ## Version 2.2 This release adds support for the new processes: * Wp+Wp with jets. * Wm+Wm with jets. In addition, there are new options when running HEJ: * Enable NLO truncation for use in HEJ@NLO predictions. * Require a lowpt jet, used for running lowpt separately. This release includes minor changes which affect users of HEJ as a library (see [`Changes-API.md`](Changes-API.md)). Compilation now requires a compiler supporting C++17. +### 2.2.3 + +* Fix `HEJ-config --optional-dependencies`. + ### 2.2.2 * Fixed calculation of unordered gluon emission in Z+jets production. ### 2.2.1 * Fixed calculation of extremal qqbar contribution to W+jets production. ### 2.2.0 #### New Processes * Resummation for WpWp/WmWm with jets, including interference between configurations. * Significantly improved description of Higgs boson plus jet production: - Processes with extremal Higgs boson emission are now treated as leading-log. - Resummation is now enabled for Higgs boson production with a single jet. * `HEJFOG` can generate multiple jets together with a charged lepton-antilepton pair via a virtual Z boson or photon. #### Updates to configuration file * With the new option `off-shell tolerance` HEJ repairs the momenta of massless particles that are slightly off-shell and incoming particles with small but non-vanishing transverse momenta. * Introduced new event types `unknown` and `invalid` under the `event treatment` option. `unknown` indicates processes that are not recognised by HEJ. `invalid` is reserved for unphysical processes. * Introduced new event treatment `abort` for aborting the program when an undesired event type is encountered. * Removed the deprecated settings `min extparton pt` and `max ext soft pt fraction`. * Removed the deprecated `analysis` setting. #### Changes to input/output * Event reader supports event input from named pipes (fifo) ## Version 2.1 This release adds support for two new processes: * W boson with jets. * Jets with a charged lepton-antilepton pair via a virtual Z boson or photon. In addition, the complete set of first subleading processes (unordered gluon, central and extremal quark-antiquark pair) is implemented for pure jets and W + jets, see [arXiv:2012.10310](https://arxiv.org/abs/2012.10310). Unordered gluon emission is also supported for Higgs boson + jets and Z boson/photon + jets. This release include many changes to the code, which affect users of HEJ as a library (see [`Changes-API.md`](Changes-API.md)). ### 2.1.3 * Updated documentation. ### 2.1.2 * Updated `cxxopts.hpp` dependency. ### 2.1.1 * Fixed invalid iterator accesses. * Reorganised automated tests. * Updated documentation. ### 2.1.0 #### New Processes * Resummation for W bosons with jets - New subleading processes `extremal qqbar` & `central qqbar` for a quark and anti-quark in the final state, e.g. `g g => u d_bar Wm g` (the other subleading processes also work with W's) - `HEJFOG` can generate multiple jets together with a (off-shell) W bosons decaying into lepton & neutrino * Resummation for jets with a charged lepton-antilepton pair via a virtual Z boson or photon. Includes the `unordered` subleading process. * Resummation can now be performed on all subleading processes within pure jets also. This includes `unordered`, `extremal qqbar` and `central qqbar` processes. #### More Physics implementation * Partons now have a Colour charge - Colours are read from and written to LHE files - For reweighted events the colours are created according to leading colour in the FKL limit * Use relative fraction for soft transverse momentum in tagging jets (`soft pt regulator`) as new (optional) parameter. - This supersedes `min extparton pt`, which is marked **deprecated** and will be removed in version 2.2.0 - This is a direct replacement for the old `max ext soft pt fraction`, which is also **deprecated**. * Changed the redistribution of the momenta of soft emissions. Now also bosons can take part of the recoil (previously only jets). #### Updates to Runcard * Allow multiplication and division of multiple scale functions e.g. `H_T/2*m_j1j2` * Grouped `event treatment` for subleading channels together in runcard - Rename `non-HEJ` processes to `non-resummable` * Read electro-weak constants from input - new mandatory setting `vev` to change vacuum expectation value - new mandatory settings `particle properties` to specify mass & width of bosons - `HEJFOG`: decays are now specified in `decays` setting (previously under `particle properties`) * Allow loading multiple analyses with `analyses`. The old `analysis` (with "i") is marked **deprecated**. * Optional setting to specify maximal number of Fixed Order events (`max events`, default is all) * Allow changing the regulator lambda in input (`regulator parameter`, only for advanced users) #### Changes to Input/Output * Added support to read & write `hdf5` event files suggested in [arXiv:1905.05120](https://arxiv.org/abs/1905.05120) (needs [HighFive](https://github.com/BlueBrain/HighFive)) * Support input with average weight equal to the cross section (`IDWTUP=1 or 4`) * Support unmodified Les Houches Event Files written by Sherpa with `cross section = sum(weights)/sum(trials)` * Analyses now get general run information (`LHEF::HEPRUP`) in the constructor. **This might break previously written, external analyses!** - external analyses should now be created with `make_analysis(YAML::Node const & config, LHEF::HEPRUP const & heprup)` * Support `rivet` version 3 with both `HepMC` version 2 and 3 - Multiple weights with `rivet 3` will only create one `.yoda` file (instead of one per weight/scale) * Added option to unweight only resummation events (`unweight: {type: resummation}`) * Added option for partially unweighting resummation events, similar to the fixed-order generator. * Improved unweighting algorithm. * Follow HepMC convention for particle Status codes: incoming = 11, decaying = 2, outgoing = 1 (unchanged) #### Miscellaneous * Print cross sections at end of run * Added example analysis & scale to `examples/`. Everything in `examples/` will be build when the flag `-DBUILD_EXAMPLES=TRUE` is set in `cmake`. * Dropped support for HepMC 3.0.0, either HepMC version 2 or >3.1 is required - It is now possible to write out both HepMC 2 and HepMC 3 events at the same time * Require LHADPF version 6. Dropped support for all other versions. * Use `git-lfs` for raw data in test (`make test` now requires `git-lfs`) * Currents are now generated with [`FORM`](https://github.com/vermaseren/form) - `FORM` is included as a `git submodule`, use `git submodule update --init` to download `FORM` * Create [Sphinx](http://sphinx-doc.org/) and [Doxygen](http://doxygen.org/) documentation by `make sphinx` or `make doxygen` in your `build/` folder ## Version 2.0 First release of HEJ 2. Complete code rewrite compared to HEJ 1. Improved matching to Fixed Order ([arXiv:1805.04446](https://arxiv.org/abs/1805.04446)). Implemented processes: Higgs boson with jets (FKL and unordered gluon emission, with finite quark mass loop, [arXiv:1812.08072](https://arxiv.org/abs/1812.08072)), and pure jets (only FKL). See [arXiv:1902.08430](https://arxiv.org/abs/1902.08430) ## 2.0.7 * Added missing `#include` directives. ### 2.0.6 * Fixed compiling rivet when YODA headers are _outside_ of rivet directory. ### 2.0.5 * Fixed event classification for input not ordered in rapidity. ### 2.0.4 * Fixed wrong path of `HEJ_INCLUDE_DIR` in `hej-config.cmake`. ### 2.0.3 * Fixed parsing of (numerical factor) * (base scale) in configuration. * Don't change scale names, but sanitise Rivet output file names instead. ### 2.0.2 * Changed scale names to `"_over_"` and `"_times_"` for proper file names (was `"/"` and `"*"` before). ### 2.0.1 * Fixed name of fixed-order generator in error message. ### 2.0.0 * First release. diff --git a/cmake/Templates/HEJ-config.cc.in b/cmake/Templates/HEJ-config.cc.in index 62929fd..f21213a 100644 --- a/cmake/Templates/HEJ-config.cc.in +++ b/cmake/Templates/HEJ-config.cc.in @@ -1,111 +1,111 @@ /** * \authors The HEJ collaboration (see AUTHORS for details) * \date 2019-2022 * \copyright GPLv2 or later */ #include <cassert> #include <iostream> #include <cstdlib> #include <string> #include <string_view> #include "cxxopts.hpp" #include "HEJ/ConfigFlags.hh" namespace { constexpr std::string_view get_optional_dependencies() { std::string_view optional_dependencies = "" #ifdef HEJ_BUILD_WITH_QCDLOOP "QCDloop " #endif #ifdef HEJ_BUILD_WITH_HepMC2 "HepMC2 " #endif #ifdef HEJ_BUILD_WITH_HepMC3 "HepMC3 " #endif #ifdef HEJ_BUILD_WITH_RIVET #ifdef HEJ_USE_RIVET2 "Rivet2 " #else "Rivet3 " #endif #endif #ifdef HEJ_BUILD_WITH_HDF5 "HDF5 " #endif ; if(! optional_dependencies.empty()) { optional_dependencies.remove_suffix(1); } return optional_dependencies; } constexpr std::string_view OPTIONAL_DEPENDENCIES = get_optional_dependencies(); } int main(int argc, char** argv) { cxxopts::Options options{ argv[0], "Configuration of the @CMAKE_PROJECT_NAME@ installation" }; options.add_options() ("h,help", "show this help message and exit") ("prefix", "show @CMAKE_PROJECT_NAME@ installation prefix") ("includedir", "show the path with the installed @CMAKE_PROJECT_NAME@ header files") ("bindir", "show the path with the installed @CMAKE_PROJECT_NAME@ executable") ("libdir", "show the path with the installed @CMAKE_PROJECT_NAME@ library file") ("libs", "show flags for linking the @CMAKE_PROJECT_NAME@ library") ("cxxflags", "show the compiler flags for the @CMAKE_PROJECT_NAME@ headers") ("cxx", "show the compiler used to build @CMAKE_PROJECT_NAME@") ("optional-dependencies", "show the optional dependencies enabled when building @CMAKE_PROJECT_NAME@") ("version", "show the installed @CMAKE_PROJECT_NAME@ version") ("revision", "show the hash of the installed @CMAKE_PROJECT_NAME@ git revision") ; if(argc == 1) { std::cout << options.help(); return EXIT_SUCCESS; } try { const auto opts = options.parse(argc, argv); if(opts.count("help")) { std::cout << options.help(); return EXIT_SUCCESS; } std::string output{}; for(auto const & op: opts.arguments()){ if(op.key()=="prefix") output += "@CMAKE_INSTALL_PREFIX@"; else if(op.key()=="includedir") output += "@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDE_DIR_BASE@"; else if(op.key()=="bindir") output += "@CMAKE_INSTALL_PREFIX@/@INSTALL_BIN_DIR@"; else if(op.key()=="libdir") output += "@CMAKE_INSTALL_PREFIX@/@INSTALL_LIB_DIR@"; else if(op.key()=="libs") output += "-L@CMAKE_INSTALL_PREFIX@/@INSTALL_LIB_DIR@ -lHEJ"; else if(op.key()=="cxxflags") output += "-I@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDE_DIR_BASE@"; else if(op.key()=="cxx") output += "@CMAKE_CXX_COMPILER@"; - else if(op.key()=="features") + else if(op.key()=="optional-dependencies") output += OPTIONAL_DEPENDENCIES; else if(op.key()=="version") output += "@PROJECT_VERSION@"; else if(op.key()=="revision") output += "@PROJECT_GIT_REVISION@"; output += ' '; } if(!output.empty()) { assert(output.back() == ' '); output.pop_back(); } std::cout << output << std::endl; } catch(cxxopts::OptionException const &) { std::cout << options.help(); } return EXIT_SUCCESS; }