Rivet analyses referenceCMS_2016_I1491950Differential cross sections for top quark pair production using the lepton+jets final state in proton proton collisions at 13 TeVExperiment: CMS (LHC) Inspire ID: 1491950 Status: VALIDATED Authors:
Beam energies: (6500.0, 6500.0) GeV Run details:
Abstract: Differential and double-differential cross sections for the production of top quark pairs in proton-proton collisions at 13 TeV are measured as a function of jet multiplicity and of kinematic variables of the top quarks and the top quark-antiquark system. This analysis is based on data collected by the CMS experiment at the LHC corresponding to an integrated luminosity of 2.3 inverse femtobarns. The measurements are performed in the lepton+jets decay channels with a single muon or electron in the final state. The differential cross sections are presented at particle level, within a phase space close to the experimental acceptance, and at parton level in the full phase space. The results are compared to several standard model predictions. Rivet: This analysis is to be run on $\text{t}\bar{\text{t}}$ Monte Carlo. The particle-level phase space is defined using the following definitions: an electron or muon with $p_\text{T}>30\,\text{GeV}$ and $|\eta|<2.5$, dressed within a cone of radius 0.1; a jet is reconstructed with the anti-$k_t$ algorithm with a radius of 0.4, after removing the neutrinos and dressed leptons, with $p_\text{T}>25\,\text{GeV}$ and $|\eta|<2.5$; a jet that contains a B-hadron. A W boson is reconstructed from a lepton and the sum of the neutrino energies, while another W boson is reconstructed from a light jet pair. The two top quarks are reconstructed by combining b jets to these W boson. A check based on the W boson and top quark masses is performed to choose the proper combinations. Source code: CMS_2016_I1491950.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/FastJets.hh"
5#include "Rivet/Projections/DressedLeptons.hh"
6#include "Rivet/Projections/PromptFinalState.hh"
7#include "Rivet/Projections/IdentifiedFinalState.hh"
8#include "Rivet/Projections/VetoedFinalState.hh"
9
10namespace Rivet {
11
12
13 class CMS_2016_I1491950 : public Analysis {
14 public:
15
16 /// Constructor
17 CMS_2016_I1491950()
18 : Analysis("CMS_2016_I1491950")
19 { }
20
21 /// Book histograms and initialise projections before the run
22 void init() {
23
24 FinalState fs(Cuts::pT > 0. && Cuts::abseta < 6.);
25 PromptFinalState prompt_fs(fs);
26 prompt_fs.acceptMuonDecays(true);
27 prompt_fs.acceptTauDecays(true);
28
29 // Projection for dressed electrons and muons
30 Cut leptonCuts = Cuts::abseta < 2.5 and Cuts::pt > 30.*GeV;
31 SpecialDressedLeptons dressedleptons(prompt_fs, leptonCuts);
32 declare(dressedleptons, "DressedLeptons");
33
34 // Neutrinos
35 IdentifiedFinalState neutrinos(prompt_fs);
36 neutrinos.acceptNeutrinos();
37 declare(neutrinos, "Neutrinos");
38
39 // Projection for jets
40 VetoedFinalState fsForJets(fs);
41 fsForJets.addVetoOnThisFinalState(dressedleptons);
42 fsForJets.addVetoOnThisFinalState(neutrinos);
43 declare(FastJets(fsForJets, FastJets::ANTIKT, 0.4, JetAlg::Muons::DECAY, JetAlg::Invisibles::DECAY), "Jets");
44
45 //book hists
46 book(_hist_thadpt, "d01-x02-y01");
47 book(_hist_thady, "d03-x02-y01");
48 book(_hist_tleppt, "d05-x02-y01");
49 book(_hist_tlepy, "d07-x02-y01");
50 book(_hist_ttpt, "d09-x02-y01");
51 book(_hist_tty, "d13-x02-y01");
52 book(_hist_ttm, "d11-x02-y01");
53 book(_hist_njet, "d15-x02-y01");
54 book(_hist_njets_thadpt_1, "d17-x02-y01");
55 book(_hist_njets_thadpt_2, "d18-x02-y01");
56 book(_hist_njets_thadpt_3, "d19-x02-y01");
57 book(_hist_njets_thadpt_4, "d20-x02-y01");
58 book(_hist_njets_ttpt_1, "d22-x02-y01");
59 book(_hist_njets_ttpt_2, "d23-x02-y01");
60 book(_hist_njets_ttpt_3, "d24-x02-y01");
61 book(_hist_njets_ttpt_4, "d25-x02-y01");
62 book(_hist_thady_thadpt_1, "d27-x02-y01");
63 book(_hist_thady_thadpt_2, "d28-x02-y01");
64 book(_hist_thady_thadpt_3, "d29-x02-y01");
65 book(_hist_thady_thadpt_4, "d30-x02-y01");
66 book(_hist_ttm_tty_1, "d32-x02-y01");
67 book(_hist_ttm_tty_2, "d33-x02-y01");
68 book(_hist_ttm_tty_3, "d34-x02-y01");
69 book(_hist_ttm_tty_4, "d35-x02-y01");
70 book(_hist_ttpt_ttm_1, "d37-x02-y01");
71 book(_hist_ttpt_ttm_2, "d38-x02-y01");
72 book(_hist_ttpt_ttm_3, "d39-x02-y01");
73 book(_hist_ttpt_ttm_4, "d40-x02-y01");
74 book(_histnorm_thadpt, "d42-x02-y01");
75 book(_histnorm_thady, "d44-x02-y01");
76 book(_histnorm_tleppt, "d46-x02-y01");
77 book(_histnorm_tlepy, "d48-x02-y01");
78 book(_histnorm_ttpt, "d50-x02-y01");
79 book(_histnorm_tty, "d54-x02-y01");
80 book(_histnorm_ttm, "d52-x02-y01");
81 book(_histnorm_njet, "d56-x02-y01");
82 book(_histnorm_njets_thadpt_1, "d58-x02-y01");
83 book(_histnorm_njets_thadpt_2, "d59-x02-y01");
84 book(_histnorm_njets_thadpt_3, "d60-x02-y01");
85 book(_histnorm_njets_thadpt_4, "d61-x02-y01");
86 book(_histnorm_njets_ttpt_1, "d63-x02-y01");
87 book(_histnorm_njets_ttpt_2, "d64-x02-y01");
88 book(_histnorm_njets_ttpt_3, "d65-x02-y01");
89 book(_histnorm_njets_ttpt_4, "d66-x02-y01");
90 book(_histnorm_thady_thadpt_1, "d68-x02-y01");
91 book(_histnorm_thady_thadpt_2, "d69-x02-y01");
92 book(_histnorm_thady_thadpt_3, "d70-x02-y01");
93 book(_histnorm_thady_thadpt_4, "d71-x02-y01");
94 book(_histnorm_ttm_tty_1, "d73-x02-y01");
95 book(_histnorm_ttm_tty_2, "d74-x02-y01");
96 book(_histnorm_ttm_tty_3, "d75-x02-y01");
97 book(_histnorm_ttm_tty_4, "d76-x02-y01");
98 book(_histnorm_ttpt_ttm_1, "d78-x02-y01");
99 book(_histnorm_ttpt_ttm_2, "d79-x02-y01");
100 book(_histnorm_ttpt_ttm_3, "d80-x02-y01");
101 book(_histnorm_ttpt_ttm_4, "d81-x02-y01");
102
103 }
104
105
106 /// Perform the per-event analysis
107 void analyze(const Event& event) {
108
109 // leptons
110 const SpecialDressedLeptons& dressedleptons_proj = applyProjection<SpecialDressedLeptons>(event, "DressedLeptons");
111 std::vector<DressedLepton> dressedLeptons = dressedleptons_proj.dressedLeptons();
112 if(dressedLeptons.size() != 1) return;
113
114 // neutrinos
115 const Particles neutrinos = apply<FinalState>(event, "Neutrinos").particlesByPt();
116 _nusum = FourMomentum(0., 0., 0., 0.);
117 for(const Particle& neutrino : neutrinos)
118 _nusum += neutrino.momentum();
119 _wl = _nusum + dressedLeptons[0].momentum();
120
121 // jets
122 Cut jet_cut = (Cuts::abseta < 2.5) and (Cuts::pT > 25.*GeV);
123 const Jets jets = apply<FastJets>(event, "Jets").jetsByPt(jet_cut);
124 Jets allJets;
125 for (const Jet& jet : jets) {
126 allJets.push_back(jet);
127 }
128 Jets bJets;
129 for (const Jet& jet : allJets) {
130 if (jet.bTagged()) bJets.push_back(jet);
131 }
132
133 if(bJets.size() < 2 || allJets.size() < 4) return;
134
135 //construct top quark proxies
136 double Kmin = numeric_limits<double>::max();
137 for(const Jet& itaj : allJets) {
138 for(const Jet& itbj : allJets) {
139 if (itaj.momentum() == itbj.momentum()) continue;
140 FourMomentum wh(itaj.momentum() + itbj.momentum());
141 for(const Jet& ithbj : bJets) {
142 if(itaj.momentum() == ithbj.momentum() || itbj.momentum() == ithbj.momentum()) continue;
143 FourMomentum th(wh + ithbj.momentum());
144 for(const Jet& itlbj : bJets) {
145 if(itaj.momentum() == itlbj.momentum() || itbj.momentum() == itlbj.momentum() || ithbj.momentum() == itlbj.momentum()) continue;
146 FourMomentum tl(_wl + itlbj.momentum());
147
148 double K = pow(wh.mass() - 80.4, 2) + pow(th.mass() - 172.5, 2) + pow(tl.mass() - 172.5, 2);
149 if(K < Kmin)
150 {
151 Kmin = K;
152 _tl = tl;
153 _th = th;
154 _wh = wh;
155 }
156 }
157 }
158 }
159 }
160
161 _hist_thadpt->fill(_th.pt());
162 _hist_thady->fill(abs(_th.rapidity()) );
163 _hist_tleppt->fill(_tl.pt() );
164 _hist_tlepy->fill(abs(_tl.rapidity()) );
165 _histnorm_thadpt->fill(_th.pt());
166 _histnorm_thady->fill(abs(_th.rapidity()) );
167 _histnorm_tleppt->fill(_tl.pt() );
168 _histnorm_tlepy->fill(abs(_tl.rapidity()) );
169 FourMomentum tt(_tl+_th);
170 _hist_ttpt->fill(tt.pt() );
171 _hist_tty->fill(abs(tt.rapidity()) );
172 _hist_ttm->fill(tt.mass() );
173 _hist_njet->fill(min(allJets.size()-4., 4.));
174 _histnorm_ttpt->fill(tt.pt() );
175 _histnorm_tty->fill(abs(tt.rapidity()) );
176 _histnorm_ttm->fill(tt.mass() );
177 _histnorm_njet->fill(min(allJets.size()-4., 4.));
178 if(allJets.size() == 4)
179 {
180 _hist_njets_thadpt_1->fill(_th.pt());
181 _hist_njets_ttpt_1->fill(tt.pt());
182 _histnorm_njets_thadpt_1->fill(_th.pt());
183 _histnorm_njets_ttpt_1->fill(tt.pt());
184 }
185 else if(allJets.size() == 5)
186 {
187 _hist_njets_thadpt_2->fill(_th.pt());
188 _hist_njets_ttpt_2->fill(tt.pt());
189 _histnorm_njets_thadpt_2->fill(_th.pt());
190 _histnorm_njets_ttpt_2->fill(tt.pt());
191 }
192 else if(allJets.size() == 6)
193 {
194 _hist_njets_thadpt_3->fill(_th.pt());
195 _hist_njets_ttpt_3->fill(tt.pt());
196 _histnorm_njets_thadpt_3->fill(_th.pt());
197 _histnorm_njets_ttpt_3->fill(tt.pt());
198 }
199 else //>= 4 jets
200 {
201 _hist_njets_thadpt_4->fill(_th.pt());
202 _hist_njets_ttpt_4->fill(tt.pt());
203 _histnorm_njets_thadpt_4->fill(_th.pt());
204 _histnorm_njets_ttpt_4->fill(tt.pt());
205 }
206
207 if(abs(_th.rapidity()) < 0.5)
208 {
209 _hist_thady_thadpt_1->fill(_th.pt());
210 _histnorm_thady_thadpt_1->fill(_th.pt());
211 }
212 else if(abs(_th.rapidity()) < 1.0)
213 {
214 _hist_thady_thadpt_2->fill(_th.pt());
215 _histnorm_thady_thadpt_2->fill(_th.pt());
216 }
217 else if(abs(_th.rapidity()) < 1.5)
218 {
219 _hist_thady_thadpt_3->fill(_th.pt());
220 _histnorm_thady_thadpt_3->fill(_th.pt());
221 }
222 else if(abs(_th.rapidity()) < 2.5)
223 {
224 _hist_thady_thadpt_4->fill(_th.pt());
225 _histnorm_thady_thadpt_4->fill(_th.pt());
226 }
227
228 if(tt.mass() >= 300. && tt.mass() < 450.)
229 {
230 _hist_ttm_tty_1->fill(abs(tt.rapidity()));
231 _histnorm_ttm_tty_1->fill(abs(tt.rapidity()));
232 }
233 else if(tt.mass() >= 450. && tt.mass() < 625.)
234 {
235 _hist_ttm_tty_2->fill(abs(tt.rapidity()));
236 _histnorm_ttm_tty_2->fill(abs(tt.rapidity()));
237 }
238 else if(tt.mass() >= 625. && tt.mass() < 850.)
239 {
240 _hist_ttm_tty_3->fill(abs(tt.rapidity()));
241 _histnorm_ttm_tty_3->fill(abs(tt.rapidity()));
242 }
243 else if(tt.mass() >= 850. && tt.mass() < 2000.)
244 {
245 _hist_ttm_tty_4->fill(abs(tt.rapidity()));
246 _histnorm_ttm_tty_4->fill(abs(tt.rapidity()));
247 }
248
249 if(tt.pt() < 35.)
250 {
251 _hist_ttpt_ttm_1->fill(tt.mass());
252 _histnorm_ttpt_ttm_1->fill(tt.mass());
253 }
254 else if(tt.pt() < 80.)
255 {
256 _hist_ttpt_ttm_2->fill(tt.mass());
257 _histnorm_ttpt_ttm_2->fill(tt.mass());
258 }
259 else if(tt.pt() < 140.)
260 {
261 _hist_ttpt_ttm_3->fill(tt.mass());
262 _histnorm_ttpt_ttm_3->fill(tt.mass());
263 }
264 else if(tt.pt() < 500.)
265 {
266 _hist_ttpt_ttm_4->fill(tt.mass());
267 _histnorm_ttpt_ttm_4->fill(tt.mass());
268 }
269
270 }
271
272
273 /// Normalise histograms etc., after the run
274 void finalize()
275 {
276 scale(_hist_thadpt, crossSection()/sumOfWeights());
277 scale(_hist_thady, crossSection()/sumOfWeights());
278 scale(_hist_tleppt, crossSection()/sumOfWeights());
279 scale(_hist_tlepy, crossSection()/sumOfWeights());
280 scale(_hist_ttpt, crossSection()/sumOfWeights());
281 scale(_hist_tty, crossSection()/sumOfWeights());
282 scale(_hist_ttm, crossSection()/sumOfWeights());
283 scale(_hist_njet, crossSection()/sumOfWeights());
284 scale(_hist_njets_thadpt_1, crossSection()/sumOfWeights());
285 scale(_hist_njets_thadpt_2, crossSection()/sumOfWeights());
286 scale(_hist_njets_thadpt_3, crossSection()/sumOfWeights());
287 scale(_hist_njets_thadpt_4, crossSection()/sumOfWeights());
288 scale(_hist_njets_ttpt_1, crossSection()/sumOfWeights());
289 scale(_hist_njets_ttpt_2, crossSection()/sumOfWeights());
290 scale(_hist_njets_ttpt_3, crossSection()/sumOfWeights());
291 scale(_hist_njets_ttpt_4, crossSection()/sumOfWeights());
292 scale(_hist_thady_thadpt_1, crossSection()/sumOfWeights()/0.5);
293 scale(_hist_thady_thadpt_2, crossSection()/sumOfWeights()/0.5);
294 scale(_hist_thady_thadpt_3, crossSection()/sumOfWeights()/0.5);
295 scale(_hist_thady_thadpt_4, crossSection()/sumOfWeights()/1.0);
296 scale(_hist_ttm_tty_1, crossSection()/sumOfWeights()/150.);
297 scale(_hist_ttm_tty_2, crossSection()/sumOfWeights()/175.);
298 scale(_hist_ttm_tty_3, crossSection()/sumOfWeights()/225.);
299 scale(_hist_ttm_tty_4, crossSection()/sumOfWeights()/1150.);
300 scale(_hist_ttpt_ttm_1, crossSection()/sumOfWeights()/35.);
301 scale(_hist_ttpt_ttm_2, crossSection()/sumOfWeights()/45.);
302 scale(_hist_ttpt_ttm_3, crossSection()/sumOfWeights()/60.);
303 scale(_hist_ttpt_ttm_4, crossSection()/sumOfWeights()/360.);
304
305 scale(_histnorm_thadpt, 1./_histnorm_thadpt->sumW(false));
306 scale(_histnorm_thady, 1./_histnorm_thady->sumW(false));
307 scale(_histnorm_tleppt, 1./_histnorm_tleppt->sumW(false));
308 scale(_histnorm_tlepy, 1./_histnorm_tlepy->sumW(false));
309 scale(_histnorm_ttpt, 1./_histnorm_ttpt->sumW(false));
310 scale(_histnorm_tty, 1./_histnorm_tty->sumW(false));
311 scale(_histnorm_ttm, 1./_histnorm_ttm->sumW(false));
312 scale(_histnorm_njet, 1./_histnorm_njet->sumW(false));
313 double sum_njets_thadpt = _histnorm_njets_thadpt_1->sumW(false) + _histnorm_njets_thadpt_2->sumW(false) + _histnorm_njets_thadpt_3->sumW(false) + _histnorm_njets_thadpt_4->sumW(false);
314 scale(_histnorm_njets_thadpt_1, 1./sum_njets_thadpt);
315 scale(_histnorm_njets_thadpt_2, 1./sum_njets_thadpt);
316 scale(_histnorm_njets_thadpt_3, 1./sum_njets_thadpt);
317 scale(_histnorm_njets_thadpt_4, 1./sum_njets_thadpt);
318 double sum_njets_ttpt = _histnorm_njets_ttpt_1->sumW(false) + _histnorm_njets_ttpt_2->sumW(false) + _histnorm_njets_ttpt_3->sumW(false) + _histnorm_njets_ttpt_4->sumW(false);
319 scale(_histnorm_njets_ttpt_1, 1./sum_njets_ttpt);
320 scale(_histnorm_njets_ttpt_2, 1./sum_njets_ttpt);
321 scale(_histnorm_njets_ttpt_3, 1./sum_njets_ttpt);
322 scale(_histnorm_njets_ttpt_4, 1./sum_njets_ttpt);
323 double sum_thady_thadpt = _histnorm_thady_thadpt_1->sumW(false) + _histnorm_thady_thadpt_2->sumW(false) + _histnorm_thady_thadpt_3->sumW(false) + _histnorm_thady_thadpt_4->sumW(false);
324 scale(_histnorm_thady_thadpt_1, 1./sum_thady_thadpt/0.5);
325 scale(_histnorm_thady_thadpt_2, 1./sum_thady_thadpt/0.5);
326 scale(_histnorm_thady_thadpt_3, 1./sum_thady_thadpt/0.5);
327 scale(_histnorm_thady_thadpt_4, 1./sum_thady_thadpt/1.0);
328 double sum_ttm_tty = _histnorm_ttm_tty_1->sumW(false) + _histnorm_ttm_tty_2->sumW(false) + _histnorm_ttm_tty_3->sumW(false) + _histnorm_ttm_tty_4->sumW(false);
329 scale(_histnorm_ttm_tty_1, 1./sum_ttm_tty/150.);
330 scale(_histnorm_ttm_tty_2, 1./sum_ttm_tty/175.);
331 scale(_histnorm_ttm_tty_3, 1./sum_ttm_tty/225.);
332 scale(_histnorm_ttm_tty_4, 1./sum_ttm_tty/1150.);
333 double sum_ttpt_ttm = _histnorm_ttpt_ttm_1->sumW(false) + _histnorm_ttpt_ttm_2->sumW(false) + _histnorm_ttpt_ttm_3->sumW(false) + _histnorm_ttpt_ttm_4->sumW(false);
334 scale(_histnorm_ttpt_ttm_1, 1./sum_ttpt_ttm/35.);
335 scale(_histnorm_ttpt_ttm_2, 1./sum_ttpt_ttm/45.);
336 scale(_histnorm_ttpt_ttm_3, 1./sum_ttpt_ttm/60.);
337 scale(_histnorm_ttpt_ttm_4, 1./sum_ttpt_ttm/360.);
338
339 }
340
341
342 /// @brief Special dressed lepton finder
343 ///
344 /// Find dressed leptons by clustering all leptons and photons
345 class SpecialDressedLeptons : public FinalState {
346 public:
347 /// The default constructor. May specify cuts
348 SpecialDressedLeptons(const FinalState& fs, const Cut& cut)
349 : FinalState(cut)
350 {
351 setName("SpecialDressedLeptons");
352 IdentifiedFinalState ifs(fs);
353 ifs.acceptIdPair(PID::PHOTON);
354 ifs.acceptIdPair(PID::ELECTRON);
355 ifs.acceptIdPair(PID::MUON);
356 declare(ifs, "IFS");
357 declare(FastJets(ifs, FastJets::ANTIKT, 0.1), "LeptonJets");
358 }
359
360 /// Clone on the heap.
361 virtual unique_ptr<Projection> clone() const {
362 return unique_ptr<Projection>(new SpecialDressedLeptons(*this));
363 }
364
365 /// Retrieve the dressed leptons
366 const vector<DressedLepton>& dressedLeptons() const { return _clusteredLeptons; }
367
368 private:
369 /// Container which stores the clustered lepton objects
370 vector<DressedLepton> _clusteredLeptons;
371
372 public:
373 void project(const Event& e) {
374
375 _theParticles.clear();
376 _clusteredLeptons.clear();
377
378 vector<DressedLepton> allClusteredLeptons;
379
380 const Jets jets = applyProjection<FastJets>(e, "LeptonJets").jetsByPt(5.*GeV);
381 for (const Jet& jet : jets) {
382 Particle lepCand;
383 for (const Particle& cand : jet.particles()) {
384 const int absPdgId = abs(cand.pid());
385 if (absPdgId == PID::ELECTRON || absPdgId == PID::MUON) {
386 if (cand.pt() > lepCand.pt()) lepCand = cand;
387 }
388 }
389
390 //Central lepton must be the major component
391 if ((lepCand.pt() < jet.pt()/2.) || (lepCand.pid() == 0)) continue;
392
393 DressedLepton lepton(lepCand);
394 for (const Particle& cand : jet.particles()) {
395 if (isSame(cand, lepCand)) continue;
396 if (cand.pid() != PID::PHOTON) continue;
397 lepton.addConstituent(cand, true);
398 }
399 allClusteredLeptons.push_back(lepton);
400 }
401
402 for (const DressedLepton& lepton : allClusteredLeptons) {
403 if (accept(lepton)) {
404 _clusteredLeptons.push_back(lepton);
405 _theParticles.push_back(lepton.constituentLepton());
406 _theParticles += lepton.constituentPhotons();
407 }
408 }
409 }
410
411 };
412
413
414 private:
415
416 FourMomentum _tl;
417 FourMomentum _th;
418 FourMomentum _wl;
419 FourMomentum _wh;
420 FourMomentum _nusum;
421
422 Histo1DPtr _hist_thadpt;
423 Histo1DPtr _hist_thady;
424 Histo1DPtr _hist_tleppt;
425 Histo1DPtr _hist_tlepy;
426 Histo1DPtr _hist_ttpt;
427 Histo1DPtr _hist_tty;
428 Histo1DPtr _hist_ttm;
429 Histo1DPtr _hist_njet;
430 Histo1DPtr _hist_njets_thadpt_1;
431 Histo1DPtr _hist_njets_thadpt_2;
432 Histo1DPtr _hist_njets_thadpt_3;
433 Histo1DPtr _hist_njets_thadpt_4;
434 Histo1DPtr _hist_njets_ttpt_1;
435 Histo1DPtr _hist_njets_ttpt_2;
436 Histo1DPtr _hist_njets_ttpt_3;
437 Histo1DPtr _hist_njets_ttpt_4;
438 Histo1DPtr _hist_thady_thadpt_1;
439 Histo1DPtr _hist_thady_thadpt_2;
440 Histo1DPtr _hist_thady_thadpt_3;
441 Histo1DPtr _hist_thady_thadpt_4;
442 Histo1DPtr _hist_ttm_tty_1;
443 Histo1DPtr _hist_ttm_tty_2;
444 Histo1DPtr _hist_ttm_tty_3;
445 Histo1DPtr _hist_ttm_tty_4;
446 Histo1DPtr _hist_ttpt_ttm_1;
447 Histo1DPtr _hist_ttpt_ttm_2;
448 Histo1DPtr _hist_ttpt_ttm_3;
449 Histo1DPtr _hist_ttpt_ttm_4;
450
451 Histo1DPtr _histnorm_thadpt;
452 Histo1DPtr _histnorm_thady;
453 Histo1DPtr _histnorm_tleppt;
454 Histo1DPtr _histnorm_tlepy;
455 Histo1DPtr _histnorm_ttpt;
456 Histo1DPtr _histnorm_tty;
457 Histo1DPtr _histnorm_ttm;
458 Histo1DPtr _histnorm_njet;
459 Histo1DPtr _histnorm_njets_thadpt_1;
460 Histo1DPtr _histnorm_njets_thadpt_2;
461 Histo1DPtr _histnorm_njets_thadpt_3;
462 Histo1DPtr _histnorm_njets_thadpt_4;
463 Histo1DPtr _histnorm_njets_ttpt_1;
464 Histo1DPtr _histnorm_njets_ttpt_2;
465 Histo1DPtr _histnorm_njets_ttpt_3;
466 Histo1DPtr _histnorm_njets_ttpt_4;
467 Histo1DPtr _histnorm_thady_thadpt_1;
468 Histo1DPtr _histnorm_thady_thadpt_2;
469 Histo1DPtr _histnorm_thady_thadpt_3;
470 Histo1DPtr _histnorm_thady_thadpt_4;
471 Histo1DPtr _histnorm_ttm_tty_1;
472 Histo1DPtr _histnorm_ttm_tty_2;
473 Histo1DPtr _histnorm_ttm_tty_3;
474 Histo1DPtr _histnorm_ttm_tty_4;
475 Histo1DPtr _histnorm_ttpt_ttm_1;
476 Histo1DPtr _histnorm_ttpt_ttm_2;
477 Histo1DPtr _histnorm_ttpt_ttm_3;
478 Histo1DPtr _histnorm_ttpt_ttm_4;
479
480 };
481
482
483
484 // The hook for the plugin system
485 RIVET_DECLARE_PLUGIN(CMS_2016_I1491950);
486
487}
|