28 July 2023: fastjet-3.4.2 (manual, doxygen, fjcore).
  • Bug fixes:
    • small fix in ClosestPair2D class for compatibility with c++20 (thanks to Andre Sailer for the report and fix)
    • SISCone updated to 3.0.6, which eliminates default -ffast-math compile-time argument, which could cause interference with other code.
2 May 2023: fastjet-3.4.1 (manual, doxygen, fjcore).
  • New features:
    • JetDefinition has a new clustering strategy, N2PlainEEAccurate, intended to work with the ee_kt_algorithm and ee_genkt_algorithms. It replaces the dot-product evaluation of (1-cos(theta)) with a more accurate cross-product evaluation when two particles are close in angle (~10^{-4}). It has a timing penalty of ~15% but can calculate inter-particle angles down to ~epsilon rather than sqrt(epsilon), where epsilon is machine precision. This work has been ported from PanScales.
    • two new functions to make it possible for plugin algorithms to modify user info, as needed for modern flavoured jet-clustering algorithms:
      • PseudoJet::set_user_info_shared_ptr(...), to allow user info to easily be copied from one jet to another and
      • ClusterSequence::plugin_non_const_jet(...) to get non-const access to the initial jets.
  • Bug fixes:
    • Resolved MAJOR BUG that arose with full thread-safety enabled (reported by Ludo Scyboz), where PseudoJet::reset_momentum and PseudoJet::operator= failed to update internally cached values of phi() and rap(). In some instances related issues could also lead to race conditions.
    • eliminated NaN from square-root of negative mean areas in background estimation (now returns zero)
  • Other changes:
    • auto_ptr interface is now disabled by default (deprecated since c++11, removed in c++17); can be manually enabled at configure-time with --enable-auto-ptr
Main release, 25 June 2021: fastjet-3.4.0 (manual, doxygen, fjcore).
  • New features:
    • addition of support for thread safety. It requires a compiler supporting the C++11 standard (or later) and must be explicitly enabled at configure time. There are two options
      • the --enable-limited-thread-safety configure option is generally sufficient if each thread is processing entirely distinct events. It should have essentially no speed overhead.
      • the --enable-thread-safety configure option is required if you want to be able to read/copy/process a common set of PseudoJets across multiple threads. Depending on the system, our tests have shown speed penalties of up to 10-15%. For further details, see section 10 of the manual
    • The jet area infrastructure has new calls to facilitate reproducible multi-threaded running: AreaDefinition::with_fixed_seed(seed) and GhostedAreaSpec::get_last_seed(seed). See section 10.3.1 of the manual.
    • The background estimators have a new interface to facilitate reproducible multi-threaded running: BackgroundEstimatorBase::estimate(...) returns a BackgroundEstimate object, which contains rho, sigma, etc. For details on using it, see sections 8 and 10.3.2 of the manual. The Subtractor class has been updated to use this.
  • Improvements to existing features:
    • the Python interface now has improved exceptions (a fastjet Error is translated into a FastJetError python exception) and can be more easily be used with projects using FastJet that want to define their own python wrappers. Thanks to Patrick Komiske for the suggestions.
    • PxConePlugin now has an optional mode argument for e+e- running (mode=1) instead of pp running (mode=2). Thanks to Stefan Kluth for the suggestion.
  • Bug fixes:
    • the Fortran interface to e+e- interface now returns jets ordered in decreasing energy rather than decreasing transverse momentum.
  • Changes compared to the fastjet-3.4.0-beta.1 release:
    • added set_default_stream_and_mutex to Error and LimitedWarnings to help guard against garbled output.
10 March 2021: fastjet-3.4.0-beta.1 (manual, doxygen, fjcore) is a candidate release for the upcoming fastjet-3.4.0
  • New features:
    • addition of support for thread safety. It requires a compiler supporting the C++11 standard (or later) and must be explicitly enabled at configure time. There are two options
      • the --enable-limited-thread-safety configure option is generally sufficient if each thread is processing entirely distinct events. It should have essentially no speed overhead.
      • the --enable-thread-safety configure option is required if you want to be able to read/copy/process a common set of PseudoJets across multiple threads. Depending on the system, our tests have shown speed penalties of up to 10-15%. For further details, see section 10 of the manual
    • The jet area infrastructure has new calls to facilitate reproducible multi-threaded running: AreaDefinition::with_fixed_seed(seed) and GhostedAreaSpec::get_last_seed(seed). See section 10.3.1 of the manual.
    • The background estimators have a new interface to facilitate reproducible multi-threaded running: BackgroundEstimatorBase::estimate(...) returns a BackgroundEstimate object, which contains rho, sigma, etc. For details on using it, see sections 8 and 10.3.2 of the manual. The Subtractor class has been updated to use this.
  • Improvements to existing features:
    • the Python interface now has improved exceptions (a fastjet Error is translated into a FastJetError python exception) and can be more easily be used with projects using FastJet that want to define their own python wrappers. Thanks to Patrick Komiske for the suggestions.
    • PxConePlugin now has an optional mode argument for e+e- running (mode=1) instead of pp running (mode=2). Thanks to Stefan Kluth for the suggestion.
  • Bug fixes:
    • the Fortran interface to e+e- interface now returns jets ordered in decreasing energy rather than decreasing transverse momentum.
05 May 2020: fastjet-3.3.4 (manual, doxygen, fjcore) is a bug-fix release
  • clarifications in documentation for handling of CGAL v5
  • resolved run-time crash with certain strict g++ options and compilation issue with oracle c++ (both reported by Andrii Verbyitskyi)
  • included SISCone v3.0.5 (fixes signed-unsigned mismatch, no impact on results).
29 November 2019: fastjet-3.3.3 (manual, doxygen, fjcore) is a bug-fix release
  • improved treatment of CGAL in the build system (thanks to Marco van Leeuwen)
  • fixed an overflow issue in the JadePlugin (thanks to Andrii Verbytskyi)
1 October 2018: fastjet-3.3.2 (manual, doxygen, fjcore) is a maintenance release
  • improved the shared-library behaviour by setting the proper inter-dependences (thanks to Jan Strube)
  • included SISCone v3.0.4 with a similar fix
24 April 2018: fastjet-3.3.1 (manual, doxygen, fjcore) is a maintenance release
  • Main FastJet license clarified as being GPL v2 or later
  • added theta() and cos_theta() members to PseudoJet
  • added a --with-cgal-boostdir=... configure option to handle cases where CGAL uses a non-standard Boost installation path
  • fixed compilation bug in the SISCone interface (thanks to Attila Krasznahorkay)
Main release, 12 July 2017: fastjet-3.3.0 (manual, doxygen, fjcore)
  • This release adds a first version of a Python interface to FastJet (some details may still evolve in the future). Enable it with --enable-pyext at configure time and see examples/python/ for usage.
    Thanks to Lily Asquith, Stefano Carrazza and Eric Metodiev for testing and helpful feedback.

23 May 2017: fastjet-3.2.2 (manual, doxygen, fjcore) is a maintenance release:
  • fixed issue with negative masses in MassDropTagger (reported by Johannes Elmsheuser);
  • fixed the return type of some PseudoJet operators;
  • fixed type mismatch for diJ_plus_link in NNFJN2Tiled
4 August 2016: fastjet-3.2.1 (manual, doxygen, fjcore) is a maintenance release:
  • adds a missing assignment operator for ClusterSequence (reported by Roberto Franceschini)
  • eliminates a warning about unused variables when assertions are disabled (reported by Andy Buckley)
  • includes SISCone-3.0.3 which now installs config.h to improve build stability
Main release, 17 March 2016: fastjet-3.2.0 (manual, doxygen, fjcore)
  • exposes the N2Plain and N2Tiled strategies for 3rd-party clustering algorithms under the form of two new classes (NNFJN2Plain and NNFJN2Tiled), similar to NNH
  • includes version 3.0.2 SISCone with minor bug fixes
  • makes template implementation of PseudoJet::obj_sorted_by_values() public
  • adds a --guess-prefix option to fastjet-config (guesses prefix from location of fastjet-config instead of prefix from configure)
  • adds a --disable-auto-ptr option to configure (for clean C++11 compilation)
  • adds internal helpers for C++11 and C++14 features: compile-time deprecation and the override keyword
  • small tweaks to the build system
  • fjcore now ships with an illustrative fortran wrapper and example

4 July 2015: fastjet-3.1.3 (manual, doxygen, fjcore) is a maintenance release:
  • disables JetDefinition::operator(...) when CINT is detected, for ROOT v5 compatibility
  • works around an issue with recent versions of CGAL and the clang compiler
12 March 2015: fastjet-3.1.2 (manual, doxygen, fjcore) is a bug-fix release. Main changes:
  • fixes a rounding error issue in the "lazy" clustering strategies that, in rare cases, caused infinite loops or crashes (reported by Jochen Ott)
  • adds a check on clustering's internal consistency; a failure will throw a new "InternalError" exception (derived from Error)
  • fixes a bug in the extraction of the fjcore code that resulted in fjcore failing for high multiplicities (~1000) (reported by Sergei Chekanov). This issue only affects fjcore, not the full fastjet library
6 January 2015: fastjet-3.1.1 (manual, doxygen, fjcore) is a minor maintenance release. Main changes:
  • fixes a test in Filter.cc that was giving an incorrect outcome when filtering C/A jets with the C/A algorithm and inquiring about jet areas (reported by David Adams)
  • fixes inheritance of GridMedianBackgroundEstimator from RectangularGrid and adds a virtual destructor to the latter base class (reported by Pavel Demin)
Main release, 30 September 2014: fastjet-3.1.0 (manual, doxygen, fjcore).
  • Main improvements relative to version 3.0.6:
    • Significant speed improvements (x1.5-10) for large N (few thousand –105)
    • FASTJET_VERSION_NUMBER preprocessor symbol, for easy in-code version testing
    • New JetDefinition::operator(): jets = jet_def(particles);
    • Native particle-mass support in PU estimation (rho_m())
    • Subtraction can use rho_m (set_use_rho_m()) and force m>0 (set_safe_mass())
    • Addition of Winner-Takes-All recomb. schemes (WTA_pt_scheme, WTA_modp_scheme)
    • SISCone updated to v3.0.0 (addition of SISCone with progressive removal)
    • New Recluster class, serving as base for Filter
    • New RectangularGrid class, base for GridMedianEstimator & GridJetPlugin
    • Fixed long-standing issue with coincident points in NlnN strategies
    • Other small additions and changes include:
      • Selector::sum(particles) to get 4-vector sum of particles that pass selector
      • pruned_jet.structure_of() has Rcut() and zcut() functions
      • easy copying of Recombiner info: jet_def1.set_recombiner(jet_def2)
    • Various bug-fixes, build-system tweaks (e.g. default -O2 instead of -O3)
  • Changes relative to version 3.1.0-beta.1:
    • Addition of Winner-Takes-All recomb. schemes (WTA_pt_scheme, WTA_modp_scheme)
    • SISCone updated to v3.0.0 (addition of SISCone with progressive removal)
    • minor changes including doxygen doc fixes and elimination of gcc warnings

15 August 2014: fastjet-3.1.0-beta.1 (manual, doxygen, fjcore). Main improvements relative to version 3.0.6:
  • Significant speed improvements (x1.5-10) for large N (few thousand-10^5)
  • FASTJET_VERSION_NUMBER preprocessor symbol, for easy in-code version testing
  • New JetDefinition::operator(): jets = jet_def(particles);
  • Native particle-mass support in PU estimation (rho_m())
  • Subtraction can use rho_m (set_use_rho_m()) and force m>0 (set_safe_mass())
  • New Recluster class, serving as base for Filter
  • New RectangularGrid class, base for GridMedianEstimator & GridJetPlugin
  • Fixed long-standing issue with coincident points in NlnN strategies
  • Other small additions and changes include:
    • Selector::sum(particles) to get 4-vector sum of particles that pass selector
    • pruned_jet.structure_of() has Rcut() and zcut() functions
    • easy copying of Recombiner info: jet_def1.set_recombiner(jet_def2)
  • Various bug-fixes, build-system tweaks (e.g. default -O2 instead of -O3)

29 October 2013: fastjet-3.0.6 (manual, doxygen, fjcore) is a minor maintenance release. Main changes:
  • fixed compilation issues for two plugins using clang (clang-500.2.79, Apple LLVM version 5.0 based on LLVM 3.3svn) under OS X 10.9 (Mavericks)
  • fixed incorrect warnings in JHTopTagger, MassDropTagger and an example
  • GridJetPlugin now has extra enquiry functions
16 September 2013: fastjet-3.0.5 (manual, doxygen, fjcore) is a minor maintenance release. Main changes:
  • modified include guards, to solve coexistence issue for fjcore
  • resolved (bogus) compiler warning about uninitialised variables
  • added an example event file that was missing from the distribution
17 July 2013: fastjet-2.4.5 (manual, doxygen) is a minor legacy maintenance release:
  • ensures compatibility with gcc 4.7 and 4.8 and clang 3.1.
  • fixes small issues in the build system.
  • inclusion of SISCone 2.0.6
5 June 2013: fastjet-3.0.4 (manual, doxygen, fjcore) is a minor maintenance release. Changes include:
  • dummy init of PseudoJet rapidity to avoid warnings with some configs.
  • minor code structure adjustments to allow for release of fjcore.
  • inclusion of SISCone 2.0.6
20 June 2012: fastjet-3.0.3 is a bug-fix release, mainly meant to make FastJet fully compatible with gcc 4.7 and clang 3.1.
17 January 2012: fastjet-3.0.2 is mainly a bug-fix release:
  • small fixes to the build system and fastjet-config
  • further licence clarifications
  • users can force early printing of banner with ClusterSequence::print_banner()
  • included SISCone 2.0.5 (with small modifications to the build system)
25 November 2011: fastjet-3.0.1 includes further reorganisation of the manual (version to appear on arXiv), and a number of small additional changes, including:
  • PseudoJet now also has a pt() member function for transverse momentum
  • minor speed improvements (very low N + strategy choice for N ~ 20-50)
  • elimination of many compilation warnings found with -Wextra -Wshadow
  • clarification of licences for many of the plugins + new plugin banners
  • fixed a memory leak in the ATLASConePlugin
Major release, 09/10/11 at 12.13 (GMT): fastjet-3.0.0. Changes relative to the 2.4.x series include:
  • Addition of FastJet tools:
    • Filtering, trimming, pruning and a few boosted object taggers as part of a new native "Transformers" framework for post-clustering manipulation of jets.
    • New background estimation and subtraction interface, with JetMedianBackgroundEstimator, GridMedianBackgroundEstimator and Subtractor.
  • New functionality:
    • Enhancement of the PseudoJet class so that jets are now aware of their internal structure (e.g. one can use jet.constituents()).
    • It is possible to associate arbitrary user information with a PseudoJet.
    • Selectors, which allow easy communication of cuts across different functions
  • Other changes:
    • Improved doxygen and examples
    • aids for easier memory management
    • elimination of the R<π/2 restriction on native jet algorithms
    • control of Error and warning output, including public LimitedWarning class
    • new plugins (GridJet and two D0RunICone plugins)
    • enhanced fortran wrappers
  • Interface modifications (May break backwards compatibility):
    • by default a JetDefinition is initialised to undefined_jet_algorithm instead of kt_algorithm with a radius of 1.
    • JetDefinition::DefaultRecombiner sets the user index of the result of the recombination to -1 (the default for a PseudoJet; previously was being set to 0)
    • ghosts are placed more sensibly in 3.0 than in the 2.X series; call ghost_area_spec.set_fj2_placement(true) to reinstate old behaviour
    • CS::exclusive_subjets used to silently return fewer subjets than requested if there were too few particles in a jet; to be consistent with exclusive_jets(...) it now throws an exception; use exclusive_jets_up_to(...) and exclusive_subjets_up_to(...) to avoid the exception.
    • ATLASCone and TrackJet plugins use stable_sort instead of sort for more stable behaviour across architectures and compiler versions; this can change clustering results in events with degeneracies.
    • some legacy headers have been removed (include/FjPseudoJet.hh and include/FjClusterSequence.hh), and some classes are deprecated: ClusterSequenceWithArea (use ClusterSequenceArea instead), ActiveAreaSpec (use GhostedAreaSpec instead), and RangeDefinition and CircularRange (use Selector instead); see appendix G in manual for further small removals.
  • Configure modifications
    • the plugins are by default built in a single 'libfastjetplugin' library. This is transparent if you use the fastjet-config script. The previous behaviour (each plugin in its own library) can be recovered by passing the --disable-monolithic option to configure.
    • an additional library, libfastjettools, contains tools like boosted object taggers, filters, etc. It is included by default with "fastjet-config --libs"
  • New features relative to 3.0beta1:
    • addition of Pruner class
    • control of Error and warning output, including public LimitedWarning class
    • addition of SelectorIsZero
    • ClusterSequence::childless_pseudojets()
  • Bug fixes and other changes relative to 3.0beta1:
    • JetMedianBackgroundEstimator::set_particles(...) no longer resets other parameters
    • fixed issue with persistency of internal recombiner in Filter
    • removed deprecated ClusterSequence constructor with R (rather than jet def) and also CS::set_jet_algorithm(...), CS::set_jet_def(...)

10 August 2011: fastjet-3.0beta1 includes the majority of the features expected for the 3.0 series and an interface that should now mostly remain stable.
  • New features relative to 3.0alpha3
    • Reorganised background estimation to have a JetMedianBackgroundEstimator and a GridMedianBackgroundEstimator (derived from BackgroundEstimatorBase) [v3.0alpha3 programs should replace BackgroundEstimator -> JetMedianBackgroundEstimator, and use a new order of constructor arguments]
    • Added the GridJetPlugin
    • added a TopTaggerBase and a Johns Hopkins top tagger (JHTopTagger)
    • to JetDefinition added delete_plugin_when_unused(), delete_recombiner_when_unused()
    • improved Filter (for area and recombiner support, also works with a subtractor)
    • added a --config flag to fastjet-config
  • Bug fixes and other changes relative to 3.0alpha3
    • some speed gains in the default recombiner
    • TrackJet and ATLASCone now use stable_sort (can change results; makes results stable across machine architectures & compilers, cf BUGS)
    • fixed bugs in Voronoi areas (as in v.2.4.4)
    • fixed bugs in handling of empty areas in background estimator (as in 2.4.4)
    • renamed SelectorMXXX -> SelectorMassXXX
    • renamed NSubjettinessTagger -> RestFrameNSubjettinessTagger
    • exclusive_[sub]jets(njets) now consistenty throws an error if it can't deliver njets; exclusive_[sub]jets_upto(njets) gives up to njets
    • deprecated ClusterSequenceWithArea and ActiveAreaSpec (ClusterSequenceWithArea no longer available from ClusterSequenceArea.hh header)
    • deprecated RangeDefinition & CircularRange; use Selector instead
    • reorganisation of substantial parts of the manual
8 July 2011: fastjet-2.4.4 is a bug-fix release:
  • fixed issue of incorrect Voronoi areas for certain rare event configurations
  • protected against an out-of-bounds array access in rho and sigma calculation for large negative empty areas (thanks to CMS for reporting these 2 items)
  • included SISCone 2.0.2 (with small modifications to the build system)
3 June 2011: fastjet-3.0alpha3 provides another snapshot of the development towards 3.0.
  • New features
    • Added a series of "Transformer"s in tools/ (Subtractor, Boost/Unboost, MassDropTagger,NSubjettinessTagger,CASubJetTagger) and updated Filter.
    • CS::delete_self_when_unused() allows it to handle its own memory management
    • GhostedAreaSpec can take a Selector to help specify ghost placement
    • added a FunctionOfPseudoJet base class to help standardise tool interfaces
    • ClusterSequence::transfer_from_sequence now allows for a FunctionOfPseudoJet argument to transform (e.g. boost) the jets from an old sequence as they are transferred to the new one
    • fortran interface now has basic area functionality
  • Changes to features introduced in alpha2 and alpha1:
    • Numerous changes to BackgroundEstimator to enhance its flexibility
    • jet.pieces() for a jet from a clustering now returns the two parents
    • various changes to behaviour of a jet's structural calls; see new table in doc
    • PseudoJet::extra_properties<...>() -> PseudoJet::structure_of<...>() (cf example 12)
    • join(...) can now include a recombiner argument; it also now supports areas
    • Selector::count(jets) to know how many pass a cut (also new: Selector::sift)
  • Other changes
    • by default a PseudoJet is constructed with zero momentum
    • by default a JetDefinition has an undefined_jet_algorithm
    • efficiency improvements in PtYPhiM and ghost generation
    • all uses of RangeDefinition now replaced by Selector. Old interfaces deprecated.
    • added an example (09) to illustrate how to add user-info to a PseudoJet
    • doxygen output now configured with an internal search engine
  • Bug fixes
    • the default recombiner used to set the user_index to the non-default value of 0. Now it sets it to the default (-1).
    • fixed crashes of VoronoiAreas for particles on a grid (also in 2.4.3)
14 April 2011: fastjet-2.4.3 is a bug-fix release:
  • fixed rounding-error issue in Voronoi areas, which was causing NaN areas in some circumstances. (Problem reported by Sue Ann Koay)
  • fixed issue with inconsistent returned sign in PseudoJet::delta_phi_to(...)
10 March 2011: fastjet-3.0alpha2 provides another snapshot of the development towards 3.0.
  • New features:
    • two jets, a and b can now be joined: PseudoJet a = join(b,c), intended to facilitate packaging the result of substructure tools; individual pieces can be recovered with a.pieces();
    • New PseudoJetStructureBase class, to help implement such features
    • New fastjet/tools/Filter.hh provides a unified interface to filtering and trimming
    • New very preliminary fastjet/tools/BackgroundEstimator.hh to provide a more flexible interface to estimation of backgrounds (removal of hardest jets, etc.).
    • a few extra Selectors
  • Changes to features introduced in alpha1:
    • Selector is now in fastjet/Selector.hh (no longer fastjet/tools/...)
    • Selector::relocate(...) and is_relocatable() renamed to Selector::set_reference(...) and takes_reference()
    • PseudoJet::ExtraInfo has been renamed PseudoJet::UserInfoBase and corresponding access functions are now called set_user_info(...), etc.
  • Other changes and fixes
    • some legacy headers removed
    • bug fixes in NlnNCam strategies for R>pi
27 January 2011: fastjet-3.0alpha1 provides a preliminary preview of some of the features planned for the 3.0 series:
  • New features:
    • Several extensions to PseudoJet:
      • it now knows what ClusterSequence it belongs to
      • info about internals of jets can be accessed e.g. as jet.constituents()
      • it now has a virtual destructor + other support for classes derived from PseudoJet
      • new facilities for associating user info with a jet (see PseudoJet::ExtraInfo)
      • some of these features make use of a new SharedPtr class (intended mainly for advanced users) similar to C++0x std::shared_ptr
      • phi and rapidity only on request (and then cached)
    • R can now be taken larger than pi/2 for natively coded jet algorithms
    • Addition of "Selector" tools through #include "fastjet/tools/Selector.hh"
    • New plugin for D0RunICone (code contributed by Lars Sonnenschein)
    • Improvements to fortran wrapper (access to SISCone, jet constituents, etc.)
  • Bug fixes:
    • fixed issue with inconsistent returned sign in PseudoJet::delta_phi_to(...)
  • Other notable changes:
    • Revamping of examples
    • by default all plugins are now packaged into libfastjetplugins. Note that "external" libraries like libsiscone are still separate.
    • Significant improvements to doxygen documentation
26 February 2010: fastjet-2.4.2 is mainly a bug-fix release:
  • exclusive_ymerge_max(...) was not working; now fixed
  • the D0RunIIConePlugin gave segfaults for some parameters; now fixed
  • the D0RunIIConePlugin gave different results on 32/64 bit machines; optimisation flags now changed just for D0 code so that 32 bit gives same results as 64 bit.
  • changes to configure.ac to better handle fortran compiler checks
  • removed some orphan/redundant code that was generating compilation warnings
  • added an "--enable-monolithic" option to ./configure which causes all plugins to be placed in a single library (except SISCone)
  • added a "--list-plugins" option to fastjet-config
29 May 2009: fastjet-2.4.1 is mainly a bug-fix release:
  • Fixes to the build system
    • Included SISCone 2.0.1 (shared libs now enabled by default in SISCone too, and other small fixes)
    • Fixed platform-dependent failures during make check
    • Fixed gcc 4.4 compatibility issues (missing headers)
    • Fixed a problem on Mac OS X with the arguments provided by "fastjet-config --libs" (--rpath versus -rpath).
    • fastjet-config has new optional arguments (--rpath=no, --runpath) related to finding shared libraries at runtime on linux. Run fastjet-config without any arguments for more info. To instead use static libraries, either configure with the --disable-shared option, or use fastjet-config with the --shared=no option.
    • fastjet-config can now take --cxxflags and --libs in a single invocation
    • With --cxxflags, fastjet-config now returns the minimal required set of arguments
    • Various other small mods (better fortran support, standardisation, ...) [thanks to Andy Buckley and David Grellscheid for suggestions]
  • Also
    • Added a fortran wrapper for pp sequential recombination algorithms
    • Fixed issue in median rho estimation when some jets have zero area
    • Expanded descriptions that are returned by ATLAS/TrackJet/CMS plugins
    • Warnings are no longer given when using exclusive jets with Cam/Aachen and certain e+e- algorithms (the warnings were misleading)
    • Small fixes to the manual
Main release, 17 April 2009: fastjet-2.4.0. Changes include
  • New pp algorithms
    • added implementation of generalised kt algorithm (genkt_algorithm) for pp
    • added D0RunIICone plugin [--enable-d0runiicone at configure time]
    • added ATLASCone Plugin [--enable-atlascone at configure time]
    • added CMSIterativeConePlugin [--enable-cmsiterativecone at configure time]
    • added TrackJet Plugin (used by CDF in UE studies) [--enable-trackjet at configure time]
  • Introduction of e+e- algorithms
    • added an implementation of the e+e- kt algorithm (ee_kt_algorithm),
    • added EECambridgePlugin for the (original) e+e- Cambridge algorithm
    • added JADEPlugin for the JADE algorithm (see the ChangeLog or header file for details)
    • added SISConeSphericalPlugin [enabled by default] for SISCone in e+e- and other spherical environments.
    • native implementation of generalised kt algorithm for e+e- (ee_genkt_algorithm) [also provides access to e+e- form of anti-kt alg, conical jets on a sphere]
    • added JadePlugin for the e+e- Jade algorithm
  • Added the NestedDefs meta-algorithms for daisy-chaining multiple jet definitions (still under testing; API may change in the future)
  • New functionality
    • added subjet functions for viewing jet at particular dcut, etc.
    • added access to exclusive jets based on ycut as well as dcut (for e+e-)
    • added support for asymmetric rapidity ranges in GhostedAreaSpec
    • added support for a CircularRange (derived from RangeDefinition) for use in background estimation
    • added class NNH to help users implement algorithms with user-chosen distance measure (see JadePlugin for an example)
  • Interface modifications
    • removed default value of 0.5 for overlap_threshold in CDFMidPointPlugin, CDFJetCluPlugin and SISConePlugin constructors. May break backwards compatibility
    • a JetDefinition(jet_alg) constructor, without an R value, is no longer legal, except when jet_alg is ee_kt_algorithm (it has no R). May break backwards compatibility
    • in SISCone, new way of accessing the information about pass at which a jet was found (old method retained for 2.4, but now deprecated)
  • Configure modifications
    • added --enable-allplugins and --enable-allcxxplugins options, to avoid having to specify a long list of individual plugins.
    • shared libraries are now enabled by default
  • Bugs fixed
    • fixed missing support for periodicity in azimuth in RangeDefinition class
  • Other modifications
    • added support for CGAL 3.4 (for non-standard locations, specify --with-cgaldir at configure time)
    • removed restriction that fastjet throws exception on empty events
    • added an example that illustrates the use of subjet techniques for a boosted Higgs→b+bbar search

15 August 2008: fastjet-2.3.4 is a bug fix release. In particular
  • fixed infinite-loop bug in JetClu plugin on certain rare events
  • fixed compatibility issues of certain example programs with g++-4.3
  • incorporated SISCone 1.3.3 with similar g++-4.3 fixes
28 April 2008: fastjet-2.3.3 is a bug fix release:
  • fixes to installation (missing file)
  • a further fix under Windows VC7.1 (missing "typename")
3 April 2008: fastjet-2.3.2 is a bug fix release:
  • fixes to propagation of CXXFLAGS through the build chain
  • small change in Voronoi area code to fix crashes on regular (calorimeter) layouts of momenta
  • small change in active areas code to fix crashes on algorithms that do not cluster all particles
  • eliminated "using namespace std" that had accidentally been left in certain area header files
  • incorporation of SISCone 1.3.2 with fixes for inappropriate public symbols and to build framework
7 March 2008: fastjet-2.3.1. Version 2.3.1 (relative to 2.3.0, the previous stable release) is mainly a bug-fix release. In particular
  • Fixed compilation issues under windows VC7.1 (reported by I. Belyaev); also included SISCone 1.3.1 with similar fixes.
  • Fixed speed issue under optimized compilation of CDF MidPoint plugin for 32 bit architectures that had arisen subsequent to the switch to autotools with its common optimization settings.
  • Fixed "make check" failure with the --disable-siscone option.
  • Fixed crash in exclusive_dmerge(njets) for njets=0 (reported by P. Lenzi)
Main release, 3 January 2008: fastjet-2.3.0. New in version 2.3.0 (relative to 2.1.0, the previous stable release):
  • added the anti-kt algorithm (LPTHE-07-03), which is a sequential recombination algorithm that gives conical jets.
  • Added Passive and Voronoi areas, and new common class for accessing all types of areas, ClusterSequenceArea.
  • switched to autotools for compilation and installation:
    ./configure --prefix=... make make check [optional] make install
    NB: users should no longer include fastjet-2.x.y/Makefile when building their own programs, and instead should use
    g++ -c file.cc `fastjet-config --cxxflags` g++ file.o `fastjet-config --libs --plugins`
  • plugin include files are now to be accessed with fastjet/ in front of them, i.e.
    #include "fastjet/SISConePlugin.hh"
    A simple #include "SISConePlugin.hh" is now obsolete but will continue to work through 2.x
  • Added RangeDefinition class to provide more flexibility in UE/pileup estimation.
  • New facilities for navigating the cluster sequence (has_parents, has_child and has_partner members of ClusterSequence)
  • other bug fixes and small enhancements (including SISCone-1.3.0, improvements to plugin facilities).

3 December 2007: fastjet-2.3-beta0. Changes relative to v2.2beta0 include:
  • New build and install tools (Autotools)
  • Plugins are to be accessed via #include "fastjet/PluginName.hh" now, rather than #include "PluginName.hh" (old method will continue to work throughout v2).
  • SISCone v1.3.0 included
  • Fortran wrapper for SISCone added to the distribution
  • Documentation updated
  • A number of minor improvements and safety checks
  • Renaming of protected variables _jet_finder and _default_jet_finder to _jet_algorithm and _default_jet_algorithm (Les Houches convention) in ClusterSequence.hh breaks backword compatibility for user-written derived classes. No consequences for normal use, where backward compatibility is preserved by typedef and public methods.
  • Further details are given in the NEWS file. See also the doxygen documentation.

28 June 2007: fastjet-2.2beta0. Changes relative to v2.1.0 include:
  • Added functionality for Passive and Voronoi areas in addition to the Active areas available in previous versions (as described in LPTHE-07-02).
  • Added a new class for accessing these various areas, ClusterSequenceArea
  • Included SISCone v1.2.0, and related plugin enhancements, providing some speed improvements, and notably fast passive areas.
  • Added the anti-kt algorithm (LPTHE-07-03).
  • Rationalised the methods for background estimation: added them to the ClusterSequenceAreaBase class, and provided facilities so that they can be restricted to arbitrary user-defined rapidity-azimuth regions.
  • Added some basic facilities to ClusterSequence (has_parents, has_child, has_partner) for navigating through the clustering sequence.
  • Gregory Soyez has joined the team of authors.
  • Documentation of new features still preliminary.
  • Further details are given in the ReleaseNotes. See also the doxygen documentation.

Main release, 2 April 2007: Version 2.1.0 (relative to v2.0.0):
  • added plugin structure for external jet finders.
  • included plugins for SISCone, CDFMidPoint, CDFJetClu, PxCone.
  • introduced option of control over recombination scheme, with a RecombinationScheme enum.
  • added description() member function to JetDefinition class, so that you can get a (string) summary of what you're running!
  • changed the default number of repeats in ActiveAreaSpec to 1 (which is sufficient for most purposes).
  • See also the doxygen documentation.

16 March 2007: Version 2.1.0b4. Changes relative to v2.1.0b3:
  • The default number of repeats for area evaluations has been changed from 5 to 1 (this gives a significant speed improvement without significantly affecting results on real events; note though that it provides a zero error estimate for the area).
  • The release now includes SISCone 1.1.1 (was 1.1.0); this contains a modification of the variable used by default in the split-merge step, so as to avoid infrared safety problems in some special cases (read more). Also: the default number of passes has been set to 0 (i.e. infinite).
  • Small changes to the distributed versions of the CDF midpoint code (option allow the use of the same split-merge as SISCone 1.1.1, and corresponding modification of the plugin).
3 March 2007: Version 2.1.0b3. Changes relative to v2.1.0b2:
  • The release now includes SISCone 1.1.0 (was 1.0.0); this fixes several numerical issues and includes a change in the specification of the split-merge part of the algorithm to ensure IR safety for purely hadronic (momentum-conserving) events. SISCone, though stable in terms of the underlying software, is currently still under test from the physics point of view, and the physics content may evolve in future releases. The main remaining issue concerns the choice of the split-merge variable and is expected to be solved in the coming days (read more).
  • Small changes to the distributed versions of the CDF midpoint code (option allow the use of the same split-merge as SISCone 1.1.0, and corresponding modification of the plugin) and PxCone (bug fixes).
  • Other small enhancements ("extras" in the plugin mechanism) and bug fixes
8 February 2007: Version 2.1.0b2

23 January 2007: Version 2.1.0b1

7 December 2006: Version 2.1.0b0

Major release, 9 October 2006: Version 2.0.0 (relative to v1.0) include
  • New classes that extract information on the areas of jets while performing the clustering, via the addition of large numbers of "ghost" particles. This is useful when correcting for underlying-event and pileup activity and in heavy-ion events (see the following talk).
  • Some modest gains in speed (up to a factor of two) in the range N=400-15000 (or even larger for small R).
  • Implementation of the inclusive version of the Aachen/Cambridge jet finder (including the option of a dedicated NlnN strategy that does not rely on CGAL)
  • A new user-interface, which was required in order to provide easy to access to the new features (the old interface is retained for backwards compatibility).

A known limitation of this release is

  • Imperfect selection of the best jet-finding strategy for small R (N in the 10-30k range).
Limitations inherited from v1 include
  • Fastjet has been successfully run with gcc-3.3, gcc-3.4 (CGAL-3.1) and gcc-4.1 (CGAL-3.2). With gcc-3.2 (and CGAL-3.1) the N ln N strategy fails for unclear reasons on certain events (note that gcc-3.2 is no longer supported as of CGAL-3.2), and only the N2 strategies work reliably.
  • The CGAL based N ln N strategy does not currently support events in which two or more momenta have identical eta-phi values, owing to complications in the representation of identical points in the underlying Delaunay Triangulation structure. So far this does not seem to have ever been an issue, however should it become one, a fix will be released.
  • The N2Tiled (and related) strategies have memory use that is proportional to R-2. This can lead to problems for very small R (for example if carrying out very fine preclustering) and one should then instead use either the N2Plain or one of the NlnN... strategies. Currently the automated selection of the best strategy does not account for this.

30 August 2006: Version 2.0.0b1

17 February 2006: Version 1.0.0b3

3 February 2006: Version 1.0.0b2

3 February 2006: Version 1.0.0b1