rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

LHCB_2019_I1720413

Measurement of $B^+$, $B^0$ and $\mathit{\Lambda}_b^0$ production in $p\mathrm{Pb}$ collisions at $\sqrt{s_\mathrm{NN}} = 8.16\,\mathrm{TeV}$
Experiment: LHCB (LHC)
Inspire ID: 1720413
Status: VALIDATED
Authors:
  • Joshua Friedman
  • Julian Boelhauve
  • Lars Kolk
References:
  • Phys.Rev.D 99 (2019) 5, 052011
  • DOI:10.1103/PhysRevD.99.052011
  • arXiv: 1902.05599
  • CERN-EP-2019-010
  • LHCB-PAPER-2018-048
Beams: p+ 1000822080
Beam energies: (6500.0, 533000.0) GeV
Run details:
  • Minimum-bias proton-lead interactions at 8.16 TeV centre-of-mass energy.

The production of $B^+$, $B^0$ and $\mathit{\Lambda}_b^0$ hadrons is studied in proton-lead collisions at a center-of-mass energy per nucleon pair of $\sqrt{s_\mathrm{NN}} = 8.16\,\mathrm{TeV}$ recorded with the LHCb detector at the LHC. The measurement uses a dataset corresponding to an integrated luminosity of $12.2\pm 0.3\,\mathrm{nb}^{-1}$ for the case where the proton beam is projected into the LHCb detector (corresponding to measuring hadron production at positive rapidity) and $18.6\pm 0.5\,\mathrm{nb}^{-1}$ for the lead beam projected into the LHCb detector (corresponding to measuring hadron production at negative rapidity). Double-differential cross-sections are measured and used to determine forward-backward ratios and nuclear modification factors, which directly probe nuclear effects in the production of beauty hadrons. The double-differential cross-sections are measured as a function of the beauty-hadron transverse momentum and rapidity in the nucleon-nucleon center-of-mass frame. Forward-to-backward cross-section ratios and nuclear modification factors indicate a significant nuclear suppression at positive rapidity. The ratio of $\mathit{\Lambda}_b^0$ over $B^0$ production cross-sections is reported and is consistent with the corresponding measurement in $pp$ collisions.

Source code: LHCB_2019_I1720413.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4#include "Rivet/Tools/HistoGroup.hh"
  5
  6namespace Rivet {
  7
  8  class LHCB_2019_I1720413 : public Analysis {
  9
 10  public:
 11
 12    RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2019_I1720413);
 13
 14    void init() {
 15
 16      size_t ih = 1;
 17      vector<double> ybins = { -4.5, -3.5, -2.5, 1.5, 2.5, 3.5 };
 18      for (const string& label : vector<string>{"b_plus", "b_0", "lambda_b_0"}) {
 19        book(_g[label], ybins);
 20        _g[label]->maskBin(3);
 21        size_t idx = 1;
 22        for (auto& b : _g[label]->bins()) {
 23          book(b, ih, 1, idx++);
 24        }
 25        ++ih;
 26      }
 27
 28      book(_h["b_plus"], 4, 1, 1);
 29      book(_h["b_0"], 4, 1, 2);
 30      book(_h["lambda_b_0"], 4, 1, 3);
 31
 32      book(_e["b_plus_diff"], 5, 1, 1);
 33      book(_e["b_0_diff"], 5, 1, 2);
 34      book(_e["lambda_b_0_diff"], 5, 1, 3);
 35
 36      book(_e["b_plus"], 6, 1, 1);
 37      book(_e["b_0"], 6, 1, 2);
 38      book(_e["lambda_b_0"], 6, 1, 3);
 39
 40      // Define histograms with one rapidity interval to compute
 41      // transverse-momentum-integrated forward-to-backward ratio
 42      const vector<double> forw_y_ints = {2.0, 20.0};
 43      book(_h["b_plus_fwd"], "_b_plus_fwd", forw_y_ints);
 44      book(_h["b_plus_bwd"], "_b_plus_bwd", forw_y_ints);
 45      book(_h["b_0_fwd"], "_b_0_fwd", forw_y_ints);
 46      book(_h["b_0_bwd"], "_b_0_bwd", forw_y_ints);
 47      book(_h["lambda_b_0_fwd"], "_lambda_b_0_fwd", forw_y_ints);
 48      book(_h["lambda_b_0_bwd"], "_lambda_b_0_bwd", forw_y_ints);
 49
 50      // Select B+, B0 and Lambdab0 hadrons and their antiparticles
 51      declare(
 52          UnstableParticles(
 53              ((Cuts::abspid == PID::BPLUS) ||
 54               (Cuts::abspid == PID::B0) ||
 55               (Cuts::abspid == PID::LAMBDAB)) &&
 56              (Cuts::ptIn(2 * GeV, 20 * GeV)) &&
 57              (Cuts::rapIn(-4.5, -2.5) || Cuts::rapIn(1.5, 3.5))), "UPs");
 58    }
 59
 60    void analyze(const Event &event) {
 61      // Apply UnstableParticles projection
 62      const UnstableParticles &unst_parts = apply<UnstableParticles>(event, "UPs");
 63      for (const Particle &part : unst_parts.particles()) {
 64        const double y = part.rapidity();
 65        const double pt = part.pT();
 66
 67        if (part.abspid () == PID::BPLUS) {
 68          _g["b_plus"]->fill(y, pt/GeV);
 69          _h["b_plus"]->fill(y);
 70          if (fabs(y) < 2.5 || fabs(y) > 3.5)  continue;
 71          if (y>0.)  _h["b_plus_fwd"]->fill(pt/GeV);
 72          else       _h["b_plus_bwd"]->fill(pt/GeV);
 73        }
 74        else if (part.abspid() == PID::B0) {
 75          _g["b_0"]->fill(y, pt/GeV);
 76          _h["b_0"]->fill(y);
 77          if (fabs(y) < 2.5 || fabs(y) > 3.5)  continue;
 78          if (y>0.)  _h["b_0_fwd"]->fill(pt/GeV);
 79          else       _h["b_0_bwd"]->fill(pt/GeV);
 80        }
 81        else if (part.abspid() == PID::LAMBDAB) {
 82          _g["lambda_b_0"]->fill(y, pt/GeV);
 83          _h["lambda_b_0"]->fill(y);
 84          if (fabs(y) < 2.5 || fabs(y) > 3.5)  continue;
 85          if (y>0.)  _h["lambda_b_0_fwd"]->fill(pt/GeV);
 86          else       _h["lambda_b_0_bwd"]->fill(pt/GeV);
 87        }
 88      }
 89    }
 90
 91    void finalize() {
 92      // Compute scale factor with inelastic cross-section from input file and sum of
 93      // weights (corresponds to number of events in input file)
 94      const double sf = crossSection() / microbarn / sumOfWeights();
 95      scale(_g, sf);
 96      scale(_h, sf);
 97
 98      // Compute forward-to-backward ratio with correct indices from HistoGroup
 99      for (auto& grp : _g) {
100        divide(grp.second->bin(5), grp.second->bin(2), _e[grp.first + "_diff"s]);
101        divide(_h[grp.first+"_fwd"s], _h[grp.first+"_bwd"s], _e[grp.first]);
102      }
103    }
104
105  private:
106
107    map<string,Histo1DPtr> _h;
108    map<string,Estimate1DPtr> _e;
109    map<string,Histo1DGroupPtr> _g;
110  };
111
112  RIVET_DECLARE_PLUGIN(LHCB_2019_I1720413);
113}