FastJet
3.5.2
Toggle main menu visibility
Loading...
Searching...
No Matches
plugins
CDFCones
fastjet
CDFMidPointPlugin.hh
1
//FJSTARTHEADER
2
// $Id$
3
//
4
// Copyright (c) 2005-2026, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
5
//
6
//----------------------------------------------------------------------
7
// This file is part of FastJet.
8
//
9
// FastJet is free software; you can redistribute it and/or modify
10
// it under the terms of the GNU General Public License as published by
11
// the Free Software Foundation; either version 2 of the License, or
12
// (at your option) any later version.
13
//
14
// The algorithms that underlie FastJet have required considerable
15
// development. They are described in the original FastJet paper,
16
// hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
17
// FastJet as part of work towards a scientific publication, please
18
// quote the version you use and include a citation to the manual and
19
// optionally also to hep-ph/0512210.
20
//
21
// FastJet is distributed in the hope that it will be useful,
22
// but WITHOUT ANY WARRANTY; without even the implied warranty of
23
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24
// GNU General Public License for more details.
25
//
26
// You should have received a copy of the GNU General Public License
27
// along with FastJet. If not, see <http://www.gnu.org/licenses/>.
28
//----------------------------------------------------------------------
29
//FJENDHEADER
30
31
#ifndef __CDFMIDPOINTPLUGIN_HH__
32
#define __CDFMIDPOINTPLUGIN_HH__
33
34
#include "fastjet/JetDefinition.hh"
35
#include "fastjet/internal/thread_safety_helpers.hh"
// helpers to write transparent code w&wo C++11 features
36
37
// questionable whether this should be in fastjet namespace or not...
38
39
FASTJET_BEGIN_NAMESPACE
// defined in fastjet/internal/base.hh
40
41
//----------------------------------------------------------------------
42
//
43
/// @ingroup plugins
44
/// \class CDFMidPointPlugin
45
/// Implementation of the MidPoint algorithm from CDF (plugin for
46
/// fastjet-v2.1 upwards)
47
///
48
/// A plugin for fastjet-v2.1 that provides an interface to the CDF
49
/// midpoint algorithm
50
///
51
/// CDFMidPointPlugin is a plugin for fastjet (v2.1 upwards) that
52
/// provides an interface to the CDF version of Run-II iterative cone
53
/// algorithm with midpoint seeds (also known as the Iterative Legacy
54
/// Cone Algorithm, ILCA).
55
///
56
/// The CDF code has been taken from Joey Huston's webpage
57
/// http://www.pa.msu.edu/~huston/Les_Houches_2005/Les_Houches_SM.html
58
///
59
/// Note that the CDF midpoint code contains options that go beyond
60
/// those described in the Tevatron run-II document (hep-ex/0005012),
61
/// notably search-cones, as described in hep-ph/0111434, and
62
/// midpoints bewteen multiplets of stable cones.
63
///
64
/// Additionally, the version of the CDF midpoint code distributed
65
/// here has been modified by the FastJet authors, so as to allow one
66
/// to choose the scale used in the split-merge step.
67
//
68
//----------------------------------------------------------------------
69
class
CDFMidPointPlugin
:
public
JetDefinition::Plugin
{
70
public
:
71
/// the choice of scale to be used in the split-merge step
72
// NB: just replicates what we've added to the CDF midpoint code
73
enum
SplitMergeScale
{SM_pt, SM_Et, SM_mt, SM_pttilde};
74
75
///
76
/// A CDFMidPointPlugin constructor that looks like the one provided
77
/// by CDF. Its arguments should have the following meaning:
78
///
79
/// - seed_threshold: minimum pt for a particle to be considered
80
/// a seed of the iteration.
81
///
82
/// - cone_radius: standard meaning
83
///
84
/// - cone_area_fraction: stable-cones are searched for with a
85
/// radius Rsearch = R * sqrt(cone_area_fraction), and then
86
/// expanded to size R afterwards; note (hep-ph/0610012) that this
87
/// introduces IR unsafety at NLO for X+2-jet observables (where X
88
/// any hard object).
89
///
90
/// - max_pair_size: "midpoints" can be added between pairs of
91
/// stable cones, triplets of stable cones, etc.; max_pair_size
92
/// indicates the maximum number of stable cones that are
93
/// assembled when adding midpoints.
94
///
95
/// - max_iterations: the maximum number of iterations to carry out
96
/// when looking for a stable cone.
97
///
98
/// - overlap_threshold: if
99
/// (overlapping_Et)/(Et_of_softer_protojet) < overlap_threshold,
100
/// overlapping jets are split, otherwise they are merged.
101
///
102
/// - sm_scale: a choice for the scale to be used in the split-merge
103
/// step (both for ordering the momenta and quantifying the
104
/// overlap); the three options are
105
///
106
/// . SM_pt: pt (default -- source of small IR safety issue in purely
107
/// hadronic events)
108
///
109
/// . SM_Et: Et (not boost invariant, reduces to mt at zero rapidity and
110
/// to pt and infinite rapidity)
111
///
112
/// . SM_mt: transverse mass = sqrt(m^2+pt^2)
113
///
114
CDFMidPointPlugin
(
115
double
seed_threshold_in ,
116
double
cone_radius_in ,
117
double
cone_area_fraction_in ,
118
int
max_pair_size_in ,
119
int
max_iterations_in ,
120
double
overlap_threshold_in ,
121
SplitMergeScale
sm_scale_in = SM_pt) :
122
_seed_threshold (seed_threshold_in ),
123
_cone_radius (cone_radius_in ),
124
_cone_area_fraction (cone_area_fraction_in ),
125
_max_pair_size (max_pair_size_in ),
126
_max_iterations (max_iterations_in ),
127
_overlap_threshold (overlap_threshold_in ),
128
_sm_scale (sm_scale_in) {}
129
130
/// a compact constructor
131
///
132
/// NB: as of version 2.4, the default value for the
133
/// overlap_threshold threshold has been removed, to avoid
134
/// misleading people into using the value of 0.5 without thinking,
135
/// which is known to have adverse effects in high-noise
136
/// environments. A recommended value is 0.75.
137
CDFMidPointPlugin
(
double
cone_radius_in,
138
double
overlap_threshold_in,
// = 0.5,
139
double
seed_threshold_in = 1.0,
140
double
cone_area_fraction_in = 1.0) :
141
_seed_threshold (seed_threshold_in ),
142
_cone_radius (cone_radius_in ),
143
_cone_area_fraction (cone_area_fraction_in ),
144
_max_pair_size (2 ),
145
_max_iterations (100 ),
146
_overlap_threshold (overlap_threshold_in ),
147
_sm_scale (SM_pt) {}
148
149
150
// some functions to return info about parameters
151
double
seed_threshold ()
const
{
return
_seed_threshold ;}
152
double
cone_radius ()
const
{
return
_cone_radius ;}
153
double
cone_area_fraction ()
const
{
return
_cone_area_fraction ;}
154
int
max_pair_size ()
const
{
return
_max_pair_size ;}
155
int
max_iterations ()
const
{
return
_max_iterations ;}
156
double
overlap_threshold ()
const
{
return
_overlap_threshold ;}
157
158
159
// the things that are required by base class
160
virtual
std::string description ()
const
;
161
virtual
void
run_clustering(ClusterSequence &)
const
;
162
/// the plugin mechanism's standard way of accessing the jet radius
163
virtual
double
R
()
const
{
return
cone_radius();}
164
165
private
:
166
167
double
_seed_threshold ;
168
double
_cone_radius ;
169
double
_cone_area_fraction;
170
int
_max_pair_size ;
171
int
_max_iterations ;
172
double
_overlap_threshold ;
173
SplitMergeScale _sm_scale ;
174
175
static
thread_safety_helpers::FirstTimeTrue
_first_time;
176
177
/// print a banner for reference to the 3rd-party code
178
void
_print_banner(std::ostream *ostr)
const
;
179
};
180
181
FASTJET_END_NAMESPACE
// defined in fastjet/internal/base.hh
182
183
#endif
// __CDFMIDPOINTPLUGIN_HH__
fastjet::CDFMidPointPlugin::SplitMergeScale
SplitMergeScale
the choice of scale to be used in the split-merge step
Definition
CDFMidPointPlugin.hh:73
fastjet::CDFMidPointPlugin::R
virtual double R() const
the plugin mechanism's standard way of accessing the jet radius
Definition
CDFMidPointPlugin.hh:163
fastjet::CDFMidPointPlugin::CDFMidPointPlugin
CDFMidPointPlugin(double cone_radius_in, double overlap_threshold_in, double seed_threshold_in=1.0, double cone_area_fraction_in=1.0)
a compact constructor
Definition
CDFMidPointPlugin.hh:137
fastjet::CDFMidPointPlugin::CDFMidPointPlugin
CDFMidPointPlugin(double seed_threshold_in, double cone_radius_in, double cone_area_fraction_in, int max_pair_size_in, int max_iterations_in, double overlap_threshold_in, SplitMergeScale sm_scale_in=SM_pt)
A CDFMidPointPlugin constructor that looks like the one provided by CDF.
Definition
CDFMidPointPlugin.hh:114
fastjet::JetDefinition::Plugin
a class that allows a user to introduce their own "plugin" jet finder
Definition
JetDefinition.hh:567
fastjet::thread_safety_helpers::FirstTimeTrue
provides an object wich will return "true" the first time () is called and false afterwards
Definition
thread_safety_helpers.hh:231
Generated on
for FastJet by
1.18.0