Fork me on GitHub

source: git/external/fastjet/contribs/Nsubjettiness/README@ e33e6db

Last change on this file since e33e6db was 35cdc46, checked in by Pavel Demin <demin@…>, 10 years ago

upgrade FastJet to version 3.1.0-beta.1, upgrade Nsubjettiness to version 2.1.0, add SoftKiller version 1.0.0

  • Property mode set to 100644
File size: 11.6 KB
RevLine 
[35cdc46]1--------------------------------------------------------------------------------
2Nsubjettiness Package
3--------------------------------------------------------------------------------
4
5The Nsubjettiness package is based on the physics described in:
6
7 Identifying Boosted Objects with N-subjettiness.
8 Jesse Thaler and Ken Van Tilburg.
9 JHEP 1103:015 (2011), arXiv:1011.2268.
10
11 Maximizing Boosted Top Identification by Minimizing N-subjettiness.
12 Jesse Thaler and Ken Van Tilburg.
13 JHEP 1202:093 (2012), arXiv:1108.2701.
14
15New in v2.0 is the winner-take-all axis, which is described in:
16
17 Jet Shapes with the Broadening Axis.
18 Andrew J. Larkoski, Duff Neill, and Jesse Thaler.
19 JHEP 1404:017 (2014), arXiv:1401.2158.
20
21as well as in unpublished work by Gavin Salam.
22
23--------------------------------------------------------------------------------
24Core Classes
25--------------------------------------------------------------------------------
26
27There are various ways to access N-(sub)jettiness variables, described
28in more detail below:
29
30Nsubjettiness [Nsubjettiness.hh]:
31 A FunctionOfPseudoJet<double> interface to measure N-subjettiness
32 (Recommended for most users)
33NsubjettinessRatio [Nsubjettiness.hh]:
34 A FunctionOfPseudoJet<double> interface to measure ratios of
35 two different N-subjettiness (i.e. tau3/tau2)
36NjettinessPlugin [NjettinessPlugin.hh]:
37 A FastJet plugin for finding jets by minimizing N-jettiness
38 (Recommended for advanced users)
39Njettiness [Njettiness.hh]:
40 Access to the core Njettiness code.
41 (Not recommended for users, since the interface might change)
42
43The code assumes that you have FastJet 3.
44
45--------------------------------------------------------------------------------
46Basic Usage: Nsubjettiness and NsubjettinessRatio [Nsubjettiness.hh]
47--------------------------------------------------------------------------------
48
49Most users will only need to use the Nsubjettiness class. The basic
50functionality is given by:
51
52 Nsubjettiness nSub(N, AxesDefinition, MeasureDefinition)
53 // N specifies the number of (sub) jets to measure
54 // AxesDefinition is WTA_KT_Axes, OnePass_KT_Axes, etc.
55 // MeasureDefinition is UnnormalizedMeasure(beta),
56 // NormalizedMeasure(beta,R0), etc.
57
58 // get tau value
59 double tauN = nSub.result(PseudoJet);
60
61Also available are ratios of N-subjettiness values
62 NsubjettinessRatio nSubRatio(N, M, AxesDefinition,
63 MeasureDefinition)
64 // N and M give tau_N / tau_M, all other options the same
65
66--------------------------------------------------------------------------------
67AxesDefinition [NjettinessDefinition.hh]
68--------------------------------------------------------------------------------
69
70N-(sub)jettiness requires choosing axes as well as a measure (see below). There
71are a number of axes choices available to the user, though modes with a (*) are
72recommended. Arguments in parentheses are parameters that the user must set.
73
74Axes can be found using standard recursive clustering procedures. New is the
75option to use the "winner-take-all" recombination scheme:
76(*) KT_Axes // exclusive kt axes
77 CA_Axes // exclusive ca axes
78 AntiKT_Axes(R0) // inclusive hardest axes with antikt, R0 = radius
79(*) WTA_KT_Axes // exclusive kt with winner-take-all recombination
80 WTA_CA_Axes // exclusive ca with winner-take-all recombination
81
82One can also run a minimization routine to find a (local) minimum of
83N-(sub)jettiness:
84(*) OnePass_KT_Axes // one-pass minimization from kt starting point
85 OnePass_CA_Axes // one-pass min. from ca starting point
86 OnePass_AntiKT(R0) // one-pass min. from antikt starting point,R0=rad
87(*) OnePass_WTA_KT_Axes // one-pass min. from wta_kt starting point
88 OnePass_WTA_CA_Axes // one-pass min. from wta_ca starting point
89
90In general, it is difficult to finding the global minimum, but this mode
91attempts to do so
92 MultiPass_Axes(Npass) // axes that (attempt to) minimize N-subjettiness
93 // (NPass = 100 is typical)
94
95Finally, one can set manual axes:
96 Manual_Axes // set your own axes with setAxes()
97 OnePass_Manual_Axes // one-pass minimization from manual starting point
98
99For most cases, running with OnePass_KT_Axes or OnePass_WTA_KT_Axes gives
100reasonable results (and the results are IRC safe). Because it uses random
101number seeds, MultiPass_Axes is not IRC safe (and the code is rather slow). Note
102that for the minimization routines, beta = 1.1 is faster than beta = 1, with
103comparable performance.
104
105--------------------------------------------------------------------------------
106MeasureDefinition [NjettinessDefinition.hh]
107--------------------------------------------------------------------------------
108
109At the moment, there are only a few measures. Note that each one has a
110different number of parameters. The one indicated by (*)
111is the one recommended for use by users new to Nsubjettiness.
112
113The original N-subjettiness measures are:
114 NormalizedMeasure(beta,R0) //default normalized measure with
115 //parameters beta and R0 (dimensionless)
116(*) UnnormalizedMeasure(beta) //default unnormalized measure with just
117 //parameter beta (dimensionful)
118
119There are also measures that incorporate a radial cutoff:
120 NormalizedCutoffMeasure(beta,R0,Rcutoff) //normalized measure with
121 //additional Rcutoff
122 UnnormalizedCutoffMeasure(beta,Rcutoff) //unnormalized measure with
123 //additional Rcutoff
124
125In beta testing are "geometric" measures where distances are measured using the
126Lorentz dot product (N.B. the formula for the geometric measure is likely to
127change since there should be separate beam and jet beta factors.)
128 GeometricMeasure(beta) //geometric measure with exponent beta
129 GeometricCutoffMeasure(beta,Rcutoff) //geometric measure with Rcutoff
130
131--------------------------------------------------------------------------------
132A note on beta dependence
133--------------------------------------------------------------------------------
134
135The angular exponent in N-subjettiness is called beta. The original
136N-subjettiness paper advocated beta = 1, but it is now understood that different
137beta values can be useful in different contexts. The two main choices are:
138
139beta = 1: aka broadening/girth/width measure
140 wta_kt_axes are approximately the same as minimizing beta = 1 measure
141
142beta = 2: aka thrust/mass measure
143 kt_axes are approximately the same as minimizing beta = 2 measure
144
145N.B. The minimization routines are only valid for 1 < beta < 3.
146
147For quark/gluon discrimination with N = 1, beta~0.2 with wta_kt_axes appears
148to be a good choice.
149
150--------------------------------------------------------------------------------
151TauComponents [MeasureFunction.hh]
152--------------------------------------------------------------------------------
153
154For most users, they will only need the value of N-subjettiness (i.e. tau)
155itself. For advanced users, they can access individual tau components (i.e.
156the individual numerator pieces, the denominator, etc.)
157
158 TauComponents tauComp = nSub.component_result(jet);
159 vector<double> numer = tauComp.jet_pieces_numerator(); //tau for each subjet
160 double denom = tauComp.denominator(); //normalization factor
161
162--------------------------------------------------------------------------------
163WinnerTakeAllRecombiner [WinnerTakeAllRecombiner.hh]
164--------------------------------------------------------------------------------
165
166New for version 2.0 of Nsubjettiness are winner-take-all axes. They are found
167with the help of the WinnerTakeAllRecombiner. This class defines a new
168recombination scheme for clustering particles. This scheme recombines two
169PseudoJets into a PseudoJet with pT of the sum of the two input PseudoJet pTs
170and direction of the harder PseudoJet. This is a "recoil-free" recombination
171scheme that guarantees that the axes is aligned with one of the input particles.
172It is IRC safe. Axes found with the standard E-scheme recombiner at similar to
173the beta = 2 minimization, while winner-take-all is similar to the beta = 1
174measure.
175
176Note that the WinnerTakeAllRecombiner can be used outside of Nsubjettiness
177itself for jet finding. For example, the direction of anti-kT jets found
178with the WinnerTakeAllRecombiner is particularly robust against soft jet
179contamination.
180
181--------------------------------------------------------------------------------
182Advanced Usage: NjettinessPlugin [NjettinessPlugin.hh]
183--------------------------------------------------------------------------------
184
185The Njettiness FastJet plugin represents an exclusive jet finder (yielding a
186fixed N number of jets). The algorithm finds N axes, and jets are simply the sum
187of particles closest to a given axis (or unclustered if they are closest to the
188beam). The axes finding methods and measures are the same as for Nsubjettiness.
189
190 NjettinessPlugin plugin(N, AxesDefinition, MeasureDefinition);
191 JetDefinition def(&plugin);
192 ClusterSequence cs(vector<PseudoJet>,def);
193 vector<PseudoJet> jets = cs.inclusive_jets();
194
195Note that despite being an exclusive jet algorithm, one finds the jets using the
196inclusive_jets() call.
197
198--------------------------------------------------------------------------------
199Very Advanced Usage: Njettiness [Njettiness.hh]
200--------------------------------------------------------------------------------
201
202Most users will want to use the Nsubjettiness or NjettinessPlugin classes to
203access N-(sub)jettiness information. For direct access to the Njettiness class,
204one can use Njettiness.hh directly. This class is still evolving, so users who
205wish to extend its functionality should contact the authors first.
206
207--------------------------------------------------------------------------------
208Technical Details
209--------------------------------------------------------------------------------
210
211In general, the user will never need access to these header files. Here is a
212brief description about how they are used to help the calculation of
213N-(sub)jettiness:
214
215AxesFinder.hh:
216
217The AxesFinder class (and derived classes) defines the axes used in the
218calculation of N-(sub)jettiness. These axes can be defined from the exclusive
219jets from a kT or CA algorithm, the hardest jets from an anti-kT algorithm,
220manually, or from minimization of N-jettiness. In the future, the user will be
221able to write their own axes finder, though currently the interface is still
222evolving. At the moment, the user should stick to the options allowed by
223AxesDefinition.
224
225MeasureFunction.hh:
226
227The MeasureFunction class (and derived classes) defines the measure by which
228N-(sub)jettiness is calculated. This measure is calculated between each
229particle and its corresponding axis, and then summed and normalized to
230produce N-(sub)jettiness. The default measure for this calculation is
231pT*dR^beta, where dR is the rapidity-azimuth distance between the particle
232and its axis, and beta is the angular exponent. Again, in the future the user
233will be able to write their own measures, but for the time being, only the
234predefined MeasureDefinition values should be used.
235
236--------------------------------------------------------------------------------
237Known Issues
238--------------------------------------------------------------------------------
239
240-- The MultiPass_Axes mode gives different answers on different runs, since
241 random numbers are used.
242-- In rare cases, one pass minimization can give a larger value of Njettiness
243 than without minimization.
244-- Nsubjettiness is not thread safe, since there are mutables in Njettiness.
Note: See TracBrowser for help on using the repository browser.