00001 Release Notes for fastjet
00002 -------------------------
00003
00004 ================================================================
00005 Summary of changes from v3.0alpha1 -> v3.0alpha2: 10 March 2011
00006 ================================================================
00007
00008 New features:
00009 - two jets, a and b can now be joined: PseudoJet a = join(b,c),
00010 intended to facilitate packaging the result of substructure tools;
00011 individual pieces can be recovered with a.pieces();
00012 - New PseudoJetStructureBase class, to help implement such features
00013 - New fastjet/tools/Filter.hh provides a unified interface to filtering and trimming
00014 - New very preliminary fastjet/tools/BackgroundEstimator.hh to provide
00015 a more flexible interface to estimation of backgrounds (removal of
00016 hardest jets, etc.).
00017 - a few extra Selectors
00018
00019 Changes to features introduced in alpha1:
00020 - Selector is now in fastjet/Selector.hh (no longer fastjet/tools/...)
00021 - Selector::relocate(...) and is_relocatable() renamed to
00022 Selector::set_reference(...) and takes_reference()
00023 - PseudoJet::ExtraInfo has been renamed PseudoJet::UserInfoBase and
00024 corresponding access functions are now called set_user_info(...), etc.
00025
00026 Other changes and fixes
00027 - some legacy headers removed
00028 - bug fixes in NlnNCam strategies for R>pi
00029
00030 ===========================================================
00031 Summary of changes from v2.4.X -> v3.0alpha1: 27 January 2011
00032 ===========================================================
00033
00034 This is an alpha release, previewing some of the new features that are
00035 expected to be available in FastJet version 3. Interfaces of new
00036 features may yet evolve.
00037
00038 New features:
00039 - Several extensions to PseudoJet:
00040 * it now knows what ClusterSequence it belongs to
00041 * info about internals of jets can be accessed e.g. as jet.constituents()
00042 * it now has a virtual destructor + other support for classes derived from PseudoJet
00043 * new facilities for associating user info with a jet (see PseudoJet::ExtraInfo)
00044 * some of these features make use of a new SharedPtr class
00045 (intended mainly for advanced users)
00046 similar to C++0x std::shared_ptr
00047 * calculation of phi and rapidity (cached) only on request
00048 - R can now be taken larger than pi/2 for natively coded jet algorithms
00049 - Addition of "Selector" tools through #include "fastjet/tools/Selector.hh"
00050 - New plugin for D0RunICone (code contributed by Lars Sonnenschein)
00051 - Improvements to fortran wrapper (access to SISCone, jet constituents, etc.)
00052
00053 Bug fixes:
00054 - fixed issue with inconsistent returned sign in PseudoJet::delta_phi_to(...)
00055
00056 Other notable changes:
00057 - Revamping of examples
00058 - by default all plugins are now packaged into libfastjetplugins.
00059 Note that "external" libraries like libsiscone are still separate.
00060 - Significant improvements to doxygen documentation
00061
00062 ===========================================================
00063 Summary of changes from v2.4.1 -> v2.4.2: 26 February 2010
00064 ===========================================================
00065 - exclusive_ymerge_max(...) was not working; now fixed
00066 - the D0RunIIConePlugin gave segfaults for some parameters; now fixed
00067 - the D0RunIIConePlugin gave different results on 32/64 bit machines;
00068 optimisation flags now changed just for D0 code so that 32 bit gives same
00069 results as 64 bit.
00070 - changes to configure.ac to better handle fortran compiler checks
00071 - removed some orphan/redundant code that was generating compilation warnings
00072 - added an "--enable-monolithic" option to ./configure which causes
00073 all plugins to be placed in a single library (except SISCone)
00074 - added a "--list-plugins" option to fastjet-config
00075
00076 =======================================================
00077 Summary of changes from v2.4.0 -> v2.4.1: 29 May 2009
00078 =======================================================
00079
00080 Fixes to the build system
00081 -------------------------
00082 - Included SISCone 2.0.1 (shared libs now enabled by default in
00083 SISCone too, and other small fixes)
00084 - Fixed platform-dependent failures during make check
00085 - Fixed gcc 4.4 compatibility issues (missing headers)
00086 - Fixed a problem on Mac OS X with the arguments provided by
00087 "fastjet-config --libs" (--rpath versus -rpath).
00088 - fastjet-config has new optional arguments (--rpath=no, --runpath)
00089 related to finding shared libraries at runtime on linux.
00090 Run fastjet-config without any arguments for more info.
00091 To instead use static libraries, either configure with the
00092 --disable-shared option, or use fastjet-config with the --shared=no option.
00093 - fastjet-config can now take --cxxflags and --libs in a single invocation
00094 - With --cxxflags, fastjet-config now returns the minimal required set of arguments
00095 - Various other small mods (better fortran support, standardisation, ...)
00096 [thanks to Andy Buckley and David Grellscheid for suggestions]
00097
00098 Also
00099 ----
00100 - Added a fortran wrapper for pp sequential recombination algorithms
00101 - Fixed issue in median rho estimation when some jets have zero area
00102 - Expanded descriptions that are returned by ATLAS/TrackJet/CMS plugins
00103 - Warnings are no longer given when using exclusive jets with
00104 Cam/Aachen and certain e+e- algorithms (the warnings were misleading)
00105 - Small fixes to the manual
00106
00107 =======================================================
00108 Summary of changes from v2.3.X -> v2.4.0: 17 April 2009
00109 =======================================================
00110
00111
00112 New pp algorithms
00113 -----------------
00114
00115 - added implementation of generalised kt algorithm (genkt_algorithm) for pp
00116 - added D0RunIICone plugin [--enable-d0runiicone at configure time]
00117 - added ATLASCone Plugin [--enable-atlascone at configure time]
00118 - added CMSIterativeConePlugin [--enable-cmsiterativecone at configure time]
00119 - added TrackJet Plugin (used by CDF in UE studies)
00120 [--enable-trackjet at configure time]
00121
00122 Introduction of e+e- algorithms
00123 -------------------------------
00124
00125 - added an implementation of the e+e- kt algorithm (ee_kt_algorithm),
00126 - added EECambridgePlugin for the (original) e+e- Cambridge algorithm
00127 - added JADEPlugin for the JADE algorithm (see the ChangeLog or header
00128 file for details)
00129 - added SISConeSphericalPlugin [enabled by default] for SISCone in
00130 e+e- and other spherical environments.
00131 - native implementation of generalised kt algorithm for e+e- (ee_genkt_algorithm)
00132 [also provides access to e+e- form of anti-kt alg, conical jets on a sphere]
00133 - added JadePlugin for the e+e- Jade algorithm
00134
00135 Meta-algorithms
00136 ----------------
00137
00138 - added NestedDefs plugin for daisy-chaining multiple jet definitions
00139 [still under testing; API may change in the future]
00140
00141 New functionality
00142 -----------------
00143 - added subjet functions for viewing jet at particular dcut, etc.
00144 - added access to exclusive jets based on ycut as well as dcut (for e+e-)
00145 - added support for asymmetric rapidity ranges in GhostedAreaSpec
00146 - added support for a CircularRange (derived from RangeDefinition) for
00147 use in background estimation
00148 - added class NNH to help users implement algorithms with
00149 user-chosen distance measure (see JadePlugin for an example)
00150
00151 Interface modifications
00152 -----------------------
00153 - removed default value of 0.5 for overlap_threshold in
00154 CDFMidPointPlugin, CDFJetCluPlugin and SISConePlugin constructors
00155
00156 *** may break backwards compatibility ***
00157
00158 - a JetDefinition(jet_alg) constructor, without an R value, is no
00159 longer legal, except when jet_alg is ee_kt_algorithm (it has no R).
00160
00161 *** may break backwards compatibility ***
00162
00163 - in SISCone, new way of accessing the information about pass at which
00164 a jet was found (old method retained for 2.4, but now deprecated)
00165
00166
00167 Configure modifications
00168 -----------------------
00169 - added --enable-allplugins and --enable-allcxxplugins options, to
00170 avoid having to specify a long list of individual plugins
00171 - shared libraries are now enabled by default
00172
00173 Bugs fixed
00174 ----------
00175 - fixed missing support for periodicity in azimuth in RangeDefinition
00176 class
00177
00178 Other modifications
00179 -----------------------
00180 - added support for CGAL 3.4 (for non-standard locations, specify
00181 --with-cgaldir at configure time)
00182 - removed restriction that fastjet throws exception on empty events
00183 - added an example that illustrates the use of subjet techniques for
00184 a boosted Higgs->b+bbar search
00185
00186 Still to come
00187 -------------
00188 - add CMSIterativeCone Plugin
00189
00190
00191
00192 =======================================================================
00193 Summary of changes from v2.3.3 -> v2.3.4 (bug fix release): 15 Aug 2008
00194 ==========================================================
00195
00196 - fixed infinite-loop bug in JetClu plugin on certain rare events
00197
00198 - fixed compatibility issues of certain example programs with g++-4.3
00199
00200 - incorporated SISCone 1.3.3 with similar g++-4.3 fixes
00201
00202 =======================================================================
00203 Summary of changes from v2.3.2 -> v2.3.3 (bug fix release): 28 Apr 2008
00204 ==========================================================
00205
00206 - fixed missing installation of .../config_auto.h
00207
00208 - fixed missing typename in .../SearchTree.hh
00209
00210 =======================================================================
00211 Summary of changes from v2.3.1 -> v2.3.2 (bug fix release): 03 Apr 2008
00212 ==========================================================
00213
00214 - fixes to propagation of CXXFLAGS through the build chain
00215
00216 - small change in Voronoi area code to fix crashes on regular
00217 (calorimeter) layouts of momenta
00218
00219 - small change in active areas code to fix crashes on algorithms that
00220 do not cluster all particles
00221
00222 - eliminated "using namespace std" that had accidentally been left in
00223 certain area header files
00224
00225 - incorporation of SISCone 1.3.2 with fixes for inappropriate public
00226 symbols and to build framework
00227
00228
00229 ======================================================================
00230 Summary of changes from v2.3.0 -> v2.3.1 (bug fix release)
00231 ==========================================================
00232
00233 - Fixed compilation issues under windows VC7.1 (reported by
00234 I. Belyaev); also included SISCone 1.3.1 with similar fixes.
00235
00236 - Fixed speed issue under optimized compilation of CDF MidPoint plugin
00237 for 32 bit architectures that had arisen subsequent to the switch to
00238 autotools with its common optimization settings.
00239
00240 - Fixed "make check" failure with the --disable-siscone option.
00241
00242 - Fixed crash in exclusive_dmerge(njets) for njets=0 (reported by P. Lenzi)
00243
00244
00245 ======================================================================
00246 Summary of changes from v2.1.0 (previous stable release) to v2.3.0
00247 ===================================
00248
00249 - added the anti-kt algorithm (LPTHE-07-03), which is a sequential
00250 recombination algorithm that gives conical jets.
00251
00252 - Added Passive and Voronoi areas, and new common class for accessing
00253 all types of areas, ClusterSequenceArea.
00254
00255 - switched to autotools for compilation and installation:
00256 ./configure --prefix=...
00257 make
00258 make check [optional]
00259 make install
00260
00261 NB: users should no longer include fastjet-2.x.y/Makefile
00262 when building their own programs, and instead should use
00263 g++ -c file.cc `fastjet-config --cxxflags`
00264 g++ file.o `fastjet-config --libs --plugins`
00265
00266 - plugin include files are now to be accessed with fastjet/ in
00267 front of them, i.e.
00268 #include "fastjet/SISConePlugin.hh"
00269 A simple #include "SISConePlugin.hh" is now obsolete but will
00270 continue to work through 2.x
00271
00272 - Added RangeDefinition class to provide more flexibility in UE/pileup
00273 estimation.
00274
00275 - New facilities for navigating the cluster sequence (has_parents,
00276 has_child and has_partner members of ClusterSequence)
00277
00278 - other bug fixes and small enhancements (including SISCone-1.3.0,
00279 improvements to plugin facilities).
00280
00281 See individual beta-releases below for more information, as well as
00282 the ChangeLog.
00283
00284
00285 ======================================================================
00286 Changes from v2.2beta0 to v2.3-beta0
00287 ===================================
00288
00289 - switched to autotools for compilation and installation;
00290
00291 - old build procedure still available for now, with files called
00292 makefile.static (make -f makefile.static);
00293
00294 test-script.sh has been renamed test-static.sh and builds and
00295 tests using the old procedure.
00296
00297 - plugins include files are now to be accessed with fastjet/ in
00298 front of them, i.e.
00299 #include "fastjet/SISConePlugin.hh"
00300
00301 For backwards compatibility, the old access method will continue
00302 to work throughout v2.x, i.e.
00303 #include "SISConePlugin.hh"
00304
00305 - added PseudoJet::reset(...) functions to reset the contents of a
00306 PseudoJet.
00307
00308 - added fastjet_version_string()
00309
00310 - added a function PtYPhiM(...) that returns a PseudoJet with the
00311 given py, rapidity , phi and mass. Defined in PseudoJet.hh
00312
00313 - added a directory fortran_wrapper/ to illustrate how to access
00314 fastjet from fortran
00315
00316 - some small bug fixes in the CDF midpoint code
00317
00318
00319 ======================================================================
00320 Changes from v2.1.0 to v2.2beta0
00321 ===============================
00322
00323 - added the anti-kt algorithm (LPTHE-07-03)
00324
00325 - Provided a new common class for accessing all different types of
00326 areas: ClusterSequenceArea.
00327
00328 - added functionality for Passive areas and Voronoi areas.
00329 Areas are now defined much in the same way as jets, via an
00330 AreaDefinition, which is passed as an argument
00331 to ClusterSequenceArea. NB: the Voronoi area uses Fortune's
00332 sweepline code for calculating the Voronoi diagram and so does not
00333 require CGAL to be installed (it still is needed for NlnN kt
00334 clustering).
00335
00336 - Added class RangeDefinition which allows detailed definitions
00337 of the rapidity-azimuth ranges over which to study jet areas
00338 and possibly perform noise subtraction
00339
00340 - added facilities for navigating the cluster sequence (has_parents,
00341 has_child and has_partner members of ClusterSequence)
00342
00343 - changed plugin base class, so that it now includes R() virtual
00344 member, and modified the various plugins to account for this.
00345
00346 - modified the plugin interface to provide facilities to help with
00347 passive areas.
00348
00349 - included SISCone-1.2.0 rather than 1.1.1.
00350
00351 - adapted SISCone plugin to the 1.2.0 release of SISCone -- main
00352 changes are facilities and improvements related areas: some speed
00353 improvements on the split-merge (relevant for active areas) and a
00354 fairly efficient way of running passive areas.
00355
00356 - added ClusterSequence::print_jets_for_root(...) and a corresponding root
00357 script (example/root/jet-plots.C), so as to provide a crude
00358 visualisation tool.
00359
00360
00361 ======================================================================
00362 Summary of main changes from v2.0.0 to v2.1.0
00363 =============================================
00364
00365 - added plugin structure for external jet finders.
00366
00367 - included plugins for SISCone, CDFMidPoint, CDFJetClu, PxCone (with
00368 extensions for MidPoint and bug fixes for PxCone relative to public
00369 codes).
00370
00371 - introduced option of control over recombination scheme, with a
00372 RecombinationScheme enum, which applies also to area_4vector.
00373
00374 - added description() member function to JetDefinition class, so
00375 that you can get a (string) summary of what you're running!
00376
00377 - changed the default number of repeats in ActiveAreaSpec to 1 (which
00378 is sufficient for most purposes).
00379
00380 For further details, see the changes listed in detail below.
00381
00382 ======================================================================
00383 Changes from v2.1.0b4 to v2.1.0
00384 ===============================
00385
00386 - corrected bug in test-script.sh
00387
00388 - removed PxCone from default tests and from
00389 plugins/usage_examples/many_algs_example.cc (to avoid fortran
00390 compilation issues).
00391
00392 ======================================================================
00393 Changes from v2.1.0b3 to v2.1.0b4
00394 =================================
00395
00396 FastJet modifications
00397 ---------------------
00398
00399 - default number of repeats for the active area specification has been
00400 changed from 5 to 1 (the latter goes fast, but note that it provides
00401 a zero error estimate for the area).
00402
00403 Plugin modifications
00404 --------------------
00405
00406 - adapted plugin to accomodate new scale for use in the SISCone
00407 split-merge (pttilde), with a corresponding change of interface.
00408
00409 Changed default number of passes for SISCone to 0.
00410
00411 - Added the pttilde scale choice to the CDF plugin.
00412
00413
00414
00415 ======================================================================
00416 Changes from v2.1.0b2 to v2.1.0b3
00417 =================================
00418
00419 FastJet enhancements
00420 --------------------
00421
00422 - methods for estimating the underlying now have the option of using
00423 area_4vector rather than the plain area
00424
00425 FastJet bug fixes
00426 -----------------
00427
00428 - area_4vector is now calculated with the same recombination scheme as
00429 the jets themselves
00430
00431 - massless recombination schemes now work correctly on particles with
00432 zero momentum
00433
00434 - PseudoJet::phi_std() returned wrong result for phi < pi -- thanks to
00435 Oscar Stal for pointing this out.
00436
00437 Plugin modifications
00438 --------------------
00439
00440 - the plugin mechanism now allows a plugin to add "extra" information
00441 to the ClusterSequence, essentially by providing an auto_ptr to a
00442 class derived from (the new) ClusterSequence::Extras; an example of
00443 this has been implemented with siscone (SISConeExtras) which allows
00444 a user to access the initial (stable) protocones.
00445
00446 - included new siscone version (1.1) which uses transverse mass (mt) rather
00447 than pt in the split-merge procedure, to address an IR problem in
00448 events where the hadronic part conserves momentum -- this can have
00449 an effect on some physical distributions; the siscone update also
00450 addresses issues with collinear safety and co-circular points.
00451
00452 - included bug fixes to pxcone regarding 2pi periodicity when
00453 recombining momenta
00454
00455 - modified the version of the CDF midpoint cone code so as to allow it
00456 to use mt and Et as the parameters in the split--merge step.
00457
00458 ======================================================================
00459 Changes from v2.1.0b1 to v2.1.0b2
00460 =================================
00461
00462 Bug fixes
00463 ---------
00464
00465 - included new siscone version which solves the memory-leak problem
00466
00467 Other changes
00468 -------------
00469
00470 - added sample output from the test-script as test-script-output-orig.txt
00471
00472 ======================================================================
00473 Changes from v2.1.0b0 to v2.1.0b1
00474 =========================
00475
00476 New features:
00477 -------------
00478
00479 - added the SISCone plugin and the beta version of the siscone code
00480 (authored by Soyez & Salam)
00481
00482 Bug fixes
00483 ---------
00484
00485 - removed extraneous semicolons after functions that were causing
00486 problems on some compilers.
00487
00488 Other additions
00489 ---------------
00490
00491 - Added COPYING file with GPL license
00492
00493 ======================================================================
00494 Changes from v2.0 to v2.1 (beta0)
00495 =========================
00496
00497 New features:
00498 -------------
00499
00500 - introduced option of control over recombination scheme, with a
00501 RecombinationScheme enum (a variable of this type should be provided
00502 to the JetDefinition constructor) and also the possibility of an
00503 externally defined recombination scheme.
00504
00505 - introduced a "plugin" facility for alternative jet finders, via an
00506 abstract base class
00507
00508 class JetDefinition::Plugin
00509
00510 Plugins are to be provided as classes derived from this,
00511 implementing the relevant virtual functions (see manual and examples
00512 for further info).
00513
00514 - introduced "description" member function for the JetDefinition
00515 class, which returns a (std::string) textual description of the
00516 algorithm defined.
00517
00518 - provided plugins for CDF JetClu, CDF Midpoint, PxCone code; the
00519 plugins, the code they interface to and example programs are to be
00520 found in the new plugins/ directory.
00521
00522 - added ClusterSequence::unclustered_particles() a vector containing
00523 the unclustered particles (relevant for some plugin algorithms).
00524
00525 Minor additions
00526 ---------------
00527
00528 - introduced PseudoJet::squared_distance (does same as "plain_distance")
00529
00530
00531
00532 Notational changes:
00533 -------------------
00534
00535 - in the documentation, replaced eta -> y, to make it clear that it's
00536 rapidity and not pseudorapidity that is being used throughout. Some
00537 internal code continues to use variables called "eta" -- but these
00538 are actually proper rapidity.
00539
00540
00541 ======================================================================
00542 Changes from v1.0 to v2.0
00543 =========================
00544
00545 New features:
00546 -------------
00547
00548 - the longitudinally invariant inclusive Cambridge/Aachen jet finder
00549 has been added.
00550
00551 Note that the exclusive jets extraction for the Cambridge jet-finder
00552 does not provide the definition as given in the original Cambridge
00553 paper. See the documentation for further details
00554
00555 - classes have been introduced for running jet clustering and
00556 simultaneously collecting information about the area of each jet.
00557 The base class specifying the functionality is
00558
00559 class ClusterSequenceWithArea;
00560
00561 itself derived from ClusterSequence.
00562
00563 Two derived classes that provide the actual areas functionality are:
00564
00565 class ClusterSequenceActiveArea;
00566 class ClusterSequenceActiveAreaExplicitGhosts;
00567
00568 To construct them, one also needs to specify how one wishes the area
00569 to be calculated, via a class
00570
00571 class ActiveAreaSpec;
00572
00573
00574 New optimizations:
00575 ------------------
00576 - new clustering strategies have been added:
00577
00578
00579 N2MinHeapTiled : like N2Tiled, except that the non-geometric
00580 part has been replaced with a N ln N algorithm
00581 (overall the strategy still scales as N^2, but with a
00582 smaller coefficient)
00583
00584 NlnNCam, NlnNCam2pi2R, NlnNCam4pi:
00585
00586 NlnN strategies specific to the Cambridge/Aachen
00587 jet-finder -- the fastest of them is NlnNCam.
00588 Depending on the size of the event and of the CPU
00589 cache it may be up to 2.5 times faster than the
00590 CGAL-based NlnN strategy. Experiment on your own
00591 hardware and events to establish whether the
00592 speed gain is significant.
00593
00594 These strategies are based on the work on dynamic
00595 Closest Pair problems by Timothy Chan.
00596
00597 Best : (was present before) now attempts to select best
00598 among N2Plain, N2Tiled, N2MinHeapTiled, NlnN.
00599
00600 As the best option for a given N may depend on R
00601 and the event structure, you are advised to
00602 experiment with individual strategies if the
00603 last few tens of percent in speed are critical.
00604
00605
00606
00607 Updates to user interface
00608 -------------------------
00609
00610 While the v1 interface to fastjet has been maintained for backwards
00611 compatibility, for new developments in v2 and related forthcoming
00612 work, a new interface is provided as follows:
00613
00614 - User accessible classes and enums have had the "Fj" prefix removed
00615 and are instead now in namespace fastjet; the corresponding include
00616 files are in the include/fastjet directory. So, for example instead
00617 of
00618
00619 #include "FjClusterSequence.hh"
00620
00621 FjClusterSequence clust_seq(...)
00622
00623 one now uses the following
00624
00625 #include "fastjet/ClusterSequence.hh"
00626
00627 fastjet::ClusterSequence clust_seq(...)
00628
00629 If typing "fastjet::" the whole time seems too long-winded, you can
00630 abbreviate "fastjet" as "fj" with
00631
00632 namespace fj = fastjet;
00633
00634 or eliminate the need for it altogether with
00635
00636 using namespace fastjet;
00637
00638 - a new class, fastjet::JetDefinition, has been introduced for holding
00639 the details of the jet finder (which one, value of R, etc...) that
00640 is to be used in a given clustering.
00641
00642 #include "fastjet/JetDefinition.hh"
00643 #include "fastjet/ClusterSequence.hh"
00644
00645
00646 double R = 0.7;
00647
00648
00649 fastjet::JetDefinition jet_def(fastjet::kt_algorithm, R);
00650
00651
00652
00653 fastjet::ClusterSequence clust_seq(momenta, jet_def);
00654
00655 - some errors that previously were assertions now throw an
00656 fastjet::Error -- exception. A fully uniform handling of exceptions
00657 is currently some way away however and users for whom this is an
00658 important issue should contact the authors.