Rivet analyses referenceLHCB_2016_I1504058Measurement of the $b$-quark production cross-section in 7 and 13 TeV $pp$ collisionsExperiment: LHCB (LHC) Inspire ID: 1504058 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0); (6500.0, 6500.0) GeV Run details:
Measurements of the cross section for producing $b$ quarks in the reaction $pp \to b\overline{b}X$ are reported in 7 and 13 TeV collisions at the LHC as a function of the pseudorapidity $\eta$ in the range $2 < \eta < 5$ covered by the acceptance of the LHCb experiment. The measurements are done using semileptonic decays of $b$-flavored hadrons decaying into a ground-state charmed hadron in association with a muon. The cross sections in the covered $\eta$ range are $72.0 \pm 0.3 \pm 6.8$ and $154.3 \pm 1.5 \pm 14.3\,\mathrm{\mu b}$ for 7 and 13 TeV. The ratio is $2.14 \pm 0.02 \pm 0.13$, where the quoted uncertainties are statistical and systematic, respectively. The agreement with theoretical expectation is good at 7 TeV, but differs somewhat at 13 TeV. The measured ratio of cross sections is larger at lower $\eta$ than the model prediction. Source code: LHCB_2016_I1504058.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7 /// @brief b-quark production in 7 and 13 TeV pp collisions
8 class LHCB_2016_I1504058 : public Analysis {
9
10 public:
11 RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2016_I1504058);
12
13 void init() {
14 // Check energy of input file and book corresponding histogram
15 if (isCompatibleWithSqrtS(7000 * GeV)) _sqs = 0;
16 else if (isCompatibleWithSqrtS(13000 * GeV)) _sqs = 1;
17 if (_sqs < 0 && !merging()) {
18 throw BeamError("Invalid beam energy for " + name() + "\n");
19 }
20 book(_b_quark_hist[0], 1, 1, 1);
21 book(_b_quark_hist[1], 2, 1, 1);
22 // Select pseudorapidity range
23 declare(UnstableParticles(Cuts::absetaIn(2.0, 5.0)), "UPs");
24 }
25
26 void analyze(const Event &ev) {
27 // Apply UnstableParticles projection to get entire decay chain of every particle
28 const UnstableParticles &unst_parts = apply<UnstableParticles>(ev, "UPs");
29 for (const Particle &part : unst_parts.particles()) {
30 // Select beauty hadrons
31 if (!(PID::isBottomHadron(part.pid())))
32 continue;
33
34 // Skip bottomonia (excluded from definition) and Bc+ meson (ignored in
35 // measurement)
36 if ((PID::isQuarkonium(part.pid())) || (part.abspid() == PID::BCPLUS))
37 continue;
38
39 // Veto beauty hadrons w/ beauty hadron child (pick only children)
40 if (part.isLastWith(hasBottom)) continue;
41
42 // Double sample size by taking absolute value and then scale by 0.5 due to LHCb
43 // being one-sided
44 double eta = part.abseta();
45
46 // Scale again by 0.5 to get mean of beauty quarks and antiquarks
47 _b_quark_hist[_sqs]->fill(eta, 0.25);
48 }
49 }
50
51 void finalize() {
52 // Compute scale factor with inelastic cross-section from input file and sum of
53 // weights (corresponds to number of events in input file) and do not modify it
54 // for using symmetric LHCb phase space as taken into account by histogram count
55 scale(_b_quark_hist, crossSection() / microbarn / sumOfWeights());
56
57 // compute ratio of b quark productions at 13 and 7 TeV (during merge)
58 if (_b_quark_hist[0]->effNumEntries() != 0. && _b_quark_hist[1]->effNumEntries() != 0.) {
59 Estimate1DPtr tmp;
60 book(tmp, 3, 1, 1);
61 divide(_b_quark_hist[1], _b_quark_hist[0], tmp);
62 }
63 }
64
65 Histo1DPtr _b_quark_hist[2];
66 int _sqs = -1;
67 };
68
69 RIVET_DECLARE_PLUGIN(LHCB_2016_I1504058);
70}
|