Rivet analyses


title: 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

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Projections/UnstableParticles.hh"

include "Rivet/Tools/HistoGroup.hh"

namespace Rivet {

class LHCB_2019_I1720413 : public Analysis {

public:

RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2019_I1720413);

void init() {

  size_t ih = 1;
  vector<double> ybins = {-4.5, -3.5, -2.5, 1.5, 2.5, 3.5};
  for (const string& label : vector<string>{"b_plus", "b_0", "lambda_b_0"}) {
    book(_g[label], ybins);
    _g[label]->maskBin(3);
    size_t idx = 1;
    for (auto& b : _g[label]->bins()) {
      book(b, ih, 1, idx++);
    }
    ++ih;
  }

  book(_h["b_plus"], 4, 1, 1);
  book(_h["b_0"], 4, 1, 2);
  book(_h["lambda_b_0"], 4, 1, 3);

  book(_e["b_plus_diff"], 5, 1, 1);
  book(_e["b_0_diff"], 5, 1, 2);
  book(_e["lambda_b_0_diff"], 5, 1, 3);

  book(_e["b_plus"], 6, 1, 1);
  book(_e["b_0"], 6, 1, 2);
  book(_e["lambda_b_0"], 6, 1, 3);

  // Define histograms with one rapidity interval to compute
  // transverse-momentum-integrated forward-to-backward ratio
  const vector<double> forw_y_ints = {2.0, 20.0};
  book(_h["b_plus_fwd"], "_b_plus_fwd", forw_y_ints);
  book(_h["b_plus_bwd"], "_b_plus_bwd", forw_y_ints);
  book(_h["b_0_fwd"], "_b_0_fwd", forw_y_ints);
  book(_h["b_0_bwd"], "_b_0_bwd", forw_y_ints);
  book(_h["lambda_b_0_fwd"], "_lambda_b_0_fwd", forw_y_ints);
  book(_h["lambda_b_0_bwd"], "_lambda_b_0_bwd", forw_y_ints);

  // Select B+, B0 and Lambdab0 hadrons and their antiparticles
  declare(UnstableParticles(((Cuts::abspid == PID::BPLUS) || (Cuts::abspid == PID::B0)
                             || (Cuts::abspid == PID::LAMBDAB))
                            && (Cuts::ptIn(2 * GeV, 20 * GeV))
                            && (Cuts::rapIn(-4.5, -2.5) || Cuts::rapIn(1.5, 3.5))),
          "UPs");
}

void analyze(const Event& event) {
  // Apply UnstableParticles projection
  const UnstableParticles& unst_parts = apply<UnstableParticles>(event, "UPs");
  for (const Particle& part : unst_parts.particles()) {
    const double y = part.rapidity();
    const double pt = part.pT();

    if (part.abspid() == PID::BPLUS) {
      _g["b_plus"]->fill(y, pt / GeV);
      _h["b_plus"]->fill(y);
      if (fabs(y) < 2.5 || fabs(y) > 3.5) continue;
      if (y > 0.)
        _h["b_plus_fwd"]->fill(pt / GeV);
      else
        _h["b_plus_bwd"]->fill(pt / GeV);
    }
    else if (part.abspid() == PID::B0) {
      _g["b_0"]->fill(y, pt / GeV);
      _h["b_0"]->fill(y);
      if (fabs(y) < 2.5 || fabs(y) > 3.5) continue;
      if (y > 0.)
        _h["b_0_fwd"]->fill(pt / GeV);
      else
        _h["b_0_bwd"]->fill(pt / GeV);
    }
    else if (part.abspid() == PID::LAMBDAB) {
      _g["lambda_b_0"]->fill(y, pt / GeV);
      _h["lambda_b_0"]->fill(y);
      if (fabs(y) < 2.5 || fabs(y) > 3.5) continue;
      if (y > 0.)
        _h["lambda_b_0_fwd"]->fill(pt / GeV);
      else
        _h["lambda_b_0_bwd"]->fill(pt / GeV);
    }
  }
}

void finalize() {
  // Compute scale factor with inelastic cross-section from input file and sum of
  // weights (corresponds to number of events in input file)
  const double sf = crossSection() / microbarn / sumOfWeights();
  scale(_g, sf);
  scale(_h, sf);

  // Compute forward-to-backward ratio with correct indices from HistoGroup
  for (auto& grp : _g) {
    divide(grp.second->bin(5), grp.second->bin(2), _e[grp.first + "_diff"s]);
    divide(_h[grp.first + "_fwd"s], _h[grp.first + "_bwd"s], _e[grp.first]);
  }
}

private:

map<string, Histo1DPtr> _h;
map<string, Estimate1DPtr> _e;
map<string, Histo1DGroupPtr> _g;

};

RIVET_DECLARE_PLUGIN(LHCB_2019_I1720413); } ```