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 } Generated on Tue Dec 13 2016 16:32:37 for The Rivet MC analysis system by ![]() |