FastJet
3.5.2
Toggle main menu visibility
Loading...
Searching...
No Matches
tools
fastjet
tools
RestFrameNSubjettinessTagger.hh
1
#ifndef __FASTJET_RESTFRAMENSUBJETTINESS_TAGGER_HH__
2
#define __FASTJET_RESTFRAMENSUBJETTINESS_TAGGER_HH__
3
4
//FJSTARTHEADER
5
// $Id$
6
//
7
// Copyright (c) 2005-2026, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
8
//
9
//----------------------------------------------------------------------
10
// This file is part of FastJet.
11
//
12
// FastJet is free software; you can redistribute it and/or modify
13
// it under the terms of the GNU General Public License as published by
14
// the Free Software Foundation; either version 2 of the License, or
15
// (at your option) any later version.
16
//
17
// The algorithms that underlie FastJet have required considerable
18
// development. They are described in the original FastJet paper,
19
// hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
20
// FastJet as part of work towards a scientific publication, please
21
// quote the version you use and include a citation to the manual and
22
// optionally also to hep-ph/0512210.
23
//
24
// FastJet is distributed in the hope that it will be useful,
25
// but WITHOUT ANY WARRANTY; without even the implied warranty of
26
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27
// GNU General Public License for more details.
28
//
29
// You should have received a copy of the GNU General Public License
30
// along with FastJet. If not, see <http://www.gnu.org/licenses/>.
31
//----------------------------------------------------------------------
32
//FJENDHEADER
33
34
#include "fastjet/PseudoJet.hh"
35
#include "fastjet/JetDefinition.hh"
36
#include "fastjet/CompositeJetStructure.hh"
37
#include "fastjet/tools/Transformer.hh"
38
39
FASTJET_BEGIN_NAMESPACE
40
41
class
RestFrameNSubjettinessTagger;
42
class
RestFrameNSubjettinessTaggerStructure;
43
44
//----------------------------------------------------------------------
45
/// @ingroup tools_taggers
46
/// \class RestFrameNSubjettinessTagger
47
/// Class that helps perform 2-pronged boosted tagging using
48
/// a reclustering in the jet's rest frame, supplemented with a cut on N-subjettiness
49
/// (and a decay angle), as discussed by Ji-Hun Kim in arXiv:1011.1493.
50
///
51
/// To tag a fat jet, the tagger proceeds as follows:
52
///
53
/// - boost its constituents into the rest frame of the jet
54
///
55
/// - recluster them using another jet definition (the original
56
/// choice was SISCone in spherical coordinates with R=0.6 and
57
/// f=0.75.
58
///
59
/// - keep the 2 most energetic subjets (\f$q_{1,2}\f$) and compute
60
/// the 2-subjettiness
61
/// \f[
62
/// \tau_2^j = \frac{2}{m_{\rm jet}^2}\,
63
/// \sum_{k\in {\rm jet}} {\rm min}(q_1.p_k,q_2.p_k)
64
/// \f]
65
/// where the sum runs over the constituents of the jet.
66
///
67
/// - require \f$\tau_2^j < \tau_2^{\rm cut}\f$ [0.08 by default]
68
///
69
/// - impose that (in the rest frame of the fat jet), the angles
70
/// between the 2 most energetic subjets and the boost axis are
71
/// both large enough: \f$\cos(\theta_s)<c_\theta^{\rm cut}\f$
72
/// [0.8 by default]
73
///
74
/// Note that in the original version, the jets to be tagged were reconstructed
75
/// using SISCone with R=0.8 and f=0.75. Also, b-tagging was imposed
76
/// on the 2 subjets found in the rest-frame tagging procedure.
77
///
78
/// \section desc Options
79
///
80
/// The constructor has the following arguments:
81
/// - The first argument is the jet definition to be used to
82
/// recluster the constituents of the jet to be filtered (in the
83
/// rest frame of the tagged jet).
84
/// - The second argument is the cut on tau_2 [0.08 by default]
85
/// - The 3rd argument is the cut on cos(theta_s) [0.8 by default]
86
/// - If the 4th argument is true, 2 exclusive rest-frame jets will
87
/// be considered in place of the 2 most energetic inclusive jets
88
///
89
/// \section input Input conditions
90
///
91
/// - the original jet must have constituents
92
///
93
/// \section output Output/structure
94
///
95
/// - the 2 subjets are kept as pieces if some substructure is found,
96
/// otherwise a single 0-momentum piece
97
/// - the tau2 and maximal cos(theta_s) values computed during the
98
/// tagging can be obtained via the resulting jet's structure_of<...>()
99
/// function
100
///
101
class
RestFrameNSubjettinessTagger
:
public
Transformer
{
102
public
:
103
/// ctor with arguments (see the class description above)
104
RestFrameNSubjettinessTagger
(
const
JetDefinition
subjet_def,
105
const
double
tau2cut=0.08,
106
const
double
costhetascut=0.8,
107
const
bool
use_exclusive =
false
)
108
: _subjet_def(subjet_def), _t2cut(tau2cut), _costscut(costhetascut),
109
_use_exclusive(use_exclusive){};
110
111
/// returns a textual description of the tagger
112
virtual
std::string description()
const
;
113
114
/// runs the tagger on the given jet and
115
/// returns the tagged PseudoJet if successful, a PseudoJet==0 otherwise
116
/// (standard access is through operator()).
117
virtual
PseudoJet
result(
const
PseudoJet
& jet)
const
;
118
119
/// the type of Structure returned
120
typedef
RestFrameNSubjettinessTaggerStructure
StructureType
;
121
122
protected
:
123
JetDefinition
_subjet_def;
124
double
_t2cut, _costscut;
125
bool
_use_exclusive;
126
};
127
128
129
//------------------------------------------------------------------------
130
/// @ingroup tools_taggers
131
/// \class RestFrameNSubjettinessTaggerStructure
132
/// the structure returned by the RestFrameNSubjettinessTagger transformer.
133
///
134
/// See the RestFrameNSubjettinessTagger class description for the details of
135
/// what is inside this structure
136
///
137
class
RestFrameNSubjettinessTaggerStructure
:
public
CompositeJetStructure
{
138
public
:
139
/// ctor with pieces initialisation
140
RestFrameNSubjettinessTaggerStructure
(
const
std::vector<PseudoJet> & pieces_in) :
141
CompositeJetStructure
(pieces_in),
_tau2
(0.0),
_costhetas
(1.0){}
142
143
/// returns the associated N-subjettiness
144
inline
double
tau2
()
const
{
return
_tau2
;}
145
146
/// returns the associated angle with the boosted axis
147
inline
double
costhetas
()
const
{
return
_costhetas
;}
148
149
// /// returns the original jet (before tagging)
150
// const PseudoJet & original() const {return _original_jet;}
151
152
protected
:
153
double
_tau2
;
///< the value of the N-subjettiness
154
double
_costhetas
;
///< the minimal angle between the dijets
155
///< and the boost axis
156
// PseudoJet _original_jet; ///< the original jet (before tagging)
157
158
// allow the tagger to set these
159
friend
class
RestFrameNSubjettinessTagger;
160
};
161
162
FASTJET_END_NAMESPACE
163
#endif
// __FASTJET_RESTFRAMENSUBJETTINESS_TAGGER_HH__
164
fastjet::CompositeJetStructure::CompositeJetStructure
CompositeJetStructure()
default ctor
Definition
CompositeJetStructure.hh:54
fastjet::JetDefinition
class that is intended to hold a full definition of the jet clusterer
Definition
JetDefinition.hh:257
fastjet::PseudoJet
Class to contain pseudojets, including minimal information of use to jet-clustering routines.
Definition
PseudoJet.hh:68
fastjet::RestFrameNSubjettinessTaggerStructure
the structure returned by the RestFrameNSubjettinessTagger transformer.
Definition
RestFrameNSubjettinessTagger.hh:137
fastjet::RestFrameNSubjettinessTaggerStructure::_costhetas
double _costhetas
the minimal angle between the dijets and the boost axis
Definition
RestFrameNSubjettinessTagger.hh:154
fastjet::RestFrameNSubjettinessTaggerStructure::tau2
double tau2() const
returns the associated N-subjettiness
Definition
RestFrameNSubjettinessTagger.hh:144
fastjet::RestFrameNSubjettinessTaggerStructure::costhetas
double costhetas() const
returns the associated angle with the boosted axis
Definition
RestFrameNSubjettinessTagger.hh:147
fastjet::RestFrameNSubjettinessTaggerStructure::_tau2
double _tau2
the value of the N-subjettiness
Definition
RestFrameNSubjettinessTagger.hh:153
fastjet::RestFrameNSubjettinessTaggerStructure::RestFrameNSubjettinessTaggerStructure
RestFrameNSubjettinessTaggerStructure(const std::vector< PseudoJet > &pieces_in)
ctor with pieces initialisation
Definition
RestFrameNSubjettinessTagger.hh:140
fastjet::RestFrameNSubjettinessTagger::StructureType
RestFrameNSubjettinessTaggerStructure StructureType
the type of Structure returned
Definition
RestFrameNSubjettinessTagger.hh:120
fastjet::RestFrameNSubjettinessTagger::RestFrameNSubjettinessTagger
RestFrameNSubjettinessTagger(const JetDefinition subjet_def, const double tau2cut=0.08, const double costhetascut=0.8, const bool use_exclusive=false)
ctor with arguments (see the class description above)
Definition
RestFrameNSubjettinessTagger.hh:104
fastjet::Transformer::Transformer
Transformer()
default ctor
Definition
Transformer.hh:74
Generated on
for FastJet by
1.18.0