Page MenuHomeHEPForge

No OneTemporary

This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
Index: branches/spherical/ChangeLog
===================================================================
--- branches/spherical/ChangeLog (revision 239)
+++ branches/spherical/ChangeLog (revision 240)
@@ -1,916 +1,919 @@
2008-06-16 Gregory Soyez <gsoyez@quark.phy.bnl.gov>
+ * siscone/vicinity.cpp (siscone): revised the normalisation
+ of the cocirsumar range.
+
* siscone/split_merge.cpp (siscone): recomputed the norm of
the result of a collinear merging. This is required as
the norm is used in stable-cone search and not recomputed
automatically.
* siscone/protocones.cpp (siscone): normalised directions
used to determine the angles. This might well be the reason
of the co-circular problem.
* siscone/geom_2d.cpp (siscone): removed an unused variable
2008-06-14 Gregory Soyez <gsoyez@quark.phy.bnl.gov>
* Note: this version passed 10000 basic safety tests.
* siscone/vicinity.cpp (siscone): added cocirc-tests
WARNING: this is a naive adaptation from the cylindrical case.
* siscone/momentum.h (siscone): reverted most of the last
modification: since the simple computation using a cos()
requires the computation of the norm (not its squared because
the sign of the cos matters) it is most complicated than the one
with the tangent. Note that we're free of the problem mentionned
below as the only place where it can happen is in the
computation of the vicinity and there we compute distances
internally rather than calling is_closer.
Finally, we've added a is_closer_safe with the computation
using te cosine.
2008-06-13 Gregory Soyez <gsoyez@quark.phy.bnl.gov>
* siscone/vicinity.cpp (siscone):
pre-added co-circularity management
* siscone/momentum.h (siscone):
replaced the tangent used in distances comparison by
a cosine (the tangent is more precise at small R but
we'll probably never get down to that small values of R).
The reason for the replacement is that it gives wrong
results for vicinity computation for 2R>pi/2.
This present computation is also faster (no x-product).
All calls to that function have been updated too.
2008-06-12 Gregory Soyez <gsoyez@quark.phy.bnl.gov>
* Description: this is the first complete adaptation to the
SISCone jet-search using spherical coordinatee.
This branch is motivated by potential applications to
cosmic-rays and follows a request by Yvonne Küssel
<Yvonne.Kuessel@gmx.de>
* Summary of modifications:
- use the distance on a sphere instead of the eta-phi one This
is the most important change and comes with
modifications... well... ... everywhere. Most of the infos
about the distance are in the momentum.{h,cpp} files. There
are other important pieces when computing the candidate
centres (in vicinity.cpp). And the theta_phi range (previously
eta_phi!) in geom2d.cpp has also been relooked.
- The spit--merge(SM) uses the energy instead of pttilde by
default for the ordering
- The final jets ae ordered in E instead of pt.
- we don't remove particles with infinite rapidity (both in SC
search and SM)
- for the cone consistency tests, we use |px|+|py|+|pz| instead
of |px|+|py|
- we have removed the cut on soft particles in
Csplit_merge::merge_collinear_and_remove_soft() since it was
mainly used for area speed up.
- Csplit_merge::use_pt_weighted_splitting is replaced by
Csplit_merge::use_E_weighted_splitting when it is defined, the
weight is of course 1/E^2 instead of 1/pt^2
- To emphasise the fact that this is not the main SISCone trunk,
we've added one sentence in the header of every file and a
WARNING in the SISCone banner.
* Still to be done
- implement co-circularity (currently the range is set to 0)
- in the split--merge, check the precision of the collinearity
test?
* Other points to think about
- for the split of 2 protojets, we're currently making many
calls to a full distance computation. This can surely be
improved when no weighting is asked...
- completely remove the quadtree?
- remove the area support?
- remove the Ctheta_phi range?
or improve it (the cell initialisation assume a square shape,
not a circle, but already with a square, the geometry is
rather involved)
* Final word: still need a whole bunch of tests (noticeably IRC
safety, speed). Note that the stable-cone search has been
checked "graphically".
2008-05-20 Gregory Soyez <gsoyez@quark.phy.bnl.gov>
* siscone/hash.cpp (siscone):
Adapted the size of the hash to scale like Nn(=N^2R^2) instead
of N^2. This allows to save a fair amount of memory.
2008-05-16 Gregory Soyez <gsoyez@quark.phy.bnl.gov>
* siscone/defines.h
siscone/hash.{h,cpp} (siscone)
siscone/protocones.{h,cpp} (siscone):
siscone/siscone.{h,cpp} (siscone):
add some debug information about the occupancy of the hash
when DEBUG_STABLE_CONES is defined
* examples/test.cpp: update the code to use Csiscone directly
instead of separate calls to stable cone search and split--merge
stage. This should be less confusing for end-users.
2008-05-15 Gregory Soyez <gsoyez@quark.phy.bnl.gov>
* configure.ac:
in the last CXXFLAGS fix, the default has been set at a wrong
place (practically, CXXFLAGS was set to the system default value
-O2 -g and thus not replaced with our local default).
This is fixed now.
2008-03-24 Gregory Soyez <g.soyez@ulg.ac.be>
* configure.ac:
fix CXXFLAGS in such a way as to allow the user to set their own
default.
2008-03-17 Gregory Soyez <g.soyez@ulg.ac.be>
* siscone/defines.h:
siscone/siscone.h/cpp
examples/option.cpp
BUGS:
Because of potentil conflicts with other packages, the
tags defined in config.h are no longer included in
defines.h but only in SISCone source files.
As a practical consequence, the program name and version
number are now accessed through siscone_package_name() and
siscone_version() both defined in siscone.h and inside
the siscone namespace. See examples/options.cpp for
an example.
This solves the corresponding bug reported by Seuster.
2008-03-15 Gavin Salam <salam@lpthe.jussieu.fr>
* BUGS:
added entry related to PACKAGE/VERSION/etc reported by Seuster.
2008-03-12 Gregory Soyez <g.soyez@ulg.ac.be>
* siscone/split_merge.h/cpp (siscone):
This is a non-negligible modification: we have added the
possibility to modify the way particles are split during the
split-merge step.
Assume one has to split protojets 1 and 2. The standard split
associates a common particle j to the closest centre
i.e. compares the distances D_{1j} vs. D_{2j}.
Now, by calling Csplit_merge::set_pt_weighted_splitting(true),
it is possible to perform the splitting according to the anti-kt
distance i.e. comparing D_{1j}/k_{t1} vs. D_{2j}/k_{t2}.
This new option should allow to produce more
rigid (soft-resilient) jets.
Note that the default is to use the standard distance comparison
so backward compatibility is not broken.
2008-03-11 Gregory Soyez <g.soyez@ulg.ac.be>
* siscone/area.cpp (siscone):
the jet+area finding now really returns the number of jets
as does the standard clustering
* siscone/area.cpp (siscone):
don't include ghosts in stable-cone search when only the
passive area is requested.
This is a huge speed improvement as the execution time (when
only passive area is requested) is now (with Ntot = N+Nghosts)
O(N^2 log(N) + Ntot^2)
instead of
O(Ntot^2 log(Ntot) + Ntot^2)
* configure.ac:
switched the main trunk to SISCone-1.4.0-devel
2008-03-07 Gavin SALAM <salam@lpthe.jussieu.fr>
* configure.ac:
switched version to 1.3.1
2008-01-17 Gavin Salam <salam@lpthe.jussieu.fr>
* configure.ac:
switched version number over to 1.3.1-devel
2008-01-15 Gregory Soyez <g.soyez@ulg.ac.be>
* siscone/geom_2d.h (M_PI):
added definition of M_PI if needed (VC compilation)
* siscone/protocones.cpp (siscone):
added the algorithm header (VC compilation)
2007-11-12 Gregory Soyez <g.soyez@ulg.ac.be>
* NEWS & configure.ac:
SISCone 1.3.0
2007-11-10 Gavin Salam <salam@lpthe.jussieu.fr>
* configure.ac:
* examples/Makefile.am:
* examples/events/Makefile.am:
made sure some sample events were included in the dist
2007-11-07 Gavin SALAM <salam@lpthe.jussieu.fr>
* configure.ac:
switched +="" to A=A"" to eliminate an error on mac
2007-10-24 Gregory Soyez <g.soyez@ulg.ac.be>
* examples/options.cpp: fix a missing "siscone/" in header include
* examples/Makefile.am: fix a problem with make distcheck
* configure.ac: the --enable-shared cmd-line option is already
handled by libtool. We just need to add AM_DISABLE_SHARED to
disable the shared lib by default (can still be changed by using
--enable-shared)
Also, we set the minimal version of autoconf to 2.57.
* examples/Makefile.am: do not install anything (just build
examples locally)
* examples/main.cpp (main): print a more specific error message
when the event file cannot be opened
2007-10-03 Gregory Soyez <g.soyez@ulg.ac.be>
* siscone/defines.h: read available information from config.h
* In examples, include headers from the 'siscone' folder
* Move the src folder into a new 'siscone' folder
2007-10-02 Gregory Soyez <g.soyez@ulg.ac.be>
* add configure script for the build process. This comes with a
bunch of new files: autogen.sh, configure.ac, and a Makefile.am
in each directory. See the INSTALL files for more details
* replace each Makefile by makefile.static
Makefile-based build is now made through
make -f makefile.static
* examples/area.cpp: add a sample program for SISCone jet area
computation
2007-06-24 Gregory Soyez <g.soyez@ulg.ac.be>
* src/defines.h: SISCone 1.2.0
2007-06-15 Gregory Soyez <g.soyez@ulg.ac.be>
* src/geom_2d.h/cpp: use a 32x32 eta-phi-plane tiling. The range
is then defined by two binary fields. This allows easy overlap
test and merging. For protojets splitting, the new ranges are
built by adding particles one-by-one.
* src/split_merge.cpp (siscone):
- align code with the modifications in geom_2d.h/cpp
- the output of save_contents has slightly been improved
* src/area.h/cpp: add methods to compute only the active or passive
area
* examples/main.cpp: add pass-by-pass statistics in the verbose
output
* examples/options.cpp: fix bug when passing an unknown long
option to getopt_long
2007-06-02 Gregory Soyez <g.soyez@ulg.ac.be>
* examples/sample.cpp: add a few lines to show how one can browse
the output jets of compute_jets.
* examples/times.cpp: only save runtime using the siscone class
instead of a separate determination.
2007-05-09 Gavin Salam <salam@lpthe.jussieu.fr>
* src/split_merge.cpp:
soft_pt2_cutoff -> stable_cone_soft_pt2_cutoff
fixed infinite loop for non-zero stable_cone_soft_pt2_cutoff
2007-05-09 Gregory Soyez <g.soyez@ulg.ac.be>
* src/split_merge.cpp|h:
When building the list of particles to be passed to stable-cone
search, allow to remove particles below a pt2 threshold
soft_pt2_cutoff.
2007-04-27 Gavin SALAM <salam@lpthe.jussieu.fr>
* src/geom_2d.cpp:
corrected bugs in range_union -- now passes test that 1000
events are identical to what we had previously.
2007-04-26 Gregory Soyez <g.soyez@ulg.ac.be>
* src/split_merge.cpp (siscone): add range support to the
split--merge. When computing overlap, we first check that the
two ranges overlap. In splitting, ranges are set to the parent
ranges. In merging, range is set as the union of the parent
ranges.
* src/split_merge.h: add a range variable to the Cjet class
* src/geom_2d.cpp/h (siscone): add the Ceta_phi_range to handle
covering ranges in the ete-phi plane. This goes with a function
to test overlap and another to compute union.
* src/momentum.h: Move geometry tools into geom_2d.h (new file)
2007-04-24 Gavin SALAM <salam@lpthe.jussieu.fr> + Matteo
* src/defines.h (VERSION):
updated version number to 1.1.2-devel
* src/split_merge.cpp (include):
moved test on SM_var2_hardest_cut_off to beginning of loop, to
ensure that we don't get a first jet that's below the cutoff.
2007-04-20 Gregory Soyez <g.soyez@ulg.ac.be>
* src/split_merge.h: remove the "protected" attribute for
'SM_var2_hardest_cut_off' for easier inclusion in fastjet. Note
however that the 'protected' declaration in the previous version
was used to prevent from dangerous usage of the variable. This
is still applicable now!
2007-04-18 Gregory Soyez <g.soyez@ulg.ac.be>
* src/area.cpp: Add a parameter '_hard_only' which allow to
compute only the hard jets area (without the purely ghosted
ones.
* src/split_merge.h/cpp: Add a cut-off on the SM_var of the
hardest protojet. This is useful for computation of the area of
the hard jets without computing the purel ghosted ones. Note
that this cut-off is colinear-unsafe so has to be used with
great care.
2007-04-13 Gregory Soyez <g.soyez@ulg.ac.be>
* src/area.cpp: add Carea, the class to compute jet area
2007-03-16 Gregory Soyez <g.soyez@ulg.ac.be>
* SISCone 1.1.1 (tags/siscone-1.1.1)
2007-03-15 Gregory Soyez <g.soyez@ulg.ac.be>
* doc/html/usage.html: update the html doc for the recent
modifications of the split-merge algorithm.
* src/split_merge.cpp: improve the recomputation method when two
jets are very close in the ordering when SM var is set to SM_Et
2007-03-15 Gavin SALAM <salam@lpthe.jussieu.fr>
* src/split_merge.cpp:
modified fix to multiple-pass bug, in hope of being minimally
sensitive to rounding errors
2007-03-15 Gregory Soyez <g.soyez@ulg.ac.be>
* src/siscone.h: set the default number of passes to 0
* examples/main.cpp: adding two command line parameters to the
siscone application:
- npass controls the number of passes (0 by default)
- sm controls the choice for the split--merge variable
2007-03-14 Gregory Soyez <g.soyez@ulg.ac.be>
* src/momentum.h: add Et (inline) member function
* src/siscone.h: remove backward-compatibility computation members to
make things more clear.
* src/split_merge.cpp:
- fix multiple-pass bug
- add Et SM variable management
2007-03-14 Gavin Salam <salam@lpthe.jussieu.fr>
* src/split_merge.cpp:
put an assert for zero-size jets (common sign of a bug...);
ensured that "recomputed" protocones (with full momentum) also
have their eta-phi recalculated.
2007-03-12 Gavin SALAM <salam@lpthe.jussieu.fr>
* src/split_merge.cpp:
added some more debugging output.
2007-03-10 Gavin Salam <salam@lpthe.jussieu.fr>
* src/split_merge.cpp:
fixed some typos and a bug in the EPSILON_SPLITMERGE case for
pt-tilde.
2007-03-09 Gregory Soyez <g.soyez@ulg.ac.be>
* src/siscone.h: The default value for the SM variable is set to
pttilde
* src/split_merge.h/cpp: Update the split--merge procedure so that
it takes into account the choice for the split--merge
variable. Among the four choices, (pt_tilde, mt, pt and Et),
pt_tilde is the default (mt and pt can lead to IR unsafety). Et
is not yet implemented. We strongly advise to keep default value.
2007-03-09 Gavin Salam <salam@lpthe.jussieu.fr>
* src/siscone.h|cpp:
* src/split_merge.h|cpp:
introduced an enum, Esplit_merge_scale (naming convention in
analogy with the leading "C" for classes), which contains values
SM_pt, SM_Et, SM_mt, SM_pttilde, and put in routines that take
the enum (as well as leaving in old ones)
2007-03-06 Gavin SALAM <salam@lpthe.jussieu.fr>
* src/split_merge.cpp:
added transverse mass to info printed out about protojets with
the debug mode on (helpful in investigating limiting IR cases)
2007-03-02 Gregory Soyez <g.soyez@ulg.ac.be>
* SISCone 1.1.0 (tags/siscone-1.1.0)
2007-03-02 Gavin Salam <salam@lpthe.jussieu.fr>
* src/split_merge.cpp:
transformed a quiet error on illegal f values into a throw.
* src/siscone.cpp:
throw an error on illegal R values.
2007-03-01 Gavin Salam <salam@lpthe.jussieu.fr>
* src/split_merge.cpp|h:
added a new member variable, most_ambiguous_split, which records
the degree of ambiguity of the most ambiguous decision about
attributing a particle to one or other jet during a split step.
Useful for testing purposes.
2007-03-01 Gregory Soyez <g.soyez@ulg.ac.be>
* src/split_merge.cpp: set the full momentum
information on stable cones when we add them
to the protojet list
* src/siscone.h,cpp: add comments concerning the
split_merge_on_transverse_mass parameter
* src/defines.h (VERSION): set to 1.1.0beta
* src/split_merge.cpp (siscone):
- set ptmin as a real pt cut-off (independent on the
choice of variable for the SM)
- code cleaned (involves other files e.g. defines.h
momentum.h/cpp, siscone.h/cpp)
* set the website to the HEPForge one in headers
* replaced 'content' by 'contents' everywhere
WARNING: it implies Cjet::contents and
Csplit_merge::save_contents
* src/quadtree.cpp (siscone): replace 'childs' with 'children'
2007-02-21 Gregory Soyez <g.soyez@ulg.ac.be>
* src/protocones.cpp (siscone):
- remove all functions that are no longer necessary and replace
them by their new version. This includes the computatin of the
cone content, its re-computation, the check for co-circularity
and the test for stable cones in the co-circular situations.
- add a few comments of potentially tricky points.
- remove "cout" statements.
- remove 'largest_cocircular_range' which is no longer used
* src/vicinity.h:
- "largest_cocircular_range" removed.
- quadtree related stuff removed. As a consequence,
'build_from_list' is renamed 'build'. The usage of the
quadtree can now only be used in
'Cstable_cone::proceed_with_stability' hence, the USE_QUADTREE
define has been renamed USE_QUADTREE_FOR_STABILITY_TEST.
- Comments aligned to make the code clearer.
* src/momentum.h: Add mass() and mass2() member functions to
Cmomentum().
Put inline functions in the header rather than in the source
file.
* add C++ mark ("// -*- C++ -*-") in the headers where it was
missing
2007-02-20 Gavin Salam <salam@lpthe.jussieu.fr>
* src/split_merge.cpp:
enhanced check on infinite rapidities to include also
meaningless rapidities.
* src/split_merge.cpp|h:
* src/siscone.cpp:
sorted out an issue on multi-pass runs caused by earlier fix for
transverse mass ordering.
2007-02-20 [am-pm] Gavin Salam <salam@lpthe.jussieu.fr>
* src/split_merge.cpp:
fixed a bug that appeared once split_merge_on_transverse_mass
got moved into the Csplit_merge_ptcomparison class
* src/protocones.cpp|h:
introduced compute_cone_contents_nodist(), which calculates the
initial cone contents by circulating around all in/out
operations and collecting the net result --- this avoids any
distance calculations and so removes a potential source of
rounding error. (Any remaining rounding error is dealt with by
cocircularity tests).
* src/defines.h
added more info about the meaning of the different EPSILON
scales.
2007-02-19 [evening] Gavin Salam <salam@lpthe.jussieu.fr>
* src/defines.h:
introduced const bool split_merge_on_transverse_mass, which
determines whether the split merge occurs on transverse mass
instead of pt -- the latter turns out to be IR unsafe in
mom-conserving events for moderately large values of R (R>1)
* src/split_merge.cpp:
implemented the split-merge ordering on transverse masses,
including the limit of there being small differences.
* src/momentum.h:
introduced perpmass2() which returns the transverse mass,
pt^2+m^2
2007-02-19 [pm] Gavin Salam <salam@lpthe.jussieu.fr>
NB: seg-faults are being seen sporadically when fastjet writes its
description & need to be understood (but very rare and valgrind
gives nothing on small numbers of events...)
* src/defines.h:
added optional #define EPSILON_SPLITMERGE, which if defined,
sets a threshold for pt differences below which the ordering is
determined from the explicit particle content...
* src/split_merge.cpp|h:
trying to introduce more "exact" pt comparison in split merge to
deal with multiple scales -- this involves a new
Csplit_merge_ptcomparison class which allows the set to carry
out comparisons while making use of knowledge about the particle
momenta inside the split_merge class.
* src/circulator.h:
added != and == comparison operators.
* src/protocones.h|cpp:
added Cstable_cones::test_cone_cocircular_p3() for carrying out
a p^3 check of stability -- NB seems a bit slower for small p,
but obviously much better for large p... Tests of 2*10^5
particles show no errors, longer tests to be done later...
2007-02-19 [am, early pm] Gavin Salam <salam@lpthe.jussieu.fr>
* src/vicinity.h|cpp:
introduced the Cvicinity_inclusion class to allow one to carry
out checks both on the inclusion in the cone and in its
"cocircular" border. Made corresponding changes elsewhere.
* src/protocones.h|cpp:
wrote new_cocircular_check() and ran a certain number of tests
on it; currently it is this one that is being called from
update_cone(), but it still uses the original 2^p routine for
actually checking the cone status.
* src/[elsewhere]
added a lot of (now commented) debugging statements to help fix
bugs in the new_cocircular_check().
2007-02-18 [pm - later] Gavin Salam <salam@lpthe.jussieu.fr>
* src/circulator.h: *** ADDED ***
class for a circulator, used below.
* src/protocones.(h|cpp):
wrote prepare_cocircular_lists(), and checked that it's working
sensibly on some simple test events; also added code for
esetablishing the largest cocircular range among the children of
the current parent (should be used later to establish a more
reliable in/out status).
NB: the call to this function has added another 1-2% slowdown,
and we're now about 3-4% slower than before starting this
morning. But this should be the last of the changes that adds
significant extra time use?
* src/vicinity.(h|cpp):
support code for the protocones modification
2007-02-18 [pm] Gavin Salam <salam@lpthe.jussieu.fr>
* src/defines.h:
changed default EPSILON values to reflect what will be needed
with the new approach.
* src/vicinity.cpp:
carried out the calculation of cocircular_range inside the
append_to_vicinity member function; the extra
calculations/storage etc lead to a 2-3% slow-down for the
standard fastjet (354 particle) test event with R=1.
* src/momentum.h:
added a small 2-vector class, needed as a shorthand in
vicinity.cpp, plus various small utility routines.
* src/vicinity.h:
introduced cocircular_range and cocircular (list) as members of
Cvicinity_elm
* src/momentum.h:
introduced phi_in_range, dphi and abs_dphi inline functions.
2007-02-18 [am] Gavin Salam <salam@lpthe.jussieu.fr>
* src/vicinity.cpp (include):
switched to twopi from defines.h instead of the pi2 class member
* src/siscone_error.(cpp|h): *** ADDED ***
this is a simple class for throwing errors.
* src/protocones.cpp:
caused test_cone cocircular to throw errors when it receives
more than 32 points
carried out replacement client -> candidate
* src/defines.h:
introduced definition of twopi, which is used in many place (only
some usage instances have been replaced for now).
2007-02-16 Gregory Soyez <g.soyez@ulg.ac.be>
* src/defines.h: consider the limit on cocircularity and
collinearity as different ones. This introduces the
EPSILON_COCIRCULAR definition.
* src/protocones.cpp (siscone):
1. the list of cocircular situations already encountered is
maintained with a pair of references (the cone contents and
its border) instead of its coordinates.
2. we have improved the recomputation of the cone contents by
dynamically tracking he particles inside of the cone. This
adds a list of included particles in Cvicinity as well as a
pointer to elements of that list in vicinity elements.
2007-02-15 Gregory Soyez <g.soyez@ulg.ac.be>
* src/protocones.cpp: Code has been restructured to clearly
separate the cocircular case
* dealt woth cocircularity and 2\pi periodicity and added
an inline fction
2007-02-14 Gregory Soyez <g.soyez@ulg.ac.be>
* src/reference.cpp (siscone): ensures that the reference is not
zero
* src/protocones.cpp (siscone): Fix a bug with the interference
between the recomputation of jets and the update of cocircular
points
* src/protocones.cpp (siscone): add tests for recomputation of the
cone content for the case of cocircular points
* src/protocones.cpp (siscone): when testing the threshold for
recomputation of te cone content, we add a test putting
automatically the cone to 0 when it is empty.
2007-02-13 Gregory Soyez <g.soyez@ulg.ac.be>
* We add a test of cocircularity: when more the p>2 particles are
found on the same circle, we branch to a different test of cone
stability. This new part of the algorithm tests all possible
inclusions/exclusions of the particles along the circle in a
2^p-type algorithm. Note that findling large values of p is
highly improbable !
2007-02-12 Gregory Soyez <g.soyez@ulg.ac.be>
* when traversing the centre list (in stable cones search), we
start with the centre which is the most separated from its
neighbours. This allows to minimize the possibility that we
miscomputed the computation of the initial cone content due to
possible rounding errors when two centres are too close.
2007-02-12 Gregory Soyez <g.soyez@ulg.ac.be>
* in collinear merging, take care of the periodicity in phi
* put the threshold for collinear merging in defines.h
(EPSILON_COLLINEAR)
2007-02-12 Gregory Soyez <g.soyez@ulg.ac.be>
* undo the previous modification and use another approach to deal
with collinear particles: we keep the p_remain list as it was
before (see revision 84). Instead, after computing p_remain, we
compute p_uncol which is obtained from p_remain by merging
collinear particles. In the siscone main loop, we then use
p_uncol instead of p_remain for the search for stable
cones. Note that with this modification, the 'parent_index'
field of Cmomentum is back to its original definition as a
'int'.
2007-02-12 Gregory Soyez <g.soyez@ulg.ac.be>
* remove initialisation of parent_index in momentum.cpp and
vicinity.cpp This is allowed because of the Npass loop in
siscone. Indeed, parent_index is only used internally in
split_merge and init at the very beginning of the loop by a call
to init_pleft
* replaced "int parent_index" by "vector<int> parent_index" and
align the code in split_merge.cpp
* add a few lines off code in split_merge.cpp to account for
collinear particles.
* Note concerning the previous update: the change has been
validated and is no longer considered as temporary
2007-02-12 Gregory Soyez <g.soyez@ulg.ac.be>
* Changed the test for recomputation of cone content in Cstable_cones
see defines.h for details
(this change may be temporary)
2007-02-10 Gregory Soyez <g.soyez@ulg.ac.be>
* fixed doxygen documentation issues:
- undocumented or renamed parameters
- include various links into a custom html footer
2007-01-25 Gregory Soyez <g.soyez@ulg.ac.be>
* fixed memory leak for Cvicinity::ve_list
in Cvicinity::set_particle_list()
2007-01-23 Gavin SALAM <salam@lpthe.jussieu.fr>
* added _ptmin argument to Csiscone::recompute_jets(...)
2007-01-22 Gregory Soyez <g.soyez@ulg.ac.be>
* add ptmin threshold on protojets during split-merge
* modify example program to allow for the --ptmin option
2007-01-20 Gregory Soyez <g.soyez@ulg.ac.be>
* fix typo mistake in split_merge.cpp
2007-01-18 Gregory Soyez <g.soyez@ulg.ac.be>
* insert a header on top of each source files to give brief information
about its content, the SISCone project and copyright
2007-01-03 Gregory Soyez <g.soyez@ulg.ac.be>
* remove the usage of the quadtree in stable cones detection.
Usage of the quadtree in vicinity list creation and final stability
tests can be switched on buy defining USE_QUADTREE in defines.h.
This step was not fully achieved in the last update.
2006-12-28 Gregory Soyez <g.soyez@ulg.ac.be>
* remove the usage of the quadtree in stable cones detection.
Usage of the quadtree in vicinity list creation and final stability
tests can be switched on by defining USE_QUADTREE in defines.h
2006-12-28 Gavin Salam <salam@lpthe.jussieu.fr>
* commented out various "template std::vector<...>" lines to solve
compilation problem on Macs.
* modified the make depend targets so that they do not include
"standard" include files (which differ from one system to
another).
* fixed log(_Np) bug pointed out by Matteo; fixed program name in
defines.h
2006-12-28 Gregory Soyez <g.soyez@ulg.ac.be>
* replace variables with name being "underscore" followed by
a single letter by longer names since they lead to compilation
problems under Mac. In practice, we renamed _N with _Np in hash.cpp/h
and _R by _radius in protocones.cpp/h and siscone.cpp/h
2006-12-27 Gregory Soyez <g.soyez@ulg.ac.be>
* arranged for "make dist" to create a file with the same version
name in the directory and the tar file; made the tar-file
read-only (to avoid involuntarily overwrite); removed svn file
from the examples/events subdirectory.
2006-12-26 Gregory Soyez <g.soyez@ulg.ac.be>
* updated the 'dist' target in the Makefile: include mem_check
with the correct path and build archive so that it unpacks into
a siscone-1.0-beta directory
* fix typos in INSTALL
2006-12-26 Gavin Salam <salam@lpthe.jussieu.fr>
* Changed banner so that first char is # (to allow the rest of the
line to be considered a comment by things like gnuplot).
* moved scones -> siscone (and sorted out various "ignores")
* Reordered changelog so that later stuff appears first (I think
this is standard? Makes it easier to see what's been happening
recently...)
* Tidying up: moved jets.gri and mem_check into the examples
directory; added -f to "rm" command in make clean to avoid
errors; modified siscones->siscone in a couple of places in
doc.
* Brought the README and INSTALL files up to date
* set some svn:ignore property so as to ignore .dat files (to
reduce "noise" with svn status).
* added #!/bin/bash to head of examples/mem_check
2006-12-22 Gregory Soyez <g.soyez@ulg.ac.be>
* rename scones namespace into siscone
* put ranlux stuff into the namespace (we don't want to
pollute the gobal namespace
* add doc/devel as directory for developer's documentation
(using Doxygen)
* scones.h/cpp is renamed siscone.h/cpp
* creation of an 'examples' directory for various programs
only the library libsiscone.a is left in the src dir
Malefiles are modified accordingly
2006-12-21 Gavin Salam <salam@lpthe.jussieu.fr>
* added the MERGE_IDENTICAL_PROTOCONES_DEFAULT_TRUE define to
allow one to make MERGE_IDENTICAL_PROTOCONES to be set true by
default if need be. (This makes it a bit easier to make a quick
modification to run a test).
* changed some of the related comments
* replaced occurrences of "extensive" with "multipass"
* Added the ChangeLog file!
2006-12-21 START OF CHANGELOG
Index: branches/spherical/siscone/vicinity.cpp
===================================================================
--- branches/spherical/siscone/vicinity.cpp (revision 239)
+++ branches/spherical/siscone/vicinity.cpp (revision 240)
@@ -1,300 +1,300 @@
///////////////////////////////////////////////////////////////////////////////
// File: vicinity.cpp //
// Description: source file for particle vicinity (Cvicinity class) //
// This file is part of the SISCone project. //
// WARNING: this is not the main SISCone trunk but //
// an adaptation to spherical coordinates //
// For more details, see http://projects.hepforge.org/siscone //
// //
// Copyright (c) 2006 Gavin Salam and Gregory Soyez //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
// //
// $Revision:: $//
// $Date:: $//
///////////////////////////////////////////////////////////////////////////////
#include "vicinity.h"
#include <math.h>
#include <algorithm>
#include <iostream>
namespace siscone{
using namespace std;
/*************************************************************
* Cvicinity_elm implementation *
* element in the vicinity of a parent. *
* class used to manage one points in the vicinity *
* of a parent point. *
*************************************************************/
// ordering pointers to Cvicinity_elm
//------------------------------------
bool ve_less(Cvicinity_elm *ve1, Cvicinity_elm *ve2){
return ve1->angle < ve2->angle;
}
/*************************************************************
* Cvicinity implementation *
* list of element in the vicinity of a parent. *
* class used to manage the points which are in the vicinity *
* of a parent point. The construction of the list can be *
* made from a list of points or from a quadtree. *
*************************************************************/
// default constructor
//---------------------
Cvicinity::Cvicinity(){
n_part = 0;
ve_list = NULL;
#ifdef USE_QUADTREE_FOR_STABILITY_TEST
quadtree = NULL;
#endif
parent = NULL;
VR2 = VR = 0.0;
}
// constructor with initialisation
//---------------------------------
Cvicinity::Cvicinity(vector<Cmomentum> &_particle_list){
parent = NULL;
ve_list = NULL;
#ifdef USE_QUADTREE_FOR_STABILITY_TEST
quadtree = NULL;
#endif
cosVR = VR2 = tan2R = VR = 0.0;
set_particle_list(_particle_list);
}
// default destructor
//--------------------
Cvicinity::~Cvicinity(){
if (ve_list!=NULL)
delete[] ve_list;
#ifdef USE_QUADTREE_FOR_STABILITY_TEST
if (quadtree!=NULL)
delete quadtree;
#endif
}
/*
* set the particle_list
* - particle_list list of particles (type Cmomentum)
* - n number of particles in the list
************************************************************/
void Cvicinity::set_particle_list(vector<Cmomentum> &_particle_list){
int i,j;
#ifdef USE_QUADTREE_FOR_STABILITY_TEST
double eta_max=0.0;
#endif
// if the particle list is not empty, destroy it !
if (ve_list!=NULL){
delete[] ve_list;
}
vicinity.clear();
#ifdef USE_QUADTREE_FOR_STABILITY_TEST
if (quadtree!=NULL)
delete quadtree;
#endif
// allocate memory array for particles
// Note: - we compute max for |eta|
// - we allocate indices to particles
n_part = 0;
plist.clear();
pincluded.clear();
for (i=0;i<(int) _particle_list.size();i++){
// if a particle is colinear with the beam (infinite rapidity)
// we do not take it into account
//if (fabs(_particle_list[i].pz)!=_particle_list[i].E){
plist.push_back(_particle_list[i]);
pincluded.push_back(Cvicinity_inclusion()); // zero inclusion status
// the parent_index is handled in the split_merge because
// of our multiple-pass procedure.
// Hence, it is not required here any longer.
// plist[n_part].parent_index = i;
plist[n_part].index = n_part;
// make sure the reference is randomly created
plist[n_part].ref.randomize();
#ifdef USE_QUADTREE_FOR_STABILITY_TEST
if (fabs(plist[n_part].eta)>eta_max) eta_max=fabs(plist[n_part].eta);
#endif
n_part++;
//}
}
// allocate quadtree and vicinity_elm list
// note: we set phi in [-pi:pi] as it is the natural range for atan2!
ve_list = new Cvicinity_elm[2*n_part];
#ifdef USE_QUADTREE_FOR_STABILITY_TEST
eta_max+=0.1;
quadtree = new Cquadtree(0.0, 0.0, eta_max, M_PI);
#endif
// append particle to the vicinity_elm list
j = 0;
for (i=0;i<n_part;i++){
#ifdef USE_QUADTREE_FOR_STABILITY_TEST
quadtree->add(&plist[i]);
#endif
ve_list[j].v = ve_list[j+1].v = &plist[i];
ve_list[j].is_inside = ve_list[j+1].is_inside = &(pincluded[i]);
j+=2;
}
}
/*
* build the vicinity list from a list of points.
* - _parent reference particle
* - _VR vicinity radius
************************************************************/
void Cvicinity::build(Cmomentum *_parent, double _VR){
int i;
// set parent and radius
parent = _parent;
VR = _VR;
VR2 = VR*VR;
cosVR = cos(VR);
R2 = 0.25*VR2;
R = 0.5*VR;
double tmp = tan(R);
tan2R = tmp*tmp;
D2_R = 2.0*(1-cos(R));
- tmp = sqrt(D2_R);
- inv_R_EPS_COCIRC = 1.0 / tmp / EPSILON_COCIRCULAR;
- inv_R_2EPS_COCIRC = 0.5 / tmp / EPSILON_COCIRCULAR;
+ //tmp = sqrt(D2_R);
+ inv_R_EPS_COCIRC = 1.0 / R / EPSILON_COCIRCULAR;
+ inv_R_2EPS_COCIRC = 0.5 / R / EPSILON_COCIRCULAR;
// clear vicinity
vicinity.clear();
// init parent variables
// we cpte the direction of the centre and two orthogonal ones
// to measure the angles. Those are taken orthogonal to the
// axis of smallest components (of the centre) to increase precision
parent_centre = (*parent)/parent->_norm;
parent_centre.get_angular_directions(angular_dir1, angular_dir2);
angular_dir1 /= angular_dir1._norm;
angular_dir2 /= angular_dir2._norm;
// really browse the particle list
for (i=0;i<n_part;i++){
append_to_vicinity(&plist[i]);
}
// sort the vicinity
sort(vicinity.begin(), vicinity.end(), ve_less);
vicinity_size = vicinity.size();
}
/// strictly increasing function of the angle
//TODO//
inline double sort_angle(double s, double c){
if (s==0) return (c>0) ? 0.0 : 2.0;
double t=c/s;
return (s>0) ? 1-t/(1+fabs(t)) : 3-t/(1+fabs(t));
}
/*
* append a particle to the 'vicinity' list after
* having computed the angular-ordering quantities
* - v vector to test
**********************************************************/
void Cvicinity::append_to_vicinity(Cmomentum *v){
// skip the particle itself)
if (v==parent)
return;
int i=2*(v->index);
// compute the distance of the i-th particle with the parent
double dot = dot_product3(parent_centre,*v);
C3vector vnormal = *v;
vnormal/=v->_norm;
dot/=v->_norm;
// really check if the distance is less than VR
if (dot>cosVR){
C3vector cross = cross_product3(parent_centre,vnormal);
// for the centres
C3vector median = (parent_centre+vnormal);
double amplT = sqrt((tan2R*(1+dot)+(dot-1))*(1+dot));
C3vector transverse = amplT*cross/cross._norm;
// first angle (+)
ve_list[i].centre = median + transverse;
ve_list[i].centre.build_norm();
ve_list[i].centre/=ve_list[i].centre._norm;
C3vector diff = ve_list[i].centre - parent_centre;
//ve_list[i].angle = atan2(dot_product3(angular_dir2, diff),dot_product3(angular_dir1, diff));
ve_list[i].angle = sort_angle(dot_product3(angular_dir2, diff),dot_product3(angular_dir1, diff));
ve_list[i].side = true;
ve_list[i].cocircular.clear();
vicinity.push_back(&(ve_list[i]));
// second angle (-)
ve_list[i+1].centre = median - transverse;
ve_list[i+1].centre.build_norm();
ve_list[i+1].centre/=ve_list[i+1].centre._norm;
diff = ve_list[i+1].centre - parent_centre;
ve_list[i+1].angle = sort_angle(dot_product3(angular_dir2, diff),dot_product3(angular_dir1, diff));
ve_list[i+1].side = false;
ve_list[i+1].cocircular.clear();
vicinity.push_back(&(ve_list[i+1]));
// now work out the cocircularity range for the two points (range
// of angle within which the points stay within a distance
// EPSILON_COCIRCULAR of circule
// P = parent; C = child; O = Origin (center of circle)
C3vector OP = parent_centre - ve_list[i+1].centre;
C3vector OC = vnormal - ve_list[i+1].centre;
// two sources of error are (GPS CCN29-19) epsilon/(R sin theta)
// and sqrt(2*epsilon/(R (1-cos theta))) and the way things work
// out, it is the _smaller_ of the two that is relevant [NB have
// changed definition of theta here relative to that used in
// CCN29] [NB2: write things so as to avoid zero denominators and
// to minimize the multiplications, divisions and above all sqrts
// -- that means that c & s are defined including a factor of VR2]
double inv_err1 = cross_product3(OP,OC)._norm * inv_R_EPS_COCIRC;
double inv_err2_sq = (D2_R-dot_product3(OP,OC)) * inv_R_2EPS_COCIRC;
ve_list[i].cocircular_range = pow2(inv_err1) > inv_err2_sq ?
1.0/inv_err1 :
sqrt(1.0/inv_err2_sq);
ve_list[i+1].cocircular_range = ve_list[i].cocircular_range;
}
}
}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Dec 21, 5:55 PM (9 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4023712
Default Alt Text
(43 KB)

Event Timeline