FastJet 3.5.2
Loading...
Searching...
No Matches
NEWS
1Release Notes for FastJet
2-------------------------
3
4================================================================
5Summary of changes from v3.5.1 -> v3.5.2: 2026-09-26
6================================================================
7
8Bug fixes:
9
10* resolved issue where Tiled strategies give segfault if all
11 particles have E=|pz|. This is almost impossible in phenomenological
12 contexts, but arose in PanScales log-accuracy testing.
13* CMakeLists.txt now defines "HAS_SHARED", needed in fastjet-config
14 (thanks to Alexander Puck Neuwirth)
15* added missing INSTALL-CMake.md file in tarball
16
17Other changes:
18
19* SISCone updated to 3.1.3 to resolve CMake issues with accessing getopt
20 on Windows (NB: Windows _not_ officially supported by the authors).
21
22================================================================
23Summary of changes from v3.5.0 -> v3.5.1: 2025-07-01
24================================================================
25
26Improvements to existing features:
27
28* CMake build system improvements, notably Windows DLL support and new
29 option to turn off build of examples and build just the Python
30 interface (thanks to Lindsey Gray and Andrii Verbytskyi). Note that
31 Windows is _not_ officially supported by the FastJet authors.
32
33Bug fixes:
34
35* resolved issue with fjcore & fastjet coexistence when fjcore header
36 was included before the fastjet one. New fjcore should work with
37 all past or current fastjet versions and vice-versa.
38
39* small fixes for doxygen processing with more recent doxygen versions
40
41* adjustments to use proper ${CMAKE_INSTALL_LIBDIR} (e.g. lib64) also
42 in RPATH
43
44Other changes:
45
46* SISCone updated to 3.1.2, with similar CMake improvements.
47
48================================================================
49Summary of changes from v3.4.3 -> v3.5.0: 2025-05-22
50================================================================
51
52New features:
53
54* CMake build system added, with major contributions from Lindsey Gray
55 and input also from Matthew Feickert, Henry Schreiner and Andrii
56 Verbytskyi.
57
58Improvements to existing features:
59
60* The N2Plain strategy now avoids a pathology for small-R and
61 high multiplicities, noted in 2503.08146. Note that typical running at
62 the relevant multiplicities does not use N2Plain, but instead tiled
63 strategies which are not affected by this issue.
64
65Bug fixes:
66
67* fix of compilation errors in D0RunIICone that emerged
68 with gcc 15 (thanks to Andre Sailer, Alexander Puck Neuwirth, Dmitri
69 Konstantinov, Paul Gessinger and Marek Schonherr for reporting and
70 providing fixes)
71
72* autotools build system: small fixes to make tests more
73 independent of the shell being used (thanks to Eli Schwartz
74 for reporting & providing fixes)
75
76* autotools build system: --enable-cgal-header-only now
77 defaults to yes, as appropriate with modern CGAL versions
78 (Modern CGAL versions can be be enabled with just
79 `--enable-cgal`)
80
81* fix of missing <algorithm> header in some files using std::sort.
82 Does not affect build on gnu/clang compilers. Thanks to
83 Andrii Verbytskyi for submitting this.
84
85Other changes:
86
87* SISCone updated to 3.1.1, with CMake support and some autotools fixes.
88
89================================================================
90Summary of changes from v3.4.2 -> v3.4.3: 2024-07-05
91================================================================
92
93Bug fixes:
94
95* python interface looks also for python3-config
96
97* various build-system upgrades, including merge requests
98 !2 (compatibility with plain sh) and !3 (updated configure scripts)
99 -- thanks to Eli Schwartz.
100
101================================================================
102Summary of changes from v3.4.1 -> v3.4.2: 2023-07-28
103================================================================
104
105Bug fixes:
106
107* small fix in ClosestPair2D class for compatibility with c++20
108 (thanks to Andre Sailer for the report and fix)
109
110* SISCone updated to 3.0.6, which eliminates default -ffast-math
111 compile-time argument, which could cause interference with other code.
112
113================================================================
114Summary of changes from v3.4.0 -> v3.4.1: 2023-05-02
115================================================================
116
117New features:
118
119* JetDefinition has a new clustering strategy, N2PlainEEAccurate,
120 intended to work with the ee_kt_algorithm and ee_genkt_algorithms. It
121 replaces the dot-product evaluation of (1-cos(theta)) with a more
122 accurate cross-product evaluation when two particles are close in
123 angle (~10^{-4}). It has a timing penalty of ~15% but can calculate
124 inter-particle angles down to ~epsilon rather than sqrt(epsilon),
125 where epsilon is machine precision. This work has been ported from
126 PanScales.
127
128* two new functions to make it possible for plugin algorithms to modify
129 user info, as needed for modern flavoured jet-clustering algorithms:
130 . PseudoJet::set_user_info_shared_ptr(...), to allow user info to
131 easily be copied from one jet to another and
132 . ClusterSequence::plugin_non_const_jet(...) to get non-const access
133 to the initial jets.
134
135Bug fixes:
136
137* Resolved MAJOR BUG that arose with full thread-safety enabled
138 (reported by Ludo Scyboz), where PseudoJet::reset_momentum and
139 PseudoJet::operator= failed to update internally cached values of
140 phi() and rap(). In some instances related issues could also lead to
141 race conditions.
142
143* eliminated NaN from square-root of negative mean areas in background
144 estimation (now returns zero)
145
146Other changes:
147
148* auto_ptr interface is now disabled by default (deprecated since c++11,
149 removed in c++17); can be manually enabled at configure-time with
150 --enable-auto-ptr
151
152================================================================
153Summary of changes from v3.3.4 -> v3.4.0: 2021-06-25
154================================================================
155New features:
156
157* addition of support for thread safety. It requires a compiler
158 supporting the C++11 standard (or later) and must be explicitly
159 enabled at configure time. There are two options
160 - the --enable-limited-thread-safety configure option is generally
161 sufficient if each thread is processing entirely distinct events.
162 It should have essentially no speed overhead.
163 - the --enable-thread-safety configure option is required if
164 you want to be able to read/copy/process a common set of PseudoJets
165 across multiple threads. Depending on the system, our tests have
166 shown speed penalties of up to 10-15%.
167 For further details, see section 10 of the manual, doc/fastjet-doc.tex
168
169* The jet area infrastructure has new calls to facilitate reproducible
170 multi-threaded running: AreaDefinition::with_fixed_seed(seed) and
171 GhostedAreaSpec::get_last_seed(seed). See section 10.3.1 of the manual.
172
173* The background estimators have a new interface to facilitate
174 reproducible multi-threaded running:
175 BackgroundEstimatorBase::estimate(...)
176 returns a BackgroundEstimate object, which contains rho, sigma, etc.
177 For details on using it, see sections 8 and 10.3.2 of the manual.
178 The Subtractor class has been updated to use this.
179
180Improvements to existing features:
181
182* the Python interface now has improved exceptions (a fastjet Error is
183 translated into a FastJetError python exception) and can be more
184 easily be used with projects using FastJet that want to define their
185 own python wrappers. Thanks to Patrick Komiske for the suggestions.
186
187* PxConePlugin now has an optional mode argument for e+e- running
188 (mode=1) instead of pp running (mode=2). Thanks to Stefan Kluth for
189 the suggestion.
190
191Bug fixes:
192
193* the Fortran interface to e+e- interface now returns jets ordered
194 in decreasing energy rather than decreasing transverse momentum.
195
196================================================================
197Summary of changes from v3.4.0-beta.1 -> v3.4.0: 2021-06-25
198================================================================
199
200* added set_default_stream_and_mutex to Error and LimitedWarnings
201 to help guard against garbled output
202
203================================================================
204Summary of changes from v3.3.4 -> v3.4.0-beta.1: 2021-03-10
205================================================================
206New features:
207
208* addition of support for thread safety. It requires a compiler
209 supporting the C++11 standard (or later) and must be explicitly
210 enabled at configure time. There are two options
211 - the --enable-limited-thread-safety configure option is generally
212 sufficient if each thread is processing entirely distinct events.
213 It should have essentially no speed overhead.
214 - the --enable-thread-safety configure option is required if
215 you want to be able to read/copy/process a common set of PseudoJets
216 across multiple threads. Depending on the system, our tests have
217 shown speed penalties of up to 10-15%.
218 For further details, see section 10 of the manual, doc/fastjet-doc.tex
219
220* The jet area infrastructure has new calls to facilitate reproducible
221 multi-threaded running: AreaDefinition::with_fixed_seed(seed) and
222 GhostedAreaSpec::get_last_seed(seed). See section 10.3.1 of the manual.
223
224* The background estimators have a new interface to facilitate
225 reproducible multi-threaded running:
226 BackgroundEstimatorBase::estimate(...)
227 returns a BackgroundEstimate object, which contains rho, sigma, etc.
228 For details on using it, see sections 8 and 10.3.2 of the manual.
229 The Subtractor class has been updated to use this.
230
231Improvements to existing features:
232
233* the Python interface now has improved exceptions (a fastjet Error is
234 translated into a FastJetError python exception) and can be more
235 easily be used with projects using FastJet that want to define their
236 own python wrappers. Thanks to Patrick Komiske for the suggestions.
237
238* PxConePlugin now has an optional mode argument for e+e- running
239 (mode=1) instead of pp running (mode=2). Thanks to Stefan Kluth for
240 the suggestion.
241
242Bug fixes:
243
244* the Fortran interface to e+e- interface now returns jets ordered
245 in decreasing energy rather than decreasing transverse momentum.
246
247================================================================
248Summary of changes from v3.3.3 -> v3.3.4: 2020-05-05
249================================================================
250This is a bug-fix release with
251* clarifications in documentation for handling of CGAL v5
252* resolved run-time crash with certain strict g++ options and
253 compilation issue with oracle c++ (both reported by Andrii
254 Verbyitskyi)
255* included SISCone v3.0.5 (fixes signed-unsigned mismatch,
256 no impact on results).
257
258================================================================
259Summary of changes from v3.3.2 -> v3.3.3: 2019-11-29
260================================================================
261
262This is a bug-fix release with
263* improved treatment of CGAL in the build system (thanks to Marco van Leeuwen)
264* fixed an overflow issue in the JadePlugin (thanks to Andrii Verbytskyi)
265
266================================================================
267Summary of changes from v3.3.1 -> v3.3.2: 2018-10-01
268================================================================
269
270* improved the shared-library behaviour by setting the proper
271 inter-dependences (thanks to Jan Strube)
272* included SISCone v3.0.4 with a similar fix
273
274================================================================
275Summary of changes from v3.3.0 -> v3.3.1: 2018-04-24
276================================================================
277
278* Main FastJet License clarified as being GPL v2 or later
279* added theta() and cos_theta() members to PseudoJet
280* added a --with-cgal-boostdir=... configure option to handle
281 cases where CGAL uses a non-standard Boost installation path
282* fixed compilation bug in the SISCone interface
283 (thanks to Attila Krasznahorkay)
284
285================================================================
286Summary of changes from v3.2.2 -> v3.3.0: 2017-07-12
287================================================================
288
289This release adds a first version of a Python interface to
290FastJet (some details may still evolve in the future).
291Enable it with --enable-pyext at configure time and see
292examples/python/ for usage.
293
294Thanks to Lily Asquith, Stefano Carrazza and Eric Metodiev for
295testing and helpful feedback.
296
297================================================================
298***** PUT IN CHANGES from v3.2.1 -> v3.2.2: 2017-05-23
299================================================================
300This is a bug-fix release. Main changes:
301
302* fixed issue with negative masses in MassDropTagger
303 (reported by Johannes Elmsheuser)
304* fixed the return type of some PseudoJet operators
305* fixed type mismatch for diJ_plus_link in NNFJN2Tiled
306
307================================================================
308Summary of changes from v3.2.0 -> v3.2.1: 2016-08-04
309================================================================
310This is a bug-fix release. Main changes:
311
312* added a missing assignment operator for ClusterSequence
313 (reported by Roberto Franceschini)
314* eliminated a warning about unused variables when assertions are
315 disabled (reported by Andy Buckley)
316* included SISCone-3.0.3 which now installs config.h to improve
317 build stability
318
319================================================================
320Summary of changes from v3.1.3 -> v3.2.0: 2016-03-17
321================================================================
322
323* exposed the N2Plain and N2Tiled strategies for 3rd-party clustering
324 algorithms under the form of two new classes (NNFJN2Plain and
325 NNFJN2Tiled), similar to NNH
326* included version 3.0.2 SISCone with minor bug fixes
327* made template implementation of PseudoJet::obj_sorted_by_values() public
328* added a --guess-prefix option to fastjet-config (guesses prefix
329 from location of fastjet-config instead of prefix from configure)
330* added a --disable-auto-ptr option to configure (for clean C++11 compilation)
331* added internal helpers for C++11 and C++14 features: compile-time
332 deprecation and the override keyword
333* small tweaks to the build system
334* fjcore now ships with an illustrative fortran wrapper and example
335
336================================================================
337Summary of changes from v3.1.2 -> v3.1.3: 2015-07-04
338================================================================
339This is a maintenance relase with the following changes:
340* disabled JetDefinition::operator(...) when CINT is detected, for
341 ROOT v5 compatibility.
342* worked around an issue with recent versions of CGAL and the clang
343 compiler
344
345================================================================
346Summary of changes from v3.1.1 -> v3.1.2: 2015-03-12
347================================================================
348This is a bug-fix release. Main changes:
349
350* fixed rounding error issue in the "lazy" clustering strategies that,
351 in rare cases, caused infinite loops or crashes (reported by Jochen Ott).
352* added check on clustering's internal consistency; failure will throw
353 a new "InternalError" exception (derived from Error).
354* fixed bug in extraction of fjcore code that resulted in fjcore
355 failing for high multiplicities (~1000) (reported by Sergei Chekanov).
356 Only affects fjcore, not the full fastjet library.
357
358================================================================
359Summary of changes from v3.1.0 -> v3.1.1: 2015-01-06
360================================================================
361This is a bug-fix release. Main changes:
362
363* fix to area support for Filter with Cambridge/Aachen jets and subjets
364* GridMedianBackgroundEstimator has new constructor and RectangularGrid as public base
365* added virtual destructor to TilingBase class
366
367================================================================
368Summary of changes from v3.0.6 -> v3.1.0: 2014-09-30
369================================================================
370* Significant speed improvements (x1.5-10) for large N (few thousand-10^5)
371* FASTJET_VERSION_NUMBER preprocessor symbol, for easy in-code version testing
372* New JetDefinition::operator(): jets = jet_def(particles);
373* Native particle-mass support in PU estimation (rho_m())
374* Subtraction can use rho_m (set_use_rho_m()) and force m>0 (set_safe_mass())
375* Addition of Winner-Takes-All recomb. schemes (WTA_pt_scheme, WTA_modp_scheme)
376* SISCone updated to v3.0.0 (addition of SISCone with progressive removal)
377* New Recluster class, serving as base for Filter
378* New RectangularGrid class, base for GridMedianEstimator & GridJetPlugin
379* Fixed long-standing issue with coincident points in NlnN strategies
380* Other small additions and changes include:
381 * Selector::sum(particles) to get 4-vector sum of particles that pass selector
382 * pruned_jet.structure_of<Pruner>() has Rcut() and zcut() functions
383 * easy copying of Recombiner info: jet_def1.set_recombiner(jet_def2)
384* Various bug-fixes, build-system tweaks (e.g. default -O2 instead of -O3)
385
386================================================================
387Summary of changes from v3.1.0-beta.1 -> v3.1.0: 2014-09-30
388================================================================
389* Addition of Winner-Takes-All recomb. schemes (WTA_pt_scheme, WTA_modp_scheme)
390* SISCone updated to v3.0.0 (addition of SISCone with progressive removal)
391* minor changes including doxygen doc fixes and elimination of gcc warnings
392
393================================================================
394Summary of changes from v3.0.6 -> v3.1.0-beta.1: 2014-08-15
395================================================================
396* Significant speed improvements (x1.5-10) for large N (few thousand-10^5)
397* FASTJET_VERSION_NUMBER preprocessor symbol, for easy in-code version testing
398* New JetDefinition::operator(): jets = jet_def(particles);
399* Native particle-mass support in PU estimation (rho_m())
400* Subtraction can use rho_m (set_use_rho_m()) and force m>0 (set_safe_mass())
401* New Recluster class, serving as base for Filter
402* New RectangularGrid class, base for GridMedianEstimator & GridJetPlugin
403* Fixed long-standing issue with coincident points in NlnN strategies
404* Other small additions and changes include:
405 * Selector::sum(particles) to get 4-vector sum of particles that pass selector
406 * pruned_jet.structure_of<Pruner>() has Rcut() and zcut() functions
407 * easy copying of Recombiner info: jet_def1.set_recombiner(jet_def2)
408* Various bug-fixes, build-system tweaks (e.g. default -O2 instead of -O3)
409
410================================================================
411Summary of changes from v3.0.5 -> v3.0.6: 2013-10-29
412================================================================
413This is a minor maintenance release. Main changes:
414* fixed compilation issues for two plugins under OS X 10.9 (Mavericks)
415* fixed incorrect warnings in JHTopTagger, MassDropTagger and an example
416* GridJetPlugin now has extra enquiry functions
417
418================================================================
419Summary of changes from v3.0.4 -> v3.0.5: 2013-09-16
420================================================================
421This is a minor maintenance release. Main changes:
422* modified include guards, to solve coexistence issue for fjcore
423* resolved (bogus) compiler warning about uninitialised variables
424* added an example event file that was missing from the distribution
425
426================================================================
427Summary of changes from v3.0.3 -> v3.0.4: 2013-06-05
428================================================================
429
430This is a minor maintenance release. Changes include:
431* dummy init of PseudoJet rapidity to avoid warnings with some configs.
432* minor code structure adjustments to allow for release of fjcore
433* inclusion of SISCone 2.0.6
434
435================================================================
436Summary of changes from v3.0.2 -> v3.0.3: 26/06/12
437================================================================
438
439This is a bug-fix release, fixing
440
441* compilation issues with g++-4.7 and clang
442* issue of missing documentation figures in the tarball
443* issue with the --enable-extra-warnings flag in configure
444
445================================================================
446Summary of changes from v3.0.1 -> v3.0.2: 17/01/12
447================================================================
448
449This is a bug-fix release, including
450
451* small fixes to the build system and fastjet-config
452* further licence clarifications
453* user can force early printing of banner with ClusterSequence::print_banner()
454* included SISCone 2.0.5 (with small modifications to the build system)
455
456================================================================
457Summary of changes from v3.0.0 -> v3.0.1: 25/11/11
458================================================================
459
460Version 3.0.1 includes further reorganisation of the manual (version to
461appear on arXiv), and a number of small additional changes, including :
462
463* PseudoJet now also has a pt() member function for transverse momentum
464* minor speed improvements (very low N + strategy choice for N ~ 20-50)
465* elimination of many compilation warnings found with -Wextra -Wshadow
466* clarification of licenses for many of the plugins + new plugin banners
467* fixed a memory leak in the ATLASConePlugin
468
469================================================================
470Summary of changes from v2.4.4 -> v3.0.0: 09/10/11
471================================================================
472
473Changes relative to the 2.4.x series include:
474
475Addition of FastJet tools:
476
477 * Filtering, trimming, pruning and a few boosted object taggers as
478 part of a new native "Transformers" framework for post-clustering
479 manipulation of jets
480
481 * New background estimation and subtraction interface, with
482 JetMedianBackgroundEstimator, GridMedianBackgroundEstimator and Subtractor.
483
484New functionality:
485
486 * Enhancement of the PseudoJet class so that jets are now aware of their
487 internal structure (e.g. one can use jet.constituents()).
488 * It is possible to associate arbitrary user information with a PseudoJet.
489 * Selectors, which allow easy communication of cuts across different functions
490
491Other changes:
492
493 * Improved doxygen and examples
494 * aids for easier memory management
495 * elimination of the R<pi/2 restriction on native jet algorithms
496 * control of Error and warning output, including public LimitedWarning class
497 * new plugins (GridJet and two D0RunICone plugins)
498 * enhanced fortran wrappers
499
500Interface modifications (May break backwards compatibility):
501
502 * by default a JetDefinition is initialised to undefined_jet_algorithm
503 instead of kt_algorithm with a radius of 1.
504 * JetDefinition::DefaultRecombiner sets the user index of the result
505 of the recombination to -1 (the default for a PseudoJet;
506 previously was being set to 0)
507 * ghosts are placed more sensibly in 3.0 than in the 2.X series;
508 call ghost_area_spec.set_fj2_placement(true) to reinstate old behaviour
509 * CS::exclusive_subjets used to silently return fewer subjets than
510 requested if there were too few particles in a jet; to be
511 consistent with exclusive_jets(...) it now throws an exception;
512 use exclusive_jets_up_to(...) and exclusive_subjets_up_to(...) to
513 avoid the exception.
514 * ATLASCone and TrackJet plugins use stable_sort instead of sort for
515 more stable behaviour across architectures and compiler versions;
516 this can change clustering results in events with degeneracies.
517 * some legacy headers have been removed (include/FjPseudoJet.hh and
518 include/FjClusterSequence.hh), and some classes are deprecated:
519 ClusterSequenceWithArea (use ClusterSequenceArea instead),
520 ActiveAreaSpec (use GhostedAreaSpec instead), and RangeDefinition
521 and CircularRange (use Selector instead); see appendix G in manual
522 for further small removals.
523
524Configure modifications
525
526 * the plugins are by default built in a single 'libfastjetplugin'
527 library. This is transparent if you use the fastjet-config
528 script. The previous behaviour (each plugin in its own library)
529 can be recovered by passing the --disable-monolithic option to
530 configure.
531 * an additional library, libfastjettools, contains tools like
532 boosted object taggers, filters, etc. It is included by default
533 with "fastjet-config --libs"
534
535
536New features relative to 3.0beta1:
537
538 * addition of Pruner class
539 * control of Error and warning output, including public LimitedWarning class
540 * addition of SelectorIsZero
541 * ClusterSequence::childless_pseudojets()
542
543Bug fixes and other changes relative to 3.0beta1:
544
545 * JetMedianBackgroundEstimator::set_particles(...) no longer resets other parameters
546 * fixed issue with persistency of internal recombiner in Filter
547 * removed deprecated ClusterSequence constructor with R (rather than
548 jet def) and also CS::set_jet_algorithm(...), CS::set_jet_def(...)
549
550
551================================================================
552Summary of changes from v3.0beta1 -> v3.0.0: 09 October 2011
553================================================================
554New features:
555- addition of Pruner class
556- control of Error and warning output, including public LimitedWarning class
557- addition of SelectorIsZero
558- ClusterSequence::childless_pseudojets()
559
560Bug fixes and other changes
561- JetMedianBackgroundEstimator::set_particles(...) no longer resets other parameters
562- fixed issue with persistency of internal recombiner in Filter
563- removed deprecated ClusterSequence constructor with R (rather than jet def)
564 and also CS::set_jet_algorithm(...), CS::set_jet_def(...)
565
566================================================================
567Summary of changes from v3.0alpha3 -> v3.0beta1: 10 August 2011
568================================================================
569New features
570- Reorganised background estimation to have a JetMedianBackgroundEstimator
571 and a GridMedianBackgroundEstimator (derived from BackgroundEstimatorBase)
572 [v3.0alpha3 programs should replace BackgroundEstimator
573 -> JetMedianBackgroundEstimator, and use a new order of constructor arguments]
574- Added the GridJetPlugin
575- added a TopTaggerBase and a Johns Hopkins top tagger (JHTopTagger)
576- to JetDefinition added delete_plugin_when_unused(),
577 delete_recombiner_when_unused()
578- improved Filter (for area and recombiner support, also works with a subtractor)
579- added a --config flag to fastjet-config
580
581Bug fixes and other changes
582- some speed gains in the default recombiner
583- TrackJet and ATLASCone now use stable_sort (can change results;
584 makes results stable across machine architectures & compilers, cf BUGS)
585- fixed bugs in Voronoi areas (as in v.2.4.4)
586- fixed bugs in handling of empty areas in background estimator (as in 2.4.4)
587- renamed SelectorMXXX -> SelectorMassXXX
588- renamed NSubjettinessTagger -> RestFrameNSubjettinessTagger
589- exclusive_[sub]jets(njets) now consistenty throws an error if it
590 can't deliver njets; exclusive_[sub]jets_upto(njets) gives up to njets
591- deprecated ClusterSequenceWithArea and ActiveAreaSpec
592 (ClusterSequenceWithArea no longer available from
593 ClusterSequenceArea.hh header)
594- deprecated RangeDefinition & CircularRange; use Selector instead
595- reorganisation of substantial parts of the manual
596
597
598================================================================
599Summary of changes from v3.0alpha2 -> v3.0alpha3: 03 June 2011
600================================================================
601
602New features
603- Added a series of "Transformer"s in tools/:
604 * Subtractor: subtract the jet using a BackgroundEstimator
605 * Boost/Unboost: boosts/unboosts a jet
606 * MassDropTagger: look for a mass drop in the jet substructure
607 * NSubjettinessTagger: 2-pronged tagger based on rest-frame 2-subjettiness
608 * CASubJetTagger: 2-pronged tagger based on maximal distance in jet history
609 * Filter updated from alpha2 (bug fixes & new constructors)
610 NB: examples 11 (boosted Higgs) and 12 (Filter) illustrate usage.
611
612- CS::delete_self_when_unused() allows it to handle its own memory management
613- GhostedAreaSpec can take a Selector to help specify ghost placement
614- added a FunctionOfPseudoJet<T> base class to help standardise tool interfaces
615- ClusterSequence::transfer_from_sequence now allows for a
616 FunctionOfPseudoJet<PseudoJet> argument to transform (e.g. boost)
617 the jets from an old sequence as they are transferred to the new one
618- fortran interface now has basic area functionality
619
620Changes to features introduced in alpha2 and alpha1:
621- Numerous changes to BackgroundEstimator
622 * it allows manual encoding of rapidity dependence;
623 * it can calculate density of quantities other than pt;
624 * it has additional constructors, plus methods to reset its ClusterSequence, etc.
625 * its sigma() now properly handles finite numbers of jets (+ other bug fixes).
626- jet.pieces() for a jet from a clustering now returns the two parents
627- various changes to behaviour of a jet's structural calls; see new table in doc
628- PseudoJet::extra_properties<...>() -> PseudoJet::structure_of<...>() (cf example 12)
629- join(...) can now include a recombiner argument; it also now supports areas
630- Selector::count(jets) to know how many pass a cut (also new: Selector::sift)
631
632Other changes
633- by default a PseudoJet is constructed with zero momentum
634- by default a JetDefinition has an undefined_jet_algorithm
635- efficiency improvements in PtYPhiM and ghost generation
636- all uses of RangeDefinition now replaced by Selector. Old interfaces
637 retained, but deprecated.
638- added an example (09) to illustrate how to add user-info to a PseudoJet
639- doxygen output now configured with an internal search engine
640
641Bug fixes
642- the default recombiner used to set the user_index to the non-default
643 value of 0. Now it sets it to the default (-1).
644- fixed crashes of VoronoiAreas for particles on a grid (also in 2.4.3)
645
646
647================================================================
648Summary of changes from v3.0alpha1 -> v3.0alpha2: 10 March 2011
649================================================================
650
651New features:
652- two jets, a and b can now be joined: PseudoJet c = join(a,b),
653 intended to facilitate packaging the result of substructure tools;
654 individual pieces can be recovered with c.pieces();
655- New PseudoJetStructureBase class, to help implement such features
656- New fastjet/tools/Filter.hh provides a unified interface to filtering and trimming
657- New very preliminary fastjet/tools/BackgroundEstimator.hh to provide
658 a more flexible interface to estimation of backgrounds (removal of
659 hardest jets, etc.).
660- a few extra Selectors
661
662Changes to features introduced in alpha1:
663- Selector is now in fastjet/Selector.hh (no longer fastjet/tools/...)
664- Selector::relocate(...) and is_relocatable() renamed to
665 Selector::set_reference(...) and takes_reference()
666- PseudoJet::ExtraInfo has been renamed PseudoJet::UserInfoBase and
667 corresponding access functions are now called set_user_info(...), etc.
668
669Other changes and fixes
670- some legacy headers removed
671- bug fixes in NlnNCam strategies for R>pi
672
673===========================================================
674Summary of changes from v2.4.X -> v3.0alpha1: 27 January 2011
675===========================================================
676
677This is an alpha release, previewing some of the new features that are
678expected to be available in FastJet version 3. Interfaces of new
679features may yet evolve.
680
681New features:
682- Several extensions to PseudoJet:
683 * it now knows what ClusterSequence it belongs to
684 * info about internals of jets can be accessed e.g. as jet.constituents()
685 * it now has a virtual destructor + other support for classes derived from PseudoJet
686 * new facilities for associating user info with a jet (see PseudoJet::ExtraInfo)
687 * some of these features make use of a new SharedPtr class
688 (intended mainly for advanced users)
689 similar to C++0x std::shared_ptr
690 * calculation of phi and rapidity (cached) only on request
691- R can now be taken larger than pi/2 for natively coded jet algorithms
692- Addition of "Selector" tools through #include "fastjet/tools/Selector.hh"
693- New plugin for D0RunICone (code contributed by Lars Sonnenschein)
694- Improvements to fortran wrapper (access to SISCone, jet constituents, etc.)
695
696Bug fixes:
697- fixed issue with inconsistent returned sign in PseudoJet::delta_phi_to(...)
698
699Other notable changes:
700- Revamping of examples
701- by default all plugins are now packaged into libfastjetplugins.
702 Note that "external" libraries like libsiscone are still separate.
703- Significant improvements to doxygen documentation
704
705===========================================================
706Summary of changes from v2.4.1 -> v2.4.2: 26 February 2010
707===========================================================
708- exclusive_ymerge_max(...) was not working; now fixed
709- the D0RunIIConePlugin gave segfaults for some parameters; now fixed
710- the D0RunIIConePlugin gave different results on 32/64 bit machines;
711 optimisation flags now changed just for D0 code so that 32 bit gives same
712 results as 64 bit.
713- changes to configure.ac to better handle fortran compiler checks
714- removed some orphan/redundant code that was generating compilation warnings
715- added an "--enable-monolithic" option to ./configure which causes
716 all plugins to be placed in a single library (except SISCone)
717- added a "--list-plugins" option to fastjet-config
718
719=======================================================
720Summary of changes from v2.4.0 -> v2.4.1: 29 May 2009
721=======================================================
722
723Fixes to the build system
724-------------------------
725- Included SISCone 2.0.1 (shared libs now enabled by default in
726 SISCone too, and other small fixes)
727- Fixed platform-dependent failures during make check
728- Fixed gcc 4.4 compatibility issues (missing headers)
729- Fixed a problem on Mac OS X with the arguments provided by
730 "fastjet-config --libs" (--rpath versus -rpath).
731- fastjet-config has new optional arguments (--rpath=no, --runpath)
732 related to finding shared libraries at runtime on linux.
733 Run fastjet-config without any arguments for more info.
734 To instead use static libraries, either configure with the
735 --disable-shared option, or use fastjet-config with the --shared=no option.
736- fastjet-config can now take --cxxflags and --libs in a single invocation
737- With --cxxflags, fastjet-config now returns the minimal required set of arguments
738- Various other small mods (better fortran support, standardisation, ...)
739 [thanks to Andy Buckley and David Grellscheid for suggestions]
740
741Also
742----
743- Added a fortran wrapper for pp sequential recombination algorithms
744- Fixed issue in median rho estimation when some jets have zero area
745- Expanded descriptions that are returned by ATLAS/TrackJet/CMS plugins
746- Warnings are no longer given when using exclusive jets with
747 Cam/Aachen and certain e+e- algorithms (the warnings were misleading)
748- Small fixes to the manual
749
750=======================================================
751Summary of changes from v2.3.X -> v2.4.0: 17 April 2009
752=======================================================
753
754
755New pp algorithms
756-----------------
757
758- added implementation of generalised kt algorithm (genkt_algorithm) for pp
759- added D0RunIICone plugin [--enable-d0runiicone at configure time]
760- added ATLASCone Plugin [--enable-atlascone at configure time]
761- added CMSIterativeConePlugin [--enable-cmsiterativecone at configure time]
762- added TrackJet Plugin (used by CDF in UE studies)
763 [--enable-trackjet at configure time]
764
765Introduction of e+e- algorithms
766-------------------------------
767
768- added an implementation of the e+e- kt algorithm (ee_kt_algorithm),
769- added EECambridgePlugin for the (original) e+e- Cambridge algorithm
770- added JADEPlugin for the JADE algorithm (see the ChangeLog or header
771 file for details)
772- added SISConeSphericalPlugin [enabled by default] for SISCone in
773 e+e- and other spherical environments.
774- native implementation of generalised kt algorithm for e+e- (ee_genkt_algorithm)
775 [also provides access to e+e- form of anti-kt alg, conical jets on a sphere]
776- added JadePlugin for the e+e- Jade algorithm
777
778Meta-algorithms
779----------------
780
781- added NestedDefs plugin for daisy-chaining multiple jet definitions
782 [still under testing; API may change in the future]
783
784New functionality
785-----------------
786- added subjet functions for viewing jet at particular dcut, etc.
787- added access to exclusive jets based on ycut as well as dcut (for e+e-)
788- added support for asymmetric rapidity ranges in GhostedAreaSpec
789- added support for a CircularRange (derived from RangeDefinition) for
790 use in background estimation
791- added class NNH to help users implement algorithms with
792 user-chosen distance measure (see JadePlugin for an example)
793
794Interface modifications
795-----------------------
796- removed default value of 0.5 for overlap_threshold in
797 CDFMidPointPlugin, CDFJetCluPlugin and SISConePlugin constructors
798
799 *** may break backwards compatibility ***
800
801- a JetDefinition(jet_alg) constructor, without an R value, is no
802 longer legal, except when jet_alg is ee_kt_algorithm (it has no R).
803
804 *** may break backwards compatibility ***
805
806- in SISCone, new way of accessing the information about pass at which
807 a jet was found (old method retained for 2.4, but now deprecated)
808
809
810Configure modifications
811-----------------------
812- added --enable-allplugins and --enable-allcxxplugins options, to
813 avoid having to specify a long list of individual plugins
814- shared libraries are now enabled by default
815
816Bugs fixed
817----------
818- fixed missing support for periodicity in azimuth in RangeDefinition
819 class
820
821Other modifications
822-----------------------
823- added support for CGAL 3.4 (for non-standard locations, specify
824 --with-cgaldir at configure time)
825- removed restriction that fastjet throws exception on empty events
826- added an example that illustrates the use of subjet techniques for
827 a boosted Higgs->b+bbar search
828
829Still to come
830-------------
831- add CMSIterativeCone Plugin
832
833
834
835=======================================================================
836Summary of changes from v2.3.3 -> v2.3.4 (bug fix release): 15 Aug 2008
837==========================================================
838
839- fixed infinite-loop bug in JetClu plugin on certain rare events
840
841- fixed compatibility issues of certain example programs with g++-4.3
842
843- incorporated SISCone 1.3.3 with similar g++-4.3 fixes
844
845=======================================================================
846Summary of changes from v2.3.2 -> v2.3.3 (bug fix release): 28 Apr 2008
847==========================================================
848
849- fixed missing installation of .../config_auto.h
850
851- fixed missing typename in .../SearchTree.hh
852
853=======================================================================
854Summary of changes from v2.3.1 -> v2.3.2 (bug fix release): 03 Apr 2008
855==========================================================
856
857- fixes to propagation of CXXFLAGS through the build chain
858
859- small change in Voronoi area code to fix crashes on regular
860 (calorimeter) layouts of momenta
861
862- small change in active areas code to fix crashes on algorithms that
863 do not cluster all particles
864
865- eliminated "using namespace std" that had accidentally been left in
866 certain area header files
867
868- incorporation of SISCone 1.3.2 with fixes for inappropriate public
869 symbols and to build framework
870
871
872======================================================================
873Summary of changes from v2.3.0 -> v2.3.1 (bug fix release)
874==========================================================
875
876- Fixed compilation issues under windows VC7.1 (reported by
877 I. Belyaev); also included SISCone 1.3.1 with similar fixes.
878
879- Fixed speed issue under optimized compilation of CDF MidPoint plugin
880 for 32 bit architectures that had arisen subsequent to the switch to
881 autotools with its common optimization settings.
882
883- Fixed "make check" failure with the --disable-siscone option.
884
885- Fixed crash in exclusive_dmerge(njets) for njets=0 (reported by P. Lenzi)
886
887
888======================================================================
889Summary of changes from v2.1.0 (previous stable release) to v2.3.0
890===================================
891
892- added the anti-kt algorithm (LPTHE-07-03), which is a sequential
893 recombination algorithm that gives conical jets.
894
895- Added Passive and Voronoi areas, and new common class for accessing
896 all types of areas, ClusterSequenceArea.
897
898- switched to autotools for compilation and installation:
899 ./configure --prefix=...
900 make
901 make check [optional]
902 make install
903
904 NB: users should no longer include fastjet-2.x.y/Makefile
905 when building their own programs, and instead should use
906 g++ -c file.cc `fastjet-config --cxxflags`
907 g++ file.o `fastjet-config --libs --plugins`
908
909- plugin include files are now to be accessed with fastjet/ in
910 front of them, i.e.
911 #include "fastjet/SISConePlugin.hh"
912 A simple #include "SISConePlugin.hh" is now obsolete but will
913 continue to work through 2.x
914
915- Added RangeDefinition class to provide more flexibility in UE/pileup
916 estimation.
917
918- New facilities for navigating the cluster sequence (has_parents,
919 has_child and has_partner members of ClusterSequence)
920
921- other bug fixes and small enhancements (including SISCone-1.3.0,
922 improvements to plugin facilities).
923
924See individual beta-releases below for more information, as well as
925the ChangeLog.
926
927
928======================================================================
929Changes from v2.2beta0 to v2.3-beta0
930===================================
931
932- switched to autotools for compilation and installation;
933
934- old build procedure still available for now, with files called
935 makefile.static (make -f makefile.static);
936
937 test-script.sh has been renamed test-static.sh and builds and
938 tests using the old procedure.
939
940- plugins include files are now to be accessed with fastjet/ in
941 front of them, i.e.
942 #include "fastjet/SISConePlugin.hh"
943
944 For backwards compatibility, the old access method will continue
945 to work throughout v2.x, i.e.
946 #include "SISConePlugin.hh"
947
948- added PseudoJet::reset(...) functions to reset the contents of a
949 PseudoJet.
950
951- added fastjet_version_string()
952
953- added a function PtYPhiM(...) that returns a PseudoJet with the
954 given py, rapidity , phi and mass. Defined in PseudoJet.hh
955
956- added a directory fortran_wrapper/ to illustrate how to access
957 fastjet from fortran
958
959- some small bug fixes in the CDF midpoint code
960
961
962======================================================================
963Changes from v2.1.0 to v2.2beta0
964===============================
965
966- added the anti-kt algorithm (LPTHE-07-03)
967
968- Provided a new common class for accessing all different types of
969 areas: ClusterSequenceArea.
970
971- added functionality for Passive areas and Voronoi areas.
972 Areas are now defined much in the same way as jets, via an
973 AreaDefinition, which is passed as an argument
974 to ClusterSequenceArea. NB: the Voronoi area uses Fortune's
975 sweepline code for calculating the Voronoi diagram and so does not
976 require CGAL to be installed (it still is needed for NlnN kt
977 clustering).
978
979- Added class RangeDefinition which allows detailed definitions
980 of the rapidity-azimuth ranges over which to study jet areas
981 and possibly perform noise subtraction
982
983- added facilities for navigating the cluster sequence (has_parents,
984 has_child and has_partner members of ClusterSequence)
985
986- changed plugin base class, so that it now includes R() virtual
987 member, and modified the various plugins to account for this.
988
989- modified the plugin interface to provide facilities to help with
990 passive areas.
991
992- included SISCone-1.2.0 rather than 1.1.1.
993
994- adapted SISCone plugin to the 1.2.0 release of SISCone -- main
995 changes are facilities and improvements related areas: some speed
996 improvements on the split-merge (relevant for active areas) and a
997 fairly efficient way of running passive areas.
998
999- added ClusterSequence::print_jets_for_root(...) and a corresponding root
1000 script (example/root/jet-plots.C), so as to provide a crude
1001 visualisation tool.
1002
1003
1004======================================================================
1005Summary of main changes from v2.0.0 to v2.1.0
1006=============================================
1007
1008- added plugin structure for external jet finders.
1009
1010- included plugins for SISCone, CDFMidPoint, CDFJetClu, PxCone (with
1011 extensions for MidPoint and bug fixes for PxCone relative to public
1012 codes).
1013
1014- introduced option of control over recombination scheme, with a
1015 RecombinationScheme enum, which applies also to area_4vector.
1016
1017- added description() member function to JetDefinition class, so
1018 that you can get a (string) summary of what you're running!
1019
1020- changed the default number of repeats in ActiveAreaSpec to 1 (which
1021 is sufficient for most purposes).
1022
1023For further details, see the changes listed in detail below.
1024
1025======================================================================
1026Changes from v2.1.0b4 to v2.1.0
1027===============================
1028
1029- corrected bug in test-script.sh
1030
1031- removed PxCone from default tests and from
1032 plugins/usage_examples/many_algs_example.cc (to avoid fortran
1033 compilation issues).
1034
1035======================================================================
1036Changes from v2.1.0b3 to v2.1.0b4
1037=================================
1038
1039FastJet modifications
1040---------------------
1041
1042- default number of repeats for the active area specification has been
1043 changed from 5 to 1 (the latter goes fast, but note that it provides
1044 a zero error estimate for the area).
1045
1046Plugin modifications
1047--------------------
1048
1049- adapted plugin to accomodate new scale for use in the SISCone
1050 split-merge (pttilde), with a corresponding change of interface.
1051
1052 Changed default number of passes for SISCone to 0.
1053
1054- Added the pttilde scale choice to the CDF plugin.
1055
1056
1057
1058======================================================================
1059Changes from v2.1.0b2 to v2.1.0b3
1060=================================
1061
1062FastJet enhancements
1063--------------------
1064
1065- methods for estimating the underlying now have the option of using
1066 area_4vector rather than the plain area
1067
1068FastJet bug fixes
1069-----------------
1070
1071- area_4vector is now calculated with the same recombination scheme as
1072 the jets themselves
1073
1074- massless recombination schemes now work correctly on particles with
1075 zero momentum
1076
1077- PseudoJet::phi_std() returned wrong result for phi < pi -- thanks to
1078 Oscar Stal for pointing this out.
1079
1080Plugin modifications
1081--------------------
1082
1083- the plugin mechanism now allows a plugin to add "extra" information
1084 to the ClusterSequence, essentially by providing an auto_ptr to a
1085 class derived from (the new) ClusterSequence::Extras; an example of
1086 this has been implemented with siscone (SISConeExtras) which allows
1087 a user to access the initial (stable) protocones.
1088
1089- included new siscone version (1.1) which uses transverse mass (mt) rather
1090 than pt in the split-merge procedure, to address an IR problem in
1091 events where the hadronic part conserves momentum -- this can have
1092 an effect on some physical distributions; the siscone update also
1093 addresses issues with collinear safety and co-circular points.
1094
1095- included bug fixes to pxcone regarding 2pi periodicity when
1096 recombining momenta
1097
1098- modified the version of the CDF midpoint cone code so as to allow it
1099 to use mt and Et as the parameters in the split--merge step.
1100
1101======================================================================
1102Changes from v2.1.0b1 to v2.1.0b2
1103=================================
1104
1105Bug fixes
1106---------
1107
1108- included new siscone version which solves the memory-leak problem
1109
1110Other changes
1111-------------
1112
1113- added sample output from the test-script as test-script-output-orig.txt
1114
1115======================================================================
1116Changes from v2.1.0b0 to v2.1.0b1
1117=========================
1118
1119New features:
1120-------------
1121
1122- added the SISCone plugin and the beta version of the siscone code
1123 (authored by Soyez & Salam)
1124
1125Bug fixes
1126---------
1127
1128- removed extraneous semicolons after functions that were causing
1129 problems on some compilers.
1130
1131Other additions
1132---------------
1133
1134- Added COPYING file with GPL license
1135
1136======================================================================
1137Changes from v2.0 to v2.1 (beta0)
1138=========================
1139
1140New features:
1141-------------
1142
1143- introduced option of control over recombination scheme, with a
1144 RecombinationScheme enum (a variable of this type should be provided
1145 to the JetDefinition constructor) and also the possibility of an
1146 externally defined recombination scheme.
1147
1148- introduced a "plugin" facility for alternative jet finders, via an
1149 abstract base class
1150
1151 class JetDefinition::Plugin
1152
1153 Plugins are to be provided as classes derived from this,
1154 implementing the relevant virtual functions (see manual and examples
1155 for further info).
1156
1157- introduced "description" member function for the JetDefinition
1158 class, which returns a (std::string) textual description of the
1159 algorithm defined.
1160
1161- provided plugins for CDF JetClu, CDF Midpoint, PxCone code; the
1162 plugins, the code they interface to and example programs are to be
1163 found in the new plugins/ directory.
1164
1165- added ClusterSequence::unclustered_particles() a vector containing
1166 the unclustered particles (relevant for some plugin algorithms).
1167
1168Minor additions
1169---------------
1170
1171- introduced PseudoJet::squared_distance (does same as "plain_distance")
1172
1173
1174
1175Notational changes:
1176-------------------
1177
1178- in the documentation, replaced eta -> y, to make it clear that it's
1179 rapidity and not pseudorapidity that is being used throughout. Some
1180 internal code continues to use variables called "eta" -- but these
1181 are actually proper rapidity.
1182
1183
1184======================================================================
1185Changes from v1.0 to v2.0
1186=========================
1187
1188New features:
1189-------------
1190
1191- the longitudinally invariant inclusive Cambridge/Aachen jet finder
1192 has been added.
1193
1194 Note that the exclusive jets extraction for the Cambridge jet-finder
1195 does not provide the definition as given in the original Cambridge
1196 paper. See the documentation for further details
1197
1198- classes have been introduced for running jet clustering and
1199 simultaneously collecting information about the area of each jet.
1200 The base class specifying the functionality is
1201
1202 class ClusterSequenceWithArea;
1203
1204 itself derived from ClusterSequence.
1205
1206 Two derived classes that provide the actual areas functionality are:
1207
1208 class ClusterSequenceActiveArea;
1209 class ClusterSequenceActiveAreaExplicitGhosts;
1210
1211 To construct them, one also needs to specify how one wishes the area
1212 to be calculated, via a class
1213
1214 class ActiveAreaSpec;
1215
1216
1217New optimizations:
1218------------------
1219- new clustering strategies have been added:
1220
1221
1222 N2MinHeapTiled : like N2Tiled, except that the non-geometric
1223 part has been replaced with a N ln N algorithm
1224 (overall the strategy still scales as N^2, but with a
1225 smaller coefficient)
1226
1227 NlnNCam, NlnNCam2pi2R, NlnNCam4pi:
1228
1229 NlnN strategies specific to the Cambridge/Aachen
1230 jet-finder -- the fastest of them is NlnNCam.
1231 Depending on the size of the event and of the CPU
1232 cache it may be up to 2.5 times faster than the
1233 CGAL-based NlnN strategy. Experiment on your own
1234 hardware and events to establish whether the
1235 speed gain is significant.
1236
1237 These strategies are based on the work on dynamic
1238 Closest Pair problems by Timothy Chan.
1239
1240 Best : (was present before) now attempts to select best
1241 among N2Plain, N2Tiled, N2MinHeapTiled, NlnN.
1242
1243 As the best option for a given N may depend on R
1244 and the event structure, you are advised to
1245 experiment with individual strategies if the
1246 last few tens of percent in speed are critical.
1247
1248
1249
1250Updates to user interface
1251-------------------------
1252
1253While the v1 interface to fastjet has been maintained for backwards
1254compatibility, for new developments in v2 and related forthcoming
1255work, a new interface is provided as follows:
1256
1257- User accessible classes and enums have had the "Fj" prefix removed
1258 and are instead now in namespace fastjet; the corresponding include
1259 files are in the include/fastjet directory. So, for example instead
1260 of
1261
1262 #include "FjClusterSequence.hh"
1263 //...
1264 FjClusterSequence clust_seq(...)
1265
1266 one now uses the following
1267
1268 #include "fastjet/ClusterSequence.hh"
1269 //...
1270 fastjet::ClusterSequence clust_seq(...)
1271
1272 If typing "fastjet::" the whole time seems too long-winded, you can
1273 abbreviate "fastjet" as "fj" with
1274
1275 namespace fj = fastjet;
1276
1277 or eliminate the need for it altogether with
1278
1279 using namespace fastjet;
1280
1281- a new class, fastjet::JetDefinition, has been introduced for holding
1282 the details of the jet finder (which one, value of R, etc...) that
1283 is to be used in a given clustering.
1284
1285 #include "fastjet/JetDefinition.hh"
1286 #include "fastjet/ClusterSequence.hh"
1287 //...
1288
1289 double R = 0.7;
1290
1291 // define jet algorithm
1292 fastjet::JetDefinition jet_def(fastjet::kt_algorithm, R);
1293
1294 // get the cluster sequence for a vector of 4-momenta and the
1295 // given jet definition
1296 fastjet::ClusterSequence clust_seq(momenta, jet_def);
1297
1298- some errors that previously were assertions now throw an
1299 fastjet::Error -- exception. A fully uniform handling of exceptions
1300 is currently some way away however and users for whom this is an
1301 important issue should contact the authors.