Fork me on GitHub

Ignore:
File:
1 edited

Legend:

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

    rb7b836a r1f1f858  
    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 
    2819- Recluster
    2920  A generic tool to recluster a given jet into subjets
    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.
     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
    3423
    3524The interface for these tools is described in more detail below, with
     
    8574
    8675The SoftDrop procedure is very similar to mMDT, albeit with a
    87 generalised symmetry condition:
     76generalized symmetry condition:
    8877 
    8978   z > z_cut * (R / R0)^beta
     
    119108
    120109------------------------------------------------------------------------
    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 ------------------------------------------------------------------------
    221110Recluster
    222111------------------------------------------------------------------------
    223112
    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                      ***
    227 
    228113The Recluster class allows the constituents of a jet to be reclustered
    229114with a different recursive clustering algorithm.  This is used
    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
     115internally in the mMDT/SoftDrop code in order to recluster the jet using
     116the CA algorithm.  This is achieved via
    233117
    234118  Recluster ca_reclusterer(cambridge_algorithm,
     
    239123delete_self_when_unused.
    240124
     125
    241126------------------------------------------------------------------------
    242127Changing behaviour
    243128------------------------------------------------------------------------
    244129
    245 The behaviour of the all the tools provided here
    246 (ModifiedMassDropTagger, SoftDrop, RecursiveSoftDrop and
    247 IteratedSoftDrop) can be tweaked using the following options:
     130The behaviour of the ModifiedMassDropTagger and SoftDrop classes can
     131be tweaked using the following options:
    248132
    249 SymmetryMeasure = {scalar_z, vector_z, y, theta_E, cos_theta_E}
    250   [constructor argument]
     133SymmetryMeasure = {scalar_z,vector_z,y}  [constructor argument]
    251134  : The definition of the energy sharing between subjets, with 0
    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)
     135    corresponding to the most asymmetric
    262136
    263 RecursionChoice = {larger_pt, larger_mt, larger_m, larger_E}
    264   [constructor argument]
     137RecursionChoice = {larger_pt,larger_mt,larger_m}  [constructor argument]
    265138  : The path to recurse through the tree after the symmetry condition
    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
     139    fails
    269140
    270141mu_cut   [constructor argument]
    271142  : An optional mass drop condition
    272143
    273 set_subtractor(subtractor*) [or subtractor as a constructor argument]
     144set_subtractor(subtractor*) [or subtracter as a constructor argument]
    274145  : provide a subtractor. When a subtractor is supplied, the
    275146    kinematic constraints are applied on subtracted 4-vectors. In
     
    294165    and SoftDrop defaults to grooming mode.
    295166
    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 
    327167------------------------------------------------------------------------
    328168Technical Details
Note: See TracChangeset for help on using the changeset viewer.