Commit 30312659 authored by Lifeng Sun's avatar Lifeng Sun

Imported Upstream version 2.0.5

This program was written by Gregory Soyez(1) and Gavin Salam(2)
Address: (1) IPhT, CEA Saclay
Orme des Merisiers, Bat 774
F-91191 Gif-sur-Yvette Cedex
(2) PH-TH, CERN, CH-1211 Geneva 23, Switzerland;
Physics Department, Princeton University, Princeton NJ 08544, USA;
LPTHE, UPMC (Univ. Paris 6), 75252 Paris cedex 05, France.
phone : +33 69 08 40 11
+41 22 767 2462
email :
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Installation procedure:
You have two options to install the SISCone jet finder:
1. use the standard configure/make/make install technique (recommended)
2. use the 'old-fashionned' Makefile
1. Installation through configure/make/make install
This is the recommended method for installing the SISCone library, headers
and programs. For a 'standard' installation process, you just need to do
$ ./configure
$ make
$ make install
In short, 'configure' checks if your system has the required tools to
build SISCone, 'make' actually does the build and 'make install'
installs everything in the correct directories.
- If you're using an svn version of SISCone, you first need to issue
(to which you can pass configure's options, see below for details)
in order to generate the configure script from svn files.
- The SISCone library is installed in ${prefix}/lib, the SISCone
development headers in ${prefix}/include/siscone and the useful
programs in ${prefix}/bin. The default prefix is /usr/local but
this can be changed by passing the --prefix=<your_preferred_prefix>
to the 'configure' script. Note that if you do not have sufficiently
write access you may need to issue 'make install' as root.
Also, if you install SISCone in a non standard location (e.g.
/usr/local/SISCone), do not forget to append ${prefix}/lib to your
- By default, both shared ( and static (libsiscone.a)
libraries are built and installed. You can disable one of them by
passing --disable-shared or --disable-static to 'configure'.
2. Installation using the Makefiles
If you do not feel comfortable with the suggested installation
procedure, it is still possible to install it using the old-fashionned
'make' method. For that, you just need to tell 'make' to use
makefile.static as a main Makefile. This is done typing
$ make -f makefile.static
This will build the siscone library as src/libsiscone.a and the
various example programs in examples/ :
- 'siscone' an application with options to tune it from the command line
(see main.cpp and options.h/cpp)
- 'sample' another example (used in the html documentation (see doc/html))
- 'test' a testing program (see src/test.cpp)
- 'times' computes execution times and various statistics for 1 <= N <= 1000
- mem_check a shell script for checking memory usage as a function of the
number of particles (requires google perftools).
You also have access to the SISCone headers in the src folder.
SUBDIRS = siscone examples
EXTRA_DIST = makefile.static Doxyfile
This diff is collapsed.
This file contains the history of SISCone releases. For each of the,
we give a short summary of the important changes from the previous
version. If you want to see a more detailed list of changes, please
read the ChangeLog file.
SISCone version 2.0.5 (January 17 2012)
* Minor release bringing minor improvements to the build system
(version to be included in FastJet>=3.0.2)
SISCone version 2.0.4 (November 25 2011)
* Minor release to remove a few gcc warnings when compiled with
high warning level (-ansi -pedantic -Wextra -Wshadow)
(version to be included in FastJet>=3.0.1)
SISCone version 2.0.3 (October 5 2011)
* Minor release to fix a badly documented Etilde variable in the
spherical version of SISCone and to remove a few gcc warnings
(version to be included in FastJet 3.x)
SISCone version 2.0.2 (May 2011)
* minor modifications to the build system
(version to be included in FastJet 3.x)
SISCone version 2.0.1 (May 2009)
* enabled shared libraries by default
[that was the source of a bug in fastJet]
* replaced _R with _radius to fix build problems on old OSX systems
* fixed some syntax inconsistencies in's
SISCone version 2.0.0 (Apr 2009)
* Added a spherical version of SISCone for use in e+e- collisions
This typically works in the same way as the pp version of SISCone
with the following remarks:
- the classes fot the spherical versions of SISCone are prefixed by
'CSph' instead of 'C' (e.g. CSphMomentum CSphSISCone)
- the cone radius is defined as its half opening angle (particle
distances are also defined through the angle they define, or,
equivalently, as distances on the surface of a unit sphere)
- For ordering the protojets during the split--merge, we use
E_tilde defined as
/ |p_i X p_J|^2 \
\sum_{i\in J} E_i | 1 + --------------- |
\ |p_i|^2 E_J^2 /
Note that the computation of the overlap uses the "plain" energy
* Added a flag (Csiscone::use_pt_weighted_splitting) to modify the
split part of the split-merge procedure in such a way that a shared
particle i is assigned the one of the overlapping jets j=1,2 that
has the smaller value of DeltaR_{ij}/p_{tj}. This produces more
circular jets.
* fixed a bug in the computation of the rapidity range in the
split-merge step
* the protocones list now contains the full 4-momentum information
(rather than just eta and phi)
* fixed bugs in example/test.cpp
SISCone version 1.3.3 (Aug 2008)
* added bugfix for g++-4.3 (missing headers for "exit")
SISCone version 1.3.2 (Mar 2008)
* VERSION and PROGRAM (or PACKAGE_NAME) are no longer accessible
directly because of potential conflicts with other packages.
You should use siscone_version() and siscone_package_name()
instead. (Thanks to Rolf Seuster)
* allow the users to set their own default compilation flags.
SISCone version 1.3.1 (Mar 2008)
* fixed some compilation issues under windows
SISCone version 1.3.0 (Nov 2007)
* The main update in this new release is the switch to
'autotools'. This means that instead of using the (static) Makefile
build process, you can now use the "standard ./configure; make; make
install" approach. See the INSTALL file for details.
* added a 'siscone_area' example of how jet areas work within SISCone.
SISCone version 1.2.0 (Jun 2007)
* 10-15% speed increase by introducing a tiling in the eta-phi plane
allowing for better overlap checking in the split--merge. This can
turn into a bigger effect for area computations.
* implementing a 'jet area' class to compute active and/or passive
* in examples:
- fix bug in the cmdline parsing (there was a segfault with
unrecognised long options),
- add "passes information" to the verbose output of the main siscone
- solve problems with the 'time' example.
SISCone version 1.1.1 (Mar 2007)
* The major upgrade is the use of pttilde (p-scheme pt) instead
of mt in the split--merge process. Indeed, we have noticed
that mt can lead to IR usafety in the case of two back-to-back
narrow-decay-width unstable particles (e.g. a pair of Higgs bosons).
See for details.
Note that SISCone 1.1.1 allows the user to specify its choice for
the split-merge variable (we highly recommand the default choice)
* The number of passes is now set to infinity (0) by default
* Small minor changes in the 'siscone' command-line options
SISCone version 1.1.0 (Mar 2007)
* dealt with colinearity issues
* dealt with cocircularity situations (and related rounding errors)
* use mt instead of pt in the split-merge
pt lead to some IR unsafety for events with momentum conservation
* move all references to HEPForge
* Important note: some typos have been fixed. As a consequence, some
end-user members have been affected:
- The contents of the jets is accessed through 'Cjet::contents'
instead of 'Cjet::content'
- The function called to save the jet contents to disk is
'Csplit_merge::save_contents' instead of 'Csplit_merge::save_content'
Note that 'Csiscone::save_contents' is also valid.
SISCone version 1.0.0 (Jan 2007)
This is the first stable release of siscone.
See html docmentation in doc/html or developer's doxygen documentation
in doc/devel/html (you may need to run doxygen for the latter to be
For installation instructions see the INSTALL file.
//!\file TODO
This diff is collapsed.
This diff is collapsed.
/* Generated from by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
/* Define to 1 if you have the <inttypes.h> header file. */
/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM
/* Define to 1 if you have the <memory.h> header file. */
/* Define to 1 if you have the <stdint.h> header file. */
/* Define to 1 if you have the <stdlib.h> header file. */
/* Define to 1 if you have the <strings.h> header file. */
/* Define to 1 if you have the <string.h> header file. */
/* Define to 1 if you have the <sys/stat.h> header file. */
/* Define to 1 if you have the <sys/types.h> header file. */
/* Define to 1 if you have the <unistd.h> header file. */
/* Define to the sub-directory in which libtool stores uninstalled libraries.
#undef LT_OBJDIR
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
/* Define to the full name of this package. */
/* Define to the full name and version of this package. */
/* Define to the one symbol short name of this package. */
/* Define to the home page for this package. */
/* Define to the version of this package. */
/* Define to 1 if you have the ANSI C header files. */
/* Version number of package */
#undef VERSION
This diff is collapsed.
This diff is collapsed.
AC_INIT([SISCone], [2.0.5])
dnl uncomment the following line if you want to use autoheader
dnl and also uncomment the call to autoheader in
dnl check autoconf version
dnl check basic types
dnl set default compilation and link flags
dnl those can be changed at configure time so we don't use AM_CXXFLAGS here
test "x${CXXFLAGS+yes}" = xyes || CXXFLAGS="-O3 -Wall -ffast-math"
dnl CXXFLAGS=" -Wall -O3 -ffast-math "
dnl check useful programs
dnl check standard C headers
dnl set the default destination directory
dnl if the debug flag is set, build with -g
dnl default is "yes"
[ --enable-debug Turn on debug compiler information],
if [[ "x$ENABLE_DEBUG_FLAG" == "xyes" ]] ; then
dnl uncomment the next line not to build the shared lib by default
dnl check libraries
dnl ----------------
dnl math lib
AC_CHECK_LIB(m, cos)
dnl already included into LIBS by the previous check
dnl AM_LDFLAGS=" -lm "
dnl if the debug flags are on, check if we can also use
dnl some profiling tools
dnl COMMENTED: Pass LDFLAGS to configure instead
dnl if [[ "x$ENABLE_DEBUG_FLAG" == "xyes" ]] ; then
dnl AC_CHECK_LIB(profiler, google_initializer_module_profiler)
dnl AC_CHECK_LIB(pthread, pthread_create)
dnl AC_CHECK_LIB(tcmalloc, malloc)
dnl fi
dnl enable libtool
AC_OUTPUT( Makefile siscone/Makefile siscone/spherical/Makefile examples/Makefile examples/events/Makefile )
This diff is collapsed.
<hr size="1"><address style="align: right;"><small>
The <a href="" target="_top">
SISCone</a> project has been developed by
<a href="" target="_top">
Gavin Salam</a> and
<a href="" target="_top">
Gregory Soyez</a><br>
Documentation generated on $datetime for $projectname by&nbsp;
<a href="">Doxygen</a> $doxygenversion
digraph algo_main {
node [shape=box,style=filled,fillcolor="#CCCCFF",color=blue,fontcolor="#880000"];
intro [label="Put the set of current particles\nequal to the set of all particles in the event"];
proto [label="Find all stable cones for the current set of particles"]
add_proto [label="Add each stable cone (defined by the set\nof particles contained in the cone)\nto the list of protojets"];
remove [label="Remove all particles that are in stable cones\nfrom the list of current particles"];
end_algo [label="Run the Tevatron Run-II split-merge procedure\non the full list of protojets, with overlap parameter f",height=0.5];
node [shape=polygon,sides=4,orientation=45];
end_loop [label="No new stable cones have been found\nOR one has gone around the loop Npass times"];
node [style="invis",fixedsize=true];
proto_partner [width=0,height=0];
end_loop_partner [width=0,height=0];
{ rank="same"; proto; proto_partner; }
{ rank="same"; end_loop; end_loop_partner; }
edge [arrowsize=0.7];
intro -> proto -> add_proto -> remove -> end_loop;
end_loop -> end_algo [label=" yes"];
end_loop -> end_loop_partner[weight=0,dir=none];
proto -> proto_partner[weight=0,dir=back];
end_loop_partner -> proto_partner[label=" no",samehead,sametail,dir=none];
digraph algo_stable {
node [shape=box,style=filled,fillcolor="#CCCCFF",color=blue,fontcolor="#880000"];
init[label="set particle i to be the first particle"];
vicinity[label="Find all particles j within distance 2R of i and for each\n\
j identify the two circles defined by i and j. For each circle,\n\
compute the angle of its center C relative to i, \n\
(zeta = atan(d phi_{iC}/d y_{iC}))"];
sort[label="Sort the circles into increasing angle zeta"];
init_cone[label="For the first circle in this order, calculate the total\n\
momentum and checkxor for the cones that it defines.\n\
Consider all 4 permutations of edge points being included\n\
or excluded. Call these the 'current cones'"];
node [shape=polygon,sides=2,orientation=45];
browse_current[label = "for each of the 4 current cones"];
node [shape=box,orientation=0,style=filled,fillcolor="#CCCCFF",color=blue,fontcolor="#880000"];
test_cone1[label="this cone has not yet been found add\nit to the list of distinct cones"];
test_cone2[label="if this cone has not yet been labelled as unstable, establish\n\
if the in/out status of the edge particles (with respect to the cone\n\
momentum axis) is the same as when defining the cone; if it is\n\
not, label the cone as unstable"];
node [style="invis",fixedsize=true];
node [shape=box,style=filled,fillcolor="#CCCCFF",color=blue,fontcolor="#880000",fixedsize=false];
update_cone[label="Move to the next circle in order. It differs from the previous\n\
one either by a particle entering the circle, or one leaving the\n\
circle. Calculate the momentum for the new circle by adding (or\n\
removing) the momentum of the particle that has entered (left); the\n\
checkxor can be updated by XORing with the label of that particle."];
node [shape=polygon,sides=4,orientation=45];
until[label="test if all circles are considered"];
node [shape=box,orientation=0,style=filled,fillcolor="#CCCCFF",color=blue,fontcolor="#880000"];
node [shape=polygon,sides=4,orientation=45];
next_particle[label="move to the next particle: increment i, if possible"];
node [shape=box,orientation=0,style=filled,fillcolor="#CCCCFF",color=blue,fontcolor="#880000"];
node [shape=polygon,sides=2,orientation=45];
browse_proto[label = "for each of the cones labelled as unstable"];
node [shape=box,orientation=0,style=filled,fillcolor="#CCCCFF",color=blue,fontcolor="#880000"];
node [shape=polygon,sides=4,orientation=45];
final_check[label="Explicitly check if the cone is stable"];
node [shape=box,sides=4,orientation=0];
check_ok[label="add it to the list of stable cones (protojets)"];
node [style="invis",fixedsize=true];
edge [arrowsize=0.7];
init -> vicinity -> sort -> init_cone -> browse_current -> test_cone1 -> test_cone2;
test_cone2 -> end_current[dir=none];
end_current -> update_cone -> until -> next_particle -> browse_proto -> final_check;
final_check -> check_ok[label="yes"];
check_ok -> end_proto[dir=none];
// virtual nodes
node [style="invis",fixedsize=true];
{ rank="same"; vicinity; vicinity_p; }
{ rank="same"; init_cone; init_cone_p; }
{ rank="same"; browse_current; browse_current_p; }
{ rank="same"; end_current; end_current_p; }
{ rank="same"; until; until_p; }
{ rank="same"; next_particle; next_particle_p; }
{ rank="same"; browse_proto; browse_proto_p; }
{ rank="same"; final_check; final_p; }
{ rank="same"; end_proto; end_proto_p; }
edge [arrowsize=0.7];
until_p->init_cone_p[label=" no",samehead,sametail,dir=none];
next_particle_p->vicinity_p[label=" yes",samehead,sametail,dir=none];
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>SISCone: Algorithm</title>
<link href="style.css" rel="stylesheet" type="text/css">
<!-- Header -->
<h1 align="center">SISCone Documentation</h1>
<a name="top"></a>
<h3 align="center">Version 2.0.5</h3>
<hr size="1">
<h2 align="center">Scheme for the main algorithm</h2>
<img align="center" src="algo_main.png">
<hr size="1">
<h2 align="center">Scheme for stable cone determination</h2>
<img align="center" src="algo_stable.png">
<!-- footer -->
<hr size="1">
<a href="index.html">Home</a><br>
Contacts: &nbsp;<a href="">Gregory Soyez</a>
&nbsp;<a href="">Gavin Salam</a>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>SISCone: Download</title>
<link href="style.css" rel="stylesheet" type="text/css">
<!-- Header -->
<h1 align="center">SISCone Documentation</h1>
<a name="top"></a>
<h3 align="center">Version 2.0.5</h3>
<hr size="1">
<h2 align="center">Downloading SISCone</h2>
You can download here the of SISCone source code. It is developped under the terms of the GNU General Public License (GPL). A version of the license should be included in the code.
The algorithm used by SISCone has been subject of a publication in
<a href="">JHEP 05 (2007) 086</a>
[<a href="">arXiv:0704.0292 (hep-ph)</a>]. Please refer to that work each time it is appropriate.
<a href="">Download SISCone 2.0.5</a> (latest stable - January 2012 - <a href="release_notes.txt">Release notes</a>)
You can alternatively download SISCone from its SVN repository.<br> This can be browsed via <a href="">HTTP access</a> or accessed using the Subversion repository <kbd>svn+ssh://</kbd>.
<!-- footer -->
<hr size="1">
<a href="index.html">Home</a><br>
Contacts: &nbsp;<a href="">Gregory Soyez</a>
&nbsp;<a href="">Gavin Salam</a>
This diff is collapsed.
/* XPM */
static char * home_xpm[] = {
"24 24 9 1",
" c None",
". c #020202",
"+ c #6C7962",
"@ c #7A8A6E",
"# c #FEFEFE",
"$ c #7E8E76",
"% c #82927A",
"& c #C8CEC4",
"* c #E3E7E1",
" ",
" ",
" ",
" ",
" . ... ",
" .#. .&. ",
" .#*%..&. ",
" .##&&$.&. ",
" .##&&&&$&. ",
" .*#&&&&&&@. ",
" .##&&&&&&&&+. ",
" .###&&&&&&&&&+. ",
" ...##&&&&&&&&+... ",
" .##&&&&&&&&+. ",
" .##....&&&&+. ",
" .##.&&.&&&&+. ",
" .##.&&.&&&&+. ",
" .#*.&&.&&&&+. ",
" .&+.++.+++++. ",
" ............. ",
" ",
" ",
" ",
" "};
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>SISCone : Main Page</title>
<link href="style.css" rel="stylesheet" type="text/css">
<!-- Header -->
<h1 align="center">SISCone Documentation</h1>
<a name="top"></a>
<h3 align="center">Version 2.0.5</h3>
<hr size="1">
SISCone is a <i><u>S</u>eedless <u>I</u>nfrared <u>S</u>afe <u>Cone</u> jet algorithm</i>.
It was developped by Gavin Salam and Gregory Soyez.
It is available as a library, as a standalone program
or as a <a href="">FastJet</a> (&gt;= 2.1) plugin.
<table border=1>