FastJet  3.4.0
NEWS
1 Release Notes for FastJet
2 -------------------------
3 
4 ================================================================
5 Summary of changes from v3.3.4 -> v3.4.0: 2021-06-25
6 ================================================================
7 New 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 
32 Improvements 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 
43 Bug 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 ================================================================
49 Summary 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 ================================================================
56 Summary of changes from v3.3.4 -> v3.4.0-beta.1: 2021-03-10
57 ================================================================
58 New 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 
83 Improvements 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 
94 Bug 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 ================================================================
100 Summary of changes from v3.3.3 -> v3.3.4: 2020-05-05
101 ================================================================
102 This 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 ================================================================
111 Summary of changes from v3.3.2 -> v3.3.3: 2019-11-29
112 ================================================================
113 
114 This 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 ================================================================
119 Summary 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 ================================================================
127 Summary 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 ================================================================
138 Summary of changes from v3.2.2 -> v3.3.0: 2017-07-12
139 ================================================================
140 
141 This release adds a first version of a Python interface to
142 FastJet (some details may still evolve in the future).
143 Enable it with --enable-pyext at configure time and see
144 examples/python/ for usage.
145 
146 Thanks to Lily Asquith, Stefano Carrazza and Eric Metodiev for
147 testing and helpful feedback.
148 
149 ================================================================
150 ***** PUT IN CHANGES from v3.2.1 -> v3.2.2: 2017-05-23
151 ================================================================
152 This 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 ================================================================
160 Summary of changes from v3.2.0 -> v3.2.1: 2016-08-04
161 ================================================================
162 This 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 ================================================================
172 Summary 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 ================================================================
189 Summary of changes from v3.1.2 -> v3.1.3: 2015-07-04
190 ================================================================
191 This 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 ================================================================
198 Summary of changes from v3.1.1 -> v3.1.2: 2015-03-12
199 ================================================================
200 This 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 ================================================================
211 Summary of changes from v3.1.0 -> v3.1.1: 2015-01-06
212 ================================================================
213 This 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 ================================================================
220 Summary 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 ================================================================
239 Summary 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 ================================================================
246 Summary 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 ================================================================
263 Summary of changes from v3.0.5 -> v3.0.6: 2013-10-29
264 ================================================================
265 This 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 ================================================================
271 Summary of changes from v3.0.4 -> v3.0.5: 2013-09-16
272 ================================================================
273 This 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 ================================================================
279 Summary of changes from v3.0.3 -> v3.0.4: 2013-06-05
280 ================================================================
281 
282 This 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 ================================================================
288 Summary of changes from v3.0.2 -> v3.0.3: 26/06/12
289 ================================================================
290 
291 This 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 ================================================================
298 Summary of changes from v3.0.1 -> v3.0.2: 17/01/12
299 ================================================================
300 
301 This 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 ================================================================
309 Summary of changes from v3.0.0 -> v3.0.1: 25/11/11
310 ================================================================
311 
312 Version 3.0.1 includes further reorganisation of the manual (version to
313 appear 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 ================================================================
322 Summary of changes from v2.4.4 -> v3.0.0: 09/10/11
323 ================================================================
324 
325 Changes relative to the 2.4.x series include:
326 
327 Addition 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 
336 New 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 
343 Other 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 
352 Interface 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 
376 Configure 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 
388 New 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 
395 Bug 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 ================================================================
404 Summary of changes from v3.0beta1 -> v3.0.0: 09 October 2011
405 ================================================================
406 New 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 
412 Bug 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 ================================================================
419 Summary of changes from v3.0alpha3 -> v3.0beta1: 10 August 2011
420 ================================================================
421 New 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 
433 Bug 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 ================================================================
451 Summary of changes from v3.0alpha2 -> v3.0alpha3: 03 June 2011
452 ================================================================
453 
454 New 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 
472 Changes 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 
484 Other 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 
493 Bug 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 ================================================================
500 Summary of changes from v3.0alpha1 -> v3.0alpha2: 10 March 2011
501 ================================================================
502 
503 New 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 
514 Changes 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 
521 Other changes and fixes
522 - some legacy headers removed
523 - bug fixes in NlnNCam strategies for R>pi
524 
525 ===========================================================
526 Summary of changes from v2.4.X -> v3.0alpha1: 27 January 2011
527 ===========================================================
528 
529 This is an alpha release, previewing some of the new features that are
530 expected to be available in FastJet version 3. Interfaces of new
531 features may yet evolve.
532 
533 New 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 
548 Bug fixes:
549 - fixed issue with inconsistent returned sign in PseudoJet::delta_phi_to(...)
550 
551 Other 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 ===========================================================
558 Summary 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 =======================================================
572 Summary of changes from v2.4.0 -> v2.4.1: 29 May 2009
573 =======================================================
574 
575 Fixes 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 
593 Also
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 =======================================================
603 Summary of changes from v2.3.X -> v2.4.0: 17 April 2009
604 =======================================================
605 
606 
607 New 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 
617 Introduction 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 
630 Meta-algorithms
631 ----------------
632 
633 - added NestedDefs plugin for daisy-chaining multiple jet definitions
634  [still under testing; API may change in the future]
635 
636 New 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 
646 Interface 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 
662 Configure 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 
668 Bugs fixed
669 ----------
670 - fixed missing support for periodicity in azimuth in RangeDefinition
671  class
672 
673 Other 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 
681 Still to come
682 -------------
683 - add CMSIterativeCone Plugin
684 
685 
686 
687 =======================================================================
688 Summary 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 =======================================================================
698 Summary 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 =======================================================================
706 Summary 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 ======================================================================
725 Summary 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 ======================================================================
741 Summary 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 
776 See individual beta-releases below for more information, as well as
777 the ChangeLog.
778 
779 
780 ======================================================================
781 Changes 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 ======================================================================
815 Changes 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 ======================================================================
857 Summary 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 
875 For further details, see the changes listed in detail below.
876 
877 ======================================================================
878 Changes 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 ======================================================================
888 Changes from v2.1.0b3 to v2.1.0b4
889 =================================
890 
891 FastJet 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 
898 Plugin 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 ======================================================================
911 Changes from v2.1.0b2 to v2.1.0b3
912 =================================
913 
914 FastJet enhancements
915 --------------------
916 
917 - methods for estimating the underlying now have the option of using
918  area_4vector rather than the plain area
919 
920 FastJet 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 
932 Plugin 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 ======================================================================
954 Changes from v2.1.0b1 to v2.1.0b2
955 =================================
956 
957 Bug fixes
958 ---------
959 
960 - included new siscone version which solves the memory-leak problem
961 
962 Other changes
963 -------------
964 
965 - added sample output from the test-script as test-script-output-orig.txt
966 
967 ======================================================================
968 Changes from v2.1.0b0 to v2.1.0b1
969 =========================
970 
971 New features:
972 -------------
973 
974 - added the SISCone plugin and the beta version of the siscone code
975  (authored by Soyez & Salam)
976 
977 Bug fixes
978 ---------
979 
980 - removed extraneous semicolons after functions that were causing
981  problems on some compilers.
982 
983 Other additions
984 ---------------
985 
986 - Added COPYING file with GPL license
987 
988 ======================================================================
989 Changes from v2.0 to v2.1 (beta0)
990 =========================
991 
992 New 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 
1020 Minor additions
1021 ---------------
1022 
1023 - introduced PseudoJet::squared_distance (does same as "plain_distance")
1024 
1025 
1026 
1027 Notational 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 ======================================================================
1037 Changes from v1.0 to v2.0
1038 =========================
1039 
1040 New 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 
1069 New 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 
1102 Updates to user interface
1103 -------------------------
1104 
1105 While the v1 interface to fastjet has been maintained for backwards
1106 compatibility, for new developments in v2 and related forthcoming
1107 work, 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.