Skip to content

Releases: KLFitter/KLFitter

KLFitter release v1.4.0

01 Jun 14:52
9ebd276
Compare
Choose a tag to compare

This release adds a new likelihood to the KLFitter package and fixes a compilation issue:

  • New class LikelihoodOneHadronicTop added which attempts to reconstruct a (complete or incomplete) final state of one single top quark decaying into hadrons (PRs #100, #101, #102). Documentation is updated accordingly.
  • Added missing include when compiling against recent version of ROOT (6.24) (PR #103).

KLFitter release v1.3.2

23 Apr 09:31
c3d33a5
Compare
Choose a tag to compare

This release fixes problems with KLFitter compilation on MAC with clang compilers:

  • Due to non-ISO c++ in the code, the KLFitter build failed on MAC with recent versions of clang. In particular, both our SL6 builds and the CI (ubuntu16) did not catch cases, in which constant expressions were declared using std library functions that were not declared constexpr themselves. This is now adjusted and KLFitter compiles on MAC again (PR #96).
  • The above PR also fixes a few compilation warnings with missing override specifiers.

KLFitter release v1.3.1

16 Apr 15:44
d6a68f7
Compare
Choose a tag to compare

This release fixes two bugs that were discovered in certain configurations of KLFitter:

  • When running the ttH likelihood with floating Higgs mass, the code exited with an error message, because the Higgs mass parameter was not added correctly (PR #93).
  • When running a likelihood that removes invariant groups of permutations, the code crashed when more than one extra jet was provided. This was discovered with the all-hadronic likelihood, where the three jets of the top quark and the three jets of the anti-top quark are interchangeable. The all-hadronic likelihood crashed when 8 jets or more were used (PR #94).

KLFitter release v1.3.0

14 Nov 12:14
a0d760a
Compare
Choose a tag to compare

This release introduces a new major feature: a new detector class. In addition, it makes a couple of important performance improvements and a few other minor changes:

  • A new detector class was added that supports new parameterisations of transfer functions using a Crystal Ball function. The corresponding resolution classes were added, too (PRs #77, #83, #89).
  • To speed up the computation, the resolution classes now directly retrieve the logarithm of the probability, which is then directly passed to the likelihood classes. This speeds up the code for resolutions that have a simplified calculation for logarithms, e.g. the single Gaussian resolutions (PR #85).
  • Some computations were sped up by implementing the use of constant expressions (PR #81).
  • Support was added for jet eta ranges beyond 2.5 (PRs #84, #90).
  • A few compilation warnings were fixed (PRs #75, #78, #91).

KLFitter release v1.2.1

13 Oct 07:52
12ac497
Compare
Choose a tag to compare

This release fixes two bugs that were introduced in recent releases, but have not been discovered until now:

  • Function to set prior probability to 0 was removed by accident. This lead to a few events having different output w.r.t. the previous version (PR #67).
  • Crash of the all-hadronic likelihood during invariant permutation removal due to dangling reference (PR #66).

This release fixes both.

KLFitter release v1.2.0

24 Aug 16:19
d34f4be
Compare
Choose a tag to compare

This release introduces a new likelihood to KLFitter, fixes problems with the handling of transfer functions, and makes a couple of small adjustments and fixes in the backend. The two highlights are:

  • LikelihoodTwoTracks, a likelihood for the reconstruction of a particle decaying into two charged particles, for example K_S -> pi^+ pi^-.
  • Adjustment of the handling of transfer functions. This permanently solves the issue that was silenced as a quick fix in release v1.1.1. The code now only explicitly fails when the transfer functions do not meet the requirements defined by the used likelihood. This also avoids unnecessary warnings issued by the code in certain configurations.

Full list of changes:

  • The implementation of the Snowmass detector transfer functions had a bug in the calculation of the width (Sigma). This bug is now fixed (issue #48, PR #47).
  • The overloaded methods Particles::AddParticle() now respect const correctness. The old implementations of these methods were left to remain compatible with interfaces using them, but they will be removed in the next major release (issue #49, PR #51).
  • The likelihoods LikelihoodTopLeptonJets_Angular and LikelihoodTopLeptonJets_JetAngles share a lot of functionality with the main lepton+jets likelihood. For that reason, they were reimplement as derived classes of LikelihoodTopLeptonJets to avoid code duplication (issue #50, PR #52).
  • All lepton+jets likelihood classes were revised in a more general fashion: consistent naming of members, consistent formatting, also of the header comments. This revision will be done with the remaining classes step by step as well (PR #53).
  • In a similar fashion, the Particles class was revised. In addition to the above cosmetic changes, the methods of the class now respect const correctness (PR #55).
  • When using more stringent compilation flags, such as -Wextra, the code produced some warnings. These were now addressed/suppressed accordingly (PR #54).
  • The example implementation file incorrectly used the track eta of electrons to identify the eta bin of the transfer function parameterisation. This was fixed, i.e. the eta bin is determined by the eta value of the corresponding calorimeter cluster that detected the electron, not by the track eta (PR #57).
  • A new likelihood LikelihoodTwoTracks was added to KLFitter. This likelihood implements the reconstruction of one particle decaying to two charged particles, e.g. K_S -> pi^+ pi^- (PR #60).
  • The handling of transfer functions was completely revised. The likelihoods now contain a list of the needed resolution functions which are "requested" to the detector class. For the likelihoods to function, the detector needs to fulfil two criteria: (1) it needs to explicitly implement the corresponding resolution functions, (2) the parameters for these functions need to be provided, usually as a text file. If one of the criteria is not met, the fitter will exit with an error. This avoids multiple problems with the previous code: no unnecessary warnings are produced, and the fitter exits when the correct configuration is not provided (issues #36, #37, #56, #58, PR #61).

KLFitter release v1.1.1

08 Aug 15:55
Compare
Choose a tag to compare

This is a fix-up release that makes one small adjustment to v1.1.0: the class DetectorAtlas_8TeV required transfer function parameters for various types of particles and parameterisations that were not used in the main likelihood classes:

  • gluon jets
  • photons
  • eta parameterisations for jets
  • phi parameterisations for jets

This release removes the explicit requests for these transfer function parameters. As described in issue #56, the mid-term plan is to change KLFitter's behaviour for requiring detector implementations and transfer function parameters, which will eventually revert this change in the next minor release.

Be aware that this temporarily removes support for the angular jet parameterisations which are needed for the class LikelihoodTopLeptonJets_JetAngles to function.

KLFitter release v1.1.0

08 Jun 08:37
373a4fe
Compare
Choose a tag to compare

To allow a smooth transition to a public version of the KLFitter library, the previous release did not introduce any major changes to the source code. This release makes first improvements of the source code. A few highlights:

  • Cases, where all permutations are vetoed when using kVetoNoFit, are now caught. KLFitter still exits, because no permutations are left to fit, but the problem is pointed out to the user explicitly.
  • New b-tagging option kVetoHybridNoFit added. This option runs as kVetoNoFit, but switches to kVetoNoFitLight in the above case, i.e. it doesn't crash when all permutations are vetoed.
  • A KLFitter class reference guide was added and uploaded to https://KLFitter.github.io. The class reference guide updates with every merge into the master branch automatically.
  • Two memory leaks fixed.
  • Lots of simplifications and revised implementations of the internal classes, specifically inheritance structures between them. None of the changes are interface-breaking.

All changes in detail:

  • To allow backwards compatibility for users of the pre-public version of KLFitter, a page with all SVN tags was added to the documentation. This page lists all SVN tags of the ATLAS-internal version of KLFitter and their corresponding commits (#15).
  • Two memory leaks were found and fixed. One of them originates from the BAT library, but can be circumvented by implementing a call to a clear() function in a destructor (issues #17 and #18, PR #19).
  • A few typos were fixed in the documentation (PR #20).
  • The author list was updated (PR #20).
  • In a series of pull requests, the number of raw pointers (and user-side memory management) was gradually brought to zero. The pointers were either re-implemented as smart pointers, or converted into the corresponding object type if appropriate (issue #16, PRs #22, #24, #25, #29#31, #34).
  • All direct includes of ROOT classes were removed from the header files. Some of those includes were entirely unnecessary, some of them could be avoided by using forward declarations. This shifts the dependency on ROOT entirely to the implementation files only (issue #21, PR #23).
  • The keywords virtual, override and are now used consistently throughout the code. This greatly clarifies the inheritance structures of the classes (PR #27).
  • Lots of likelihoods contained identical implementations of the same functions. The implementations were now moved to the base class LikelihoodBase, and the functions are only re-implemented in the derived classes if needed. This reduces the overall code size by about 1000 lines (PRs #28, #46 ).
  • The core classes Fitter, Particles, Permutations and PhysicsConstants are now marked as final to prevent derived classes. In addition, Particles and Permutations now have implementations of copy constructors and assignment operators (some of which became trivial after removing the raw pointers) (PRs #27, #31).
  • The handling of events, where all permutations are vetoed, was improved. Those cases are now explicitly pointed out to the user (PR #33).
  • Destructors are now defaulted via = default if applicable (issue #26, PRs #31, #35).
  • A new b-tagging option for likelihoods,kVetoHybridNoFit, was added. This option behaves like kVetoNoFit, unless there are no allowed permutations left in an event. Then it switches to kVetoNoFitLight. This ensures that every event will have allowed permutations and thus the code will never crash due to a "wrong" event selection. The physics performance is almost identical to the kVeto option, but using kVetoHybridNoFit significantly reduces the CPU running time (issue #11, PRs #32, #39).
  • The KLFitter class reference guide, generated by doxygen, is now online under https://KLFitter.github.io. Thanks to auto-deployment scripts from our Travis CI, this guide gets updated with every merge into the master branch (PRs #40, #42, #43, #44).

Release v1.0.0 – First public release of KLFitter

20 Apr 11:45
5ff7b39
Compare
Choose a tag to compare

This marks the first public release of the KLFitter library source code. With little changes between 2014–2017 in the ATLAS-internal version, the library was revised entirely in the last four months. All changes in detail:

Changes in terms of the library structure

  • The KLFitterExtras subdirectory was removed. As it only contained auxiliary material, which had never been part of the KLFitter library itself, it was decided to not make this material public.
  • The directory structure was adjusted to follow a more generic c++ convention: implementation files are stored under src/, the header files are located under include/KLFitter. All includes in the code now consistently use the pattern #include "KLFitter/*.h for library-internal header files.
  • In order to comply with ATLAS publishing policies, it was decided to not include the transfer function parameterisations of the ATLAS detector. Therefore, the subdirectories within data/ containing the parameter sets were removed.

Changes for building the KLFitter library

  • KLFitter now fully supports compilation via cmake. This greatly improves cross-platform compatibility and allows to use KLFitter within larger frameworks and have a fully automated build of the library.
  • The cmake configuration file includes the option -DBUILTIN_BAT=TRUE which allows in included build of the KLFitter dependency BAT. If this option is used, BAT is downloaded from its github directory, compiled with automated configuration and then used by the linker for the KLFitter compilation. This allows an out-of-the-box build of BAT and KLFitter, only leaving ROOT and cmake as pre-installed dependencies.
  • The KLFitter Makefile was revised and works again.

Changes to the core source code

To allow a smooth transition towards a public version of KLFitter, no core functionality was changed. However, the code was cleaned up thoroughly:

  • All unused bits of the code, some of which were commented already, were removed.
  • Documenting comments were revised; unnecessary comments were removed, unclear comments rephrased.
  • The doxygen-style comments for the class header files were fixed in order to allow an automated build of the doxygen documentation again.
  • The code was formatted to follow a more consistent coding style. This includes indentation, whitespaces, usage of braces and brackets, etc.
  • Include statements within header files were changed to forward declarations where appropriate. This reduces the number of header files that need to be shipped with a pre-compiled version of the library.

Other additions and changes

  • KLFitter is now licensed under the GNU Lesser General Public License v3.0. The license terms and conditions were thus added to the repository, and boiler plate notices were added to all source code files.
  • KLFitter now comes with an implementation of a generic detector, based on the Snowmass detector, described in more detail here. Transfer function parameterisations have been added accordingly.
  • KLFitter now contains a working example that demonstrates how to implement the library. The example is shipped with a small input file, and uses the Snowmass detector. The example implementation is compiled automatically when using the cmake build.
  • The documentation of KLFitter was completely revised and is now included within this repository. The README page describes the installation procedures and contains links to the other documentation pages.
  • Templates for pull requests and issues on github were added to allow easy bug reports, feature requests and a good documentation of all changes.
  • The repository uses continuous integration tests via travis-ci.org to ensure that pull requests don't break the compilation and execution of the library source code. A short unit test file was created to run the lepton+jets likelihood on a single event and ensure that the output values are identical with respect to a reference file. The CI tests perform three different build scenarios: fully automated cmake build including BAT, cmake build with pre-installed BAT, compilation via Makefile with pre-installed BAT.