1 | ------------------------------------------------------------------------
|
---|
2 | RecursiveTools FastJet contrib
|
---|
3 | ------------------------------------------------------------------------
|
---|
4 |
|
---|
5 | The RecursiveTools FastJet contrib aims to provide a common contrib
|
---|
6 | for a number of tools that involve recursive reclustering/declustering
|
---|
7 | of a jet for tagging or grooming purposes.
|
---|
8 |
|
---|
9 | Currently it contains:
|
---|
10 |
|
---|
11 | - ModifiedMassDropTagger
|
---|
12 | This corresponds to arXiv:1307.0007 by Mrinal Dasgupta, Alessandro
|
---|
13 | Fregoso, Simone Marzani and Gavin P. Salam
|
---|
14 |
|
---|
15 | - SoftDrop
|
---|
16 | This corresponds to arXiv:1402.2657 by Andrew J. Larkoski, Simone
|
---|
17 | Marzani, Gregory Soyez, Jesse Thaler
|
---|
18 |
|
---|
19 | - Recluster
|
---|
20 | 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
|
---|
23 |
|
---|
24 | The interface for these tools is described in more detail below, with
|
---|
25 | all of the available options documented in the header files.
|
---|
26 |
|
---|
27 | One note about nomenclature. A groomer is a procedure that takes a
|
---|
28 | PseudoJet and always returns another (non-zero) PseudoJet. A tagger is
|
---|
29 | a procedure that takes a PseudoJet, and either returns another PseudoJet
|
---|
30 | (i.e. tags it) or returns an empty PseudoJet (i.e. doesn't tag it).
|
---|
31 |
|
---|
32 | ------------------------------------------------------------------------
|
---|
33 | ModifiedMassDropTagger
|
---|
34 | ------------------------------------------------------------------------
|
---|
35 |
|
---|
36 | The Modified Mass Drop Tagger (mMDT) recursively declusters a jet,
|
---|
37 | following the largest pT subjet until a pair of subjets is found that
|
---|
38 | satisfy the symmetry condition on the energy sharing
|
---|
39 |
|
---|
40 | z > z_cut
|
---|
41 |
|
---|
42 | where z_cut is a predetermined value. By default, z is calculated as
|
---|
43 | the scalar pT fraction of the softest subjet. Note that larger values
|
---|
44 | of z_cut correspond to a more restrictive tagging criteria.
|
---|
45 |
|
---|
46 | By default, mMDT will first recluster the jet using the CA clustering
|
---|
47 | algorithm, which means that mMDT can be called on any jet, regardless
|
---|
48 | of the original jet finding measure.
|
---|
49 |
|
---|
50 | A default mMDT can be created via
|
---|
51 |
|
---|
52 | double z_cut = 0.10;
|
---|
53 | ModifiedMassDropTagger mMDT(z_cut);
|
---|
54 |
|
---|
55 | More options are available in the full constructor. To apply mMDT,
|
---|
56 | one simply calls it on the jet of interest.
|
---|
57 |
|
---|
58 | PseudoJet tagged_jet = mMDT(original_jet);
|
---|
59 |
|
---|
60 | Note that mMDT is a tagger, such that tagged_jet will only be non-zero
|
---|
61 | if the symmetry cut z > z_cut is satisfied by some branching of the
|
---|
62 | clustering tree.
|
---|
63 |
|
---|
64 | To gain additional information about the mMDT procedure, one can use
|
---|
65 |
|
---|
66 | tagged_jet.structure_of<ModifiedMassDropTagger>()
|
---|
67 |
|
---|
68 | which gives access to information about the delta_R between the tagged
|
---|
69 | subjets, their z value, etc.
|
---|
70 |
|
---|
71 | ------------------------------------------------------------------------
|
---|
72 | SoftDrop
|
---|
73 | ------------------------------------------------------------------------
|
---|
74 |
|
---|
75 | The SoftDrop procedure is very similar to mMDT, albeit with a
|
---|
76 | generalized symmetry condition:
|
---|
77 |
|
---|
78 | z > z_cut * (R / R0)^beta
|
---|
79 |
|
---|
80 | Note that larger z_cut and smaller beta correspond to more aggressive
|
---|
81 | grooming of the jet.
|
---|
82 |
|
---|
83 | SoftDrop is intended to be used as a groomer (instead of as a tagger),
|
---|
84 | such that if the symmetry condition fails throughout the whole
|
---|
85 | clustering tree, SoftDrop will still return a single particle in the
|
---|
86 | end. Apart from the tagger/groomer distinction, SoftDrop with beta=0 is
|
---|
87 | the same as mMDT.
|
---|
88 |
|
---|
89 | A default SoftDrop groomer can be created via:
|
---|
90 |
|
---|
91 | double z_cut = 0.10;
|
---|
92 | double beta = 2.0;
|
---|
93 | double R0 = 1.0; // this is the default value
|
---|
94 | SoftDrop sd(z_cut,beta,R0);
|
---|
95 |
|
---|
96 | and acts on a desired jet as
|
---|
97 |
|
---|
98 | PseudoJet groomed_jet = sd(original_jet);
|
---|
99 |
|
---|
100 | and additional information can be obtained via
|
---|
101 |
|
---|
102 | groomed_jet.structure_of<SoftDrop>()
|
---|
103 |
|
---|
104 | SoftDrop is typically called with beta > 0, though beta < 0 is still a
|
---|
105 | viable option. Because beta < 0 is infrared-collinear unsafe in
|
---|
106 | grooming mode, one probably wants to switch to tagging mode for negative
|
---|
107 | beta, via set_tagging_mode().
|
---|
108 |
|
---|
109 | ------------------------------------------------------------------------
|
---|
110 | Recluster
|
---|
111 | ------------------------------------------------------------------------
|
---|
112 |
|
---|
113 | The Recluster class allows the constituents of a jet to be reclustered
|
---|
114 | 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
|
---|
117 |
|
---|
118 | Recluster ca_reclusterer(cambridge_algorithm,
|
---|
119 | JetDefinition::max_allowable_R);
|
---|
120 | PseudoJet reclustered_jet = ca_reclusterer(original_jet);
|
---|
121 |
|
---|
122 | Note that reclustered_jet creates a new ClusterSequence that knows to
|
---|
123 | delete_self_when_unused.
|
---|
124 |
|
---|
125 |
|
---|
126 | ------------------------------------------------------------------------
|
---|
127 | Changing behaviour
|
---|
128 | ------------------------------------------------------------------------
|
---|
129 |
|
---|
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]
|
---|
134 | : 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]
|
---|
138 | : The path to recurse through the tree after the symmetry condition
|
---|
139 | fails
|
---|
140 |
|
---|
141 | mu_cut [constructor argument]
|
---|
142 | : An optional mass drop condition
|
---|
143 |
|
---|
144 | set_subtractor(subtractor*) [or subtracter as a constructor argument]
|
---|
145 | : provide a subtractor. When a subtractor is supplied, the
|
---|
146 | kinematic constraints are applied on subtracted 4-vectors. In
|
---|
147 | this case, the result of the ModifiedMassDropTagger/SoftDrop is a
|
---|
148 | subtracted PseudoJet, and it is assumed that
|
---|
149 | ModifiedMassDropTagger/SoftDrop is applied to an unsubtracted jet.
|
---|
150 | The latter default can be changed by calling
|
---|
151 | set_input_jet_is_subtracted().
|
---|
152 |
|
---|
153 | set_reclustering(bool, Recluster*)
|
---|
154 | : An optional setting to recluster a jet with a different jet
|
---|
155 | recursive jet algorithm. The code is only designed to give sensible
|
---|
156 | results with the CA algorithm, but other reclustering algorithm
|
---|
157 | (especially kT) may be appropriate in certain contexts.
|
---|
158 | Use at your own risk.
|
---|
159 |
|
---|
160 | set_grooming_mode()/set_tagging_mode()
|
---|
161 | : In grooming mode, the algorithm will return a single particle if the
|
---|
162 | symmetry condition fails for the whole tree. In tagging mode, the
|
---|
163 | algorithm will return an zero PseudoJet if no symmetry conditions
|
---|
164 | passes. Note that ModifiedMassDropTagger defaults to tagging mode
|
---|
165 | and SoftDrop defaults to grooming mode.
|
---|
166 |
|
---|
167 | ------------------------------------------------------------------------
|
---|
168 | Technical Details
|
---|
169 | ------------------------------------------------------------------------
|
---|
170 |
|
---|
171 | Both ModifiedMassDropTagger and SoftDrop inherit from
|
---|
172 | RecursiveSymmetryCutBase, which provides a common codebase for recursive
|
---|
173 | declustering of a jet with a symmetry cut condition. A generic
|
---|
174 | RecursiveSymmetryCutBase depends on the following (virtual) functions
|
---|
175 | (see header file for exact full specs, including constness):
|
---|
176 |
|
---|
177 | double symmetry_cut_fn(PseudoJet &, PseudoJet &)
|
---|
178 | : The function that defines the symmetry cut. This is what actually
|
---|
179 | defines different recursive declustering schemes, and all classes
|
---|
180 | that inherit from RecursiveSymmetryCutBase must define this
|
---|
181 | function.
|
---|
182 |
|
---|
183 | string symmetry_cut_description()
|
---|
184 | : the string description of the symmetry cut.
|
---|
185 |
|
---|
186 | ------------------------------------------------------------------------
|
---|