1 Release Notes for FastJet
2 -------------------------
4 ================================================================
5 Summary of changes from v3.2.0 -> v3.2.1: 2016-08-04
6 ================================================================
7 This is a bug-fix release. Main changes:
9 * added a missing assignment operator for ClusterSequence
10 (reported by Roberto Franceschini)
11 * eliminated a warning about unused variables when assertions are
12 disabled (reported by Andy Buckley)
13 * included SISCone-3.0.3 which now installs config.h to improve
16 ================================================================
17 Summary of changes from v3.1.3 -> v3.2.0: 2016-03-17
18 ================================================================
20 * exposed the N2Plain and N2Tiled strategies for 3rd-party clustering
21 algorithms under the form of two new classes (NNFJN2Plain and
22 NNFJN2Tiled), similar to NNH
23 * included version 3.0.2 SISCone with minor bug fixes
24 * made template implementation of PseudoJet::obj_sorted_by_values() public
25 * added a --guess-prefix option to fastjet-config (guesses prefix
26 from location of fastjet-config instead of prefix from configure)
27 * added a --disable-auto-ptr option to configure (for clean C++11 compilation)
28 * added internal helpers for C++11 and C++14 features: compile-time
29 deprecation and the override keyword
30 * small tweaks to the build system
31 * fjcore now ships with an illustrative fortran wrapper and example
33 ================================================================
34 Summary of changes from v3.1.2 -> v3.1.3: 2015-07-04
35 ================================================================
36 This is a maintenance relase with the following changes:
37 * disabled JetDefinition::operator(...) when CINT is detected, for
38 ROOT v5 compatibility.
39 * worked around an issue with recent versions of CGAL and the clang
42 ================================================================
43 Summary of changes from v3.1.1 -> v3.1.2: 2015-03-12
44 ================================================================
45 This is a bug-fix release. Main changes:
47 * fixed rounding error issue in the "lazy" clustering strategies that,
48 in rare cases, caused infinite loops or crashes (reported by Jochen Ott).
49 * added check on clustering's internal consistency; failure will throw
50 a new "InternalError" exception (derived from Error).
51 * fixed bug in extraction of fjcore code that resulted in fjcore
52 failing for high multiplicities (~1000) (reported by Sergei Chekanov).
53 Only affects fjcore, not the full fastjet library.
55 ================================================================
56 Summary of changes from v3.1.0 -> v3.1.1: 2015-01-06
57 ================================================================
58 This is a bug-fix release. Main changes:
60 * fix to area support for Filter with Cambridge/Aachen jets and subjets
61 * GridMedianBackgroundEstimator has new constructor and RectangularGrid as public base
62 * added virtual destructor to TilingBase class
64 ================================================================
65 Summary of changes from v3.0.6 -> v3.1.0: 2014-09-30
66 ================================================================
67 * Significant speed improvements (x1.5-10) for large N (few thousand-10^5)
68 * FASTJET_VERSION_NUMBER preprocessor symbol, for easy in-code version testing
69 * New JetDefinition::operator(): jets = jet_def(particles);
70 * Native particle-mass support in PU estimation (rho_m())
71 * Subtraction can use rho_m (set_use_rho_m()) and force m>0 (set_safe_mass())
72 * Addition of Winner-Takes-All recomb. schemes (WTA_pt_scheme, WTA_modp_scheme)
73 * SISCone updated to v3.0.0 (addition of SISCone with progressive removal)
74 * New Recluster class, serving as base for Filter
75 * New RectangularGrid class, base for GridMedianEstimator & GridJetPlugin
76 * Fixed long-standing issue with coincident points in NlnN strategies
77 * Other small additions and changes include:
78 * Selector::sum(particles) to get 4-vector sum of particles that pass selector
79 * pruned_jet.structure_of<Pruner>() has Rcut() and zcut() functions
80 * easy copying of Recombiner info: jet_def1.set_recombiner(jet_def2)
81 * Various bug-fixes, build-system tweaks (e.g. default -O2 instead of -O3)
83 ================================================================
84 Summary of changes from v3.1.0-beta.1 -> v3.1.0: 2014-09-30
85 ================================================================
86 * Addition of Winner-Takes-All recomb. schemes (WTA_pt_scheme, WTA_modp_scheme)
87 * SISCone updated to v3.0.0 (addition of SISCone with progressive removal)
88 * minor changes including doxygen doc fixes and elimination of gcc warnings
90 ================================================================
91 Summary of changes from v3.0.6 -> v3.1.0-beta.1: 2014-08-15
92 ================================================================
93 * Significant speed improvements (x1.5-10) for large N (few thousand-10^5)
94 * FASTJET_VERSION_NUMBER preprocessor symbol, for easy in-code version testing
95 * New JetDefinition::operator(): jets = jet_def(particles);
96 * Native particle-mass support in PU estimation (rho_m())
97 * Subtraction can use rho_m (set_use_rho_m()) and force m>0 (set_safe_mass())
98 * New Recluster class, serving as base for Filter
99 * New RectangularGrid class, base for GridMedianEstimator & GridJetPlugin
100 * Fixed long-standing issue with coincident points in NlnN strategies
101 * Other small additions and changes include:
102 * Selector::sum(particles) to get 4-vector sum of particles that pass selector
103 * pruned_jet.structure_of<Pruner>() has Rcut() and zcut() functions
104 * easy copying of Recombiner info: jet_def1.set_recombiner(jet_def2)
105 * Various bug-fixes, build-system tweaks (e.g. default -O2 instead of -O3)
107 ================================================================
108 Summary of changes from v3.0.5 -> v3.0.6: 2013-10-29
109 ================================================================
110 This is a minor maintenance release. Main changes:
111 * fixed compilation issues for two plugins under OS X 10.9 (Mavericks)
112 * fixed incorrect warnings in JHTopTagger, MassDropTagger and an example
113 * GridJetPlugin now has extra enquiry functions
115 ================================================================
116 Summary of changes from v3.0.4 -> v3.0.5: 2013-09-16
117 ================================================================
118 This is a minor maintenance release. Main changes:
119 * modified include guards, to solve coexistence issue for fjcore
120 * resolved (bogus) compiler warning about uninitialised variables
121 * added an example event file that was missing from the distribution
123 ================================================================
124 Summary of changes from v3.0.3 -> v3.0.4: 2013-06-05
125 ================================================================
127 This is a minor maintenance release. Changes include:
128 * dummy init of PseudoJet rapidity to avoid warnings with some configs.
129 * minor code structure adjustments to allow for release of fjcore
130 * inclusion of SISCone 2.0.6
132 ================================================================
133 Summary of changes from v3.0.2 -> v3.0.3: 26/06/12
134 ================================================================
136 This is a bug-fix release, fixing
138 * compilation issues with g++-4.7 and clang
139 * issue of missing documentation figures in the tarball
140 * issue with the --enable-extra-warnings flag in configure
142 ================================================================
143 Summary of changes from v3.0.1 -> v3.0.2: 17/01/12
144 ================================================================
146 This is a bug-fix release, including
148 * small fixes to the build system and fastjet-config
149 * further licence clarifications
150 * user can force early printing of banner with ClusterSequence::print_banner()
151 * included SISCone 2.0.5 (with small modifications to the build system)
153 ================================================================
154 Summary of changes from v3.0.0 -> v3.0.1: 25/11/11
155 ================================================================
157 Version 3.0.1 includes further reorganisation of the manual (version to
158 appear on arXiv), and a number of small additional changes, including :
160 * PseudoJet now also has a pt() member function for transverse momentum
161 * minor speed improvements (very low N + strategy choice for N ~ 20-50)
162 * elimination of many compilation warnings found with -Wextra -Wshadow
163 * clarification of licenses for many of the plugins + new plugin banners
164 * fixed a memory leak in the ATLASConePlugin
166 ================================================================
167 Summary of changes from v2.4.4 -> v3.0.0: 09/10/11
168 ================================================================
170 Changes relative to the 2.4.x series include:
172 Addition of FastJet tools:
174 * Filtering, trimming, pruning and a few boosted object taggers as
175 part of a new native "Transformers" framework for post-clustering
178 * New background estimation and subtraction interface, with
179 JetMedianBackgroundEstimator, GridMedianBackgroundEstimator and Subtractor.
183 * Enhancement of the PseudoJet class so that jets are now aware of their
184 internal structure (e.g. one can use jet.constituents()).
185 * It is possible to associate arbitrary user information with a PseudoJet.
186 * Selectors, which allow easy communication of cuts across different functions
190 * Improved doxygen and examples
191 * aids for easier memory management
192 * elimination of the R<pi/2 restriction on native jet algorithms
193 * control of Error and warning output, including public LimitedWarning class
194 * new plugins (GridJet and two D0RunICone plugins)
195 * enhanced fortran wrappers
197 Interface modifications (May break backwards compatibility):
199 * by default a JetDefinition is initialised to undefined_jet_algorithm
200 instead of kt_algorithm with a radius of 1.
201 * JetDefinition::DefaultRecombiner sets the user index of the result
202 of the recombination to -1 (the default for a PseudoJet;
203 previously was being set to 0)
204 * ghosts are placed more sensibly in 3.0 than in the 2.X series;
205 call ghost_area_spec.set_fj2_placement(true) to reinstate old behaviour
206 * CS::exclusive_subjets used to silently return fewer subjets than
207 requested if there were too few particles in a jet; to be
208 consistent with exclusive_jets(...) it now throws an exception;
209 use exclusive_jets_up_to(...) and exclusive_subjets_up_to(...) to
211 * ATLASCone and TrackJet plugins use stable_sort instead of sort for
212 more stable behaviour across architectures and compiler versions;
213 this can change clustering results in events with degeneracies.
214 * some legacy headers have been removed (include/FjPseudoJet.hh and
215 include/FjClusterSequence.hh), and some classes are deprecated:
216 ClusterSequenceWithArea (use ClusterSequenceArea instead),
217 ActiveAreaSpec (use GhostedAreaSpec instead), and RangeDefinition
218 and CircularRange (use Selector instead); see appendix G in manual
219 for further small removals.
221 Configure modifications
223 * the plugins are by default built in a single 'libfastjetplugin'
224 library. This is transparent if you use the fastjet-config
225 script. The previous behaviour (each plugin in its own library)
226 can be recovered by passing the --disable-monolithic option to
228 * an additional library, libfastjettools, contains tools like
229 boosted object taggers, filters, etc. It is included by default
230 with "fastjet-config --libs"
233 New features relative to 3.0beta1:
235 * addition of Pruner class
236 * control of Error and warning output, including public LimitedWarning class
237 * addition of SelectorIsZero
238 * ClusterSequence::childless_pseudojets()
240 Bug fixes and other changes relative to 3.0beta1:
242 * JetMedianBackgroundEstimator::set_particles(...) no longer resets other parameters
243 * fixed issue with persistency of internal recombiner in Filter
244 * removed deprecated ClusterSequence constructor with R (rather than
245 jet def) and also CS::set_jet_algorithm(...), CS::set_jet_def(...)
248 ================================================================
249 Summary of changes from v3.0beta1 -> v3.0.0: 09 October 2011
250 ================================================================
252 - addition of Pruner class
253 - control of Error and warning output, including public LimitedWarning class
254 - addition of SelectorIsZero
255 - ClusterSequence::childless_pseudojets()
257 Bug fixes and other changes
258 - JetMedianBackgroundEstimator::set_particles(...) no longer resets other parameters
259 - fixed issue with persistency of internal recombiner in Filter
260 - removed deprecated ClusterSequence constructor with R (rather than jet def)
261 and also CS::set_jet_algorithm(...), CS::set_jet_def(...)
263 ================================================================
264 Summary of changes from v3.0alpha3 -> v3.0beta1: 10 August 2011
265 ================================================================
267 - Reorganised background estimation to have a JetMedianBackgroundEstimator
268 and a GridMedianBackgroundEstimator (derived from BackgroundEstimatorBase)
269 [v3.0alpha3 programs should replace BackgroundEstimator
270 -> JetMedianBackgroundEstimator, and use a new order of constructor arguments]
271 - Added the GridJetPlugin
272 - added a TopTaggerBase and a Johns Hopkins top tagger (JHTopTagger)
273 - to JetDefinition added delete_plugin_when_unused(),
274 delete_recombiner_when_unused()
275 - improved Filter (for area and recombiner support, also works with a subtractor)
276 - added a --config flag to fastjet-config
278 Bug fixes and other changes
279 - some speed gains in the default recombiner
280 - TrackJet and ATLASCone now use stable_sort (can change results;
281 makes results stable across machine architectures & compilers, cf BUGS)
282 - fixed bugs in Voronoi areas (as in v.2.4.4)
283 - fixed bugs in handling of empty areas in background estimator (as in 2.4.4)
284 - renamed SelectorMXXX -> SelectorMassXXX
285 - renamed NSubjettinessTagger -> RestFrameNSubjettinessTagger
286 - exclusive_[sub]jets(njets) now consistenty throws an error if it
287 can't deliver njets; exclusive_[sub]jets_upto(njets) gives up to njets
288 - deprecated ClusterSequenceWithArea and ActiveAreaSpec
289 (ClusterSequenceWithArea no longer available from
290 ClusterSequenceArea.hh header)
291 - deprecated RangeDefinition & CircularRange; use Selector instead
292 - reorganisation of substantial parts of the manual
295 ================================================================
296 Summary of changes from v3.0alpha2 -> v3.0alpha3: 03 June 2011
297 ================================================================
300 - Added a series of "Transformer"s in tools/:
301 * Subtractor: subtract the jet using a BackgroundEstimator
302 * Boost/Unboost: boosts/unboosts a jet
303 * MassDropTagger: look for a mass drop in the jet substructure
304 * NSubjettinessTagger: 2-pronged tagger based on rest-frame 2-subjettiness
305 * CASubJetTagger: 2-pronged tagger based on maximal distance in jet history
306 * Filter updated from alpha2 (bug fixes & new constructors)
307 NB: examples 11 (boosted Higgs) and 12 (Filter) illustrate usage.
309 - CS::delete_self_when_unused() allows it to handle its own memory management
310 - GhostedAreaSpec can take a Selector to help specify ghost placement
311 - added a FunctionOfPseudoJet<T> base class to help standardise tool interfaces
312 - ClusterSequence::transfer_from_sequence now allows for a
313 FunctionOfPseudoJet<PseudoJet> argument to transform (e.g. boost)
314 the jets from an old sequence as they are transferred to the new one
315 - fortran interface now has basic area functionality
317 Changes to features introduced in alpha2 and alpha1:
318 - Numerous changes to BackgroundEstimator
319 * it allows manual encoding of rapidity dependence;
320 * it can calculate density of quantities other than pt;
321 * it has additional constructors, plus methods to reset its ClusterSequence, etc.
322 * its sigma() now properly handles finite numbers of jets (+ other bug fixes).
323 - jet.pieces() for a jet from a clustering now returns the two parents
324 - various changes to behaviour of a jet's structural calls; see new table in doc
325 - PseudoJet::extra_properties<...>() -> PseudoJet::structure_of<...>() (cf example 12)
326 - join(...) can now include a recombiner argument; it also now supports areas
327 - Selector::count(jets) to know how many pass a cut (also new: Selector::sift)
330 - by default a PseudoJet is constructed with zero momentum
331 - by default a JetDefinition has an undefined_jet_algorithm
332 - efficiency improvements in PtYPhiM and ghost generation
333 - all uses of RangeDefinition now replaced by Selector. Old interfaces
334 retained, but deprecated.
335 - added an example (09) to illustrate how to add user-info to a PseudoJet
336 - doxygen output now configured with an internal search engine
339 - the default recombiner used to set the user_index to the non-default
340 value of 0. Now it sets it to the default (-1).
341 - fixed crashes of VoronoiAreas for particles on a grid (also in 2.4.3)
344 ================================================================
345 Summary of changes from v3.0alpha1 -> v3.0alpha2: 10 March 2011
346 ================================================================
349 - two jets, a and b can now be joined: PseudoJet c = join(a,b),
350 intended to facilitate packaging the result of substructure tools;
351 individual pieces can be recovered with c.pieces();
352 - New PseudoJetStructureBase class, to help implement such features
353 - New fastjet/tools/Filter.hh provides a unified interface to filtering and trimming
354 - New very preliminary fastjet/tools/BackgroundEstimator.hh to provide
355 a more flexible interface to estimation of backgrounds (removal of
357 - a few extra Selectors
359 Changes to features introduced in alpha1:
360 - Selector is now in fastjet/Selector.hh (no longer fastjet/tools/...)
361 - Selector::relocate(...) and is_relocatable() renamed to
362 Selector::set_reference(...) and takes_reference()
363 - PseudoJet::ExtraInfo has been renamed PseudoJet::UserInfoBase and
364 corresponding access functions are now called set_user_info(...), etc.
366 Other changes and fixes
367 - some legacy headers removed
368 - bug fixes in NlnNCam strategies for R>pi
370 ===========================================================
371 Summary of changes from v2.4.X -> v3.0alpha1: 27 January 2011
372 ===========================================================
374 This is an alpha release, previewing some of the new features that are
375 expected to be available in FastJet version 3. Interfaces of new
376 features may yet evolve.
379 - Several extensions to PseudoJet:
380 * it now knows what ClusterSequence it belongs to
381 * info about internals of jets can be accessed e.g. as jet.constituents()
382 * it now has a virtual destructor + other support for classes derived from PseudoJet
383 * new facilities for associating user info with a jet (see PseudoJet::ExtraInfo)
384 * some of these features make use of a new SharedPtr class
385 (intended mainly for advanced users)
386 similar to C++0x std::shared_ptr
387 * calculation of phi and rapidity (cached) only on request
388 - R can now be taken larger than pi/2 for natively coded jet algorithms
389 - Addition of "Selector" tools through #include "fastjet/tools/Selector.hh"
390 - New plugin for D0RunICone (code contributed by Lars Sonnenschein)
391 - Improvements to fortran wrapper (access to SISCone, jet constituents, etc.)
394 - fixed issue with inconsistent returned sign in PseudoJet::delta_phi_to(...)
396 Other notable changes:
397 - Revamping of examples
398 - by default all plugins are now packaged into libfastjetplugins.
399 Note that "external" libraries like libsiscone are still separate.
400 - Significant improvements to doxygen documentation
402 ===========================================================
403 Summary of changes from v2.4.1 -> v2.4.2: 26 February 2010
404 ===========================================================
405 - exclusive_ymerge_max(...) was not working; now fixed
406 - the D0RunIIConePlugin gave segfaults for some parameters; now fixed
407 - the D0RunIIConePlugin gave different results on 32/64 bit machines;
408 optimisation flags now changed just for D0 code so that 32 bit gives same
410 - changes to configure.ac to better handle fortran compiler checks
411 - removed some orphan/redundant code that was generating compilation warnings
412 - added an "--enable-monolithic" option to ./configure which causes
413 all plugins to be placed in a single library (except SISCone)
414 - added a "--list-plugins" option to fastjet-config
416 =======================================================
417 Summary of changes from v2.4.0 -> v2.4.1: 29 May 2009
418 =======================================================
420 Fixes to the build system
421 -------------------------
422 - Included SISCone 2.0.1 (shared libs now enabled by default in
423 SISCone too, and other small fixes)
424 - Fixed platform-dependent failures during make check
425 - Fixed gcc 4.4 compatibility issues (missing headers)
426 - Fixed a problem on Mac OS X with the arguments provided by
427 "fastjet-config --libs" (--rpath versus -rpath).
428 - fastjet-config has new optional arguments (--rpath=no, --runpath)
429 related to finding shared libraries at runtime on linux.
430 Run fastjet-config without any arguments for more info.
431 To instead use static libraries, either configure with the
432 --disable-shared option, or use fastjet-config with the --shared=no option.
433 - fastjet-config can now take --cxxflags and --libs in a single invocation
434 - With --cxxflags, fastjet-config now returns the minimal required set of arguments
435 - Various other small mods (better fortran support, standardisation, ...)
436 [thanks to Andy Buckley and David Grellscheid for suggestions]
440 - Added a fortran wrapper for pp sequential recombination algorithms
441 - Fixed issue in median rho estimation when some jets have zero area
442 - Expanded descriptions that are returned by ATLAS/TrackJet/CMS plugins
443 - Warnings are no longer given when using exclusive jets with
444 Cam/Aachen and certain e+e- algorithms (the warnings were misleading)
445 - Small fixes to the manual
447 =======================================================
448 Summary of changes from v2.3.X -> v2.4.0: 17 April 2009
449 =======================================================
455 - added implementation of generalised kt algorithm (genkt_algorithm) for pp
456 - added D0RunIICone plugin [--enable-d0runiicone at configure time]
457 - added ATLASCone Plugin [--enable-atlascone at configure time]
458 - added CMSIterativeConePlugin [--enable-cmsiterativecone at configure time]
459 - added TrackJet Plugin (used by CDF in UE studies)
460 [--enable-trackjet at configure time]
462 Introduction of e+e- algorithms
463 -------------------------------
465 - added an implementation of the e+e- kt algorithm (ee_kt_algorithm),
466 - added EECambridgePlugin for the (original) e+e- Cambridge algorithm
467 - added JADEPlugin for the JADE algorithm (see the ChangeLog or header
469 - added SISConeSphericalPlugin [enabled by default] for SISCone in
470 e+e- and other spherical environments.
471 - native implementation of generalised kt algorithm for e+e- (ee_genkt_algorithm)
472 [also provides access to e+e- form of anti-kt alg, conical jets on a sphere]
473 - added JadePlugin for the e+e- Jade algorithm
478 - added NestedDefs plugin for daisy-chaining multiple jet definitions
479 [still under testing; API may change in the future]
483 - added subjet functions for viewing jet at particular dcut, etc.
484 - added access to exclusive jets based on ycut as well as dcut (for e+e-)
485 - added support for asymmetric rapidity ranges in GhostedAreaSpec
486 - added support for a CircularRange (derived from RangeDefinition) for
487 use in background estimation
488 - added class NNH to help users implement algorithms with
489 user-chosen distance measure (see JadePlugin for an example)
491 Interface modifications
492 -----------------------
493 - removed default value of 0.5 for overlap_threshold in
494 CDFMidPointPlugin, CDFJetCluPlugin and SISConePlugin constructors
496 *** may break backwards compatibility ***
498 - a JetDefinition(jet_alg) constructor, without an R value, is no
499 longer legal, except when jet_alg is ee_kt_algorithm (it has no R).
501 *** may break backwards compatibility ***
503 - in SISCone, new way of accessing the information about pass at which
504 a jet was found (old method retained for 2.4, but now deprecated)
507 Configure modifications
508 -----------------------
509 - added --enable-allplugins and --enable-allcxxplugins options, to
510 avoid having to specify a long list of individual plugins
511 - shared libraries are now enabled by default
515 - fixed missing support for periodicity in azimuth in RangeDefinition
519 -----------------------
520 - added support for CGAL 3.4 (for non-standard locations, specify
521 --with-cgaldir at configure time)
522 - removed restriction that fastjet throws exception on empty events
523 - added an example that illustrates the use of subjet techniques for
524 a boosted Higgs->b+bbar search
528 - add CMSIterativeCone Plugin
532 =======================================================================
533 Summary of changes from v2.3.3 -> v2.3.4 (bug fix release): 15 Aug 2008
534 ==========================================================
536 - fixed infinite-loop bug in JetClu plugin on certain rare events
538 - fixed compatibility issues of certain example programs with g++-4.3
540 - incorporated SISCone 1.3.3 with similar g++-4.3 fixes
542 =======================================================================
543 Summary of changes from v2.3.2 -> v2.3.3 (bug fix release): 28 Apr 2008
544 ==========================================================
546 - fixed missing installation of .../config_auto.h
548 - fixed missing typename in .../SearchTree.hh
550 =======================================================================
551 Summary of changes from v2.3.1 -> v2.3.2 (bug fix release): 03 Apr 2008
552 ==========================================================
554 - fixes to propagation of CXXFLAGS through the build chain
556 - small change in Voronoi area code to fix crashes on regular
557 (calorimeter) layouts of momenta
559 - small change in active areas code to fix crashes on algorithms that
560 do not cluster all particles
562 - eliminated "using namespace std" that had accidentally been left in
563 certain area header files
565 - incorporation of SISCone 1.3.2 with fixes for inappropriate public
566 symbols and to build framework
569 ======================================================================
570 Summary of changes from v2.3.0 -> v2.3.1 (bug fix release)
571 ==========================================================
573 - Fixed compilation issues under windows VC7.1 (reported by
574 I. Belyaev); also included SISCone 1.3.1 with similar fixes.
576 - Fixed speed issue under optimized compilation of CDF MidPoint plugin
577 for 32 bit architectures that had arisen subsequent to the switch to
578 autotools with its common optimization settings.
580 - Fixed "make check" failure with the --disable-siscone option.
582 - Fixed crash in exclusive_dmerge(njets) for njets=0 (reported by P. Lenzi)
585 ======================================================================
586 Summary of changes from v2.1.0 (previous stable release) to v2.3.0
587 ===================================
589 - added the anti-kt algorithm (LPTHE-07-03), which is a sequential
590 recombination algorithm that gives conical jets.
592 - Added Passive and Voronoi areas, and new common class for accessing
593 all types of areas, ClusterSequenceArea.
595 - switched to autotools for compilation and installation:
596 ./configure --prefix=...
598 make check [optional]
601 NB: users should no longer include fastjet-2.x.y/Makefile
602 when building their own programs, and instead should use
603 g++ -c file.cc `fastjet-config --cxxflags`
604 g++ file.o `fastjet-config --libs --plugins`
606 - plugin include files are now to be accessed with fastjet/ in
608 #include "fastjet/SISConePlugin.hh"
609 A simple #include "SISConePlugin.hh" is now obsolete but will
610 continue to work through 2.x
612 - Added RangeDefinition class to provide more flexibility in UE/pileup
615 - New facilities for navigating the cluster sequence (has_parents,
616 has_child and has_partner members of ClusterSequence)
618 - other bug fixes and small enhancements (including SISCone-1.3.0,
619 improvements to plugin facilities).
621 See individual beta-releases below for more information, as well as
625 ======================================================================
626 Changes from v2.2beta0 to v2.3-beta0
627 ===================================
629 - switched to autotools for compilation and installation;
631 - old build procedure still available for now, with files called
632 makefile.static (make -f makefile.static);
634 test-script.sh has been renamed test-static.sh and builds and
635 tests using the old procedure.
637 - plugins include files are now to be accessed with fastjet/ in
639 #include "fastjet/SISConePlugin.hh"
641 For backwards compatibility, the old access method will continue
642 to work throughout v2.x, i.e.
643 #include "SISConePlugin.hh"
645 - added PseudoJet::reset(...) functions to reset the contents of a
648 - added fastjet_version_string()
650 - added a function PtYPhiM(...) that returns a PseudoJet with the
651 given py, rapidity , phi and mass. Defined in PseudoJet.hh
653 - added a directory fortran_wrapper/ to illustrate how to access
656 - some small bug fixes in the CDF midpoint code
659 ======================================================================
660 Changes from v2.1.0 to v2.2beta0
661 ===============================
663 - added the anti-kt algorithm (LPTHE-07-03)
665 - Provided a new common class for accessing all different types of
666 areas: ClusterSequenceArea.
668 - added functionality for Passive areas and Voronoi areas.
669 Areas are now defined much in the same way as jets, via an
670 AreaDefinition, which is passed as an argument
671 to ClusterSequenceArea. NB: the Voronoi area uses Fortune's
672 sweepline code for calculating the Voronoi diagram and so does not
673 require CGAL to be installed (it still is needed for NlnN kt
676 - Added class RangeDefinition which allows detailed definitions
677 of the rapidity-azimuth ranges over which to study jet areas
678 and possibly perform noise subtraction
680 - added facilities for navigating the cluster sequence (has_parents,
681 has_child and has_partner members of ClusterSequence)
683 - changed plugin base class, so that it now includes R() virtual
684 member, and modified the various plugins to account for this.
686 - modified the plugin interface to provide facilities to help with
689 - included SISCone-1.2.0 rather than 1.1.1.
691 - adapted SISCone plugin to the 1.2.0 release of SISCone -- main
692 changes are facilities and improvements related areas: some speed
693 improvements on the split-merge (relevant for active areas) and a
694 fairly efficient way of running passive areas.
696 - added ClusterSequence::print_jets_for_root(...) and a corresponding root
697 script (example/root/jet-plots.C), so as to provide a crude
701 ======================================================================
702 Summary of main changes from v2.0.0 to v2.1.0
703 =============================================
705 - added plugin structure for external jet finders.
707 - included plugins for SISCone, CDFMidPoint, CDFJetClu, PxCone (with
708 extensions for MidPoint and bug fixes for PxCone relative to public
711 - introduced option of control over recombination scheme, with a
712 RecombinationScheme enum, which applies also to area_4vector.
714 - added description() member function to JetDefinition class, so
715 that you can get a (string) summary of what you're running!
717 - changed the default number of repeats in ActiveAreaSpec to 1 (which
718 is sufficient for most purposes).
720 For further details, see the changes listed in detail below.
722 ======================================================================
723 Changes from v2.1.0b4 to v2.1.0
724 ===============================
726 - corrected bug in test-script.sh
728 - removed PxCone from default tests and from
729 plugins/usage_examples/many_algs_example.cc (to avoid fortran
732 ======================================================================
733 Changes from v2.1.0b3 to v2.1.0b4
734 =================================
736 FastJet modifications
737 ---------------------
739 - default number of repeats for the active area specification has been
740 changed from 5 to 1 (the latter goes fast, but note that it provides
741 a zero error estimate for the area).
746 - adapted plugin to accomodate new scale for use in the SISCone
747 split-merge (pttilde), with a corresponding change of interface.
749 Changed default number of passes for SISCone to 0.
751 - Added the pttilde scale choice to the CDF plugin.
755 ======================================================================
756 Changes from v2.1.0b2 to v2.1.0b3
757 =================================
762 - methods for estimating the underlying now have the option of using
763 area_4vector rather than the plain area
768 - area_4vector is now calculated with the same recombination scheme as
771 - massless recombination schemes now work correctly on particles with
774 - PseudoJet::phi_std() returned wrong result for phi < pi -- thanks to
775 Oscar Stal for pointing this out.
780 - the plugin mechanism now allows a plugin to add "extra" information
781 to the ClusterSequence, essentially by providing an auto_ptr to a
782 class derived from (the new) ClusterSequence::Extras; an example of
783 this has been implemented with siscone (SISConeExtras) which allows
784 a user to access the initial (stable) protocones.
786 - included new siscone version (1.1) which uses transverse mass (mt) rather
787 than pt in the split-merge procedure, to address an IR problem in
788 events where the hadronic part conserves momentum -- this can have
789 an effect on some physical distributions; the siscone update also
790 addresses issues with collinear safety and co-circular points.
792 - included bug fixes to pxcone regarding 2pi periodicity when
795 - modified the version of the CDF midpoint cone code so as to allow it
796 to use mt and Et as the parameters in the split--merge step.
798 ======================================================================
799 Changes from v2.1.0b1 to v2.1.0b2
800 =================================
805 - included new siscone version which solves the memory-leak problem
810 - added sample output from the test-script as test-script-output-orig.txt
812 ======================================================================
813 Changes from v2.1.0b0 to v2.1.0b1
814 =========================
819 - added the SISCone plugin and the beta version of the siscone code
820 (authored by Soyez & Salam)
825 - removed extraneous semicolons after functions that were causing
826 problems on some compilers.
831 - Added COPYING file with GPL license
833 ======================================================================
834 Changes from v2.0 to v2.1 (beta0)
835 =========================
840 - introduced option of control over recombination scheme, with a
841 RecombinationScheme enum (a variable of this type should be provided
842 to the JetDefinition constructor) and also the possibility of an
843 externally defined recombination scheme.
845 - introduced a "plugin" facility for alternative jet finders, via an
848 class JetDefinition::Plugin
850 Plugins are to be provided as classes derived from this,
851 implementing the relevant virtual functions (see manual and examples
854 - introduced "description" member function for the JetDefinition
855 class, which returns a (std::string) textual description of the
858 - provided plugins for CDF JetClu, CDF Midpoint, PxCone code; the
859 plugins, the code they interface to and example programs are to be
860 found in the new plugins/ directory.
862 - added ClusterSequence::unclustered_particles() a vector containing
863 the unclustered particles (relevant for some plugin algorithms).
868 - introduced PseudoJet::squared_distance (does same as "plain_distance")
875 - in the documentation, replaced eta -> y, to make it clear that it's
876 rapidity and not pseudorapidity that is being used throughout. Some
877 internal code continues to use variables called "eta" -- but these
878 are actually proper rapidity.
881 ======================================================================
882 Changes from v1.0 to v2.0
883 =========================
888 - the longitudinally invariant inclusive Cambridge/Aachen jet finder
891 Note that the exclusive jets extraction for the Cambridge jet-finder
892 does not provide the definition as given in the original Cambridge
893 paper. See the documentation for further details
895 - classes have been introduced for running jet clustering and
896 simultaneously collecting information about the area of each jet.
897 The base class specifying the functionality is
899 class ClusterSequenceWithArea;
901 itself derived from ClusterSequence.
903 Two derived classes that provide the actual areas functionality are:
905 class ClusterSequenceActiveArea;
906 class ClusterSequenceActiveAreaExplicitGhosts;
908 To construct them, one also needs to specify how one wishes the area
909 to be calculated, via a class
911 class ActiveAreaSpec;
916 - new clustering strategies have been added:
919 N2MinHeapTiled : like N2Tiled, except that the non-geometric
920 part has been replaced with a N ln N algorithm
921 (overall the strategy still scales as N^2, but with a
924 NlnNCam, NlnNCam2pi2R, NlnNCam4pi:
926 NlnN strategies specific to the Cambridge/Aachen
927 jet-finder -- the fastest of them is NlnNCam.
928 Depending on the size of the event and of the CPU
929 cache it may be up to 2.5 times faster than the
930 CGAL-based NlnN strategy. Experiment on your own
931 hardware and events to establish whether the
932 speed gain is significant.
934 These strategies are based on the work on dynamic
935 Closest Pair problems by Timothy Chan.
937 Best : (was present before) now attempts to select best
938 among N2Plain, N2Tiled, N2MinHeapTiled, NlnN.
940 As the best option for a given N may depend on R
941 and the event structure, you are advised to
942 experiment with individual strategies if the
943 last few tens of percent in speed are critical.
947 Updates to user interface
948 -------------------------
950 While the v1 interface to fastjet has been maintained for backwards
951 compatibility, for new developments in v2 and related forthcoming
952 work, a new interface is provided as follows:
954 - User accessible classes and enums have had the "Fj" prefix removed
955 and are instead now in namespace fastjet; the corresponding include
956 files are in the include/fastjet directory. So, for example instead
959 #include "FjClusterSequence.hh"
961 FjClusterSequence clust_seq(...)
963 one now uses the following
965 #include "fastjet/ClusterSequence.hh"
967 fastjet::ClusterSequence clust_seq(...)
969 If typing "fastjet::" the whole time seems too long-winded, you can
970 abbreviate "fastjet" as "fj" with
972 namespace fj = fastjet;
974 or eliminate the need for it altogether with
976 using namespace fastjet;
978 - a new class, fastjet::JetDefinition, has been introduced for holding
979 the details of the jet finder (which one, value of R, etc...) that
980 is to be used in a given clustering.
982 #include "fastjet/JetDefinition.hh"
983 #include "fastjet/ClusterSequence.hh"
988 // define jet algorithm
989 fastjet::JetDefinition jet_def(fastjet::kt_algorithm, R);
991 // get the cluster sequence for a vector of 4-momenta and the
992 // given jet definition
993 fastjet::ClusterSequence clust_seq(momenta, jet_def);
995 - some errors that previously were assertions now throw an
996 fastjet::Error -- exception. A fully uniform handling of exceptions
997 is currently some way away however and users for whom this is an
998 important issue should contact the authors.