rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMS_2015_I1397174

Measurement of ttbar production with additional jet activity, including b quark jets, in the dilepton decay channel using pp collisions at sqrt(s)=8 TeV
Experiment: CMS (LHC)
Inspire ID: 1397174
Status: VALIDATED
Authors:
  • Javier Fernandez
  • Jungwan John Goh
  • Efe Yazgan
  • Markus Seidel
  • James Keaveney
  • Elvire Bouvier
  • Benedikt Maier
  • Andy Buckley
References: Beams: p+ p+
Beam energies: (4000.0, 4000.0) GeV
Run details:
  • ttbar events at $\sqrt{s}=8 \text{TeV}. Top quarks are expected in the event record to identify additional jets. Gap fractions require high statistics in a single run or custom merging of the YODA files.

Jet multiplicity distributions in top quark pair ($t\bar{t}$) events are measured in $pp$ collisions at a centre-of-mass energy of 8 \text{TeV} with the CMS detector at the LHC, using a data set corresponding to an integrated luminosity of 19.7/fb. The measurement is performed in the dilepton decay channels $e^+e^-$, $\mu^+\mu^-$, and $e^\pm\mu^\mp$). The absolute and normalized differential cross-sections for $t\bar{t}$ production are measured as a function of jet multiplicity for different jet transverse momentum thresholds and the kinematic properties of the leading additional jets. The differential $t\bar{t}b$ and $t\bar{t}b\bar{b}$ cross-sections are presented for the first time as a function of the kinematic properties of the leading additional $b$-jets. Furthermore, the fraction of events without additional jets above a threshold is measured as a function of the transverse momenta of the leading additional jets and the scalar sum of the transverse momenta of all additional jets.

Source code: CMS_2015_I1397174.cc
  1#include "Rivet/Analysis.hh"
  2#include "Rivet/Projections/PartonicTops.hh"
  3#include "Rivet/Projections/VetoedFinalState.hh"
  4#include "Rivet/Projections/FastJets.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// Fully leptonic partonic ttbar analysis
 10  class CMS_2015_I1397174 : public Analysis {
 11  public:
 12
 13    /// Minimal constructor
 14    CMS_2015_I1397174()
 15      : Analysis("CMS_2015_I1397174") { }
 16
 17
 18    /// @name Analysis methods
 19    //@{
 20
 21    /// Set up projections and book histograms
 22    void init() {
 23
 24      // Parton level top quarks
 25      declare(PartonicTops(PartonicTops::DecayMode::E_MU, false), "PartonTops");
 26
 27      // Find jets not related to the top/W decays
 28      VetoedFinalState vfs;
 29      vfs.addDecayProductsVeto(PID::WPLUSBOSON);
 30      vfs.addDecayProductsVeto(PID::WMINUSBOSON);
 31      FastJets fj(vfs, FastJets::ANTIKT, 0.5, JetAlg::Muons::ALL, JetAlg::Invisibles::ALL);
 32      declare(fj, "Jets");
 33
 34      // Book histograms
 35      book(_hVis_nJet30_abs       , 1, 1, 1);
 36      book(_hVis_nJet30           , 2, 1, 1);
 37      book(_hVis_nJet60_abs       , 3, 1, 1);
 38      book(_hVis_nJet60           , 4, 1, 1);
 39      book(_hVis_nJet100_abs      , 5, 1, 1);
 40      book(_hVis_nJet100          , 6, 1, 1);
 41
 42      book(_hVis_addJet1Pt_abs    , 7, 1, 1);
 43      book(_hVis_addJet1Pt        , 8, 1, 1);
 44      book(_hVis_addJet1Eta_abs   , 9, 1, 1);
 45      book(_hVis_addJet1Eta       ,10, 1, 1);
 46      book(_hVis_addJet2Pt_abs    ,11, 1, 1);
 47      book(_hVis_addJet2Pt        ,12, 1, 1);
 48      book(_hVis_addJet2Eta_abs   ,13, 1, 1);
 49      book(_hVis_addJet2Eta       ,14, 1, 1);
 50      book(_hVis_addJJMass_abs    ,15, 1, 1);
 51      book(_hVis_addJJMass        ,16, 1, 1);
 52      book(_hVis_addJJDR_abs      ,17, 1, 1);
 53      book(_hVis_addJJDR          ,18, 1, 1);
 54      book(_hVis_addJJHT_abs      ,19, 1, 1);
 55      book(_hVis_addJJHT          ,20, 1, 1);
 56
 57      book(_hFull_addJet1Pt_abs   ,21, 1, 1);
 58      book(_hFull_addJet1Pt       ,22, 1, 1);
 59      book(_hFull_addJet1Eta_abs  ,23, 1, 1);
 60      book(_hFull_addJet1Eta      ,24, 1, 1);
 61      book(_hFull_addJet2Pt_abs   ,25, 1, 1);
 62      book(_hFull_addJet2Pt       ,26, 1, 1);
 63      book(_hFull_addJet2Eta_abs  ,27, 1, 1);
 64      book(_hFull_addJet2Eta      ,28, 1, 1);
 65      book(_hFull_addJJMass_abs   ,29, 1, 1);
 66      book(_hFull_addJJMass       ,30, 1, 1);
 67      book(_hFull_addJJDR_abs     ,31, 1, 1);
 68      book(_hFull_addJJDR         ,32, 1, 1);
 69      book(_hFull_addJJHT_abs     ,33, 1, 1);
 70      book(_hFull_addJJHT         ,34, 1, 1);
 71
 72      book(_hVis_addBJet1Pt_abs   ,35, 1, 1);
 73      book(_hVis_addBJet1Pt       ,36, 1, 1);
 74      book(_hVis_addBJet1Eta_abs  ,37, 1, 1);
 75      book(_hVis_addBJet1Eta      ,38, 1, 1);
 76      book(_hVis_addBJet2Pt_abs   ,39, 1, 1);
 77      book(_hVis_addBJet2Pt       ,40, 1, 1);
 78      book(_hVis_addBJet2Eta_abs  ,41, 1, 1);
 79      book(_hVis_addBJet2Eta      ,42, 1, 1);
 80      book(_hVis_addBBMass_abs    ,43, 1, 1);
 81      book(_hVis_addBBMass        ,44, 1, 1);
 82      book(_hVis_addBBDR_abs      ,45, 1, 1);
 83      book(_hVis_addBBDR          ,46, 1, 1);
 84
 85      book(_hFull_addBJet1Pt_abs  ,47, 1, 1);
 86      book(_hFull_addBJet1Pt      ,48, 1, 1);
 87      book(_hFull_addBJet1Eta_abs ,49, 1, 1);
 88      book(_hFull_addBJet1Eta     ,50, 1, 1);
 89      book(_hFull_addBJet2Pt_abs  ,51, 1, 1);
 90      book(_hFull_addBJet2Pt      ,52, 1, 1);
 91      book(_hFull_addBJet2Eta_abs ,53, 1, 1);
 92      book(_hFull_addBJet2Eta     ,54, 1, 1);
 93      book(_hFull_addBBMass_abs   ,55, 1, 1);
 94      book(_hFull_addBBMass       ,56, 1, 1);
 95      book(_hFull_addBBDR_abs     ,57, 1, 1);
 96      book(_hFull_addBBDR         ,58, 1, 1);
 97
 98      book(_h_gap_addJet1Pt       ,59, 1, 1);
 99      book(_h_gap_addJet1Pt_eta0  ,60, 1, 1);
100      book(_h_gap_addJet1Pt_eta1  ,61, 1, 1);
101      book(_h_gap_addJet1Pt_eta2  ,62, 1, 1);
102      book(_h_gap_addJet2Pt       ,63, 1, 1);
103      book(_h_gap_addJet2Pt_eta0  ,64, 1, 1);
104      book(_h_gap_addJet2Pt_eta1  ,65, 1, 1);
105      book(_h_gap_addJet2Pt_eta2  ,66, 1, 1);
106      book(_h_gap_addJetHT        ,67, 1, 1);
107      book(_h_gap_addJetHT_eta0   ,68, 1, 1);
108      book(_h_gap_addJetHT_eta1   ,69, 1, 1);
109      book(_h_gap_addJetHT_eta2   ,70, 1, 1);
110    }
111
112
113    void analyze(const Event& event) {
114
115      // The objects used in the PAPER 12-041 are defined as follows (see p.16 for details):
116      //
117      //   * Leptons    : from the W boson decays after FSR
118      //   * Jets       : anti-kT R=0.5 to all stable particles
119      //                               exclude W->enu, munu, taunu
120      //   * B jet      : B-Ghost matched
121      //   * B from top : B hadron from top->b decay
122      //
123      // Visible phase space definition:
124      //
125      //   * Leptons         : pT > 20, |eta| < 2.4
126      //   * B jets from top : pT > 30, |eta| < 2.4
127      //     Additional jets : pT > 20, |eta| < 2.4
128      //   *
129      // Full phase space definition:
130      //
131      //   * Correction to dilepton BR from W boson BR
132      //   * No cut on top decay products
133      //   * Additional jets : pT > 20, |eta| < 2.4
134
135      // Do the analysis only for the ttbar full leptonic channel, removing tau decays
136      const Particles partontops = apply<ParticleFinder>(event, "PartonTops").particlesByPt();
137      if (partontops.size() != 2) vetoEvent;
138      const Particle& t1 = partontops[0];
139      const Particle& t2 = partontops[1];
140
141      // Apply acceptance cuts on top-decay leptons (existence should be guaranteed)
142      const auto isPromptChLepton = [](const Particle& p){return p.isPrompt() && isChargedLepton(p);};
143      const Particle lep1 = t1.allDescendants(lastParticleWith(isPromptChLepton)).front();
144      const Particle lep2 = t2.allDescendants(lastParticleWith(isPromptChLepton)).front();
145      if (lep1.pT() < 1e-9*GeV || lep2.pT() < 1e-9*GeV) vetoEvent; // sanity check?
146
147      const Jets jets = apply<JetAlg>(event, "Jets").jetsByPt(Cuts::pT > 20*GeV && Cuts::abseta < 2.4);
148      int nJet30 = 0, nJet60 = 0, nJet100 = 0;
149      Jets topBJets, addJets, addBJets, addJets_eta0, addJets_eta1, addJets_eta2;
150      for (const Jet& jet : jets) {
151        if (jet.pT() >  30*GeV) nJet30 += 1;
152        if (jet.pT() >  60*GeV) nJet60 += 1;
153        if (jet.pT() > 100*GeV) nJet100 += 1;
154
155        const bool isBtagged = jet.bTagged();
156        const bool isBFromTop = any(jet.bTags(), hasParticleAncestorWith(Cuts::abspid == PID::TQUARK, false));
157
158        if (isBFromTop) {
159          if (jet.pT() > 30*GeV) topBJets.push_back(jet);
160        } else {
161          addJets.push_back(jet);
162          if (isBtagged) addBJets.push_back(jet);
163          if      (jet.abseta() < 0.8 ) addJets_eta0.push_back(jet);
164          else if (jet.abseta() < 1.5 ) addJets_eta1.push_back(jet);
165          else if (jet.abseta() < 2.4 ) addJets_eta2.push_back(jet);
166        }
167      }
168
169
170      const bool isVisiblePS = topBJets.size() >= 2
171        && lep1.pT() > 20*GeV && lep1.abseta() < 2.4 && lep2.pT() > 20*GeV && lep2.abseta() < 2.4;
172      MSG_DEBUG(isVisiblePS << ": #b(top) = " << topBJets.size()
173                << "; l1 = " << lep1.pT() << ", " << lep1.abseta()
174                << "; l2 = " << lep2.pT() << ", " << lep2.abseta());
175
176      const double weight = 1.0;
177
178
179      if (isVisiblePS) {
180        fillWithOF(_hVis_nJet30_abs,  nJet30, weight);
181        fillWithOF(_hVis_nJet30,      nJet30, weight);
182        fillWithOF(_hVis_nJet60_abs,  nJet60, weight);
183        fillWithOF(_hVis_nJet60,      nJet60, weight);
184        fillWithOF(_hVis_nJet100_abs, nJet100, weight);
185        fillWithOF(_hVis_nJet100,     nJet100, weight);
186
187        fillGapFractions(addJets, _h_gap_addJet1Pt, _h_gap_addJet2Pt, _h_gap_addJetHT, weight);
188        fillGapFractions(addJets_eta0, _h_gap_addJet1Pt_eta0, _h_gap_addJet2Pt_eta0, _h_gap_addJetHT_eta0, weight);
189        fillGapFractions(addJets_eta1, _h_gap_addJet1Pt_eta1, _h_gap_addJet2Pt_eta1, _h_gap_addJetHT_eta1, weight);
190        fillGapFractions(addJets_eta2, _h_gap_addJet1Pt_eta2, _h_gap_addJet2Pt_eta2, _h_gap_addJetHT_eta2, weight);
191      }
192
193      // Plots with two additional jets
194      if (addJets.size() >= 1) {
195        const double ht = sum(addJets, Kin::pT, 0.0);
196        _hFull_addJJHT_abs->fill(ht/GeV, weight);
197        _hFull_addJJHT    ->fill(ht/GeV, weight);
198        if (isVisiblePS) {
199          _hVis_addJJHT_abs->fill(ht/GeV, weight);
200          _hVis_addJJHT    ->fill(ht/GeV, weight);
201        }
202
203        const Jet& j1 = addJets[0];
204        _hFull_addJet1Pt_abs ->fill(j1.pT()/GeV, weight);
205        _hFull_addJet1Pt     ->fill(j1.pT()/GeV, weight);
206        _hFull_addJet1Eta_abs->fill(j1.abseta(), weight);
207        _hFull_addJet1Eta    ->fill(j1.abseta(), weight);
208        if (isVisiblePS) {
209          _hVis_addJet1Pt_abs ->fill(j1.pT()/GeV, weight);
210          _hVis_addJet1Pt     ->fill(j1.pT()/GeV, weight);
211          _hVis_addJet1Eta_abs->fill(j1.abseta(), weight);
212          _hVis_addJet1Eta    ->fill(j1.abseta(), weight);
213        }
214
215        if (addJets.size() >= 2) {
216          const Jet& j2 = addJets[1];
217
218          _hFull_addJet2Pt_abs ->fill(j2.pT()/GeV, weight);
219          _hFull_addJet2Pt     ->fill(j2.pT()/GeV, weight);
220          _hFull_addJet2Eta_abs->fill(j2.abseta(), weight);
221          _hFull_addJet2Eta    ->fill(j2.abseta(), weight);
222          if (isVisiblePS) {
223            _hVis_addJet2Pt_abs ->fill(j2.pT()/GeV, weight);
224            _hVis_addJet2Pt     ->fill(j2.pT()/GeV, weight);
225            _hVis_addJet2Eta_abs->fill(j2.abseta(), weight);
226            _hVis_addJet2Eta    ->fill(j2.abseta(), weight);
227          }
228
229          const double jjmass = (j1.mom() + j2.mom()).mass();
230          const double jjdR = deltaR(j1, j2);
231          _hFull_addJJMass_abs->fill(jjmass/GeV, weight);
232          _hFull_addJJMass    ->fill(jjmass/GeV, weight);
233          _hFull_addJJDR_abs  ->fill(jjdR, weight);
234          _hFull_addJJDR      ->fill(jjdR, weight);
235          if (isVisiblePS) {
236            _hVis_addJJMass_abs->fill(jjmass/GeV, weight);
237            _hVis_addJJMass    ->fill(jjmass/GeV, weight);
238            _hVis_addJJDR_abs  ->fill(jjdR, weight);
239            _hVis_addJJDR      ->fill(jjdR, weight);
240          }
241        }
242      }
243
244
245      // Same set of plots if there are additional b-jets
246      if (addBJets.size() >= 1) {
247        const Jet& b1 = addBJets[0];
248        _hFull_addBJet1Pt_abs ->fill(b1.pT()/GeV, weight);
249        _hFull_addBJet1Pt     ->fill(b1.pT()/GeV, weight);
250        _hFull_addBJet1Eta_abs->fill(b1.abseta(), weight);
251        _hFull_addBJet1Eta    ->fill(b1.abseta(), weight);
252        if (isVisiblePS) {
253          _hVis_addBJet1Pt_abs ->fill(b1.pT()/GeV, weight);
254          _hVis_addBJet1Pt     ->fill(b1.pT()/GeV, weight);
255          _hVis_addBJet1Eta_abs->fill(b1.abseta(), weight);
256          _hVis_addBJet1Eta    ->fill(b1.abseta(), weight);
257        }
258
259        if (addBJets.size() >= 2) {
260          const Jet& b2 = addBJets[1];
261
262          _hFull_addBJet2Pt_abs ->fill(b2.pT()/GeV, weight);
263          _hFull_addBJet2Pt     ->fill(b2.pT()/GeV, weight);
264          _hFull_addBJet2Eta_abs->fill(b2.abseta(), weight);
265          _hFull_addBJet2Eta    ->fill(b2.abseta(), weight);
266          if (isVisiblePS) {
267            _hVis_addBJet2Pt_abs ->fill(b2.pT()/GeV, weight);
268            _hVis_addBJet2Pt     ->fill(b2.pT()/GeV, weight);
269            _hVis_addBJet2Eta_abs->fill(b2.abseta(), weight);
270            _hVis_addBJet2Eta    ->fill(b2.abseta(), weight);
271          }
272
273          const double bbmass = (b1.mom() + b2.mom()).mass();
274          const double bbdR = deltaR(b1, b2);
275          _hFull_addBBMass_abs->fill(bbmass/GeV, weight);
276          _hFull_addBBMass    ->fill(bbmass/GeV, weight);
277          _hFull_addBBDR_abs  ->fill(bbdR, weight);
278          _hFull_addBBDR      ->fill(bbdR, weight);
279          if (isVisiblePS) {
280            _hVis_addBBMass_abs->fill(bbmass/GeV, weight);
281            _hVis_addBBMass    ->fill(bbmass/GeV, weight);
282            _hVis_addBBDR_abs  ->fill(bbdR, weight);
283            _hVis_addBBDR      ->fill(bbdR, weight);
284          }
285        }
286      }
287
288    }
289
290
291    void finalize() {
292      const double ttbarXS = !std::isnan(crossSectionPerEvent()) ? crossSection() : 252.89*picobarn;
293      if (std::isnan(crossSectionPerEvent()))
294        MSG_INFO("No valid cross-section given, using NNLO (arXiv:1303.6254; sqrt(s)=8 TeV, m_t=172.5 GeV): " << ttbarXS/picobarn << " pb");
295
296        normalize(_hVis_nJet30); normalize(_hVis_nJet60); normalize(_hVis_nJet100);
297        normalize(_hVis_addJet1Pt); normalize(_hVis_addJet1Eta); normalize(_hVis_addJet2Pt); 
298        normalize(_hVis_addJet2Eta); normalize(_hVis_addJJMass); normalize(_hVis_addJJDR); 
299        normalize(_hVis_addJJHT); normalize(_hFull_addJet1Pt); normalize(_hFull_addJet1Eta); 
300        normalize(_hFull_addJet2Pt); normalize(_hFull_addJet2Eta); normalize(_hFull_addJJMass); 
301        normalize(_hFull_addJJDR); normalize(_hFull_addJJHT); normalize(_hVis_addBJet1Pt); 
302        normalize(_hVis_addBJet1Eta); normalize(_hVis_addBJet2Pt); normalize(_hVis_addBJet2Eta);
303        normalize(_hVis_addBBMass); normalize(_hVis_addBBDR); normalize(_hFull_addBJet1Pt); 
304        normalize(_hFull_addBJet1Eta); normalize(_hFull_addBJet2Pt); normalize(_hFull_addBJet2Eta);
305        normalize(_hFull_addBBMass); normalize(_hFull_addBBDR);
306
307        const double xsPerWeight = ttbarXS/picobarn / sumOfWeights();
308        scale(_hVis_nJet30_abs,     xsPerWeight); scale(_hVis_nJet60_abs,      xsPerWeight); 
309        scale(_hVis_nJet100_abs,    xsPerWeight); scale(_hVis_addJet1Pt_abs,   xsPerWeight);
310        scale(_hVis_addJet1Eta_abs, xsPerWeight); scale(_hVis_addJet2Pt_abs,   xsPerWeight);
311        scale(_hVis_addJet2Eta_abs, xsPerWeight); scale(_hVis_addJJMass_abs,   xsPerWeight);
312        scale(_hVis_addJJDR_abs,    xsPerWeight); scale(_hVis_addJJHT_abs,     xsPerWeight);
313        scale(_hVis_addBJet1Pt_abs, xsPerWeight); scale(_hVis_addBJet1Eta_abs, xsPerWeight); 
314        scale(_hVis_addBJet2Pt_abs, xsPerWeight); scale(_hVis_addBJet2Eta_abs, xsPerWeight);
315        scale(_hVis_addBBMass_abs,  xsPerWeight); scale(_hVis_addBBDR_abs,     xsPerWeight);
316
317        const double sfull = xsPerWeight / 0.0454; //< correct for dilepton branching fraction
318        scale(_hFull_addJet1Pt_abs, sfull); scale(_hFull_addJet1Eta_abs, sfull); 
319        scale(_hFull_addJet2Pt_abs, sfull); scale(_hFull_addJet2Eta_abs, sfull);
320        scale(_hFull_addJJMass_abs, sfull); scale(_hFull_addJJDR_abs, sfull); 
321        scale(_hFull_addJJHT_abs, sfull); scale(_hFull_addBJet1Pt_abs, sfull); 
322        scale(_hFull_addBJet1Eta_abs, sfull); scale(_hFull_addBJet2Pt_abs, sfull); 
323        scale(_hFull_addBJet2Eta_abs, sfull); scale(_hFull_addBBMass_abs, sfull); 
324        scale(_hFull_addBBDR_abs, sfull);
325    }
326
327    //@}
328
329
330    void fillWithOF(Histo1DPtr h, double x, double w) {
331      h->fill(std::min(x, h->xMax()-1e-9), w);
332    }
333
334
335    void fillGapFractions(const Jets& addJets, Profile1DPtr h_gap_addJet1Pt, Profile1DPtr h_gap_addJet2Pt, Profile1DPtr h_gap_addJetHT, double weight) {
336      const double j1pt = (addJets.size() > 0) ? addJets[0].pT() : 0;
337      for (size_t i = 0; i < h_gap_addJet1Pt->numBins(); ++i) {
338        const double binCenter = h_gap_addJet1Pt->bin(i).xMid();
339        h_gap_addJet1Pt->fillBin(i, int(j1pt/GeV < binCenter), weight);
340      }
341
342      const double j2pt = (addJets.size() > 1) ? addJets[1].pT() : 0;
343      for (size_t i = 0; i < h_gap_addJet2Pt->numBins(); ++i) {
344        const double binCenter = h_gap_addJet2Pt->bin(i).xMid();
345        h_gap_addJet2Pt->fillBin(i, int(j2pt/GeV < binCenter), weight);
346      }
347
348      const double ht = sum(addJets, Kin::pT, 0.);
349      for (size_t i = 0; i < h_gap_addJetHT->numBins(); ++i) {
350        const double binCenter = h_gap_addJetHT->bin(i).xMid();
351        h_gap_addJetHT->fillBin(i, int(ht/GeV < binCenter) , weight);
352      }
353    }
354
355
356    // @name Histogram data members
357    //@{
358
359    Histo1DPtr _hVis_nJet30_abs, _hVis_nJet60_abs, _hVis_nJet100_abs;
360    Histo1DPtr _hVis_addJet1Pt_abs, _hVis_addJet1Eta_abs, _hVis_addJet2Pt_abs, _hVis_addJet2Eta_abs;
361    Histo1DPtr _hVis_addJJMass_abs, _hVis_addJJDR_abs, _hVis_addJJHT_abs;
362    Histo1DPtr _hFull_addJet1Pt_abs, _hFull_addJet1Eta_abs, _hFull_addJet2Pt_abs, _hFull_addJet2Eta_abs;
363    Histo1DPtr _hFull_addJJMass_abs, _hFull_addJJDR_abs, _hFull_addJJHT_abs;
364    Histo1DPtr _hVis_addBJet1Pt_abs, _hVis_addBJet1Eta_abs, _hVis_addBJet2Pt_abs, _hVis_addBJet2Eta_abs;
365    Histo1DPtr _hVis_addBBMass_abs, _hVis_addBBDR_abs;
366    Histo1DPtr _hFull_addBJet1Pt_abs, _hFull_addBJet1Eta_abs, _hFull_addBJet2Pt_abs, _hFull_addBJet2Eta_abs;
367    Histo1DPtr _hFull_addBBMass_abs, _hFull_addBBDR_abs;
368
369    Histo1DPtr _hVis_nJet30, _hVis_nJet60, _hVis_nJet100;
370    Histo1DPtr _hVis_addJet1Pt, _hVis_addJet1Eta, _hVis_addJet2Pt, _hVis_addJet2Eta;
371    Histo1DPtr _hVis_addJJMass, _hVis_addJJDR, _hVis_addJJHT;
372    Histo1DPtr _hFull_addJet1Pt, _hFull_addJet1Eta, _hFull_addJet2Pt, _hFull_addJet2Eta;
373    Histo1DPtr _hFull_addJJMass, _hFull_addJJDR, _hFull_addJJHT;
374    Histo1DPtr _hVis_addBJet1Pt, _hVis_addBJet1Eta, _hVis_addBJet2Pt, _hVis_addBJet2Eta;
375    Histo1DPtr _hVis_addBBMass, _hVis_addBBDR;
376    Histo1DPtr _hFull_addBJet1Pt, _hFull_addBJet1Eta, _hFull_addBJet2Pt, _hFull_addBJet2Eta;
377    Histo1DPtr _hFull_addBBMass, _hFull_addBBDR;
378
379    Profile1DPtr _h_gap_addJet1Pt, _h_gap_addJet1Pt_eta0, _h_gap_addJet1Pt_eta1, _h_gap_addJet1Pt_eta2;
380    Profile1DPtr _h_gap_addJet2Pt, _h_gap_addJet2Pt_eta0, _h_gap_addJet2Pt_eta1, _h_gap_addJet2Pt_eta2;
381    Profile1DPtr _h_gap_addJetHT, _h_gap_addJetHT_eta0, _h_gap_addJetHT_eta1, _h_gap_addJetHT_eta2;
382
383    //@}
384
385  };
386
387
388
389  // The hook for the plugin system
390  RIVET_DECLARE_PLUGIN(CMS_2015_I1397174);
391
392
393}