Rivet analyses


title: LHCB_2022_I2694685

Measurement of the prompt $D^0$ nuclear modification factor in $p$-$\mathrm{Pb}$ collisions at $\sqrt{s_{NN}} = 8.16\,\mathrm{TeV}$

Experiment: LHCB (LHC)

Inspire ID: 2694685

Status: VALIDATED

Authors: - Joshua Friedman - Julian Boelhauve - Lars Kolk

References: - Phys.Rev.Lett. 131 (2023) 10, 102301 - DOI:10.1103/PhysRevLett.131.102301 - arXiv: 2205.03936 - CERN-EP-2022-082 - LHCB-PAPER-2022-007

Beams: p+ p+, p+ 1000822080

Beam energies: (4080.0, 4080.0); (6500.0, 533000.0)GeV

Run details: - Minimum-bias proton-lead interactions at 8.16 TeV centre-of-mass energy.

The production of prompt $D^0$ mesons in proton-lead collisions in both the forward and backward rapidity regions at a center-of-mass energy per nucleon pair of $\sqrt{s_{NN}} = 8.16\,\mathrm{TeV}$ is measured by the LHCb experiment. The nuclear modification factor of prompt $D^0$ mesons is determined as a function of the transverse momentum $p_\mathrm{T}$, and the rapidity in the nucleon-nucleon center-of-mass frame $y^\ast$. In the forward rapidity region, significantly suppressed production with respect to $pp$ collisions is measured, which provides significant constraints on models of nuclear parton distributions and hadron production down to the very low Bjorken-$x$ region of $\sim! 10^{-5}$. In the backward rapidity region, a suppression with a significance of $2.0! -! 3.8$ standard deviations compared to parton distribution functions in a nuclear environment expectations is found in the kinematic region of $p_\mathrm{T} > 6\,\mathrm{GeV}/c$ and $-3.25 < y^\ast < -2.5$, corresponding to $x\sim 0.01$.

Source code:LHCB_2022_I2694685.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

/// @brief Prompt D0 production in pPb collisions at 8.16 TeV c.o.m. energy per nucleon class LHCB_2022_I2694685 : public Analysis {

public:

RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2022_I2694685);

void init() {
  // This booking may be optimised but since BinnedHistogram changes in Rivet 4
  // we keep it this way for pedagogical reasons.
  book(_pt_hist, {1.50,  1.75,  2.00,  2.25,  2.50,  2.75,  3.00,  3.25,  3.50,  3.75,  4.00,
                  -2.75, -2.50, -3.00, -3.25, -3.50, -3.75, -4.00, -4.25, -4.50, -4.75, -5.00},
       {"d01-x01-y01", "d01-x01-y02", "d01-x01-y03", "d01-x01-y04", "d01-x01-y05", "d01-x01-y06",
        "d01-x01-y07", "d01-x01-y08", "d01-x01-y09", "d01-x01-y10", "d02-x01-y01", "d02-x01-y02",
        "d02-x01-y03", "d02-x01-y04", "d02-x01-y05", "d02-x01-y06", "d02-x01-y07", "d02-x01-y08",
        "d02-x01-y09", "d02-x01-y10", "d02-x01-y10"});
  book(_forw_to_backw_rat, 5, 1, 1);

  // Define histograms with transverse-momentum intervals to compute
  // forward-to-backward ratio
  book(_forw_y_pt_hist, "TMP/_forw_y_pt_hist", refData(5, 1, 1));
  book(_backw_y_pt_hist, "TMP/_backw_y_pt_hist", refData(5, 1, 1));

  // Select D0 and D0bar mesons
  declare(UnstableParticles((Cuts::abspid == PID::D0) && (Cuts::pT < 30 * GeV)
                            && (Cuts::rapIn(1.5, 4.0) || Cuts::rapIn(-5.0, -2.5))),
          "UPs");
}

void analyze(const Event& ev) {
  // Apply UnstableParticles projection to get entire decay chain of every particle
  const UnstableParticles& unst_parts = apply<UnstableParticles>(ev, "UPs");
  for (const Particle& part : unst_parts.particles()) {
    // veto particle if beauty parent
    if (part.fromBottom()) continue;

    double y = part.rapidity();
    double pt = part.pT();

    _pt_hist->fill(y, pt);
    if (y > 2.5 && y < 4.0)
      _forw_y_pt_hist->fill(pt);
    else if (y > -4.0 && y < -2.5)
      _backw_y_pt_hist->fill(pt);
  }
}

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 scale_fact = crossSection() / millibarn / sumOfWeights();

  // Apply scale factor (histogram scaled by transverse-momentum interval widths
  // when running plotting command [results in differential cross-section])
  _pt_hist->divByGroupWidth();
  _pt_hist->scaleW(scale_fact);

  // Compute forward-to-backward ratio
  divide(_forw_y_pt_hist, _backw_y_pt_hist, _forw_to_backw_rat);
}

Histo1DGroupPtr _pt_hist;
Estimate1DPtr _forw_to_backw_rat;
Histo1DPtr _forw_y_pt_hist;
Histo1DPtr _backw_y_pt_hist;

};

RIVET_DECLARE_PLUGIN(LHCB_2022_I2694685); } ```