Fork me on GitHub

Ignore:
Timestamp:
Jun 6, 2018, 10:05:10 PM (7 years ago)
Author:
Pavel Demin <pavel-demin@…>
Branches:
ImprovedOutputFile, Timing, dual_readout, llp, master
Children:
17d0ab8
Parents:
95e6b7a
Message:

update FastJet library to 3.3.1 and FastJet Contrib library to 1.036

File:
1 edited

Legend:

Unmodified
Added
Removed
  • external/fastjet/contribs/RecursiveTools/README

    r95e6b7a rb7b836a  
    1717  Marzani, Gregory Soyez, Jesse Thaler
    1818
     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
    1928- Recluster
    2029  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.
    2334
    2435The interface for these tools is described in more detail below, with
     
    7485
    7586The SoftDrop procedure is very similar to mMDT, albeit with a
    76 generalized symmetry condition:
     87generalised symmetry condition:
    7788 
    7889   z > z_cut * (R / R0)^beta
     
    108119
    109120------------------------------------------------------------------------
     121RecursiveSoftDrop
     122------------------------------------------------------------------------
     123
     124The RecursiveSoftDrop procedure applies the Soft Drop procedure N times
     125in a jet in order to find up to N+1 prongs.  N=0 makes no modification
     126to the jet, and N=1 is equivalent to the original SoftDrop.
     127
     128Once one has more than one prong, one has to decide which will be
     129declustered next.  At each step of the declustering procedure, one
     130undoes 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
     134Compared to SoftDrop, RecursiveSoftDrop takes an extra argument N
     135specifying the number of times the SoftDrop procedure is recursively
     136applied. Negative N means that the procedure is applied until no
     137further 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
     145One then acts on a jet as
     146
     147   PseudoJet groomed_jet = rsd(jet)
     148
     149and get additional information via
     150
     151   groomed_jet.structure_of<RecursiveSoftDrop>()
     152
     153------------------------------------------------------------------------
     154IteratedSoftDrop
     155------------------------------------------------------------------------
     156
     157Iterated Soft Drop (ISD) is a repeated variant of SoftDrop.  After
     158performing the Soft Drop procedure once, it logs the groomed symmetry
     159factor, then recursively performs Soft Drop again on the harder
     160branch.  This procedure is repeated down to an (optional) angular cut
     161theta_cut, yielding a set of symmetry factors from which observables
     162can be built.
     163
     164An 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
     172By default, ISD applied on a jet gives a result of type
     173IteratedSoftDropInfo that can then be probed to obtain physical
     174observables
     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
     188Alternatively, one can directly get the multiplicity, angularity, and
     189(zg,thetag) pairs from the IteratedSoftDrop class, at the expense of
     190re-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
     197Note: 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------------------------------------------------------------------------
     205BottomUpSoftDrop
     206------------------------------------------------------------------------
     207
     208This is a bottom-up version of the RecursiveSoftDrop procedure, in a
     209similar way as Pruning can be seen as a bottom-up version of Trimming.
     210
     211In practice, the jet is reclustered and at each step of the clustering
     212one checks the SoftDrop condition
     213
     214   z > z_cut * (R / R0)^beta
     215
     216If the condition is met, the pair is recombined. If the condition is
     217not met, only the hardest of the two objects is kept for further
     218clustering and the softest is rejected.
     219
     220------------------------------------------------------------------------
    110221Recluster
    111222------------------------------------------------------------------------
     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                      ***
    112227
    113228The Recluster class allows the constituents of a jet to be reclustered
    114229with 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
     230internally in the mMDT/SoftDrop/RecursiveSoftDrop/IteratedSoftDrop
     231code in order to recluster the jet using the CA algorithm.  This is
     232achieved via
    117233
    118234  Recluster ca_reclusterer(cambridge_algorithm,
     
    123239delete_self_when_unused.
    124240
    125 
    126241------------------------------------------------------------------------
    127242Changing behaviour
    128243------------------------------------------------------------------------
    129244
    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]
     245The behaviour of the all the tools provided here
     246(ModifiedMassDropTagger, SoftDrop, RecursiveSoftDrop and
     247IteratedSoftDrop) can be tweaked using the following options:
     248
     249SymmetryMeasure = {scalar_z, vector_z, y, theta_E, cos_theta_E}
     250  [constructor argument]
    134251  : 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
     263RecursionChoice = {larger_pt, larger_mt, larger_m, larger_E}
     264  [constructor argument]
    138265  : 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
    140269
    141270mu_cut   [constructor argument]
    142271  : An optional mass drop condition
    143272
    144 set_subtractor(subtractor*) [or subtracter as a constructor argument]
     273set_subtractor(subtractor*) [or subtractor as a constructor argument]
    145274  : provide a subtractor. When a subtractor is supplied, the
    146275    kinematic constraints are applied on subtracted 4-vectors. In
     
    165294    and SoftDrop defaults to grooming mode.
    166295
     296set_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
     301For the specific case of RecursiveSoftDrop, additional tweaking is
     302possible via the following methods
     303
     304set_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
     311set_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
     317set_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
     322set_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
    167327------------------------------------------------------------------------
    168328Technical Details
Note: See TracChangeset for help on using the changeset viewer.