source: trunk/SISCone/defines.h@ 22

Last change on this file since 22 was 20, checked in by Pavel Demin, 16 years ago

add SISCone library

File size: 5.8 KB
Line 
1// -*- C++ -*-
2///////////////////////////////////////////////////////////////////////////////
3// File: defines.h //
4// Description: header file for generic parameters definitions //
5// This file is part of the SISCone project. //
6// For more details, see http://projects.hepforge.org/siscone //
7// //
8// Copyright (c) 2006 Gavin Salam and Gregory Soyez //
9// //
10// This program is free software; you can redistribute it and/or modify //
11// it under the terms of the GNU General Public License as published by //
12// the Free Software Foundation; either version 2 of the License, or //
13// (at your option) any later version. //
14// //
15// This program is distributed in the hope that it will be useful, //
16// but WITHOUT ANY WARRANTY; without even the implied warranty of //
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
18// GNU General Public License for more details. //
19// //
20// You should have received a copy of the GNU General Public License //
21// along with this program; if not, write to the Free Software //
22// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
23// //
24// $Revision: 1.1 $//
25// $Date: 2008-10-02 15:20:25 $//
26///////////////////////////////////////////////////////////////////////////////
27
28//! \file defines.h
29#ifndef __DEFINES_H__
30#define __DEFINES_H__
31
32/// program name
33// we get "SISCone" by calling
34// siscone::siscone_package_name
35// defined in siscone.h
36// Otherwise, config.h
37// It is also defined as "PACKAGE_NAME" in config.h but this method
38// might lead to conflicts
39//#define PROGRAM PACKAGE_NAME
40
41// program version
42// we get it from
43// siscone::siscone_version
44// defined in siscone.h
45// It is also defined as "VERSION" in config.h but this method
46// might lead to conflicts
47
48/// perform final stability check using the quadtree
49/// With the following define enabled, the final check for stability
50/// is performed using the quadtree rather than the explicit list of
51/// particles (see Cstable_cone::proceed_with_stability())
52//#define USE_QUADTREE_FOR_STABILITY_TEST
53
54
55/// threshold for recomoutation of the cone (see Cstable_cones::update_cone())
56/// When traversing cone candidates along the angular ordering,
57/// the momentum of the protojet candidate is computed incrementally
58/// from the particles that enter and leave the cone.
59/// When the cumulative change in "|px|+|py|" exceeds the cone "|px|+|py|"
60/// we explicitely recompute the cone contents
61#define PT_TSHOLD 1000.0
62
63
64/// The following parameter controls collinear safety. For the set of
65/// particles used in the search of stable cones, we gather particles
66/// if their distance in eta and phi is smaller than EPSILON_COLLINEAR.
67///
68/// NB: for things to behave sensibly one requires
69/// 1e-15 << EPSILON_COCIRCULAR << EPSILON_COLLINEAR << 1
70///
71/// among the scales that appear in practice (e.g. in deciding to use
72/// special strategies), we have EPSILON_COLLINEAR, EPSILON_COCIRCULAR,
73/// sqrt(EPSILON_COCIRCULAR) and EPSILON_COLLINEAR / EPSILON_COCIRCULAR.
74///
75#define EPSILON_COLLINEAR 1e-8
76
77
78/// The following parameter controls cocircular situations.
79/// When consecutive particles in the ordered vicinity list are separated
80/// (in angle) by less that that limit, we consider that we face a situation
81/// of cocircularity.
82#define EPSILON_COCIRCULAR 1e-12
83
84
85/// The following define enables you to allow for identical protocones
86/// to be merged automatically after each split-merge step before
87/// anything else happens. Whether this happens depends on teh value
88/// of the merge_identical_protocones flag in Csplit_merge.
89///
90/// It we allow such a merging and define allow
91/// MERGE_IDENTICAL_PROTOCONES_DEFAULT_TRUE then the
92/// 'merge_identical_protocones' flag in Csplit_merge to be set to
93/// 'true'. It may be manually reset to false in which case the
94/// merging of identical protocones (protojets) will be turned off.
95///
96/// Note that this merging identical protocones makes the algorithm
97/// infrared-unsafe, so it should be disabled except for testing
98/// purposes.
99//#define ALLOW_MERGE_IDENTICAL_PROTOCONES
100//#define MERGE_IDENTICAL_PROTOCONES_DEFAULT_TRUE
101
102
103/// if EPSILON_SPLITMERGE is defined then, during the split-merge
104/// step, when two jets are found with PTs that are identical to
105/// within a relative difference of EPSILON_SPLITMERGE they are
106/// compared element-by-element to see where the differences are, and
107/// one then uses pt1^2-pt2^2 = (pt1-pt2).(pt1+pt2) as an estimator of
108/// which is harder. NB: in unfortunate cases, this can take the split
109/// merge step up to N n * ln N time, though on normal events there
110/// don't seem to have been any major problems yet.
111#define EPSILON_SPLITMERGE 1e-12
112
113/// definition of 2*M_PI which is useful a bit everyhere!
114const double twopi = 6.283185307179586476925286766559005768394;
115
116/// debugging information
117//#define DEBUG_STABLE_CONES ///< debug messages in stable cones search (not implemented yet)
118//#define DEBUG_SPLIT_MERGE ///< debug messages in split-merge
119//#define DEBUG ///< all debug messages !
120
121// in case all debug massages allowed, allow them in practice !
122#ifdef DEBUG
123#define DEBUG_STABLE_CONES
124#define DEBUG_SPLIT_MERGE
125#endif
126
127#endif // __DEFINES_H__
128
Note: See TracBrowser for help on using the repository browser.