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