rivet is hosted by Hepforge, IPPP Durham
CMS_2015_I1397174.cc
Go to the documentation of this file.
00001 #include "Rivet/Analysis.hh"
00002 #include "Rivet/Projections/PartonicTops.hh"
00003 #include "Rivet/Projections/VetoedFinalState.hh"
00004 #include "Rivet/Projections/FastJets.hh"
00005 
00006 namespace Rivet {
00007 
00008 
00009   /// Fully leptonic partonic ttbar analysis
00010   class CMS_2015_I1397174 : public Analysis {
00011   public:
00012 
00013     /// Minimal constructor
00014     CMS_2015_I1397174()
00015       : Analysis("CMS_2015_I1397174") { }
00016 
00017 
00018     /// @name Analysis methods
00019     //@{
00020 
00021     /// Set up projections and book histograms
00022     void init() {
00023 
00024       // Parton level top quarks
00025       addProjection(PartonicTops(PartonicTops::E_MU, false), "PartonTops");
00026 
00027       // Find jets not related to the top/W decays
00028       VetoedFinalState vfs;
00029       vfs.addDecayProductsVeto(PID::WPLUSBOSON);
00030       vfs.addDecayProductsVeto(PID::WMINUSBOSON);
00031       FastJets fj(vfs, FastJets::ANTIKT, 0.5, JetAlg::ALL_MUONS, JetAlg::ALL_INVISIBLES);
00032       addProjection(fj, "Jets");
00033 
00034       // Book histograms
00035       _hVis_nJet30_abs       = bookHisto1D( 1, 1, 1);
00036       _hVis_nJet30           = bookHisto1D( 2, 1, 1);
00037       _hVis_nJet60_abs       = bookHisto1D( 3, 1, 1);
00038       _hVis_nJet60           = bookHisto1D( 4, 1, 1);
00039       _hVis_nJet100_abs      = bookHisto1D( 5, 1, 1);
00040       _hVis_nJet100          = bookHisto1D( 6, 1, 1);
00041 
00042       _hVis_addJet1Pt_abs    = bookHisto1D( 7, 1, 1);
00043       _hVis_addJet1Pt        = bookHisto1D( 8, 1, 1);
00044       _hVis_addJet1Eta_abs   = bookHisto1D( 9, 1, 1);
00045       _hVis_addJet1Eta       = bookHisto1D(10, 1, 1);
00046       _hVis_addJet2Pt_abs    = bookHisto1D(11, 1, 1);
00047       _hVis_addJet2Pt        = bookHisto1D(12, 1, 1);
00048       _hVis_addJet2Eta_abs   = bookHisto1D(13, 1, 1);
00049       _hVis_addJet2Eta       = bookHisto1D(14, 1, 1);
00050       _hVis_addJJMass_abs    = bookHisto1D(15, 1, 1);
00051       _hVis_addJJMass        = bookHisto1D(16, 1, 1);
00052       _hVis_addJJDR_abs      = bookHisto1D(17, 1, 1);
00053       _hVis_addJJDR          = bookHisto1D(18, 1, 1);
00054       _hVis_addJJHT_abs      = bookHisto1D(19, 1, 1);
00055       _hVis_addJJHT          = bookHisto1D(20, 1, 1);
00056 
00057       _hFull_addJet1Pt_abs   = bookHisto1D(21, 1, 1);
00058       _hFull_addJet1Pt       = bookHisto1D(22, 1, 1);
00059       _hFull_addJet1Eta_abs  = bookHisto1D(23, 1, 1);
00060       _hFull_addJet1Eta      = bookHisto1D(24, 1, 1);
00061       _hFull_addJet2Pt_abs   = bookHisto1D(25, 1, 1);
00062       _hFull_addJet2Pt       = bookHisto1D(26, 1, 1);
00063       _hFull_addJet2Eta_abs  = bookHisto1D(27, 1, 1);
00064       _hFull_addJet2Eta      = bookHisto1D(28, 1, 1);
00065       _hFull_addJJMass_abs   = bookHisto1D(29, 1, 1);
00066       _hFull_addJJMass       = bookHisto1D(30, 1, 1);
00067       _hFull_addJJDR_abs     = bookHisto1D(31, 1, 1);
00068       _hFull_addJJDR         = bookHisto1D(32, 1, 1);
00069       _hFull_addJJHT_abs     = bookHisto1D(33, 1, 1);
00070       _hFull_addJJHT         = bookHisto1D(34, 1, 1);
00071 
00072       _hVis_addBJet1Pt_abs   = bookHisto1D(35, 1, 1);
00073       _hVis_addBJet1Pt       = bookHisto1D(36, 1, 1);
00074       _hVis_addBJet1Eta_abs  = bookHisto1D(37, 1, 1);
00075       _hVis_addBJet1Eta      = bookHisto1D(38, 1, 1);
00076       _hVis_addBJet2Pt_abs   = bookHisto1D(39, 1, 1);
00077       _hVis_addBJet2Pt       = bookHisto1D(40, 1, 1);
00078       _hVis_addBJet2Eta_abs  = bookHisto1D(41, 1, 1);
00079       _hVis_addBJet2Eta      = bookHisto1D(42, 1, 1);
00080       _hVis_addBBMass_abs    = bookHisto1D(43, 1, 1);
00081       _hVis_addBBMass        = bookHisto1D(44, 1, 1);
00082       _hVis_addBBDR_abs      = bookHisto1D(45, 1, 1);
00083       _hVis_addBBDR          = bookHisto1D(46, 1, 1);
00084 
00085       _hFull_addBJet1Pt_abs  = bookHisto1D(47, 1, 1);
00086       _hFull_addBJet1Pt      = bookHisto1D(48, 1, 1);
00087       _hFull_addBJet1Eta_abs = bookHisto1D(49, 1, 1);
00088       _hFull_addBJet1Eta     = bookHisto1D(50, 1, 1);
00089       _hFull_addBJet2Pt_abs  = bookHisto1D(51, 1, 1);
00090       _hFull_addBJet2Pt      = bookHisto1D(52, 1, 1);
00091       _hFull_addBJet2Eta_abs = bookHisto1D(53, 1, 1);
00092       _hFull_addBJet2Eta     = bookHisto1D(54, 1, 1);
00093       _hFull_addBBMass_abs   = bookHisto1D(55, 1, 1);
00094       _hFull_addBBMass       = bookHisto1D(56, 1, 1);
00095       _hFull_addBBDR_abs     = bookHisto1D(57, 1, 1);
00096       _hFull_addBBDR         = bookHisto1D(58, 1, 1);
00097 
00098       _h_gap_addJet1Pt       = bookProfile1D(59, 1, 1);
00099       _h_gap_addJet1Pt_eta0  = bookProfile1D(60, 1, 1);
00100       _h_gap_addJet1Pt_eta1  = bookProfile1D(61, 1, 1);
00101       _h_gap_addJet1Pt_eta2  = bookProfile1D(62, 1, 1);
00102       _h_gap_addJet2Pt       = bookProfile1D(63, 1, 1);
00103       _h_gap_addJet2Pt_eta0  = bookProfile1D(64, 1, 1);
00104       _h_gap_addJet2Pt_eta1  = bookProfile1D(65, 1, 1);
00105       _h_gap_addJet2Pt_eta2  = bookProfile1D(66, 1, 1);
00106       _h_gap_addJetHT        = bookProfile1D(67, 1, 1);
00107       _h_gap_addJetHT_eta0   = bookProfile1D(68, 1, 1);
00108       _h_gap_addJetHT_eta1   = bookProfile1D(69, 1, 1);
00109       _h_gap_addJetHT_eta2   = bookProfile1D(70, 1, 1);
00110     }
00111 
00112 
00113     void analyze(const Event& event) {
00114 
00115       // The objects used in the PAPER 12-041 are defined as follows (see p.16 for details):
00116       //
00117       //   * Leptons    : from the W boson decays after FSR
00118       //   * Jets       : anti-kT R=0.5 to all stable particles
00119       //                               exclude W->enu, munu, taunu
00120       //   * B jet      : B-Ghost matched
00121       //   * B from top : B hadron from top->b decay
00122       //
00123       // Visible phase space definition:
00124       //
00125       //   * Leptons         : pT > 20, |eta| < 2.4
00126       //   * B jets from top : pT > 30, |eta| < 2.4
00127       //     Additional jets : pT > 20, |eta| < 2.4
00128       //   *
00129       // Full phase space definition:
00130       //
00131       //   * Correction to dilepton BR from W boson BR
00132       //   * No cut on top decay products
00133       //   * Additional jets : pT > 20, |eta| < 2.4
00134 
00135       // Do the analysis only for the ttbar full leptonic channel, removing tau decays
00136       const Particles partontops = apply<ParticleFinder>(event, "PartonTops").particlesByPt();
00137       if (partontops.size() != 2) vetoEvent;
00138       const Particle& t1 = partontops[0];
00139       const Particle& t2 = partontops[1];
00140 
00141       // Apply acceptance cuts on top-decay leptons (existence should be guaranteed)
00142       const auto isPromptChLepton = [](const Particle& p){return isChargedLepton(p) && !fromDecay(p);};
00143       const Particle lep1 = t1.allDescendants(lastParticleWith(isPromptChLepton)).front();
00144       const Particle lep2 = t2.allDescendants(lastParticleWith(isPromptChLepton)).front();
00145       if (lep1.pT() < 1e-9*GeV || lep2.pT() < 1e-9*GeV) vetoEvent; // sanity check?
00146 
00147       const Jets jets = apply<JetAlg>(event, "Jets").jetsByPt(Cuts::pT > 20*GeV && Cuts::abseta < 2.4);
00148       int nJet30 = 0, nJet60 = 0, nJet100 = 0;
00149       Jets topBJets, addJets, addBJets, addJets_eta0, addJets_eta1, addJets_eta2;
00150       for (const Jet& jet : jets) {
00151         if (jet.pT() >  30*GeV) nJet30 += 1;
00152         if (jet.pT() >  60*GeV) nJet60 += 1;
00153         if (jet.pT() > 100*GeV) nJet100 += 1;
00154 
00155         const bool isBtagged = jet.bTagged();
00156         const bool isBFromTop = any(jet.bTags(), hasParticleAncestorWith(Cuts::abspid == PID::TQUARK));
00157 
00158         if (isBFromTop) {
00159           if (jet.pT() > 30*GeV) topBJets.push_back(jet);
00160         } else {
00161           addJets.push_back(jet);
00162           if (isBtagged) addBJets.push_back(jet);
00163           if      (jet.abseta() < 0.8 ) addJets_eta0.push_back(jet);
00164           else if (jet.abseta() < 1.5 ) addJets_eta1.push_back(jet);
00165           else if (jet.abseta() < 2.4 ) addJets_eta2.push_back(jet);
00166         }
00167       }
00168 
00169 
00170       const bool isVisiblePS = topBJets.size() >= 2
00171         && lep1.pT() > 20*GeV && lep1.abseta() < 2.4 && lep2.pT() > 20*GeV && lep2.abseta() < 2.4;
00172       MSG_DEBUG(isVisiblePS << ": #b(top) = " << topBJets.size()
00173                 << "; l1 = " << lep1.pT() << ", " << lep1.abseta()
00174                 << "; l2 = " << lep2.pT() << ", " << lep2.abseta());
00175 
00176       const double weight = event.weight();
00177 
00178 
00179       if (isVisiblePS) {
00180         fillWithOF(_hVis_nJet30_abs,  nJet30, weight);
00181         fillWithOF(_hVis_nJet30,      nJet30, weight);
00182         fillWithOF(_hVis_nJet60_abs,  nJet60, weight);
00183         fillWithOF(_hVis_nJet60,      nJet60, weight);
00184         fillWithOF(_hVis_nJet100_abs, nJet100, weight);
00185         fillWithOF(_hVis_nJet100,     nJet100, weight);
00186 
00187         fillGapFractions(addJets, _h_gap_addJet1Pt, _h_gap_addJet2Pt, _h_gap_addJetHT, weight);
00188         fillGapFractions(addJets_eta0, _h_gap_addJet1Pt_eta0, _h_gap_addJet2Pt_eta0, _h_gap_addJetHT_eta0, weight);
00189         fillGapFractions(addJets_eta1, _h_gap_addJet1Pt_eta1, _h_gap_addJet2Pt_eta1, _h_gap_addJetHT_eta1, weight);
00190         fillGapFractions(addJets_eta2, _h_gap_addJet1Pt_eta2, _h_gap_addJet2Pt_eta2, _h_gap_addJetHT_eta2, weight);
00191       }
00192 
00193       // Plots with two additional jets
00194       if (addJets.size() >= 1) {
00195         const double ht = sum(addJets, pT, 0.0);
00196         _hFull_addJJHT_abs->fill(ht/GeV, weight);
00197         _hFull_addJJHT    ->fill(ht/GeV, weight);
00198         if (isVisiblePS) {
00199           _hVis_addJJHT_abs->fill(ht/GeV, weight);
00200           _hVis_addJJHT    ->fill(ht/GeV, weight);
00201         }
00202 
00203         const Jet& j1 = addJets[0];
00204         _hFull_addJet1Pt_abs ->fill(j1.pT()/GeV, weight);
00205         _hFull_addJet1Pt     ->fill(j1.pT()/GeV, weight);
00206         _hFull_addJet1Eta_abs->fill(j1.abseta(), weight);
00207         _hFull_addJet1Eta    ->fill(j1.abseta(), weight);
00208         if (isVisiblePS) {
00209           _hVis_addJet1Pt_abs ->fill(j1.pT()/GeV, weight);
00210           _hVis_addJet1Pt     ->fill(j1.pT()/GeV, weight);
00211           _hVis_addJet1Eta_abs->fill(j1.abseta(), weight);
00212           _hVis_addJet1Eta    ->fill(j1.abseta(), weight);
00213         }
00214 
00215         if (addJets.size() >= 2) {
00216           const Jet& j2 = addJets[1];
00217 
00218           _hFull_addJet2Pt_abs ->fill(j2.pT()/GeV, weight);
00219           _hFull_addJet2Pt     ->fill(j2.pT()/GeV, weight);
00220           _hFull_addJet2Eta_abs->fill(j2.abseta(), weight);
00221           _hFull_addJet2Eta    ->fill(j2.abseta(), weight);
00222           if (isVisiblePS) {
00223             _hVis_addJet2Pt_abs ->fill(j2.pT()/GeV, weight);
00224             _hVis_addJet2Pt     ->fill(j2.pT()/GeV, weight);
00225             _hVis_addJet2Eta_abs->fill(j2.abseta(), weight);
00226             _hVis_addJet2Eta    ->fill(j2.abseta(), weight);
00227           }
00228 
00229           const double jjmass = (j1.mom() + j2.mom()).mass();
00230           const double jjdR = deltaR(j1, j2);
00231           _hFull_addJJMass_abs->fill(jjmass/GeV, weight);
00232           _hFull_addJJMass    ->fill(jjmass/GeV, weight);
00233           _hFull_addJJDR_abs  ->fill(jjdR, weight);
00234           _hFull_addJJDR      ->fill(jjdR, weight);
00235           if (isVisiblePS) {
00236             _hVis_addJJMass_abs->fill(jjmass/GeV, weight);
00237             _hVis_addJJMass    ->fill(jjmass/GeV, weight);
00238             _hVis_addJJDR_abs  ->fill(jjdR, weight);
00239             _hVis_addJJDR      ->fill(jjdR, weight);
00240           }
00241         }
00242       }
00243 
00244 
00245       // Same set of plots if there are additional b-jets
00246       if (addBJets.size() >= 1) {
00247         const Jet& b1 = addBJets[0];
00248         _hFull_addBJet1Pt_abs ->fill(b1.pT()/GeV, weight);
00249         _hFull_addBJet1Pt     ->fill(b1.pT()/GeV, weight);
00250         _hFull_addBJet1Eta_abs->fill(b1.abseta(), weight);
00251         _hFull_addBJet1Eta    ->fill(b1.abseta(), weight);
00252         if (isVisiblePS) {
00253           _hVis_addBJet1Pt_abs ->fill(b1.pT()/GeV, weight);
00254           _hVis_addBJet1Pt     ->fill(b1.pT()/GeV, weight);
00255           _hVis_addBJet1Eta_abs->fill(b1.abseta(), weight);
00256           _hVis_addBJet1Eta    ->fill(b1.abseta(), weight);
00257         }
00258 
00259         if (addBJets.size() >= 2) {
00260           const Jet& b2 = addBJets[1];
00261 
00262           _hFull_addBJet2Pt_abs ->fill(b2.pT()/GeV, weight);
00263           _hFull_addBJet2Pt     ->fill(b2.pT()/GeV, weight);
00264           _hFull_addBJet2Eta_abs->fill(b2.abseta(), weight);
00265           _hFull_addBJet2Eta    ->fill(b2.abseta(), weight);
00266           if (isVisiblePS) {
00267             _hVis_addBJet2Pt_abs ->fill(b2.pT()/GeV, weight);
00268             _hVis_addBJet2Pt     ->fill(b2.pT()/GeV, weight);
00269             _hVis_addBJet2Eta_abs->fill(b2.abseta(), weight);
00270             _hVis_addBJet2Eta    ->fill(b2.abseta(), weight);
00271           }
00272 
00273           const double bbmass = (b1.mom() + b2.mom()).mass();
00274           const double bbdR = deltaR(b1, b2);
00275           _hFull_addBBMass_abs->fill(bbmass/GeV, weight);
00276           _hFull_addBBMass    ->fill(bbmass/GeV, weight);
00277           _hFull_addBBDR_abs  ->fill(bbdR, weight);
00278           _hFull_addBBDR      ->fill(bbdR, weight);
00279           if (isVisiblePS) {
00280             _hVis_addBBMass_abs->fill(bbmass/GeV, weight);
00281             _hVis_addBBMass    ->fill(bbmass/GeV, weight);
00282             _hVis_addBBDR_abs  ->fill(bbdR, weight);
00283             _hVis_addBBDR      ->fill(bbdR, weight);
00284           }
00285         }
00286       }
00287 
00288     }
00289 
00290 
00291     void finalize() {
00292       const double ttbarXS = !std::isnan(crossSectionPerEvent()) ? crossSection() : 252.89*picobarn;
00293       if (std::isnan(crossSectionPerEvent()))
00294         MSG_INFO("No valid cross-section given, using NNLO (arXiv:1303.6254; sqrt(s)=8 TeV, m_t=172.5 GeV): " << ttbarXS/picobarn << " pb");
00295 
00296       normalize({_hVis_nJet30,_hVis_nJet60, _hVis_nJet100,
00297             _hVis_addJet1Pt, _hVis_addJet1Eta, _hVis_addJet2Pt, _hVis_addJet2Eta,
00298             _hVis_addJJMass, _hVis_addJJDR, _hVis_addJJHT,
00299             _hFull_addJet1Pt, _hFull_addJet1Eta, _hFull_addJet2Pt, _hFull_addJet2Eta,
00300             _hFull_addJJMass, _hFull_addJJDR, _hFull_addJJHT,
00301             _hVis_addBJet1Pt, _hVis_addBJet1Eta, _hVis_addBJet2Pt, _hVis_addBJet2Eta,
00302             _hVis_addBBMass, _hVis_addBBDR,
00303             _hFull_addBJet1Pt, _hFull_addBJet1Eta, _hFull_addBJet2Pt, _hFull_addBJet2Eta,
00304             _hFull_addBBMass, _hFull_addBBDR});
00305 
00306       const double xsPerWeight = ttbarXS/picobarn / sumOfWeights();
00307       scale({_hVis_nJet30_abs, _hVis_nJet60_abs, _hVis_nJet100_abs,
00308             _hVis_addJet1Pt_abs, _hVis_addJet1Eta_abs, _hVis_addJet2Pt_abs, _hVis_addJet2Eta_abs,
00309             _hVis_addJJMass_abs, _hVis_addJJDR_abs, _hVis_addJJHT_abs,
00310             _hVis_addBJet1Pt_abs, _hVis_addBJet1Eta_abs, _hVis_addBJet2Pt_abs, _hVis_addBJet2Eta_abs,
00311             _hVis_addBBMass_abs, _hVis_addBBDR_abs}, xsPerWeight);
00312 
00313       const double sfull = xsPerWeight / 0.0454; //< correct for dilepton branching fraction
00314       scale({_hFull_addJet1Pt_abs, _hFull_addJet1Eta_abs, _hFull_addJet2Pt_abs, _hFull_addJet2Eta_abs,
00315             _hFull_addJJMass_abs, _hFull_addJJDR_abs, _hFull_addJJHT_abs,
00316             _hFull_addBJet1Pt_abs, _hFull_addBJet1Eta_abs, _hFull_addBJet2Pt_abs, _hFull_addBJet2Eta_abs,
00317             _hFull_addBBMass_abs, _hFull_addBBDR_abs}, sfull);
00318     }
00319 
00320     //@}
00321 
00322 
00323     void fillWithOF(Histo1DPtr h, double x, double w) {
00324       h->fill(std::min(x, h->xMax()-1e-9), w);
00325     }
00326 
00327 
00328     void fillGapFractions(const Jets& addJets, Profile1DPtr h_gap_addJet1Pt, Profile1DPtr h_gap_addJet2Pt, Profile1DPtr h_gap_addJetHT, double weight) {
00329       const double j1pt = (addJets.size() > 0) ? addJets[0].pT() : 0;
00330       for (size_t i = 0; i < h_gap_addJet1Pt->numBins(); ++i) {
00331         const double binCenter = h_gap_addJet1Pt->bin(i).xMid();
00332         h_gap_addJet1Pt->fillBin(i, int(j1pt/GeV < binCenter), weight);
00333       }
00334 
00335       const double j2pt = (addJets.size() > 1) ? addJets[1].pT() : 0;
00336       for (size_t i = 0; i < h_gap_addJet2Pt->numBins(); ++i) {
00337         const double binCenter = h_gap_addJet2Pt->bin(i).xMid();
00338         h_gap_addJet2Pt->fillBin(i, int(j2pt/GeV < binCenter), weight);
00339       }
00340 
00341       const double ht = sum(addJets, pT, 0.);
00342       for (size_t i = 0; i < h_gap_addJetHT->numBins(); ++i) {
00343         const double binCenter = h_gap_addJetHT->bin(i).xMid();
00344         h_gap_addJetHT->fillBin(i, int(ht/GeV < binCenter) , weight);
00345       }
00346     }
00347 
00348 
00349     // @name Histogram data members
00350     //@{
00351 
00352     Histo1DPtr _hVis_nJet30_abs, _hVis_nJet60_abs, _hVis_nJet100_abs;
00353     Histo1DPtr _hVis_addJet1Pt_abs, _hVis_addJet1Eta_abs, _hVis_addJet2Pt_abs, _hVis_addJet2Eta_abs;
00354     Histo1DPtr _hVis_addJJMass_abs, _hVis_addJJDR_abs, _hVis_addJJHT_abs;
00355     Histo1DPtr _hFull_addJet1Pt_abs, _hFull_addJet1Eta_abs, _hFull_addJet2Pt_abs, _hFull_addJet2Eta_abs;
00356     Histo1DPtr _hFull_addJJMass_abs, _hFull_addJJDR_abs, _hFull_addJJHT_abs;
00357     Histo1DPtr _hVis_addBJet1Pt_abs, _hVis_addBJet1Eta_abs, _hVis_addBJet2Pt_abs, _hVis_addBJet2Eta_abs;
00358     Histo1DPtr _hVis_addBBMass_abs, _hVis_addBBDR_abs;
00359     Histo1DPtr _hFull_addBJet1Pt_abs, _hFull_addBJet1Eta_abs, _hFull_addBJet2Pt_abs, _hFull_addBJet2Eta_abs;
00360     Histo1DPtr _hFull_addBBMass_abs, _hFull_addBBDR_abs;
00361 
00362     Histo1DPtr _hVis_nJet30, _hVis_nJet60, _hVis_nJet100;
00363     Histo1DPtr _hVis_addJet1Pt, _hVis_addJet1Eta, _hVis_addJet2Pt, _hVis_addJet2Eta;
00364     Histo1DPtr _hVis_addJJMass, _hVis_addJJDR, _hVis_addJJHT;
00365     Histo1DPtr _hFull_addJet1Pt, _hFull_addJet1Eta, _hFull_addJet2Pt, _hFull_addJet2Eta;
00366     Histo1DPtr _hFull_addJJMass, _hFull_addJJDR, _hFull_addJJHT;
00367     Histo1DPtr _hVis_addBJet1Pt, _hVis_addBJet1Eta, _hVis_addBJet2Pt, _hVis_addBJet2Eta;
00368     Histo1DPtr _hVis_addBBMass, _hVis_addBBDR;
00369     Histo1DPtr _hFull_addBJet1Pt, _hFull_addBJet1Eta, _hFull_addBJet2Pt, _hFull_addBJet2Eta;
00370     Histo1DPtr _hFull_addBBMass, _hFull_addBBDR;
00371 
00372     Profile1DPtr _h_gap_addJet1Pt, _h_gap_addJet1Pt_eta0, _h_gap_addJet1Pt_eta1, _h_gap_addJet1Pt_eta2;
00373     Profile1DPtr _h_gap_addJet2Pt, _h_gap_addJet2Pt_eta0, _h_gap_addJet2Pt_eta1, _h_gap_addJet2Pt_eta2;
00374     Profile1DPtr _h_gap_addJetHT, _h_gap_addJetHT_eta0, _h_gap_addJetHT_eta1, _h_gap_addJetHT_eta2;
00375 
00376     //@}
00377 
00378   };
00379 
00380 
00381 
00382   // The hook for the plugin system
00383   DECLARE_RIVET_PLUGIN(CMS_2015_I1397174);
00384 
00385 
00386 }