Rivet analyses referenceATLAS_2019_I1772062Soft-drop observablesExperiment: ATLAS (LHC) Inspire ID: 1772062 Status: VALIDATED Authors:
Beam energies: (6500.0, 6500.0) GeV Run details:
Jet substructure quantities are measured using jets groomed with the soft-drop grooming procedure in dijet events from 32.9 fb$^{-1}$ of $pp$ collisions collected with the ATLAS detector at $\sqrt{s} = 13$ TeV. These observables are sensitive to a wide range of QCD phenomena. Some observables, such as the jet mass and opening angle between the two subjets which pass the soft-drop condition, can be described by a high-order (resummed) series in the strong coupling constant $\alpha_s$. Other observables, such as the momentum sharing between the two subjets, are nearly independent of $\alpha_s$. These observables can be constructed using all interacting particles or using only charged particles reconstructed in the inner tracking detectors. Track-based versions of these observables are not collinear safe, but are measured more precisely, and universal nonperturbative functions can absorb the collinear singularities. The unfolded data are directly compared with QCD calculations and hadron-level Monte Carlo simulations. The measurements are performed in different pseudorapidity regions, which are then used to extract quark and gluon jet shapes using the predicted quark and gluon fractions in each region. All of the parton shower and analytical calculations provide an excellent description of the data in most regions of phase space. Source code: ATLAS_2019_I1772062.cc 1#include "Rivet/Analysis.hh"
2#include "Rivet/Projections/FinalState.hh"
3#include "Rivet/Projections/FastJets.hh"
4#include "Rivet/Particle.hh"
5#include "Rivet/Projections/ChargedFinalState.hh"
6#include "Rivet/Projections/VetoedFinalState.hh"
7
8#include "fastjet/contrib/SoftDrop.hh"
9#include "fastjet/Selector.hh"
10
11
12namespace Rivet {
13
14
15 /// @brief Soft-drop mass at 13 TeV
16 class ATLAS_2019_I1772062: public Analysis {
17 public:
18
19 /// Constructor
20 RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2019_I1772062);
21
22
23 void getQuarkGluon(Rivet::Histo1DPtr hForward, Rivet::Histo1DPtr hCentral, Rivet::Histo1DPtr hQuark, Rivet::Histo1DPtr hGluon, int ptbin, string parName, size_t beta) {
24
25 int nBins = rhoBins.size() - 1;
26 if (parName == "rg" || parName == "trg") nBins = rgBins.size()-1;
27 if ((parName == "zg" || parName == "tzg") && beta == 0) nBins = zgBinsBeta0.size()-1;
28 if ((parName == "zg" || parName == "tzg") && beta != 0) nBins = zgBins.size()-1;
29
30 double FGC = gluonFractionCentral[ptbin];
31 double FGF = gluonFractionForward[ptbin];
32 double FQC = 1.-FGC;
33 double FQF = 1.-FGF;
34
35 for (size_t i=1; i<hGluon->numBins()+1; i++) {
36 double binCenter = hGluon->bin(i).xMid();
37 double gVal = 0., qVal = 0.;
38 if ((FQF - FQC) != 0.) {
39 gVal = (FQF * hCentral->bin(ptbin*(nBins) + i).sumW() - FQC * hForward->bin(ptbin*(nBins) + i).sumW()) / (FQF - FQC);
40 qVal = (FGF * hCentral->bin(ptbin*(nBins) + i).sumW() - FGC * hForward->bin(ptbin*(nBins) + i).sumW()) / (FQC - FQF);
41 }
42 hGluon->fill(binCenter, gVal);
43 hQuark->fill(binCenter, qVal);
44 }
45
46 histNorm(hQuark, parName);
47 histNorm(hGluon, parName);
48 }
49
50 void ptNorm(Rivet::Histo1DPtr ptBinnedHist, std::string var, size_t beta) {
51 size_t varNormBin1 = 0;
52 size_t varNormBin2 = 0;
53 size_t nBins = 10;
54
55 if (var=="m" || var=="tm") {
56 varNormBin1 = normBin1;
57 varNormBin2 = normBin2;
58 }
59 if (var=="zg" || var=="tzg") {
60 if(beta==0){
61 varNormBin2 = zgBinsBeta0.size()-1;
62 nBins = zgBinsBeta0.size()-1;
63 }
64 else {
65 varNormBin2 = zgBins.size()-1;
66 nBins = zgBins.size()-1;
67 }
68 }
69 if (var=="rg" || var=="trg") {
70 varNormBin2 = rgBins.size()-1;
71 nBins = rgBins.size()-1;
72 }
73
74 for (size_t k=0; k< ptBins.size()-1; ++k) {
75 double normalization = 0;
76
77 for (size_t j=varNormBin1; j<varNormBin2; ++j) {
78 double binWidth = 1.;
79 if (var=="m" || var=="tm") {
80 binWidth = rhoBins[j+1] - rhoBins[j];
81 }
82 if (var=="zg" || var=="tzg") {
83 if(beta==0){
84 binWidth = zgBinsBeta0[j+1]- zgBinsBeta0[j];
85 }
86 else {
87 binWidth = zgBins[j+1]- zgBins[j];
88 }
89 }
90
91 if (var=="rg" || var=="trg") {
92 binWidth = rgBins[j+1]- rgBins[j];
93 if (j==nBins-1) ptBinnedHist->bin( k*nBins+j+1 ).scaleW(2.);
94 //normalization += ptBinnedHist->bin(k*nBins+j).sumW()*binWidth;
95 normalization += ptBinnedHist->bin(k*(nBins) + j+1).sumW()*binWidth;
96 }
97 else{
98 normalization += ptBinnedHist->bin(k*(nBins) + j+1).sumW()*binWidth;
99 }
100 }
101
102 if (normalization == 0) continue;
103
104 for (unsigned int j=0; j<nBins; j++) {
105 if (var=="rg" || var=="trg") {
106 ptBinnedHist->bin(k*(nBins) + j+1 ).scaleW(1. / (normalization) );
107 }
108 else{
109 ptBinnedHist->bin(k*(nBins) + j+1 ).scaleW(1. / (normalization));
110 }
111
112 }
113 }
114
115 return;
116 }
117
118 void histNorm(Rivet::Histo1DPtr hist, std::string var) {
119 if (var=="m" || var=="tm") {
120 const double norm = hist->integralRange(normBin1+1, normBin2);
121 if (norm > 0.) {
122 hist->scaleW(1.0/norm);
123 }
124 }
125 else {
126 normalize(hist);
127 }
128 }
129
130
131 int return_bin(float pT, float rho, std::string whichvar, size_t beta) {
132 // First thing's first
133 if (pT < ptBins[0]) return -100;
134
135 if (whichvar=="m" && rho < pow(10,-4.5)) return -100;
136 if (whichvar=="tm" && rho < pow(10,-4.5)) return -100;
137
138 if (whichvar=="zg" && rho <= 0) return -100;
139 if (whichvar=="tzg" && rho <= 0) return -100;
140
141 if (whichvar=="rg" && rho <= -1.2) return -100;
142 if (whichvar=="trg" && rho <= -1.2) return -100;
143
144 if (whichvar=="id" && rho <= 1) return -100;
145
146 int pTbin = 1;
147 if (pT < ptBins[0]) pTbin = 0; //should not happen
148 else if (pT < ptBins[1]) pTbin = 1;
149 else if (pT < ptBins[2]) pTbin = 2;
150 else if (pT < ptBins[3]) pTbin = 3;
151 else if (pT < ptBins[4]) pTbin = 4;
152 else pTbin = 5;
153 if (pTbin == 0) return -1;
154
155 int rhobin = 1.;
156 if ((whichvar=="m") || (whichvar=="tm"))
157 {
158 if (rho < pow(10,-4.5)) rhobin = 0; //this should not happen.
159 else if (rho < pow(10,-4.1)) rhobin = 1;
160 else if (rho < pow(10,-3.7)) rhobin = 2;
161 else if (rho < pow(10,-3.3)) rhobin = 3;
162 else if (rho < pow(10,-2.9)) rhobin = 4;
163 else if (rho < pow(10,-2.5)) rhobin = 5;
164 else if (rho < pow(10,-2.1)) rhobin = 6;
165 else if (rho < pow(10,-1.7)) rhobin = 7;
166 else if (rho < pow(10,-1.3)) rhobin = 8;
167 else if (rho < pow(10,-0.9)) rhobin = 9;
168 else if (rho < pow(10,-0.5)) rhobin = 10;
169 else rhobin = 10;
170 return rhobin*1. + (pTbin*1.-1.)*10.-1;
171 }
172
173 // zg
174 else if (((whichvar=="zg")||(whichvar=="tzg")) && beta == 0)
175 {
176 if (rho < 0.10) return -10;
177 else if (rho < 0.15) rhobin = 1;
178 else if (rho < 0.20) rhobin = 2;
179 else if (rho < 0.25) rhobin = 3;
180 else if (rho < 0.30) rhobin = 4;
181 else if (rho < 0.35) rhobin = 5;
182 else if (rho < 0.40) rhobin = 6;
183 else if (rho < 0.45) rhobin = 7;
184 else if (rho < 0.50) rhobin = 8;
185 else rhobin = 8;
186 return rhobin*1. + (pTbin*1.-1.)*8.-1;
187 }
188 else if (((whichvar=="zg")||(whichvar=="tzg")) && beta != 0)
189 {
190 if (rho < 0.00) return -10;
191 else if (rho < 0.05) rhobin = 1;
192 else if (rho < 0.10) rhobin = 2;
193 else if (rho < 0.15) rhobin = 3;
194 else if (rho < 0.20) rhobin = 4;
195 else if (rho < 0.25) rhobin = 5;
196 else if (rho < 0.30) rhobin = 6;
197 else if (rho < 0.35) rhobin = 7;
198 else if (rho < 0.40) rhobin = 8;
199 else if (rho < 0.45) rhobin = 9;
200 else if (rho < 0.50) rhobin = 10;
201 else rhobin = 10;
202 return rhobin*1. + (pTbin*1.-1.)*10.-1;
203 }
204
205 //rg
206 else if ((whichvar=="rg")||(whichvar=="trg"))
207 {
208 if (rho < -1.2) return -10;
209 else if (rho < -1.0) rhobin = 1;
210 else if (rho < -0.8) rhobin = 2;
211 else if (rho < -0.6) rhobin = 3;
212 else if (rho < -0.4) rhobin = 4;
213 else if (rho < -0.2) rhobin = 5;
214 else if (rho < -0.1) rhobin = 6;
215 else rhobin = 6;
216 return rhobin*1. + (pTbin*1.-1.)*6.-1;
217 }
218
219 return -100;
220 }
221
222
223
224 /// Book cuts and projections
225 void init() {
226 // All final state particles
227 const FinalState fs(Cuts::abseta < 5.0);
228
229 FastJets jets(fs, JetAlg::ANTIKT, 0.8, JetMuons::NONE, JetInvisibles::NONE);
230 declare(jets, "jets");
231
232 ChargedFinalState tracks(Cuts::pT > 0.5*GeV && Cuts::abseta < 2.5);
233 declare(tracks, "tracks");
234
235 normBin1 = 2; normBin2 = 7;
236 gluonFractionCentral = {0.75, 0.72, 0.66, 0.61, 0.54};
237 gluonFractionForward = {0.70, 0.64, 0.57, 0.51, 0.43};
238 rgBins = {-1.2, -1.0, -0.8, -0.6, -0.4, -0.2, -0.1};
239 zgBins = {0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5};
240 zgBinsBeta0 = {0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5};
241 rhoBins = {-4.5, -4.1, -3.7, -3.3, -2.9, -2.5, -2.1, -1.7, -1.3, -0.9, -0.5};
242 ptBins = {300, 400, 600, 800, 1000, 2000};
243
244
245
246 book(_h["_h_Table1"], 1,1,1); // Cluster, Rho, beta=0, inclusive pT, both jets
247 book(_h["_h_Table2"], 2,1,1); // Track, Rho, beta=0, inclusive pT, both jets
248 book(_h["_h_Table3"], 3,1,1); // Cluster, Rho, beta=1, inclusive pT, both jets
249 book(_h["_h_Table4"], 4,1,1); // Track, Rho, beta=1, inclusive pT, both jets
250 book(_h["_h_Table5"], 5,1,1); // Cluster, Rho, beta=2, inclusive pT, both jets
251 book(_h["_h_Table6"], 6,1,1); // Track, Rho, beta=2, inclusive pT, both jets
252
253 book(_h["_h_Table7"], 7,1,1); // Cluster, zg, beta=0, inclusive pT, both jets
254 book(_h["_h_Table8"], 8,1,1); // Track, zg, beta=0, inclusive pT, both jets
255 book(_h["_h_Table9"], 9,1,1); // Cluster, zg, beta=1, inclusive pT, both jets
256 book(_h["_h_Table10"], 10,1,1); // Track, zg, beta=1, inclusive pT, both jets
257 book(_h["_h_Table11"], 11,1,1); // Cluster, zg, beta=2, inclusive pT, both jets
258 book(_h["_h_Table12"], 12,1,1); // Track, zg, beta=2, inclusive pT, both jets
259
260 book(_h["_h_Table13"], 13,1,1); // Cluster, rg, beta=0, inclusive pT, both jets
261 book(_h["_h_Table14"], 14,1,1); // Track, rg, beta=0, inclusive pT, both jets
262 book(_h["_h_Table15"], 15,1,1); // Cluster, rg, beta=1, inclusive pT, both jets
263 book(_h["_h_Table16"], 16,1,1); // Track, rg, beta=1, inclusive pT, both jets
264 book(_h["_h_Table17"], 17,1,1); // Cluster, rg, beta=2, inclusive pT, both jets
265 book(_h["_h_Table18"], 18,1,1); // Track, rg, beta=2, inclusive pT, both jets
266
267
268 book(_h["_h_Table19"], 19,1,1); // Cluster, Rho, beta=0, inclusive pT, central jet
269 book(_h["_h_Table20"], 20,1,1); // Track, Rho, beta=0, inclusive pT, central jet
270 book(_h["_h_Table21"], 21,1,1); // Cluster, Rho, beta=1, inclusive pT, central jet
271 book(_h["_h_Table22"], 22,1,1); // Track, Rho, beta=1, inclusive pT, central jet
272 book(_h["_h_Table23"], 23,1,1); // Cluster, Rho, beta=2, inclusive pT, central jet
273 book(_h["_h_Table24"], 24,1,1); // Track, Rho, beta=2, inclusive pT, central jet
274
275 book(_h["_h_Table25"], 25,1,1); // Cluster, zg, beta=0, inclusive pT, central jet
276 book(_h["_h_Table26"], 26,1,1); // Track, zg, beta=0, inclusive pT, central jet
277 book(_h["_h_Table27"], 27,1,1); // Cluster, zg, beta=1, inclusive pT, central jet
278 book(_h["_h_Table28"], 28,1,1); // Track, zg, beta=1, inclusive pT, central jet
279 book(_h["_h_Table29"], 29,1,1); // Cluster, zg, beta=2, inclusive pT, central jet
280 book(_h["_h_Table30"], 30,1,1); // Track, zg, beta=2, inclusive pT, central jet
281
282 book(_h["_h_Table31"], 31,1,1); // Cluster, rg, beta=0, inclusive pT, central jet
283 book(_h["_h_Table32"], 32,1,1); // Track, rg, beta=0, inclusive pT, central jet
284 book(_h["_h_Table33"], 33,1,1); // Cluster, rg, beta=1, inclusive pT, central jet
285 book(_h["_h_Table34"], 34,1,1); // Track, rg, beta=1, inclusive pT, central jet
286 book(_h["_h_Table35"], 35,1,1); // Cluster, rg, beta=2, inclusive pT, central jet
287 book(_h["_h_Table36"], 36,1,1); // Track, rg, beta=2, inclusive pT, central jet
288
289
290 book(_h["_h_Table37"], 37,1,1); // Cluster, Rho, beta=0, inclusive pT, forward jet
291 book(_h["_h_Table38"], 38,1,1); // Track, Rho, beta=0, inclusive pT, forward jet
292 book(_h["_h_Table39"], 39,1,1); // Cluster, Rho, beta=1, inclusive pT, forward jet
293 book(_h["_h_Table40"], 40,1,1); // Track, Rho, beta=1, inclusive pT, forward jet
294 book(_h["_h_Table41"], 41,1,1); // Cluster, Rho, beta=2, inclusive pT, forward jet
295 book(_h["_h_Table42"], 42,1,1); // Track, Rho, beta=2, inclusive pT, forward jet
296
297 book(_h["_h_Table43"], 43,1,1); // Cluster, zg, beta=0, inclusive pT, forward jet
298 book(_h["_h_Table44"], 44,1,1); // Track, zg, beta=0, inclusive pT, forward jet
299 book(_h["_h_Table45"], 45,1,1); // Cluster, zg, beta=1, inclusive pT, forward jet
300 book(_h["_h_Table46"], 46,1,1); // Track, zg, beta=1, inclusive pT, forward jet
301 book(_h["_h_Table47"], 47,1,1); // Cluster, zg, beta=2, inclusive pT, forward jet
302 book(_h["_h_Table48"], 48,1,1); // Track, zg, beta=2, inclusive pT, forward jet
303
304 book(_h["_h_Table49"], 49,1,1); // Cluster, rg, beta=0, inclusive pT, forward jet
305 book(_h["_h_Table50"], 50,1,1); // Track, rg, beta=0, inclusive pT, forward jet
306 book(_h["_h_Table51"], 51,1,1); // Cluster, rg, beta=1, inclusive pT, forward jet
307 book(_h["_h_Table52"], 52,1,1); // Track, rg, beta=1, inclusive pT, forward jet
308 book(_h["_h_Table53"], 53,1,1); // Cluster, rg, beta=2, inclusive pT, forward jet
309 book(_h["_h_Table54"], 54,1,1); // Track, rg, beta=2, inclusive pT, forward jet
310
311
312
313
314 book(_h["_h_Table55"], 55,1,1); // Cluster, Rho, beta=0, pT binned, both jets
315 book(_h["_h_Table56"], 56,1,1); // Track, Rho, beta=0, pT binned, both jets
316 book(_h["_h_Table57"], 57,1,1); // Cluster, Rho, beta=1, pT binned, both jets
317 book(_h["_h_Table58"], 58,1,1); // Track, Rho, beta=1, pT binned, both jets
318 book(_h["_h_Table59"], 59,1,1); // Cluster, Rho, beta=2, pT binned, both jets
319 book(_h["_h_Table60"], 60,1,1); // Track, Rho, beta=2, pT binned, both jets
320
321 book(_h["_h_Table61"], 61,1,1); // Cluster, zg, beta=0, pT binned, both jets
322 book(_h["_h_Table62"], 62,1,1); // Track, zg, beta=0, pT binned, both jets
323 book(_h["_h_Table63"], 63,1,1); // Cluster, zg, beta=1, pT binned, both jets
324 book(_h["_h_Table64"], 64,1,1); // Track, zg, beta=1, pT binned, both jets
325 book(_h["_h_Table65"], 65,1,1); // Cluster, zg, beta=2, pT binned, both jets
326 book(_h["_h_Table66"], 66,1,1); // Track, zg, beta=2, pT binned, both jets
327
328 book(_h["_h_Table67"], 67,1,1); // Cluster, rg, beta=0, pT binned, both jets
329 book(_h["_h_Table68"], 68,1,1); // Track, rg, beta=0, pT binned, both jets
330 book(_h["_h_Table69"], 69,1,1); // Cluster, rg, beta=1, pT binned, both jets
331 book(_h["_h_Table70"], 70,1,1); // Track, rg, beta=1, pT binned, both jets
332 book(_h["_h_Table71"], 71,1,1); // Cluster, rg, beta=2, pT binned, both jets
333 book(_h["_h_Table72"], 72,1,1); // Track, rg, beta=2, pT binned, both jets
334
335
336 book(_h["_h_Table73"], 73,1,1); // Cluster, Rho, beta=0, pT binned, central jet
337 book(_h["_h_Table74"], 74,1,1); // Track, Rho, beta=0, pT binned, central jet
338 book(_h["_h_Table75"], 75,1,1); // Cluster, Rho, beta=1, pT binned, central jet
339 book(_h["_h_Table76"], 76,1,1); // Track, Rho, beta=1, pT binned, central jet
340 book(_h["_h_Table77"], 77,1,1); // Cluster, Rho, beta=2, pT binned, central jet
341 book(_h["_h_Table78"], 78,1,1); // Track, Rho, beta=2, pT binned, central jet
342
343 book(_h["_h_Table79"], 79,1,1); // Cluster, zg, beta=0, pT binned, central jet
344 book(_h["_h_Table80"], 80,1,1); // Track, zg, beta=0, pT binned, central jet
345 book(_h["_h_Table81"], 81,1,1); // Cluster, zg, beta=1, pT binned, central jet
346 book(_h["_h_Table82"], 82,1,1); // Track, zg, beta=1, pT binned, central jet
347 book(_h["_h_Table83"], 83,1,1); // Cluster, zg, beta=2, pT binned, central jet
348 book(_h["_h_Table84"], 84,1,1); // Track, zg, beta=2, pT binned, central jet
349
350 book(_h["_h_Table85"], 85,1,1); // Cluster, rg, beta=0, pT binned, central jet
351 book(_h["_h_Table86"], 86,1,1); // Track, rg, beta=0, pT binned, central jet
352 book(_h["_h_Table87"], 87,1,1); // Cluster, rg, beta=1, pT binned, central jet
353 book(_h["_h_Table88"], 88,1,1); // Track, rg, beta=1, pT binned, central jet
354 book(_h["_h_Table89"], 89,1,1); // Cluster, rg, beta=2, pT binned, central jet
355 book(_h["_h_Table90"], 90,1,1); // Track, rg, beta=2, pT binned, central jet
356
357
358 book(_h["_h_Table91"], 91,1,1); // Cluster, Rho, beta=0, pT binned, forward jet
359 book(_h["_h_Table92"], 92,1,1); // Track, Rho, beta=0, pT binned, forward jet
360 book(_h["_h_Table93"], 93,1,1); // Cluster, Rho, beta=1, pT binned, forward jet
361 book(_h["_h_Table94"], 94,1,1); // Track, Rho, beta=1, pT binned, forward jet
362 book(_h["_h_Table95"], 95,1,1); // Cluster, Rho, beta=2, pT binned, forward jet
363 book(_h["_h_Table96"], 96,1,1); // Track, Rho, beta=2, pT binned, forward jet
364
365 book(_h["_h_Table97"], 97,1,1); // Cluster, zg, beta=0, pT binned, forward jet
366 book(_h["_h_Table98"], 98,1,1); // Track, zg, beta=0, pT binned, forward jet
367 book(_h["_h_Table99"], 99,1,1); // Cluster, zg, beta=1, pT binned, forward jet
368 book(_h["_h_Table100"], 100,1,1); // Track, zg, beta=1, pT binned, forward jet
369 book(_h["_h_Table101"], 101,1,1); // Cluster, zg, beta=2, pT binned, forward jet
370 book(_h["_h_Table102"], 102,1,1); // Track, zg, beta=2, pT binned, forward jet
371
372 book(_h["_h_Table103"], 103,1,1); // Cluster, rg, beta=0, pT binned, forward jet
373 book(_h["_h_Table104"], 104,1,1); // Track, rg, beta=0, pT binned, forward jet
374 book(_h["_h_Table105"], 105,1,1); // Cluster, rg, beta=1, pT binned, forward jet
375 book(_h["_h_Table106"], 106,1,1); // Track, rg, beta=1, pT binned, forward jet
376 book(_h["_h_Table107"], 107,1,1); // Cluster, rg, beta=2, pT binned, forward jet
377 book(_h["_h_Table108"], 108,1,1); // Track, rg, beta=2, pT binned, forward jet
378
379
380
381
382 book(_h["_h_Table109"], 109,1,1); // Cluster, Rho, beta=0, quark jet
383 book(_h["_h_Table110"], 110,1,1); // Track, Rho, beta=0, quark jet
384 book(_h["_h_Table111"], 111,1,1); // Cluster, Rho, beta=1, quark jet
385 book(_h["_h_Table112"], 112,1,1); // Track, Rho, beta=1, quark jet
386 book(_h["_h_Table113"], 113,1,1); // Cluster, Rho, beta=2, quark jet
387 book(_h["_h_Table114"], 114,1,1); // Track, Rho, beta=2, quark jet
388
389 book(_h["_h_Table115"], 115,1,1); // Cluster, zg, beta=0, quark jet
390 book(_h["_h_Table116"], 116,1,1); // Track, zg, beta=0, quark jet
391 book(_h["_h_Table117"], 117,1,1); // Cluster, zg, beta=1, quark jet
392 book(_h["_h_Table118"], 118,1,1); // Track, zg, beta=1, quark jet
393 book(_h["_h_Table119"], 119,1,1); // Cluster, zg, beta=2, quark jet
394 book(_h["_h_Table120"], 120,1,1); // Track, zg, beta=2, quark jet
395
396 book(_h["_h_Table121"], 121,1,1); // Cluster, rg, beta=0, quark jet
397 book(_h["_h_Table122"], 122,1,1); // Track, rg, beta=0, quark jet
398 book(_h["_h_Table123"], 123,1,1); // Cluster, rg, beta=1, quark jet
399 book(_h["_h_Table124"], 124,1,1); // Track, rg, beta=1, quark jet
400 book(_h["_h_Table125"], 125,1,1); // Cluster, rg, beta=2, quark jet
401 book(_h["_h_Table126"], 126,1,1); // Track, rg, beta=2, quark jet
402
403
404 book(_h["_h_Table127"], 127,1,1); // Cluster, Rho, beta=0, gluon jet
405 book(_h["_h_Table128"], 128,1,1); // Track, Rho, beta=0, gluon jet
406 book(_h["_h_Table129"], 129,1,1); // Cluster, Rho, beta=1, gluon jet
407 book(_h["_h_Table130"], 130,1,1); // Track, Rho, beta=1, gluon jet
408 book(_h["_h_Table131"], 131,1,1); // Cluster, Rho, beta=2, gluon jet
409 book(_h["_h_Table132"], 132,1,1); // Track, Rho, beta=2, gluon jet
410
411 book(_h["_h_Table133"], 133,1,1); // Cluster, zg, beta=0, gluon jet
412 book(_h["_h_Table134"], 134,1,1); // Track, zg, beta=0, gluon jet
413 book(_h["_h_Table135"], 135,1,1); // Cluster, zg, beta=1, gluon jet
414 book(_h["_h_Table136"], 136,1,1); // Track, zg, beta=1, gluon jet
415 book(_h["_h_Table137"], 137,1,1); // Cluster, zg, beta=2, gluon jet
416 book(_h["_h_Table138"], 138,1,1); // Track, zg, beta=2, gluon jet
417
418 book(_h["_h_Table139"], 139,1,1); // Cluster, rg, beta=0, gluon jet
419 book(_h["_h_Table140"], 140,1,1); // Track, rg, beta=0, gluon jet
420 book(_h["_h_Table141"], 141,1,1); // Cluster, rg, beta=1, gluon jet
421 book(_h["_h_Table142"], 142,1,1); // Track, rg, beta=1, gluon jet
422 book(_h["_h_Table143"], 143,1,1); // Cluster, rg, beta=2, gluon jet
423 book(_h["_h_Table144"], 144,1,1); // Track, rg, beta=2, gluon jet
424
425 }
426
427
428 void analyze(const Event& event) {
429
430 const Jets& myJets = apply<FastJets>(event, "jets").jetsByPt(Cuts::pT > 200*GeV);
431 const Particles& tracks = apply<ChargedFinalState>(event, "tracks").particlesByPt();
432
433 if (myJets.size() < 2) vetoEvent;
434 if (myJets[0].pT() > 1.5*myJets[1].pT()) vetoEvent;
435 if (myJets[0].abseta() > 1.5 || myJets[1].abseta() > 1.5) vetoEvent;
436
437 std::vector<bool> isCentral;
438 isCentral.push_back(true);
439 isCentral.push_back(false);
440 if (myJets[0].abseta() > myJets[1].abseta()) {
441 isCentral[0] = false;
442 isCentral[1] = true;
443 }
444
445 for (size_t i = 0; i < 2; ++i) {
446 if (myJets[i].pT() < 300*GeV) continue;
447
448 vector<fastjet::PseudoJet> charged_constituents;
449 for (const Particle& p : tracks) {
450 const double dr = deltaR(myJets[i], p, PSEUDORAPIDITY);
451 if (dr > 0.8) continue;
452 if (abs(p.pid()) == 13) continue;
453 charged_constituents.push_back(p);
454 }
455
456 fastjet::ClusterSequence cs_ca(myJets[i].constituents(), fastjet::JetDefinition(fastjet::cambridge_algorithm, 0.8));
457 vector<fastjet::PseudoJet> myJet_ca = fastjet::sorted_by_pt(cs_ca.inclusive_jets(10.0));
458
459 fastjet::ClusterSequence cs_ca_charged(charged_constituents, fastjet::JetDefinition(fastjet::cambridge_algorithm, 0.8));
460 vector<fastjet::PseudoJet> myJet_ca_charged = fastjet::sorted_by_pt(cs_ca_charged.inclusive_jets(10.0));
461
462 if (myJet_ca.size()==0) continue;
463 if (myJet_ca_charged.size()==0) continue;
464
465 // grooming parameters that are scanned.
466 vector<size_t> betas = { 0, 1, 2 };
467 for (size_t ibeta : betas) {
468
469 fastjet::contrib::SoftDrop sd(double(ibeta), 0.1); //beta, zcut
470 fastjet::PseudoJet sdJet = sd(myJet_ca[0]);
471 fastjet::PseudoJet sdJet_charged = sd(myJet_ca_charged[0]);
472
473 double rho2 = pow(sdJet.m()/myJets[i].pT(),2);
474 double log10rho2 = log(rho2)/log(10.);
475 double zg = sdJet.structure_of<fastjet::contrib::SoftDrop>().symmetry();
476 double rg = sdJet.structure_of<fastjet::contrib::SoftDrop>().delta_R();
477 rg = (rg > 0) ? log(rg) / log(10.) : -100;
478
479 double rho2_charged = pow(sdJet_charged.m()/myJet_ca_charged[0].pt(),2);
480 double log10rho2_charged = log(rho2_charged)/log(10.);
481 double zg_charged = sdJet_charged.structure_of<fastjet::contrib::SoftDrop>().symmetry();
482 double rg_charged = sdJet.structure_of<fastjet::contrib::SoftDrop>().delta_R();
483 rg_charged = (rg_charged > 0) ? log(rg_charged) / log(10.) : -100;
484
485 double pt_log10rho2 = return_bin(myJets[i].pT()/GeV, rho2, "m", ibeta);
486 double pt_zg = return_bin(myJets[i].pT()/GeV, zg, "zg", ibeta);
487 double pt_rg = return_bin(myJets[i].pT()/GeV, rg, "rg", ibeta);
488
489 double pt_log10rho2_charged = return_bin(myJets[i].pT()/GeV, rho2_charged, "tm", ibeta);
490 double pt_zg_charged = return_bin(myJets[i].pT()/GeV, zg_charged, "tzg", ibeta);
491 double pt_rg_charged = return_bin(myJets[i].pT()/GeV, rg_charged, "trg", ibeta);
492
493
494 if (ibeta==0) {
495 _h["_h_Table1"]->fill( log10rho2);
496 _h["_h_Table2"]->fill( log10rho2_charged);
497 _h["_h_Table7"]->fill( zg);
498 _h["_h_Table8"]->fill( zg_charged);
499 if (rg > -1.2)
500 _h["_h_Table13"]->fill( rg);
501 if (rg_charged > -1.2)
502 _h["_h_Table14"]->fill( rg_charged);
503
504 _h["_h_Table55"]->fill( pt_log10rho2);
505 _h["_h_Table56"]->fill( pt_log10rho2_charged);
506 _h["_h_Table61"]->fill( pt_zg);
507 _h["_h_Table62"]->fill( pt_zg_charged);
508 _h["_h_Table67"]->fill( pt_rg);
509 _h["_h_Table68"]->fill( pt_rg_charged);
510
511 if (isCentral[i]) {
512 _h["_h_Table19"]->fill( log10rho2);
513 _h["_h_Table20"]->fill( log10rho2_charged);
514 _h["_h_Table25"]->fill( zg);
515 _h["_h_Table26"]->fill( zg_charged);
516 if (rg > -1.2)
517 _h["_h_Table31"]->fill( rg);
518 if (rg_charged > -1.2)
519 _h["_h_Table32"]->fill( rg_charged);
520
521 _h["_h_Table73"]->fill( pt_log10rho2);
522 _h["_h_Table74"]->fill( pt_log10rho2_charged);
523 _h["_h_Table79"]->fill( pt_zg);
524 _h["_h_Table80"]->fill( pt_zg_charged);
525 _h["_h_Table85"]->fill( pt_rg);
526 _h["_h_Table86"]->fill( pt_rg_charged);
527 }
528
529 if (!isCentral[i]) {
530 _h["_h_Table37"]->fill( log10rho2);
531 _h["_h_Table38"]->fill( log10rho2_charged);
532 _h["_h_Table43"]->fill( zg);
533 _h["_h_Table44"]->fill( zg_charged);
534 if (rg > -1.2)
535 _h["_h_Table49"]->fill( rg);
536 if (rg_charged > -1.2)
537 _h["_h_Table50"]->fill( rg_charged);
538
539 _h["_h_Table91"]->fill( pt_log10rho2);
540 _h["_h_Table92"]->fill( pt_log10rho2_charged);
541 _h["_h_Table97"]->fill( pt_zg);
542 _h["_h_Table98"]->fill( pt_zg_charged);
543 _h["_h_Table103"]->fill( pt_rg);
544 _h["_h_Table104"]->fill( pt_rg_charged);
545 }
546 }
547 if (ibeta==1) {
548 _h["_h_Table3"]->fill( log10rho2);
549 _h["_h_Table4"]->fill( log10rho2_charged);
550 _h["_h_Table9"]->fill( zg);
551 _h["_h_Table10"]->fill( zg_charged);
552 if (rg > -1.2)
553 _h["_h_Table15"]->fill( rg);
554 if (rg_charged > -1.2)
555 _h["_h_Table16"]->fill( rg_charged);
556
557 _h["_h_Table57"]->fill( pt_log10rho2);
558 _h["_h_Table58"]->fill( pt_log10rho2_charged);
559 _h["_h_Table63"]->fill( pt_zg);
560 _h["_h_Table64"]->fill( pt_zg_charged);
561 _h["_h_Table69"]->fill( pt_rg);
562 _h["_h_Table70"]->fill( pt_rg_charged);
563
564 if (isCentral[i]) {
565 _h["_h_Table21"]->fill( log10rho2);
566 _h["_h_Table22"]->fill( log10rho2_charged);
567 _h["_h_Table27"]->fill( zg);
568 _h["_h_Table28"]->fill( zg_charged);
569 if (rg > -1.2)
570 _h["_h_Table33"]->fill( rg);
571 if (rg_charged > -1.2)
572 _h["_h_Table34"]->fill( rg_charged);
573
574 _h["_h_Table75"]->fill( pt_log10rho2);
575 _h["_h_Table76"]->fill( pt_log10rho2_charged);
576 _h["_h_Table81"]->fill( pt_zg);
577 _h["_h_Table82"]->fill( pt_zg_charged);
578 _h["_h_Table87"]->fill( pt_rg);
579 _h["_h_Table88"]->fill( pt_rg_charged);
580 }
581
582 if (!isCentral[i]) {
583 _h["_h_Table39"]->fill( log10rho2);
584 _h["_h_Table40"]->fill( log10rho2_charged);
585 _h["_h_Table45"]->fill( zg);
586 _h["_h_Table46"]->fill( zg_charged);
587 if (rg > -1.2)
588 _h["_h_Table51"]->fill( rg);
589 if (rg_charged > -1.2)
590 _h["_h_Table52"]->fill( rg_charged);
591
592 _h["_h_Table93"]->fill( pt_log10rho2);
593 _h["_h_Table94"]->fill( pt_log10rho2_charged);
594 _h["_h_Table99"]->fill( pt_zg);
595 _h["_h_Table100"]->fill( pt_zg_charged);
596 _h["_h_Table105"]->fill( pt_rg);
597 _h["_h_Table106"]->fill( pt_rg_charged);
598 }
599 }
600 if (ibeta==2) {
601 _h["_h_Table5"]->fill( log10rho2);
602 _h["_h_Table6"]->fill( log10rho2_charged);
603 _h["_h_Table11"]->fill( zg);
604 _h["_h_Table12"]->fill( zg_charged);
605 if (rg > -1.2)
606 _h["_h_Table17"]->fill( rg);
607 if (rg_charged > -1.2)
608 _h["_h_Table18"]->fill( rg_charged);
609
610 _h["_h_Table59"]->fill( pt_log10rho2);
611 _h["_h_Table60"]->fill( pt_log10rho2_charged);
612 _h["_h_Table65"]->fill( pt_zg);
613 _h["_h_Table66"]->fill( pt_zg_charged);
614 _h["_h_Table71"]->fill( pt_rg);
615 _h["_h_Table72"]->fill( pt_rg_charged);
616
617 if (isCentral[i]) {
618 _h["_h_Table23"]->fill( log10rho2);
619 _h["_h_Table24"]->fill( log10rho2_charged);
620 _h["_h_Table29"]->fill( zg);
621 _h["_h_Table30"]->fill( zg_charged);
622 if (rg > -1.2)
623 _h["_h_Table35"]->fill( rg);
624 if (rg_charged > -1.2)
625 _h["_h_Table36"]->fill( rg_charged);
626
627 _h["_h_Table77"]->fill( pt_log10rho2);
628 _h["_h_Table78"]->fill( pt_log10rho2_charged);
629 _h["_h_Table83"]->fill( pt_zg);
630 _h["_h_Table84"]->fill( pt_zg_charged);
631 _h["_h_Table89"]->fill( pt_rg);
632 _h["_h_Table90"]->fill( pt_rg_charged);
633 }
634
635 if (!isCentral[i]) {
636 _h["_h_Table41"]->fill( log10rho2);
637 _h["_h_Table42"]->fill( log10rho2_charged);
638 _h["_h_Table47"]->fill( zg);
639 _h["_h_Table48"]->fill( zg_charged);
640 if (rg > -1.2)
641 _h["_h_Table53"]->fill( rg);
642 if (rg_charged > -1.2)
643 _h["_h_Table54"]->fill( rg_charged);
644
645 _h["_h_Table95"]->fill( pt_log10rho2);
646 _h["_h_Table96"]->fill( pt_log10rho2_charged);
647 _h["_h_Table101"]->fill( pt_zg);
648 _h["_h_Table102"]->fill( pt_zg_charged);
649 _h["_h_Table107"]->fill( pt_rg);
650 _h["_h_Table108"]->fill( pt_rg_charged);
651 }
652 }
653
654 }
655 }
656 }
657
658 void finalize() {
659 //Normalization comes here.
660 histNorm(_h["_h_Table1"], "m");
661 histNorm(_h["_h_Table2"], "m");
662 histNorm(_h["_h_Table3"], "m");
663 histNorm(_h["_h_Table4"], "m");
664 histNorm(_h["_h_Table5"], "m");
665 histNorm(_h["_h_Table6"], "m");
666 histNorm(_h["_h_Table7"], "zg");
667 histNorm(_h["_h_Table8"], "zg");
668 histNorm(_h["_h_Table9"], "zg");
669 histNorm(_h["_h_Table10"], "zg");
670 histNorm(_h["_h_Table11"], "zg");
671 histNorm(_h["_h_Table12"], "zg");
672 histNorm(_h["_h_Table13"], "rg");
673 histNorm(_h["_h_Table14"], "rg");
674 histNorm(_h["_h_Table15"], "rg");
675 histNorm(_h["_h_Table16"], "rg");
676 histNorm(_h["_h_Table17"], "rg");
677 histNorm(_h["_h_Table18"], "rg");
678
679 histNorm(_h["_h_Table19"], "m");
680 histNorm(_h["_h_Table20"], "m");
681 histNorm(_h["_h_Table21"], "m");
682 histNorm(_h["_h_Table22"], "m");
683 histNorm(_h["_h_Table23"], "m");
684 histNorm(_h["_h_Table24"], "m");
685 histNorm(_h["_h_Table25"], "zg");
686 histNorm(_h["_h_Table26"], "zg");
687 histNorm(_h["_h_Table27"], "zg");
688 histNorm(_h["_h_Table28"], "zg");
689 histNorm(_h["_h_Table29"], "zg");
690 histNorm(_h["_h_Table30"], "zg");
691 histNorm(_h["_h_Table31"], "rg");
692 histNorm(_h["_h_Table32"], "rg");
693 histNorm(_h["_h_Table33"], "rg");
694 histNorm(_h["_h_Table34"], "rg");
695 histNorm(_h["_h_Table35"], "rg");
696 histNorm(_h["_h_Table36"], "rg");
697
698
699 histNorm(_h["_h_Table37"], "m");
700 histNorm(_h["_h_Table38"], "m");
701 histNorm(_h["_h_Table39"], "m");
702 histNorm(_h["_h_Table40"], "m");
703 histNorm(_h["_h_Table41"], "m");
704 histNorm(_h["_h_Table42"], "m");
705 histNorm(_h["_h_Table43"], "zg");
706 histNorm(_h["_h_Table44"], "zg");
707 histNorm(_h["_h_Table45"], "zg");
708 histNorm(_h["_h_Table46"], "zg");
709 histNorm(_h["_h_Table47"], "zg");
710 histNorm(_h["_h_Table48"], "zg");
711 histNorm(_h["_h_Table49"], "rg");
712 histNorm(_h["_h_Table50"], "rg");
713 histNorm(_h["_h_Table51"], "rg");
714 histNorm(_h["_h_Table52"], "rg");
715 histNorm(_h["_h_Table53"], "rg");
716 histNorm(_h["_h_Table54"], "rg");
717
718
719 ptNorm(_h["_h_Table55"], "m", 0);
720 ptNorm(_h["_h_Table56"], "m", 0);
721 ptNorm(_h["_h_Table57"], "m", 1);
722 ptNorm(_h["_h_Table58"], "m", 1);
723 ptNorm(_h["_h_Table59"], "m", 2);
724 ptNorm(_h["_h_Table60"], "m", 2);
725 ptNorm(_h["_h_Table61"], "zg", 0);
726 ptNorm(_h["_h_Table62"], "zg", 0);
727 ptNorm(_h["_h_Table63"], "zg", 1);
728 ptNorm(_h["_h_Table64"], "zg", 1);
729 ptNorm(_h["_h_Table65"], "zg", 2);
730 ptNorm(_h["_h_Table66"], "zg", 2);
731 ptNorm(_h["_h_Table67"], "rg", 0);
732 ptNorm(_h["_h_Table68"], "rg", 0);
733 ptNorm(_h["_h_Table69"], "rg", 1);
734 ptNorm(_h["_h_Table70"], "rg", 1);
735 ptNorm(_h["_h_Table71"], "rg", 2);
736 ptNorm(_h["_h_Table72"], "rg", 2);
737
738 ptNorm(_h["_h_Table73"], "m", 0);
739 ptNorm(_h["_h_Table74"], "m", 0);
740 ptNorm(_h["_h_Table75"], "m", 1);
741 ptNorm(_h["_h_Table76"], "m", 1);
742 ptNorm(_h["_h_Table77"], "m", 2);
743 ptNorm(_h["_h_Table78"], "m", 2);
744 ptNorm(_h["_h_Table79"], "zg", 0);
745 ptNorm(_h["_h_Table80"], "zg", 0);
746 ptNorm(_h["_h_Table81"], "zg", 1);
747 ptNorm(_h["_h_Table82"], "zg", 1);
748 ptNorm(_h["_h_Table83"], "zg", 2);
749 ptNorm(_h["_h_Table84"], "zg", 2);
750 ptNorm(_h["_h_Table85"], "rg", 0);
751 ptNorm(_h["_h_Table86"], "rg", 0);
752 ptNorm(_h["_h_Table87"], "rg", 1);
753 ptNorm(_h["_h_Table88"], "rg", 1);
754 ptNorm(_h["_h_Table89"], "rg", 2);
755 ptNorm(_h["_h_Table90"], "rg", 2);
756
757
758 ptNorm(_h["_h_Table91"], "m", 0);
759 ptNorm(_h["_h_Table92"], "m", 0);
760 ptNorm(_h["_h_Table93"], "m", 1);
761 ptNorm(_h["_h_Table94"], "m", 1);
762 ptNorm(_h["_h_Table95"], "m", 2);
763 ptNorm(_h["_h_Table96"], "m", 2);
764 ptNorm(_h["_h_Table97"], "zg", 0);
765 ptNorm(_h["_h_Table98"], "zg", 0);
766 ptNorm(_h["_h_Table99"], "zg", 1);
767 ptNorm(_h["_h_Table100"], "zg", 1);
768 ptNorm(_h["_h_Table101"], "zg", 2);
769 ptNorm(_h["_h_Table102"], "zg", 2);
770 ptNorm(_h["_h_Table103"], "rg", 0);
771 ptNorm(_h["_h_Table104"], "rg", 0);
772 ptNorm(_h["_h_Table105"], "rg", 1);
773 ptNorm(_h["_h_Table106"], "rg", 1);
774 ptNorm(_h["_h_Table107"], "rg", 2);
775 ptNorm(_h["_h_Table108"], "rg", 2);
776
777
778
779 getQuarkGluon(_h["_h_Table91"], _h["_h_Table73"], _h["_h_Table109"], _h["_h_Table127"], 2, "m", 0);
780 getQuarkGluon(_h["_h_Table92"], _h["_h_Table74"], _h["_h_Table110"], _h["_h_Table128"], 2, "m", 0);
781 getQuarkGluon(_h["_h_Table93"], _h["_h_Table75"], _h["_h_Table111"], _h["_h_Table129"], 2, "m", 1);
782 getQuarkGluon(_h["_h_Table94"], _h["_h_Table76"], _h["_h_Table112"], _h["_h_Table130"], 2, "m", 1);
783 getQuarkGluon(_h["_h_Table95"], _h["_h_Table77"], _h["_h_Table113"], _h["_h_Table131"], 2, "m", 2);
784 getQuarkGluon(_h["_h_Table96"], _h["_h_Table78"], _h["_h_Table114"], _h["_h_Table132"], 2, "m", 2);
785 getQuarkGluon(_h["_h_Table97"], _h["_h_Table79"], _h["_h_Table115"], _h["_h_Table133"], 2, "zg", 0);
786 getQuarkGluon(_h["_h_Table98"], _h["_h_Table80"], _h["_h_Table116"], _h["_h_Table134"], 2, "zg", 0);
787 getQuarkGluon(_h["_h_Table99"], _h["_h_Table81"], _h["_h_Table117"], _h["_h_Table135"], 2, "zg", 1);
788 getQuarkGluon(_h["_h_Table100"], _h["_h_Table82"], _h["_h_Table118"], _h["_h_Table136"], 2, "zg", 1);
789 getQuarkGluon(_h["_h_Table101"], _h["_h_Table83"], _h["_h_Table119"], _h["_h_Table137"], 2, "zg", 2);
790 getQuarkGluon(_h["_h_Table102"], _h["_h_Table84"], _h["_h_Table120"], _h["_h_Table138"], 2, "zg", 2);
791 getQuarkGluon(_h["_h_Table103"], _h["_h_Table85"], _h["_h_Table121"], _h["_h_Table139"], 2, "rg", 0);
792 getQuarkGluon(_h["_h_Table104"], _h["_h_Table86"], _h["_h_Table122"], _h["_h_Table140"], 2, "rg", 0);
793 getQuarkGluon(_h["_h_Table105"], _h["_h_Table87"], _h["_h_Table123"], _h["_h_Table141"], 2, "rg", 1);
794 getQuarkGluon(_h["_h_Table106"], _h["_h_Table88"], _h["_h_Table124"], _h["_h_Table142"], 2, "rg", 1);
795 getQuarkGluon(_h["_h_Table107"], _h["_h_Table89"], _h["_h_Table125"], _h["_h_Table143"], 2, "rg", 2);
796 getQuarkGluon(_h["_h_Table108"], _h["_h_Table90"], _h["_h_Table126"], _h["_h_Table144"], 2, "rg", 2);
797 }
798
799 protected:
800
801 size_t normBin1, normBin2;
802 vector<double> gluonFractionCentral, gluonFractionForward;
803 vector<double> rgBins, zgBins, rhoBins, ptBins, zgBinsBeta0;
804
805 private:
806 map<string, Histo1DPtr> _h;
807
808 };
809
810 RIVET_DECLARE_PLUGIN(ATLAS_2019_I1772062);
811}
|