rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMS_2016_I1491950

Differential cross sections for top quark pair production using the lepton+jets final state in proton proton collisions at 13 TeV
Experiment: CMS (LHC)
Inspire ID: 1491950
Status: VALIDATED
Authors:
  • Regina Demina
  • Yi-Ting Duh
  • Mario Galanti
  • Aran Garcia-Bellido
  • Otto Hindrichs
  • Mauro Verzetti
  • Markus Seidel
References:
  • Phys. Rev. D 95 (2017) 092001
  • arXiv: 1610.04191
  • CMS-TOP-16-008
Beams: p+ p+
Beam energies: (6500.0, 6500.0) GeV
Run details:
  • pp QCD interactions at $\sqrt{s} = 13$ TeV. Data collected by CMS during the year 2015. Selection of lepton+jets top pair candidate events at particle level.

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}