FastJet
3.5.2
Toggle main menu visibility
Loading...
Searching...
No Matches
tools
fastjet
tools
MassDropTagger.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 __FASTJET_MASS_DROP_TAGGER_HH__
32
#define __FASTJET_MASS_DROP_TAGGER_HH__
33
34
#include "fastjet/tools/Transformer.hh"
35
#include "fastjet/LimitedWarning.hh"
36
#include "fastjet/WrappedStructure.hh"
37
38
FASTJET_BEGIN_NAMESPACE
39
40
class
MassDropTagger;
41
class
MassDropTaggerStructure;
42
43
//----------------------------------------------------------------------
44
/// @ingroup tools_taggers
45
/// \class MassDropTagger
46
/// Class that helps perform 2-pronged boosted tagging using
47
/// the "mass-drop" technique (with asymmetry cut) introduced by Jonathan
48
/// Butterworth, Adam Davison, Mathieu Rubin and Gavin Salam in
49
/// arXiv:0802.2470 in the context of a boosted Higgs search.
50
///
51
/// The tagger proceeds as follows:
52
///
53
/// 0. start from a jet obtained from with the Cambridge/Aachen
54
/// algorithm
55
///
56
/// 1. undo the last step of the clustering step j -> j1 + j2 (label
57
/// them such as j1 is the most massive).
58
///
59
/// 2. if there is a mass drop, i.e. m_j1/m_j < mu_cut, and the
60
/// splitting is sufficiently symmetric, \f${\rm
61
/// min}(p_{tj1}^2,p_{tj2}^2)\Delta R_{j1,j2}^2 > y_{\rm cut}
62
/// m_j^2\f$, keep j as the result of the tagger (with j1 and j2
63
/// its 2 subjets)
64
///
65
/// 3. otherwise, redefine j to be equal to j1 and return to step 1.
66
///
67
/// Note that in the original proposal, j1 and j2 are both required
68
/// to be b-tagged and a filter (with Rfilt=min(0.3,Rbb/2) and
69
/// n_filt=3) is also applied to j to obtain the final "Higgs candidate".
70
/// See the example \subpage Example12 for details.
71
///
72
/// \section desc Options
73
///
74
/// The constructor has the following arguments:
75
/// - The first argument is the minimal mass drop that is required (mu_cut) [0.67
76
/// by default]
77
/// - The second argument is the asymmetry cut (y_cut) [0.09 by default]
78
///
79
/// \section input Input conditions
80
///
81
/// - one must be able to successively "uncluster" the original jet
82
/// using "has_parents"
83
///
84
/// \section output Output/structure
85
///
86
/// - the 2 subjets are kept as pieces if some substructure is found,
87
/// otherwise a single 0-momentum piece is returned
88
/// - the 'mu' and 'y' values corresponding to the unclustering step
89
/// that passed the tagger's cuts
90
///
91
/// See also \subpage Example12 for a usage example.
92
class
MassDropTagger
:
public
Transformer
{
93
public
:
94
/// default ctor
95
MassDropTagger
(
const
double
mu=0.67,
const
double
ycut=0.09) : _mu(mu), _ycut(ycut){};
96
97
/// returns a textual description of the tagger
98
virtual
std::string description()
const
;
99
100
/// runs the tagger on the given jet and
101
/// returns the tagged PseudoJet if successful, a PseudoJet==0 otherwise
102
/// (standard access is through operator()).
103
/// \param jet the PseudoJet to tag
104
virtual
PseudoJet
result(
const
PseudoJet
& jet)
const
;
105
106
/// the type of the associated structure
107
typedef
MassDropTaggerStructure
StructureType
;
108
109
protected
:
110
double
_mu, _ycut;
111
static
LimitedWarning
_warnings_nonca;
112
static
LimitedWarning
_negative_mass_warning;
113
};
114
115
116
//------------------------------------------------------------------------
117
/// @ingroup tools_taggers
118
/// \class MassDropTaggerStructure
119
/// the structure returned by the MassDropTagger transformer.
120
///
121
/// See the MassDropTagger class description for the details of what
122
/// is inside this structure
123
///
124
class
MassDropTaggerStructure
:
public
WrappedStructure
{
125
public
:
126
/// ctor with initialisation
127
/// \param pieces the pieces of the created jet
128
/// \param rec the recombiner from the underlying cluster sequence
129
MassDropTaggerStructure
(
const
PseudoJet
& result_jet) :
130
WrappedStructure
(result_jet.structure_shared_ptr()),
_mu
(0.0),
_y
(0.0){}
131
132
/// returns the mass-drop ratio, pieces[0].m()/jet.m(), for the splitting
133
/// that triggered the mass-drop condition
134
inline
double
mu
()
const
{
return
_mu
;}
135
136
/// returns the value of y = (squared kt distance) / (squared mass) for the
137
/// splitting that triggered the mass-drop condition
138
inline
double
y
()
const
{
return
_y
;}
139
140
// /// returns the original jet (before tagging)
141
// const PseudoJet & original() const {return _original_jet;}
142
143
protected
:
144
double
_mu
;
///< the value of the mass-drop parameter
145
double
_y
;
///< the value of the asymmetry parameter
146
// PseudoJet _original_jet; ///< the original jet (before tagging)
147
148
// allow the tagger to set these
149
friend
class
MassDropTagger;
150
};
151
152
153
154
FASTJET_END_NAMESPACE
155
156
#endif
// __FASTJET_MASS_DROP_TAGGER_HH__
157
fastjet::LimitedWarning
class to provide facilities for giving warnings up to some maximum number of times and to provide glo...
Definition
LimitedWarning.hh:54
fastjet::MassDropTaggerStructure
the structure returned by the MassDropTagger transformer.
Definition
MassDropTagger.hh:124
fastjet::MassDropTaggerStructure::_y
double _y
the value of the asymmetry parameter
Definition
MassDropTagger.hh:145
fastjet::MassDropTaggerStructure::_mu
double _mu
the value of the mass-drop parameter
Definition
MassDropTagger.hh:144
fastjet::MassDropTaggerStructure::MassDropTaggerStructure
MassDropTaggerStructure(const PseudoJet &result_jet)
ctor with initialisation
Definition
MassDropTagger.hh:129
fastjet::MassDropTaggerStructure::y
double y() const
returns the value of y = (squared kt distance) / (squared mass) for the splitting that triggered the ...
Definition
MassDropTagger.hh:138
fastjet::MassDropTaggerStructure::mu
double mu() const
returns the mass-drop ratio, pieces[0].m()/jet.m(), for the splitting that triggered the mass-drop co...
Definition
MassDropTagger.hh:134
fastjet::MassDropTagger::MassDropTagger
MassDropTagger(const double mu=0.67, const double ycut=0.09)
default ctor
Definition
MassDropTagger.hh:95
fastjet::MassDropTagger::StructureType
MassDropTaggerStructure StructureType
the type of the associated structure
Definition
MassDropTagger.hh:107
fastjet::PseudoJet
Class to contain pseudojets, including minimal information of use to jet-clustering routines.
Definition
PseudoJet.hh:68
fastjet::Transformer::Transformer
Transformer()
default ctor
Definition
Transformer.hh:74
fastjet::WrappedStructure::WrappedStructure
WrappedStructure(const SharedPtr< PseudoJetStructureBase > &to_be_shared)
default ctor the argument is the structure we need to wrap
Definition
WrappedStructure.hh:57
Generated on
for FastJet by
1.18.0