Changeset 973b92a in git for external/fastjet/contribs/Nsubjettiness/README
- Timestamp:
- Oct 9, 2015, 2:47:38 PM (9 years ago)
- Branches:
- ImprovedOutputFile, Timing, dual_readout, llp, master
- Children:
- 8713dee
- Parents:
- f118021
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
external/fastjet/contribs/Nsubjettiness/README
rf118021 r973b92a 15 15 New in v2.0 is the winner-take-all axis, which is described in: 16 16 17 Jet Observables Without Jet Algorithms. 18 Daniele Bertolini, Tucker Chan, and Jesse Thaler. 19 JHEP 1404:013 (2014), arXiv:1310.7584. 20 17 21 Jet Shapes with the Broadening Axis. 18 22 Andrew J. Larkoski, Duff Neill, and Jesse Thaler. 19 23 JHEP 1404:017 (2014), arXiv:1401.2158. 20 24 21 as well as in unpublished work by Gavin Salam. 25 Unpublished work by Gavin Salam 26 27 New in v2.2 are new measures used in the XCone jet algorithm, described in: 28 29 XCone: N-jettiness as an Exclusive Cone Jet Algorithm. 30 Iain W. Stewart, Frank J. Tackmann, Jesse Thaler, 31 Christopher K. Vermilion, and Thomas F. Wilkason. 32 arXiv:1508.01516. 33 34 Resolving Boosted Jets with XCone. 35 Jesse Thaler and Thomas F. Wilkason. 36 arXiv:1508.01518. 22 37 23 38 -------------------------------------------------------------------------------- … … 29 44 30 45 Nsubjettiness [Nsubjettiness.hh]: 31 A FunctionOfPseudoJet<double> interface to measure N-subjettiness 46 A FunctionOfPseudoJet<double> interface to measure the 47 N-subjettiness jet shape 32 48 (Recommended for most users) 49 33 50 NsubjettinessRatio [Nsubjettiness.hh]: 34 51 A FunctionOfPseudoJet<double> interface to measure ratios of 35 52 two different N-subjettiness (i.e. tau3/tau2) 53 (Recommended for most users) 54 55 XConePlugin [XConePlugin.hh]: 56 A FastJet plugin for using the XCone jet algorithm. 57 (Recommended for most users) 58 36 59 NjettinessPlugin [NjettinessPlugin.hh]: 37 A FastJet plugin for finding jets by minimizing N-jettiness 38 (Recommended for advanced users) 60 A FastJet plugin for finding jets by minimizing N-jettiness. 61 Same basic philosophy as XCone, but many more options. 62 (Recommended for advanced users only.) 63 39 64 Njettiness [Njettiness.hh]: 40 65 Access to the core Njettiness code. 41 66 (Not recommended for users, since the interface might change) 42 67 43 The code assumes that you have FastJet 3 .68 The code assumes that you have FastJet 3, but does not (yet) require FastJet 3.1 44 69 45 70 -------------------------------------------------------------------------------- … … 64 89 // N and M give tau_N / tau_M, all other options the same 65 90 91 For example, if you just want the tau_2/tau_1 value of a jet, using recommended 92 parameter choices, do this: 93 94 PseudoJet this_jet = /*from your favorite jet algorithm*/; 95 double beta = 1.0; 96 NsubjettinessRatio nSub21(2,1, 97 OnePass_WTA_KT_Axes(), 98 UnnormalizedMeasure(beta)); 99 double tau21 = nSub21(this_jet); 100 66 101 -------------------------------------------------------------------------------- 67 102 AxesDefinition [NjettinessDefinition.hh] … … 72 107 recommended. Arguments in parentheses are parameters that the user must set. 73 108 74 Axes can be found using standard recursive clustering procedures. New is the 75 option 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 82 One can also run a minimization routine to find a (local) minimum of 83 N-(sub)jettiness: 109 Axes can be found using standard recursive clustering procedures. New in v2 is 110 the option to use the "winner-take-all" recombination scheme: 111 (*) KT_Axes // exclusive kt axes 112 CA_Axes // exclusive ca axes 113 AntiKT_Axes(R0) // inclusive hardest axes with antikt, R0 = radius 114 (*) WTA_KT_Axes // exclusive kt with winner-take-all recombination 115 WTA_CA_Axes // exclusive ca with winner-take-all recombination 116 117 New in v2.2 are generalized recombination/clustering schemes: 118 GenET_GenKT_Axes(delta, p, R0 = inf) 119 WTA_GenKT_Axes(p, R0 = inf) 120 GenKT_Axes(p, R0 = inf) 121 Here, delta > 0 labels the generalized ET recombination scheme (delta = 1 for 122 standard ET scheme, delta = 2 for ET^2 scheme, delta = infinity for WTA scheme) 123 p >= 0 labels the generalized KT clustering metric (p = 0 for ca, p = 1 for kt), 124 R0 is the radius parameter, and the clustering is run in exclusive mode. The 125 GenKT_Axes mode uses standard E-scheme recombination. By default the value of 126 R0 is set to "infinity", namely fastjet::JetDefinition::max_allowable_R. 127 128 Also new in v2.2 is option of identifying nExtra axes through exclusive 129 clustering and then looking at all (N + nExtra) choose N axes and finding the 130 one that gives the smallest N-(sub)jettiness value: 131 Comb_GenET_GenKT_Axes(nExtra, delta, p, R0 = inf) 132 Comb_WTA_GenKT_Axes(nExtra, p, R0 = inf) 133 Comb_GenKT_Axes(nExtra, p, R0 = inf) 134 These modes are not recommended for reasons of speed. 135 136 Starting from any set of seed axes, one can run a minimization routine to find 137 a (local) minimum of N-(sub)jettiness. Note that the one-pass minimization 138 routine is tied to the choice of MeasureDefinition. 84 139 (*) OnePass_KT_Axes // one-pass minimization from kt starting point 85 140 OnePass_CA_Axes // one-pass min. from ca starting point … … 87 142 (*) OnePass_WTA_KT_Axes // one-pass min. from wta_kt starting point 88 143 OnePass_WTA_CA_Axes // one-pass min. from wta_ca starting point 89 90 In general, it is difficult to finding the global minimum, but this mode 91 attempts to do so 92 MultiPass_Axes(Npass) // axes that (attempt to) minimize N-subjettiness 93 // (NPass = 100 is typical) 144 OnePass_GenET_GenKT_Axes(delta, p, R0 = inf) // one-pass min. from GenET/KT 145 OnePass_WTA_GenKT_Axes(p, R0 = inf) // one-pass min from WTA/GenKT 146 OnePass_GenKT_Axes(p, R0 = inf) // one-pass min from GenKT 147 148 For one-pass minimization, OnePass_CA_Axes and OnePass_WTA_CA_Axes are not 149 recommended as they provide a poor choice of seed axes. 150 151 In general, it is difficult to find the global minimum, but this mode attempts 152 to do so: 153 MultiPass_Axes(NPass) // axes that (attempt to) minimize N-subjettiness 154 // (NPass = 100 is typical) 155 This does multi-pass minimization from KT_Axes starting points. 94 156 95 157 Finally, 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 158 Manual_Axes // set your own axes with setAxes() 159 OnePass_Manual_Axes // one-pass minimization from manual starting point 160 MultiPass_Manual_Axes(Npass) // multi-pass min. from manual 161 162 If one wants to change the number of passes used by any of the axes finders, one 163 can call the function 164 setNPass(NPass,nAttempts,accuracy,noise_range) 165 where NPass = 0 only uses the seed axes, NPass = 1 is one-pass minimization, and 166 NPass = 100 is the default multi-pass. nAttempts is the number of iterations to 167 use in each pass, accuracy is how close to the minimum one tries to get, and 168 noise_range is how much in rapidity/azimuth the random axes are jiggled. 98 169 99 170 For most cases, running with OnePass_KT_Axes or OnePass_WTA_KT_Axes gives 100 171 reasonable results (and the results are IRC safe). Because it uses random 101 number seeds, MultiPass_Axes is not IRC safe (and the code is rather slow). Note102 that for the minimization routines, beta = 1.1 is faster than beta = 1, with 103 comparable performance.172 number seeds, MultiPass_Axes is not IRC safe (and the code is rather slow). 173 Note that for the minimization routines, beta = 1.1 is faster than beta = 1, 174 with comparable performance. 104 175 105 176 -------------------------------------------------------------------------------- … … 107 178 -------------------------------------------------------------------------------- 108 179 109 At the moment, there are only a few measures. Note that each one has a 110 different number of parameters. The one indicated by (*) 111 is the one recommended for use by users new to Nsubjettiness. 180 The value of N-(sub)jettiness depends crucially on the choice of measure. Each 181 measure has a different number of parameters, so one has to be careful when 182 switching between measures The one indicated by (*) is the one recommended for 183 use by users new to Nsubjettiness. 112 184 113 185 The original N-subjettiness measures are: … … 122 194 UnnormalizedCutoffMeasure(beta,Rcutoff) //unnormalized measure with 123 195 //additional Rcutoff 124 125 In beta testing are "geometric" measures where distances are measured using the 126 Lorentz dot product (N.B. the formula for the geometric measure is likely to 127 change 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 196 197 For all of the above measures, there is an optional argument to change from the 198 ordinary pt_R distance measure recommended for pp collisions to an 199 E_theta distance measure recommended for ee collisions. There are also 200 lorentz_dot and perp_lorentz_dot distance measures recommended only for 201 advanced users. 202 203 New for v2.2 is a set of measures defined in arXiv:1508.01516. First, there is 204 the "conical measure": 205 206 ConicalMeasure(beta,R0) // same jets as UnnormalizedCutoffMeasure 207 // but differs in normalization and specifics 208 // of one-pass minimization 209 210 Next, there is the geometric measure (as well as a modified version to yield 211 more conical jet regions): 212 213 OriginalGeometricMeasure(R) // not recommended for analysis 214 ModifiedGeometricMeasure(R) 215 216 (Prior to v2.2, there was a "GeometricMeasure" which unfortunately had the wrong 217 definition. These have been commented out in the code as 218 "DeprecatedGeometricMeasure" and "DeprecatedGeometricCutoffMeasure", but they 219 should not be used.) 220 221 Next, there is a "conical geometric" measure: 222 223 ConicalGeometricMeasure(beta, gamma, Rcutoff) 224 225 This is a hybrid between the conical and geometric measures and is the basis for 226 the XCone jet algorithm. Finally, setting to the gamma = 1 default gives the 227 XCone default measure, which is used in the XConePlugin jet finder 228 229 (*) XConeMeasure(beta,Rcutoff) 230 231 where beta = 2 is the recommended default value and beta = 1 is the recoil-free 232 default. 130 233 131 234 -------------------------------------------------------------------------------- … … 138 241 139 242 beta = 1: aka broadening/girth/width measure 243 the axes behave like the "median" in that they point to the hardest cluster 140 244 wta_kt_axes are approximately the same as minimizing beta = 1 measure 141 245 142 246 beta = 2: aka thrust/mass measure 247 the axes behave like the "mean" in that they point along the jet momentum 143 248 kt_axes are approximately the same as minimizing beta = 2 measure 144 249 … … 149 254 150 255 -------------------------------------------------------------------------------- 151 TauComponents [MeasureFunction.hh] 152 -------------------------------------------------------------------------------- 153 154 For most users, they will only need the value of N-subjettiness (i.e. tau) 155 itself. For advanced users, they can access individual tau components (i.e. 156 the 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 -------------------------------------------------------------------------------- 163 WinnerTakeAllRecombiner [WinnerTakeAllRecombiner.hh] 164 -------------------------------------------------------------------------------- 165 166 New for version 2.0 of Nsubjettiness are winner-take-all axes. They are found 167 with the help of the WinnerTakeAllRecombiner. This class defines a new 168 recombination scheme for clustering particles. This scheme recombines two 169 PseudoJets into a PseudoJet with pT of the sum of the two input PseudoJet pTs 170 and direction of the harder PseudoJet. This is a "recoil-free" recombination 171 scheme that guarantees that the axes is aligned with one of the input particles. 172 It is IRC safe. Axes found with the standard E-scheme recombiner at similar to 173 the beta = 2 minimization, while winner-take-all is similar to the beta = 1 174 measure. 175 176 Note that the WinnerTakeAllRecombiner can be used outside of Nsubjettiness 177 itself for jet finding. For example, the direction of anti-kT jets found 178 with the WinnerTakeAllRecombiner is particularly robust against soft jet 179 contamination. 256 XConePlugin [XConePlugin.hh] 257 -------------------------------------------------------------------------------- 258 259 The XCone FastJet plugin is an exclusive cone jet finder which yields a 260 fixed N number of jets which approximately conical boundaries. The algorithm 261 finds N axes, and jets are simply the sum of particles closest to a given axis 262 (or unclustered if they are closest to the beam). Unlike the NjettinessPlugin 263 below, the user is restricted to using the XConeMeasure. 264 265 XConePlugin plugin(N,R,beta=2); 266 JetDefinition def(&plugin); 267 ClusterSequence cs(vector<PseudoJet>,def); 268 vector<PseudoJet> jets = cs.inclusive_jets(); 269 270 Note that despite being an exclusive jet algorithm, one finds the jets using the 271 inclusive_jets() call. 272 273 The AxesDefinition and MeasureDefinition are defaulted in this measure to 274 OnePass_GenET_GenKT_Axes and XConeMeasure, respectively. The parameters chosen 275 for the OnePass_GenET_GenKT_Axes are defined according to the chosen value of 276 beta as delta = 1/(beta - 1) and p = 1/beta. These have been shown to give the 277 optimal choice of seed axes. The R value for finding the axes is chosen to be 278 the same as the R for the jet algorithm, although in principle, these two radii 279 could be different. 280 281 N.B.: The order of the R, beta arguments is *reversed* from the XConeMeasure 282 itself, since this ordering is the more natural one to use for Plugins. We 283 apologize in advance for any confusion this might cause. 180 284 181 285 -------------------------------------------------------------------------------- … … 183 287 -------------------------------------------------------------------------------- 184 288 185 The Njettiness FastJet plugin represents an exclusive jet finder (yielding a 186 fixed N number of jets). The algorithm finds N axes, and jets are simply the sum 187 of particles closest to a given axis (or unclustered if they are closest to the 188 beam). The axes finding methods and measures are the same as for Nsubjettiness. 289 Same as the XConePlugin, but the axes finding methods and measures are the same 290 as for Nsubjettiness, allowing more flexibility. 189 291 190 292 NjettinessPlugin plugin(N, AxesDefinition, MeasureDefinition); … … 193 295 vector<PseudoJet> jets = cs.inclusive_jets(); 194 296 195 Note that despite being an exclusive jet algorithm, one finds the jets using the196 inclusive_jets() call.197 198 297 -------------------------------------------------------------------------------- 199 298 Very Advanced Usage: Njettiness [Njettiness.hh] … … 202 301 Most users will want to use the Nsubjettiness or NjettinessPlugin classes to 203 302 access N-(sub)jettiness information. For direct access to the Njettiness class, 204 one can use Njettiness.hh directly. This class is still evolving, so users who 205 wish to extend its functionality should contact the authors first. 303 one can use Njettiness.hh directly. This class is in constant evolution, so 304 users who wish to extend its functionality should contact the authors first. 305 306 -------------------------------------------------------------------------------- 307 TauComponents [MeasureDefinition.hh] 308 -------------------------------------------------------------------------------- 309 310 For most users, they will only need the value of N-subjettiness (i.e. tau) 311 itself. For advanced users, they can access individual tau components (i.e. 312 the individual numerator pieces, the denominator, etc.) 313 314 TauComponents tauComp = nSub.component_result(jet); 315 vector<double> numer = tauComp.jet_pieces_numerator(); //tau for each subjet 316 double denom = tauComp.denominator(); //normalization factor 317 318 -------------------------------------------------------------------------------- 319 Extra Recombiners [ExtraRecombiners.hh] 320 -------------------------------------------------------------------------------- 321 322 New in v2.0 are winner-take-all axes. (These have now been included in 323 FastJet 3.1, but we have left the code here to allow the plugin to work under 324 FJ 3.0). These axes are found with the help of the WinnerTakeAllRecombiner. 325 This class defines a new recombination scheme for clustering particles. This 326 scheme recombines two PseudoJets into a PseudoJet with pT of the sum of the two 327 input PseudoJet pTs and direction of the harder PseudoJet. This is a 328 "recoil-free" recombination scheme that guarantees that the axes is aligned with 329 one of the input particles. It is IRC safe. Axes found with the standard 330 E-scheme recombiner at similar to the beta = 2 minimization, while 331 winner-take-all is similar to the beta = 1 measure. 332 333 New in v2.2 is the GeneralEtSchemeRecombiner, as defined in arxiv:1506.XXXX. 334 This functions similarly to the Et-scheme defined in Fastjet, but the reweighting 335 of the sum of rap and phi is parameterized by an exponent delta. Thus, delta = 1 336 is the normal Et-scheme recombination, delta = 2 is Et^2 recombination, and 337 delta = infinity is the winner-take-all recombination. This recombination scheme 338 is used in GenET_GenKT_Axes, and we find that optimal seed axes for minimization 339 can be found by using delta = 1/(beta - 1). 340 341 Note that the WinnerTakeAllRecombiner can be used outside of Nsubjettiness 342 itself for jet finding. For example, the direction of anti-kT jets found 343 with the WinnerTakeAllRecombiner is particularly robust against soft jet 344 contamination. That said, this functionality is now included in FJ 3.1, so this 345 code is likely to be deprecated in a future version. 206 346 207 347 -------------------------------------------------------------------------------- … … 213 353 N-(sub)jettiness: 214 354 215 Axes Finder.hh:216 217 The Axes Finderclass (and derived classes) defines the axes used in the355 AxesDefinition.hh: 356 357 The AxesDefinition class (and derived classes) defines the axes used in the 218 358 calculation of N-(sub)jettiness. These axes can be defined from the exclusive 219 359 jets from a kT or CA algorithm, the hardest jets from an anti-kT algorithm, … … 223 363 AxesDefinition. 224 364 225 Measure Function.hh:226 227 The Measure Function class (and derived classes) defines the measure by which365 MeasureDefinition.hh: 366 367 The MeasureDefinition class (and derived classes) defines the measure by which 228 368 N-(sub)jettiness is calculated. This measure is calculated between each 229 369 particle and its corresponding axis, and then summed and normalized to … … 232 372 and its axis, and beta is the angular exponent. Again, in the future the user 233 373 will be able to write their own measures, but for the time being, only the 234 predefined MeasureDefinition values should be used. 374 predefined MeasureDefinition values should be used. Note that the one-pass 375 minimization algorithms are defined within MeasureDefinition, since they are 376 measure specific. 235 377 236 378 -------------------------------------------------------------------------------- … … 240 382 -- The MultiPass_Axes mode gives different answers on different runs, since 241 383 random numbers are used. 242 -- In rare cases, one pass minimization can give a larger value of Njettiness 243 than without minimization. 384 -- For the default measures, in rare cases, one pass minimization can give a 385 larger value of Njettiness than without minimization. The reason is due 386 to the fact that axes in default measure are not defined as light-like 244 387 -- Nsubjettiness is not thread safe, since there are mutables in Njettiness. 388 -- If the AxesDefinition does not find N axes, then it adds zero vectors to the 389 list of axes to get the total up to N. This can lead to unpredictable 390 results (including divide by zero issues), and a warning is thrown to alert 391 the user. 392 393 -------------------------------------------------------------------------------- 394 --------------------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.