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