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