1Release Notes for FastJet
2-------------------------
4================================================================
5Summary of changes from v3.4.2 -> v3.4.3: 2024-07-05
6================================================================
10* python interface looks also for python3-config
12* various build-system upgrades, including merge requests
13 !2 (compatibility with plain sh) and !3 (updated configure scripts)
14 -- thanks to Eli Schwartz.
16================================================================
17Summary of changes from v3.4.1 -> v3.4.2: 2023-07-28
18================================================================
22* small fix in ClosestPair2D class for compatibility with c++20
23 (thanks to Andre Sailer for the report and fix)
25* SISCone updated to 3.0.6, which eliminates default -ffast-math
26 compile-time argument, which could cause interference with other code.
28================================================================
29Summary of changes from v3.4.0 -> v3.4.1: 2023-05-02
30================================================================
34* JetDefinition has a new clustering strategy, N2PlainEEAccurate,
35 intended to work with the ee_kt_algorithm and ee_genkt_algorithms. It
36 replaces the dot-product evaluation of (1-cos(theta)) with a more
37 accurate cross-product evaluation when two particles are close in
38 angle (~10^{-4}). It has a timing penalty of ~15% but can calculate
39 inter-particle angles down to ~epsilon rather than sqrt(epsilon),
40 where epsilon is machine precision. This work has been ported from
43* two new functions to make it possible for plugin algorithms to modify
44 user info, as needed for modern flavoured jet-clustering algorithms:
45 . PseudoJet::set_user_info_shared_ptr(...), to allow user info to
46 easily be copied from one jet to another and
47 . ClusterSequence::plugin_non_const_jet(...) to get non-const access
52* Resolved MAJOR BUG that arose with full thread-safety enabled
53 (reported by Ludo Scyboz), where PseudoJet::reset_momentum and
54 PseudoJet::operator= failed to update internally cached values of
55 phi() and rap(). In some instances related issues could also lead to
58* eliminated NaN from square-root of negative mean areas in background
59 estimation (now returns zero)
63* auto_ptr interface is now disabled by default (deprecated since c++11,
64 removed in c++17); can be manually enabled at configure-time with
67================================================================
68Summary of changes from v3.3.4 -> v3.4.0: 2021-06-25
69================================================================
72* addition of support for thread safety. It requires a compiler
73 supporting the C++11 standard (or later) and must be explicitly
74 enabled at configure time. There are two options
75 - the --enable-limited-thread-safety configure option is generally
76 sufficient if each thread is processing entirely distinct events.
77 It should have essentially no speed overhead.
78 - the --enable-thread-safety configure option is required if
79 you want to be able to read/copy/process a common set of PseudoJets
80 across multiple threads. Depending on the system, our tests have
81 shown speed penalties of up to 10-15%.
82 For further details, see section 10 of the manual, doc/fastjet-doc.tex
84* The jet area infrastructure has new calls to facilitate reproducible
85 multi-threaded running: AreaDefinition::with_fixed_seed(seed) and
86 GhostedAreaSpec::get_last_seed(seed). See section 10.3.1 of the manual.
88* The background estimators have a new interface to facilitate
89 reproducible multi-threaded running:
90 BackgroundEstimatorBase::estimate(...)
91 returns a BackgroundEstimate object, which contains rho, sigma, etc.
92 For details on using it, see sections 8 and 10.3.2 of the manual.
93 The Subtractor class has been updated to use this.
95Improvements to existing features:
97* the Python interface now has improved exceptions (a fastjet Error is
98 translated into a FastJetError python exception) and can be more
99 easily be used with projects using FastJet that want to define their
100 own python wrappers. Thanks to Patrick Komiske for the suggestions.
102* PxConePlugin now has an optional mode argument for e+e- running
103 (mode=1) instead of pp running (mode=2). Thanks to Stefan Kluth for
108* the Fortran interface to e+e- interface now returns jets ordered
109 in decreasing energy rather than decreasing transverse momentum.
111================================================================
112Summary of changes from v3.4.0-beta.1 -> v3.4.0: 2021-06-25
113================================================================
115* added set_default_stream_and_mutex to Error and LimitedWarnings
116 to help guard against garbled output
118================================================================
119Summary of changes from v3.3.4 -> v3.4.0-beta.1: 2021-03-10
120================================================================
123* addition of support for thread safety. It requires a compiler
124 supporting the C++11 standard (or later) and must be explicitly
125 enabled at configure time. There are two options
126 - the --enable-limited-thread-safety configure option is generally
127 sufficient if each thread is processing entirely distinct events.
128 It should have essentially no speed overhead.
129 - the --enable-thread-safety configure option is required if
130 you want to be able to read/copy/process a common set of PseudoJets
131 across multiple threads. Depending on the system, our tests have
132 shown speed penalties of up to 10-15%.
133 For further details, see section 10 of the manual, doc/fastjet-doc.tex
135* The jet area infrastructure has new calls to facilitate reproducible
136 multi-threaded running: AreaDefinition::with_fixed_seed(seed) and
137 GhostedAreaSpec::get_last_seed(seed). See section 10.3.1 of the manual.
139* The background estimators have a new interface to facilitate
140 reproducible multi-threaded running:
141 BackgroundEstimatorBase::estimate(...)
142 returns a BackgroundEstimate object, which contains rho, sigma, etc.
143 For details on using it, see sections 8 and 10.3.2 of the manual.
144 The Subtractor class has been updated to use this.
146Improvements to existing features:
148* the Python interface now has improved exceptions (a fastjet Error is
149 translated into a FastJetError python exception) and can be more
150 easily be used with projects using FastJet that want to define their
151 own python wrappers. Thanks to Patrick Komiske for the suggestions.
153* PxConePlugin now has an optional mode argument for e+e- running
154 (mode=1) instead of pp running (mode=2). Thanks to Stefan Kluth for
159* the Fortran interface to e+e- interface now returns jets ordered
160 in decreasing energy rather than decreasing transverse momentum.
162================================================================
163Summary of changes from v3.3.3 -> v3.3.4: 2020-05-05
164================================================================
165This is a bug-fix release with
166* clarifications in documentation for handling of CGAL v5
167* resolved run-time crash with certain strict g++ options and
168 compilation issue with oracle c++ (both reported by Andrii
170* included SISCone v3.0.5 (fixes signed-unsigned mismatch,
171 no impact on results).
173================================================================
174Summary of changes from v3.3.2 -> v3.3.3: 2019-11-29
175================================================================
177This is a bug-fix release with
178* improved treatment of CGAL in the build system (thanks to Marco van Leeuwen)
179* fixed an overflow issue in the JadePlugin (thanks to Andrii Verbytskyi)
181================================================================
182Summary of changes from v3.3.1 -> v3.3.2: 2018-10-01
183================================================================
185* improved the shared-library behaviour by setting the proper
186 inter-dependences (thanks to Jan Strube)
187* included SISCone v3.0.4 with a similar fix
189================================================================
190Summary of changes from v3.3.0 -> v3.3.1: 2018-04-24
191================================================================
193* Main FastJet License clarified as being GPL v2 or later
194* added theta() and cos_theta() members to PseudoJet
195* added a --with-cgal-boostdir=... configure option to handle
196 cases where CGAL uses a non-standard Boost installation path
197* fixed compilation bug in the SISCone interface
198 (thanks to Attila Krasznahorkay)
200================================================================
201Summary of changes from v3.2.2 -> v3.3.0: 2017-07-12
202================================================================
204This release adds a first version of a Python interface to
205FastJet (some details may still evolve in the future).
206Enable it with --enable-pyext at configure time and see
207examples/python/ for usage.
209Thanks to Lily Asquith, Stefano Carrazza and Eric Metodiev for
210testing and helpful feedback.
212================================================================
213***** PUT IN CHANGES from v3.2.1 -> v3.2.2: 2017-05-23
214================================================================
215This is a bug-fix release. Main changes:
217* fixed issue with negative masses in MassDropTagger
218 (reported by Johannes Elmsheuser)
219* fixed the return type of some PseudoJet operators
220* fixed type mismatch for diJ_plus_link in NNFJN2Tiled
222================================================================
223Summary of changes from v3.2.0 -> v3.2.1: 2016-08-04
224================================================================
225This is a bug-fix release. Main changes:
227* added a missing assignment operator for ClusterSequence
228 (reported by Roberto Franceschini)
229* eliminated a warning about unused variables when assertions are
230 disabled (reported by Andy Buckley)
231* included SISCone-3.0.3 which now installs config.h to improve
234================================================================
235Summary of changes from v3.1.3 -> v3.2.0: 2016-03-17
236================================================================
238* exposed the N2Plain and N2Tiled strategies for 3rd-party clustering
239 algorithms under the form of two new classes (NNFJN2Plain and
240 NNFJN2Tiled), similar to NNH
241* included version 3.0.2 SISCone with minor bug fixes
242* made template implementation of PseudoJet::obj_sorted_by_values() public
243* added a --guess-prefix option to fastjet-config (guesses prefix
244 from location of fastjet-config instead of prefix from configure)
245* added a --disable-auto-ptr option to configure (for clean C++11 compilation)
246* added internal helpers for C++11 and C++14 features: compile-time
247 deprecation and the override keyword
248* small tweaks to the build system
249* fjcore now ships with an illustrative fortran wrapper and example
251================================================================
252Summary of changes from v3.1.2 -> v3.1.3: 2015-07-04
253================================================================
254This is a maintenance relase with the following changes:
255* disabled JetDefinition::operator(...) when CINT is detected, for
256 ROOT v5 compatibility.
257* worked around an issue with recent versions of CGAL and the clang
260================================================================
261Summary of changes from v3.1.1 -> v3.1.2: 2015-03-12
262================================================================
263This is a bug-fix release. Main changes:
265* fixed rounding error issue in the "lazy" clustering strategies that,
266 in rare cases, caused infinite loops or crashes (reported by Jochen Ott).
267* added check on clustering's internal consistency; failure will throw
268 a new "InternalError" exception (derived from Error).
269* fixed bug in extraction of fjcore code that resulted in fjcore
270 failing for high multiplicities (~1000) (reported by Sergei Chekanov).
271 Only affects fjcore, not the full fastjet library.
273================================================================
274Summary of changes from v3.1.0 -> v3.1.1: 2015-01-06
275================================================================
276This is a bug-fix release. Main changes:
278* fix to area support for Filter with Cambridge/Aachen jets and subjets
279* GridMedianBackgroundEstimator has new constructor and RectangularGrid as public base
280* added virtual destructor to TilingBase class
282================================================================
283Summary of changes from v3.0.6 -> v3.1.0: 2014-09-30
284================================================================
285* Significant speed improvements (x1.5-10) for large N (few thousand-10^5)
286* FASTJET_VERSION_NUMBER preprocessor symbol, for easy in-code version testing
287* New JetDefinition::operator(): jets = jet_def(particles);
288* Native particle-mass support in PU estimation (rho_m())
289* Subtraction can use rho_m (set_use_rho_m()) and force m>0 (set_safe_mass())
290* Addition of Winner-Takes-All recomb. schemes (WTA_pt_scheme, WTA_modp_scheme)
291* SISCone updated to v3.0.0 (addition of SISCone with progressive removal)
292* New Recluster class, serving as base for Filter
293* New RectangularGrid class, base for GridMedianEstimator & GridJetPlugin
294* Fixed long-standing issue with coincident points in NlnN strategies
295* Other small additions and changes include:
296 * Selector::sum(particles) to get 4-vector sum of particles that pass selector
297 * pruned_jet.structure_of<Pruner>() has Rcut() and zcut() functions
298 * easy copying of Recombiner info: jet_def1.set_recombiner(jet_def2)
299* Various bug-fixes, build-system tweaks (e.g. default -O2 instead of -O3)
301================================================================
302Summary of changes from v3.1.0-beta.1 -> v3.1.0: 2014-09-30
303================================================================
304* Addition of Winner-Takes-All recomb. schemes (WTA_pt_scheme, WTA_modp_scheme)
305* SISCone updated to v3.0.0 (addition of SISCone with progressive removal)
306* minor changes including doxygen doc fixes and elimination of gcc warnings
308================================================================
309Summary of changes from v3.0.6 -> v3.1.0-beta.1: 2014-08-15
310================================================================
311* Significant speed improvements (x1.5-10) for large N (few thousand-10^5)
312* FASTJET_VERSION_NUMBER preprocessor symbol, for easy in-code version testing
313* New JetDefinition::operator(): jets = jet_def(particles);
314* Native particle-mass support in PU estimation (rho_m())
315* Subtraction can use rho_m (set_use_rho_m()) and force m>0 (set_safe_mass())
316* New Recluster class, serving as base for Filter
317* New RectangularGrid class, base for GridMedianEstimator & GridJetPlugin
318* Fixed long-standing issue with coincident points in NlnN strategies
319* Other small additions and changes include:
320 * Selector::sum(particles) to get 4-vector sum of particles that pass selector
321 * pruned_jet.structure_of<Pruner>() has Rcut() and zcut() functions
322 * easy copying of Recombiner info: jet_def1.set_recombiner(jet_def2)
323* Various bug-fixes, build-system tweaks (e.g. default -O2 instead of -O3)
325================================================================
326Summary of changes from v3.0.5 -> v3.0.6: 2013-10-29
327================================================================
328This is a minor maintenance release. Main changes:
329* fixed compilation issues for two plugins under OS X 10.9 (Mavericks)
330* fixed incorrect warnings in JHTopTagger, MassDropTagger and an example
331* GridJetPlugin now has extra enquiry functions
333================================================================
334Summary of changes from v3.0.4 -> v3.0.5: 2013-09-16
335================================================================
336This is a minor maintenance release. Main changes:
337* modified include guards, to solve coexistence issue for fjcore
338* resolved (bogus) compiler warning about uninitialised variables
339* added an example event file that was missing from the distribution
341================================================================
342Summary of changes from v3.0.3 -> v3.0.4: 2013-06-05
343================================================================
345This is a minor maintenance release. Changes include:
346* dummy init of PseudoJet rapidity to avoid warnings with some configs.
347* minor code structure adjustments to allow for release of fjcore
348* inclusion of SISCone 2.0.6
350================================================================
351Summary of changes from v3.0.2 -> v3.0.3: 26/06/12
352================================================================
354This is a bug-fix release, fixing
356* compilation issues with g++-4.7 and clang
357* issue of missing documentation figures in the tarball
358* issue with the --enable-extra-warnings flag in configure
360================================================================
361Summary of changes from v3.0.1 -> v3.0.2: 17/01/12
362================================================================
364This is a bug-fix release, including
366* small fixes to the build system and fastjet-config
367* further licence clarifications
368* user can force early printing of banner with ClusterSequence::print_banner()
369* included SISCone 2.0.5 (with small modifications to the build system)
371================================================================
372Summary of changes from v3.0.0 -> v3.0.1: 25/11/11
373================================================================
375Version 3.0.1 includes further reorganisation of the manual (version to
376appear on arXiv), and a number of small additional changes, including :
378* PseudoJet now also has a pt() member function for transverse momentum
379* minor speed improvements (very low N + strategy choice for N ~ 20-50)
380* elimination of many compilation warnings found with -Wextra -Wshadow
381* clarification of licenses for many of the plugins + new plugin banners
382* fixed a memory leak in the ATLASConePlugin
384================================================================
385Summary of changes from v2.4.4 -> v3.0.0: 09/10/11
386================================================================
388Changes relative to the 2.4.x series include:
390Addition of FastJet tools:
392 * Filtering, trimming, pruning and a few boosted object taggers as
393 part of a new native "Transformers" framework for post-clustering
396 * New background estimation and subtraction interface, with
397 JetMedianBackgroundEstimator, GridMedianBackgroundEstimator and Subtractor.
401 * Enhancement of the PseudoJet class so that jets are now aware of their
402 internal structure (e.g. one can use jet.constituents()).
403 * It is possible to associate arbitrary user information with a PseudoJet.
404 * Selectors, which allow easy communication of cuts across different functions
408 * Improved doxygen and examples
409 * aids for easier memory management
410 * elimination of the R<pi/2 restriction on native jet algorithms
411 * control of Error and warning output, including public LimitedWarning class
412 * new plugins (GridJet and two D0RunICone plugins)
413 * enhanced fortran wrappers
415Interface modifications (May break backwards compatibility):
417 * by default a JetDefinition is initialised to undefined_jet_algorithm
418 instead of kt_algorithm with a radius of 1.
419 * JetDefinition::DefaultRecombiner sets the user index of the result
420 of the recombination to -1 (the default for a PseudoJet;
421 previously was being set to 0)
422 * ghosts are placed more sensibly in 3.0 than in the 2.X series;
423 call ghost_area_spec.set_fj2_placement(true) to reinstate old behaviour
424 * CS::exclusive_subjets used to silently return fewer subjets than
425 requested if there were too few particles in a jet; to be
426 consistent with exclusive_jets(...) it now throws an exception;
427 use exclusive_jets_up_to(...) and exclusive_subjets_up_to(...) to
429 * ATLASCone and TrackJet plugins use stable_sort instead of sort for
430 more stable behaviour across architectures and compiler versions;
431 this can change clustering results in events with degeneracies.
432 * some legacy headers have been removed (include/FjPseudoJet.hh and
433 include/FjClusterSequence.hh), and some classes are deprecated:
434 ClusterSequenceWithArea (use ClusterSequenceArea instead),
435 ActiveAreaSpec (use GhostedAreaSpec instead), and RangeDefinition
436 and CircularRange (use Selector instead); see appendix G in manual
437 for further small removals.
439Configure modifications
441 * the plugins are by default built in a single 'libfastjetplugin'
442 library. This is transparent if you use the fastjet-config
443 script. The previous behaviour (each plugin in its own library)
444 can be recovered by passing the --disable-monolithic option to
446 * an additional library, libfastjettools, contains tools like
447 boosted object taggers, filters, etc. It is included by default
448 with "fastjet-config --libs"
451New features relative to 3.0beta1:
453 * addition of Pruner class
454 * control of Error and warning output, including public LimitedWarning class
455 * addition of SelectorIsZero
456 * ClusterSequence::childless_pseudojets()
458Bug fixes and other changes relative to 3.0beta1:
460 * JetMedianBackgroundEstimator::set_particles(...) no longer resets other parameters
461 * fixed issue with persistency of internal recombiner in Filter
462 * removed deprecated ClusterSequence constructor with R (rather than
463 jet def) and also CS::set_jet_algorithm(...), CS::set_jet_def(...)
466================================================================
467Summary of changes from v3.0beta1 -> v3.0.0: 09 October 2011
468================================================================
470- addition of Pruner class
471- control of Error and warning output, including public LimitedWarning class
472- addition of SelectorIsZero
473- ClusterSequence::childless_pseudojets()
475Bug fixes and other changes
476- JetMedianBackgroundEstimator::set_particles(...) no longer resets other parameters
477- fixed issue with persistency of internal recombiner in Filter
478- removed deprecated ClusterSequence constructor with R (rather than jet def)
479 and also CS::set_jet_algorithm(...), CS::set_jet_def(...)
481================================================================
482Summary of changes from v3.0alpha3 -> v3.0beta1: 10 August 2011
483================================================================
485- Reorganised background estimation to have a JetMedianBackgroundEstimator
486 and a GridMedianBackgroundEstimator (derived from BackgroundEstimatorBase)
487 [v3.0alpha3 programs should replace BackgroundEstimator
488 -> JetMedianBackgroundEstimator, and use a new order of constructor arguments]
489- Added the GridJetPlugin
490- added a TopTaggerBase and a Johns Hopkins top tagger (JHTopTagger)
491- to JetDefinition added delete_plugin_when_unused(),
492 delete_recombiner_when_unused()
493- improved Filter (for area and recombiner support, also works with a subtractor)
494- added a --config flag to fastjet-config
496Bug fixes and other changes
497- some speed gains in the default recombiner
498- TrackJet and ATLASCone now use stable_sort (can change results;
499 makes results stable across machine architectures & compilers, cf BUGS)
500- fixed bugs in Voronoi areas (as in v.2.4.4)
501- fixed bugs in handling of empty areas in background estimator (as in 2.4.4)
502- renamed SelectorMXXX -> SelectorMassXXX
503- renamed NSubjettinessTagger -> RestFrameNSubjettinessTagger
504- exclusive_[sub]jets(njets) now consistenty throws an error if it
505 can't deliver njets; exclusive_[sub]jets_upto(njets) gives up to njets
506- deprecated ClusterSequenceWithArea and ActiveAreaSpec
507 (ClusterSequenceWithArea no longer available from
508 ClusterSequenceArea.hh header)
509- deprecated RangeDefinition & CircularRange; use Selector instead
510- reorganisation of substantial parts of the manual
513================================================================
514Summary of changes from v3.0alpha2 -> v3.0alpha3: 03 June 2011
515================================================================
518- Added a series of "Transformer"s in tools/:
519 * Subtractor: subtract the jet using a BackgroundEstimator
520 * Boost/Unboost: boosts/unboosts a jet
521 * MassDropTagger: look for a mass drop in the jet substructure
522 * NSubjettinessTagger: 2-pronged tagger based on rest-frame 2-subjettiness
523 * CASubJetTagger: 2-pronged tagger based on maximal distance in jet history
524 * Filter updated from alpha2 (bug fixes & new constructors)
525 NB: examples 11 (boosted Higgs) and 12 (Filter) illustrate usage.
527- CS::delete_self_when_unused() allows it to handle its own memory management
528- GhostedAreaSpec can take a Selector to help specify ghost placement
529- added a FunctionOfPseudoJet<T> base class to help standardise tool interfaces
530- ClusterSequence::transfer_from_sequence now allows for a
531 FunctionOfPseudoJet<PseudoJet> argument to transform (e.g. boost)
532 the jets from an old sequence as they are transferred to the new one
533- fortran interface now has basic area functionality
535Changes to features introduced in alpha2 and alpha1:
536- Numerous changes to BackgroundEstimator
537 * it allows manual encoding of rapidity dependence;
538 * it can calculate density of quantities other than pt;
539 * it has additional constructors, plus methods to reset its ClusterSequence, etc.
540 * its sigma() now properly handles finite numbers of jets (+ other bug fixes).
541- jet.pieces() for a jet from a clustering now returns the two parents
542- various changes to behaviour of a jet's structural calls; see new table in doc
543- PseudoJet::extra_properties<...>() -> PseudoJet::structure_of<...>() (cf example 12)
544- join(...) can now include a recombiner argument; it also now supports areas
545- Selector::count(jets) to know how many pass a cut (also new: Selector::sift)
548- by default a PseudoJet is constructed with zero momentum
549- by default a JetDefinition has an undefined_jet_algorithm
550- efficiency improvements in PtYPhiM and ghost generation
551- all uses of RangeDefinition now replaced by Selector. Old interfaces
552 retained, but deprecated.
553- added an example (09) to illustrate how to add user-info to a PseudoJet
554- doxygen output now configured with an internal search engine
557- the default recombiner used to set the user_index to the non-default
558 value of 0. Now it sets it to the default (-1).
559- fixed crashes of VoronoiAreas for particles on a grid (also in 2.4.3)
562================================================================
563Summary of changes from v3.0alpha1 -> v3.0alpha2: 10 March 2011
564================================================================
567- two jets, a and b can now be joined: PseudoJet c = join(a,b),
568 intended to facilitate packaging the result of substructure tools;
569 individual pieces can be recovered with c.pieces();
570- New PseudoJetStructureBase class, to help implement such features
571- New fastjet/tools/Filter.hh provides a unified interface to filtering and trimming
572- New very preliminary fastjet/tools/BackgroundEstimator.hh to provide
573 a more flexible interface to estimation of backgrounds (removal of
575- a few extra Selectors
577Changes to features introduced in alpha1:
578- Selector is now in fastjet/Selector.hh (no longer fastjet/tools/...)
579- Selector::relocate(...) and is_relocatable() renamed to
580 Selector::set_reference(...) and takes_reference()
581- PseudoJet::ExtraInfo has been renamed PseudoJet::UserInfoBase and
582 corresponding access functions are now called set_user_info(...), etc.
584Other changes and fixes
585- some legacy headers removed
586- bug fixes in NlnNCam strategies for R>pi
588===========================================================
589Summary of changes from v2.4.X -> v3.0alpha1: 27 January 2011
590===========================================================
592This is an alpha release, previewing some of the new features that are
593expected to be available in FastJet version 3. Interfaces of new
594features may yet evolve.
597- Several extensions to PseudoJet:
598 * it now knows what ClusterSequence it belongs to
599 * info about internals of jets can be accessed e.g. as jet.constituents()
600 * it now has a virtual destructor + other support for classes derived from PseudoJet
601 * new facilities for associating user info with a jet (see PseudoJet::ExtraInfo)
602 * some of these features make use of a new SharedPtr class
603 (intended mainly for advanced users)
604 similar to C++0x std::shared_ptr
605 * calculation of phi and rapidity (cached) only on request
606- R can now be taken larger than pi/2 for natively coded jet algorithms
607- Addition of "Selector" tools through #include "fastjet/tools/Selector.hh"
608- New plugin for D0RunICone (code contributed by Lars Sonnenschein)
609- Improvements to fortran wrapper (access to SISCone, jet constituents, etc.)
612- fixed issue with inconsistent returned sign in PseudoJet::delta_phi_to(...)
614Other notable changes:
615- Revamping of examples
616- by default all plugins are now packaged into libfastjetplugins.
617 Note that "external" libraries like libsiscone are still separate.
618- Significant improvements to doxygen documentation
620===========================================================
621Summary of changes from v2.4.1 -> v2.4.2: 26 February 2010
622===========================================================
623- exclusive_ymerge_max(...) was not working; now fixed
624- the D0RunIIConePlugin gave segfaults for some parameters; now fixed
625- the D0RunIIConePlugin gave different results on 32/64 bit machines;
626 optimisation flags now changed just for D0 code so that 32 bit gives same
628- changes to configure.ac to better handle fortran compiler checks
629- removed some orphan/redundant code that was generating compilation warnings
630- added an "--enable-monolithic" option to ./configure which causes
631 all plugins to be placed in a single library (except SISCone)
632- added a "--list-plugins" option to fastjet-config
634=======================================================
635Summary of changes from v2.4.0 -> v2.4.1: 29 May 2009
636=======================================================
638Fixes to the build system
639-------------------------
640- Included SISCone 2.0.1 (shared libs now enabled by default in
641 SISCone too, and other small fixes)
642- Fixed platform-dependent failures during make check
643- Fixed gcc 4.4 compatibility issues (missing headers)
644- Fixed a problem on Mac OS X with the arguments provided by
645 "fastjet-config --libs" (--rpath versus -rpath).
646- fastjet-config has new optional arguments (--rpath=no, --runpath)
647 related to finding shared libraries at runtime on linux.
648 Run fastjet-config without any arguments for more info.
649 To instead use static libraries, either configure with the
650 --disable-shared option, or use fastjet-config with the --shared=no option.
651- fastjet-config can now take --cxxflags and --libs in a single invocation
652- With --cxxflags, fastjet-config now returns the minimal required set of arguments
653- Various other small mods (better fortran support, standardisation, ...)
654 [thanks to Andy Buckley and David Grellscheid for suggestions]
658- Added a fortran wrapper for pp sequential recombination algorithms
659- Fixed issue in median rho estimation when some jets have zero area
660- Expanded descriptions that are returned by ATLAS/TrackJet/CMS plugins
661- Warnings are no longer given when using exclusive jets with
662 Cam/Aachen and certain e+e- algorithms (the warnings were misleading)
663- Small fixes to the manual
665=======================================================
666Summary of changes from v2.3.X -> v2.4.0: 17 April 2009
667=======================================================
673- added implementation of generalised kt algorithm (genkt_algorithm) for pp
674- added D0RunIICone plugin [--enable-d0runiicone at configure time]
675- added ATLASCone Plugin [--enable-atlascone at configure time]
676- added CMSIterativeConePlugin [--enable-cmsiterativecone at configure time]
677- added TrackJet Plugin (used by CDF in UE studies)
678 [--enable-trackjet at configure time]
680Introduction of e+e- algorithms
681-------------------------------
683- added an implementation of the e+e- kt algorithm (ee_kt_algorithm),
684- added EECambridgePlugin for the (original) e+e- Cambridge algorithm
685- added JADEPlugin for the JADE algorithm (see the ChangeLog or header
687- added SISConeSphericalPlugin [enabled by default] for SISCone in
688 e+e- and other spherical environments.
689- native implementation of generalised kt algorithm for e+e- (ee_genkt_algorithm)
690 [also provides access to e+e- form of anti-kt alg, conical jets on a sphere]
691- added JadePlugin for the e+e- Jade algorithm
696- added NestedDefs plugin for daisy-chaining multiple jet definitions
697 [still under testing; API may change in the future]
701- added subjet functions for viewing jet at particular dcut, etc.
702- added access to exclusive jets based on ycut as well as dcut (for e+e-)
703- added support for asymmetric rapidity ranges in GhostedAreaSpec
704- added support for a CircularRange (derived from RangeDefinition) for
705 use in background estimation
706- added class NNH to help users implement algorithms with
707 user-chosen distance measure (see JadePlugin for an example)
709Interface modifications
710-----------------------
711- removed default value of 0.5 for overlap_threshold in
712 CDFMidPointPlugin, CDFJetCluPlugin and SISConePlugin constructors
714 *** may break backwards compatibility ***
716- a JetDefinition(jet_alg) constructor, without an R value, is no
717 longer legal, except when jet_alg is ee_kt_algorithm (it has no R).
719 *** may break backwards compatibility ***
721- in SISCone, new way of accessing the information about pass at which
722 a jet was found (old method retained for 2.4, but now deprecated)
725Configure modifications
726-----------------------
727- added --enable-allplugins and --enable-allcxxplugins options, to
728 avoid having to specify a long list of individual plugins
729- shared libraries are now enabled by default
733- fixed missing support for periodicity in azimuth in RangeDefinition
737-----------------------
738- added support for CGAL 3.4 (for non-standard locations, specify
739 --with-cgaldir at configure time)
740- removed restriction that fastjet throws exception on empty events
741- added an example that illustrates the use of subjet techniques for
742 a boosted Higgs->b+bbar search
746- add CMSIterativeCone Plugin
750=======================================================================
751Summary of changes from v2.3.3 -> v2.3.4 (bug fix release): 15 Aug 2008
752==========================================================
754- fixed infinite-loop bug in JetClu plugin on certain rare events
756- fixed compatibility issues of certain example programs with g++-4.3
758- incorporated SISCone 1.3.3 with similar g++-4.3 fixes
760=======================================================================
761Summary of changes from v2.3.2 -> v2.3.3 (bug fix release): 28 Apr 2008
762==========================================================
764- fixed missing installation of .../config_auto.h
766- fixed missing typename in .../SearchTree.hh
768=======================================================================
769Summary of changes from v2.3.1 -> v2.3.2 (bug fix release): 03 Apr 2008
770==========================================================
772- fixes to propagation of CXXFLAGS through the build chain
774- small change in Voronoi area code to fix crashes on regular
775 (calorimeter) layouts of momenta
777- small change in active areas code to fix crashes on algorithms that
778 do not cluster all particles
780- eliminated "using namespace std" that had accidentally been left in
781 certain area header files
783- incorporation of SISCone 1.3.2 with fixes for inappropriate public
784 symbols and to build framework
787======================================================================
788Summary of changes from v2.3.0 -> v2.3.1 (bug fix release)
789==========================================================
791- Fixed compilation issues under windows VC7.1 (reported by
792 I. Belyaev); also included SISCone 1.3.1 with similar fixes.
794- Fixed speed issue under optimized compilation of CDF MidPoint plugin
795 for 32 bit architectures that had arisen subsequent to the switch to
796 autotools with its common optimization settings.
798- Fixed "make check" failure with the --disable-siscone option.
800- Fixed crash in exclusive_dmerge(njets) for njets=0 (reported by P. Lenzi)
803======================================================================
804Summary of changes from v2.1.0 (previous stable release) to v2.3.0
805===================================
807- added the anti-kt algorithm (LPTHE-07-03), which is a sequential
808 recombination algorithm that gives conical jets.
810- Added Passive and Voronoi areas, and new common class for accessing
811 all types of areas, ClusterSequenceArea.
813- switched to autotools for compilation and installation:
814 ./configure --prefix=...
816 make check [optional]
819 NB: users should no longer include fastjet-2.x.y/Makefile
820 when building their own programs, and instead should use
821 g++ -c file.cc `fastjet-config --cxxflags`
822 g++ file.o `fastjet-config --libs --plugins`
824- plugin include files are now to be accessed with fastjet/ in
826 #include "fastjet/SISConePlugin.hh"
827 A simple #include "SISConePlugin.hh" is now obsolete but will
828 continue to work through 2.x
830- Added RangeDefinition class to provide more flexibility in UE/pileup
833- New facilities for navigating the cluster sequence (has_parents,
834 has_child and has_partner members of ClusterSequence)
836- other bug fixes and small enhancements (including SISCone-1.3.0,
837 improvements to plugin facilities).
839See individual beta-releases below for more information, as well as
843======================================================================
844Changes from v2.2beta0 to v2.3-beta0
845===================================
847- switched to autotools for compilation and installation;
849- old build procedure still available for now, with files called
850 makefile.static (make -f makefile.static);
852 test-script.sh has been renamed test-static.sh and builds and
853 tests using the old procedure.
855- plugins include files are now to be accessed with fastjet/ in
857 #include "fastjet/SISConePlugin.hh"
859 For backwards compatibility, the old access method will continue
860 to work throughout v2.x, i.e.
861 #include "SISConePlugin.hh"
863- added PseudoJet::reset(...) functions to reset the contents of a
866- added fastjet_version_string()
868- added a function PtYPhiM(...) that returns a PseudoJet with the
869 given py, rapidity , phi and mass. Defined in PseudoJet.hh
871- added a directory fortran_wrapper/ to illustrate how to access
874- some small bug fixes in the CDF midpoint code
877======================================================================
878Changes from v2.1.0 to v2.2beta0
879===============================
881- added the anti-kt algorithm (LPTHE-07-03)
883- Provided a new common class for accessing all different types of
884 areas: ClusterSequenceArea.
886- added functionality for Passive areas and Voronoi areas.
887 Areas are now defined much in the same way as jets, via an
888 AreaDefinition, which is passed as an argument
889 to ClusterSequenceArea. NB: the Voronoi area uses Fortune's
890 sweepline code for calculating the Voronoi diagram and so does not
891 require CGAL to be installed (it still is needed for NlnN kt
894- Added class RangeDefinition which allows detailed definitions
895 of the rapidity-azimuth ranges over which to study jet areas
896 and possibly perform noise subtraction
898- added facilities for navigating the cluster sequence (has_parents,
899 has_child and has_partner members of ClusterSequence)
901- changed plugin base class, so that it now includes R() virtual
902 member, and modified the various plugins to account for this.
904- modified the plugin interface to provide facilities to help with
907- included SISCone-1.2.0 rather than 1.1.1.
909- adapted SISCone plugin to the 1.2.0 release of SISCone -- main
910 changes are facilities and improvements related areas: some speed
911 improvements on the split-merge (relevant for active areas) and a
912 fairly efficient way of running passive areas.
914- added ClusterSequence::print_jets_for_root(...) and a corresponding root
915 script (example/root/jet-plots.C), so as to provide a crude
919======================================================================
920Summary of main changes from v2.0.0 to v2.1.0
921=============================================
923- added plugin structure for external jet finders.
925- included plugins for SISCone, CDFMidPoint, CDFJetClu, PxCone (with
926 extensions for MidPoint and bug fixes for PxCone relative to public
929- introduced option of control over recombination scheme, with a
930 RecombinationScheme enum, which applies also to area_4vector.
932- added description() member function to JetDefinition class, so
933 that you can get a (string) summary of what you're running!
935- changed the default number of repeats in ActiveAreaSpec to 1 (which
936 is sufficient for most purposes).
938For further details, see the changes listed in detail below.
940======================================================================
941Changes from v2.1.0b4 to v2.1.0
942===============================
944- corrected bug in test-script.sh
946- removed PxCone from default tests and from
947 plugins/usage_examples/many_algs_example.cc (to avoid fortran
950======================================================================
951Changes from v2.1.0b3 to v2.1.0b4
952=================================
957- default number of repeats for the active area specification has been
958 changed from 5 to 1 (the latter goes fast, but note that it provides
959 a zero error estimate for the area).
964- adapted plugin to accomodate new scale for use in the SISCone
965 split-merge (pttilde), with a corresponding change of interface.
967 Changed default number of passes for SISCone to 0.
969- Added the pttilde scale choice to the CDF plugin.
973======================================================================
974Changes from v2.1.0b2 to v2.1.0b3
975=================================
980- methods for estimating the underlying now have the option of using
981 area_4vector rather than the plain area
986- area_4vector is now calculated with the same recombination scheme as
989- massless recombination schemes now work correctly on particles with
992- PseudoJet::phi_std() returned wrong result for phi < pi -- thanks to
993 Oscar Stal for pointing this out.
998- the plugin mechanism now allows a plugin to add "extra" information
999 to the ClusterSequence, essentially by providing an auto_ptr to a
1000 class derived from (the new) ClusterSequence::Extras; an example of
1001 this has been implemented with siscone (SISConeExtras) which allows
1002 a user to access the initial (stable) protocones.
1004- included new siscone version (1.1) which uses transverse mass (mt) rather
1005 than pt in the split-merge procedure, to address an IR problem in
1006 events where the hadronic part conserves momentum -- this can have
1007 an effect on some physical distributions; the siscone update also
1008 addresses issues with collinear safety and co-circular points.
1010- included bug fixes to pxcone regarding 2pi periodicity when
1013- modified the version of the CDF midpoint cone code so as to allow it
1014 to use mt and Et as the parameters in the split--merge step.
1016======================================================================
1017Changes from v2.1.0b1 to v2.1.0b2
1018=================================
1023- included new siscone version which solves the memory-leak problem
1028- added sample output from the test-script as test-script-output-orig.txt
1030======================================================================
1031Changes from v2.1.0b0 to v2.1.0b1
1032=========================
1037- added the SISCone plugin and the beta version of the siscone code
1038 (authored by Soyez & Salam)
1043- removed extraneous semicolons after functions that were causing
1044 problems on some compilers.
1049- Added COPYING file with GPL license
1051======================================================================
1052Changes from v2.0 to v2.1 (beta0)
1053=========================
1058- introduced option of control over recombination scheme, with a
1059 RecombinationScheme enum (a variable of this type should be provided
1060 to the JetDefinition constructor) and also the possibility of an
1061 externally defined recombination scheme.
1063- introduced a "plugin" facility for alternative jet finders, via an
1066 class JetDefinition::Plugin
1068 Plugins are to be provided as classes derived from this,
1069 implementing the relevant virtual functions (see manual and examples
1072- introduced "description" member function for the JetDefinition
1073 class, which returns a (std::string) textual description of the
1076- provided plugins for CDF JetClu, CDF Midpoint, PxCone code; the
1077 plugins, the code they interface to and example programs are to be
1078 found in the new plugins/ directory.
1080- added ClusterSequence::unclustered_particles() a vector containing
1081 the unclustered particles (relevant for some plugin algorithms).
1086- introduced PseudoJet::squared_distance (does same as "plain_distance")
1093- in the documentation, replaced eta -> y, to make it clear that it's
1094 rapidity and not pseudorapidity that is being used throughout. Some
1095 internal code continues to use variables called "eta" -- but these
1096 are actually proper rapidity.
1099======================================================================
1100Changes from v1.0 to v2.0
1101=========================
1106- the longitudinally invariant inclusive Cambridge/Aachen jet finder
1109 Note that the exclusive jets extraction for the Cambridge jet-finder
1110 does not provide the definition as given in the original Cambridge
1111 paper. See the documentation for further details
1113- classes have been introduced for running jet clustering and
1114 simultaneously collecting information about the area of each jet.
1115 The base class specifying the functionality is
1117 class ClusterSequenceWithArea;
1119 itself derived from ClusterSequence.
1121 Two derived classes that provide the actual areas functionality are:
1123 class ClusterSequenceActiveArea;
1124 class ClusterSequenceActiveAreaExplicitGhosts;
1126 To construct them, one also needs to specify how one wishes the area
1127 to be calculated, via a class
1129 class ActiveAreaSpec;
1134- new clustering strategies have been added:
1137 N2MinHeapTiled : like N2Tiled, except that the non-geometric
1138 part has been replaced with a N ln N algorithm
1139 (overall the strategy still scales as N^2, but with a
1140 smaller coefficient)
1142 NlnNCam, NlnNCam2pi2R, NlnNCam4pi:
1144 NlnN strategies specific to the Cambridge/Aachen
1145 jet-finder -- the fastest of them is NlnNCam.
1146 Depending on the size of the event and of the CPU
1147 cache it may be up to 2.5 times faster than the
1148 CGAL-based NlnN strategy. Experiment on your own
1149 hardware and events to establish whether the
1150 speed gain is significant.
1152 These strategies are based on the work on dynamic
1153 Closest Pair problems by Timothy Chan.
1155 Best : (was present before) now attempts to select best
1156 among N2Plain, N2Tiled, N2MinHeapTiled, NlnN.
1158 As the best option for a given N may depend on R
1159 and the event structure, you are advised to
1160 experiment with individual strategies if the
1161 last few tens of percent in speed are critical.
1165Updates to user interface
1166-------------------------
1168While the v1 interface to fastjet has been maintained for backwards
1169compatibility, for new developments in v2 and related forthcoming
1170work, a new interface is provided as follows:
1172- User accessible classes and enums have had the "Fj" prefix removed
1173 and are instead now in namespace fastjet; the corresponding include
1174 files are in the include/fastjet directory. So, for example instead
1177 #include "FjClusterSequence.hh"
1179 FjClusterSequence clust_seq(...)
1181 one now uses the following
1183 #include "fastjet/ClusterSequence.hh"
1185 fastjet::ClusterSequence clust_seq(...)
1187 If typing "fastjet::" the whole time seems too long-winded, you can
1188 abbreviate "fastjet" as "fj" with
1190 namespace fj = fastjet;
1192 or eliminate the need for it altogether with
1194 using namespace fastjet;
1196- a new class, fastjet::JetDefinition, has been introduced for holding
1197 the details of the jet finder (which one, value of R, etc...) that
1198 is to be used in a given clustering.
1200 #include "fastjet/JetDefinition.hh"
1201 #include "fastjet/ClusterSequence.hh"
1206 // define jet algorithm
1207 fastjet::JetDefinition jet_def(fastjet::kt_algorithm, R);
1209 // get the cluster sequence for a vector of 4-momenta and the
1210 // given jet definition
1211 fastjet::ClusterSequence clust_seq(momenta, jet_def);
1213- some errors that previously were assertions now throw an
1214 fastjet::Error -- exception. A fully uniform handling of exceptions
1215 is currently some way away however and users for whom this is an
1216 important issue should contact the authors.