rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### CMS_2011_S8941262

Production cross-sections of muons from $b$ hadron decays in $pp$ collisions
Experiment: CMS (LHC)
Inspire ID: 884811
Status: VALIDATED
Authors:
• Wolfram Erdmann
References:
Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
• Inclusive QCD at 7 TeV, with no pT cuts.

A measurement of the $b$-hadron production cross-section in proton-proton collisions at $\sqrt{s} = 7$ TeV. The dataset, corresponding to 85 inverse nanobarns, was recorded with the CMS experiment at the LHC using a low-threshold single-muon trigger. Events are selected by the presence of a muon with transverse momentum greater than 6 GeV with respect to the beam direction and pseudorapidity less than 2.1. The transverse momentum of the muon with respect to the closest jet discriminates events containing $b$ hadrons from background. The inclusive $b$-hadron production cross section is presented as a function of muon transverse momentum and pseudorapidity.

Source code: CMS_2011_S8941262.cc
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/IdentifiedFinalState.hh" #include "Rivet/Particle.hh" namespace Rivet { class CMS_2011_S8941262 : public Analysis { public: /// Constructor CMS_2011_S8941262() : Analysis("CMS_2011_S8941262") { } /// Book histograms and initialise projections before the run void init() { _h_total = bookHisto1D(1, 1, 1); _h_mupt = bookHisto1D(2, 1, 1); _h_mueta = bookHisto1D(3, 1, 1); nbtot=0.; nbmutot=0.; IdentifiedFinalState ifs(Cuts::abseta < 2.1 && Cuts::pT > 6*GeV); ifs.acceptIdPair(PID::MUON); declare(ifs, "IFS"); } /// Perform the per-event analysis void analyze(const Event& event) { const double weight = event.weight(); // a b-quark must have been produced /// @todo Ouch. Use hadron tagging... int nb = 0; foreach (const GenParticle* p, particles(event.genEvent())) { if (abs(p->pdg_id()) == PID::BQUARK) nb += 1; } if (nb == 0) vetoEvent; nbtot += weight; // Event must contain a muon Particles muons = apply(event, "IFS").particlesByPt(); if (muons.size() < 1) vetoEvent; nbmutot += weight; FourMomentum pmu = muons[0].momentum(); _h_total->fill( 7000/GeV, weight); _h_mupt->fill( pmu.pT()/GeV, weight); _h_mueta->fill( pmu.eta()/GeV, weight); } /// Normalise histograms etc., after the run void finalize() { scale(_h_total, crossSection()/microbarn/sumOfWeights()); scale(_h_mupt, crossSection()/nanobarn/sumOfWeights()); scale(_h_mueta, crossSection()/nanobarn/sumOfWeights()); } private: double nbtot, nbmutot; Histo1DPtr _h_total; Histo1DPtr _h_mupt; Histo1DPtr _h_mueta; }; // Hook for the plugin system DECLARE_RIVET_PLUGIN(CMS_2011_S8941262); }