Changeset b7b836a in git for external/fastjet/contribs/RecursiveTools/README
- Timestamp:
- Jun 6, 2018, 10:05:10 PM (7 years ago)
- Branches:
- ImprovedOutputFile, Timing, dual_readout, llp, master
- Children:
- 17d0ab8
- Parents:
- 95e6b7a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
external/fastjet/contribs/RecursiveTools/README
r95e6b7a rb7b836a 17 17 Marzani, Gregory Soyez, Jesse Thaler 18 18 19 - RecursiveSoftDrop 20 - BottomUpSoftDrop 21 This corresponds to arXiv:1804.03657 by Frederic Dreyer, Lina 22 Necib, Gregory Soyez and Jesse Thaler 23 24 - IteratedSoftDrop 25 This corresponds to arXiv:1704.06266 by Christopher Frye, Andrew J. 26 Larkoski, Jesse Thaler, Kevin Zhou 27 19 28 - Recluster 20 29 A generic tool to recluster a given jet into subjets 21 Note: this is largely based on the Filter code in FastJet v3.0 and 22 ultimately, this tool will probably be moved into FastJet 30 Note: a Recluster class is available natively in FastJet since v3.1. 31 Users are therefore encouraged to use the FastJet version 32 rather than this one which is mostly provided for 33 compatibility of this contrib with older versions of FastJet. 23 34 24 35 The interface for these tools is described in more detail below, with … … 74 85 75 86 The SoftDrop procedure is very similar to mMDT, albeit with a 76 generali zed symmetry condition:87 generalised symmetry condition: 77 88 78 89 z > z_cut * (R / R0)^beta … … 108 119 109 120 ------------------------------------------------------------------------ 121 RecursiveSoftDrop 122 ------------------------------------------------------------------------ 123 124 The RecursiveSoftDrop procedure applies the Soft Drop procedure N times 125 in a jet in order to find up to N+1 prongs. N=0 makes no modification 126 to the jet, and N=1 is equivalent to the original SoftDrop. 127 128 Once one has more than one prong, one has to decide which will be 129 declustered next. At each step of the declustering procedure, one 130 undoes the clustering which has the largest declustering angle 131 (amongst all the branches that are searched for substructure). [see 132 "set_fixed_depth" below for an alternative] 133 134 Compared to SoftDrop, RecursiveSoftDrop takes an extra argument N 135 specifying the number of times the SoftDrop procedure is recursively 136 applied. Negative N means that the procedure is applied until no 137 further substructure is found (i.e. corresponds to taking N=infinity). 138 139 double z_cut = 0.10; 140 double beta = 2.0; 141 double R0 = 1.0; // this is the default value 142 int N = -1; 143 RecursiveSoftDrop rsd(z_cut, beta, N, R0); 144 145 One then acts on a jet as 146 147 PseudoJet groomed_jet = rsd(jet) 148 149 and get additional information via 150 151 groomed_jet.structure_of<RecursiveSoftDrop>() 152 153 ------------------------------------------------------------------------ 154 IteratedSoftDrop 155 ------------------------------------------------------------------------ 156 157 Iterated Soft Drop (ISD) is a repeated variant of SoftDrop. After 158 performing the Soft Drop procedure once, it logs the groomed symmetry 159 factor, then recursively performs Soft Drop again on the harder 160 branch. This procedure is repeated down to an (optional) angular cut 161 theta_cut, yielding a set of symmetry factors from which observables 162 can be built. 163 164 An IteratedSoftDrop tool can be created as follows: 165 166 double beta = -1.0; 167 double z_cut = 0.005; 168 double theta_cut = 0.0; 169 double R0 = 0.5; // characteristic radius of jet algorithm 170 IteratedSoftDrop isd(beta, z_cut, double theta_cut, R0); 171 172 By default, ISD applied on a jet gives a result of type 173 IteratedSoftDropInfo that can then be probed to obtain physical 174 observables 175 176 IteratedSoftDropInfo isd_info = isd(jet); 177 178 unsigned int multiplicity = isd_info.multiplicity(); 179 double kappa = 1.0; // changes angular scale of ISD angularity 180 double isd_width = isd_info.angularity(kappa); 181 vector<pair<double,double> > zg_thetags = isd_info.all_zg_thetag(); 182 vector<pair<double,double> > zg_thetags = isd_info(); 183 for (unsigned int i=0; i< isd_info.size(); ++i){ 184 cout << "(zg, theta_g)_" << i << " = " 185 << isd_info[i].first << " " << isd_info[i].second << endl; 186 } 187 188 Alternatively, one can directly get the multiplicity, angularity, and 189 (zg,thetag) pairs from the IteratedSoftDrop class, at the expense of 190 re-running the declustering procedure: 191 192 unsigned int multiplicity = isd.multiplicity(jet); 193 double isd_width = isd.angularity(jet, 1.0); 194 vector<pair<double,double> > zg_thetags = isd.all_zg_thetag(jet); 195 196 197 Note: the iterative declustering procedure is the same as what one 198 would obtain with RecursiveSoftDrop with an (optional) angular cut 199 and recursing only in the hardest branch [see the "Changing 200 behaviour" section below for details], except that it returns some 201 information about the jet instead of a modified jet as RSD does. 202 203 204 ------------------------------------------------------------------------ 205 BottomUpSoftDrop 206 ------------------------------------------------------------------------ 207 208 This is a bottom-up version of the RecursiveSoftDrop procedure, in a 209 similar way as Pruning can be seen as a bottom-up version of Trimming. 210 211 In practice, the jet is reclustered and at each step of the clustering 212 one checks the SoftDrop condition 213 214 z > z_cut * (R / R0)^beta 215 216 If the condition is met, the pair is recombined. If the condition is 217 not met, only the hardest of the two objects is kept for further 218 clustering and the softest is rejected. 219 220 ------------------------------------------------------------------------ 110 221 Recluster 111 222 ------------------------------------------------------------------------ 223 224 *** NOTE: this is provided only for backwards compatibility *** 225 *** with FastJet <3.1. For FastJet >=3.1, the native *** 226 *** fastjet::Recluster is used instead *** 112 227 113 228 The Recluster class allows the constituents of a jet to be reclustered 114 229 with a different recursive clustering algorithm. This is used 115 internally in the mMDT/SoftDrop code in order to recluster the jet using 116 the CA algorithm. This is achieved via 230 internally in the mMDT/SoftDrop/RecursiveSoftDrop/IteratedSoftDrop 231 code in order to recluster the jet using the CA algorithm. This is 232 achieved via 117 233 118 234 Recluster ca_reclusterer(cambridge_algorithm, … … 123 239 delete_self_when_unused. 124 240 125 126 241 ------------------------------------------------------------------------ 127 242 Changing behaviour 128 243 ------------------------------------------------------------------------ 129 244 130 The behaviour of the ModifiedMassDropTagger and SoftDrop classes can 131 be tweaked using the following options: 132 133 SymmetryMeasure = {scalar_z,vector_z,y} [constructor argument] 245 The behaviour of the all the tools provided here 246 (ModifiedMassDropTagger, SoftDrop, RecursiveSoftDrop and 247 IteratedSoftDrop) can be tweaked using the following options: 248 249 SymmetryMeasure = {scalar_z, vector_z, y, theta_E, cos_theta_E} 250 [constructor argument] 134 251 : The definition of the energy sharing between subjets, with 0 135 corresponding to the most asymmetric 136 137 RecursionChoice = {larger_pt,larger_mt,larger_m} [constructor argument] 252 corresponding to the most asymmetric. 253 . scalar_z = min(pt1,pt2)/(pt1+pt2) [default] 254 . vector_z = min(pt1,pt2)/pt_{1+2} 255 . y = min(pt1^2,pt2^2)/m_{12}^2 (original y from MDT) 256 . theta_E = min(E1,E2)/(E1+E2), 257 with angular measure theta_{12}^2 258 . cos_theta_E = min(E1,E2)/(E1+E2), 259 with angular measure 2[1-cos(theta_{12})] 260 The last two variants are meant for use in e+e- collisions, 261 together with the "larger_E" recursion choice (see below) 262 263 RecursionChoice = {larger_pt, larger_mt, larger_m, larger_E} 264 [constructor argument] 138 265 : The path to recurse through the tree after the symmetry condition 139 fails 266 fails. Options refer to transverse momentum (pt), transverse mass 267 (mt=sqrt(pt^2+m^2), mass (m) or energy (E). the latter is meant 268 for use in e+e- collisions 140 269 141 270 mu_cut [constructor argument] 142 271 : An optional mass drop condition 143 272 144 set_subtractor(subtractor*) [or subtract er as a constructor argument]273 set_subtractor(subtractor*) [or subtractor as a constructor argument] 145 274 : provide a subtractor. When a subtractor is supplied, the 146 275 kinematic constraints are applied on subtracted 4-vectors. In … … 165 294 and SoftDrop defaults to grooming mode. 166 295 296 set_verbose_structure(bool) 297 : when set to true, additional information will be stored in the jet 298 structure. This includes in particular values of symmetry, 299 delta_R, and mu of dropped branches 300 301 For the specific case of RecursiveSoftDrop, additional tweaking is 302 possible via the following methods 303 304 set_fixed_depth_mode(bool) 305 : when this is true, RSD will recurse (N times) into all the 306 branches found during the previous iteration [instead of recursing 307 through the largest declustering angle until N prongs have been 308 found]. This yields at most 2^N prong. For infinite N, the two 309 options are equivalent. 310 311 set_dynamical_R0(bool) 312 : By default the angles in the SD condition are normalised to the 313 parameter R0. With "dynamical R0", RSD will dynamically adjust R0 314 to be the angle between the two prongs found during the previous 315 iteration. 316 317 set_hardest_branch_only(bool) 318 : When substructure is found, only recurse into the hardest of the 319 two branches for further substructure search. This uses the class 320 RecursionChoice. 321 322 set_min_deltaR_squared(double): 323 : set a minimal angle (squared) at which we stop the declustering 324 procedure. This cut is ineffective for negative values of the 325 argument. 326 167 327 ------------------------------------------------------------------------ 168 328 Technical Details
Note:
See TracChangeset
for help on using the changeset viewer.