rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

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
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet
 6{
 7
 8  /// @brief Prompt D0 production in pPb collisions at 8.16 TeV c.o.m. energy per nucleon
 9  class LHCB_2022_I2694685 : public Analysis
10  {
11
12  public:
13    RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2022_I2694685);
14
15    void init()
16    {
17      // This booking may be optimised but since BinnedHistogram changes in Rivet 4
18      // we keep it this way for pedagogical reasons.
19      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,
20        -2.75, -2.50, -3.00, -3.25, -3.50, -3.75, -4.00, -4.25, -4.50, -4.75, -5.00}, 
21        {"d01-x01-y01", "d01-x01-y02", "d01-x01-y03", "d01-x01-y04", "d01-x01-y05", "d01-x01-y06", 
22          "d01-x01-y07", "d01-x01-y08", "d01-x01-y09", "d01-x01-y10",
23        "d02-x01-y01", "d02-x01-y02", "d02-x01-y03", "d02-x01-y04", "d02-x01-y05", "d02-x01-y06",
24          "d02-x01-y07", "d02-x01-y08", "d02-x01-y09", "d02-x01-y10", "d02-x01-y10"});
25      book(_forw_to_backw_rat, 5, 1, 1);
26
27      // Define histograms with transverse-momentum intervals to compute
28      // forward-to-backward ratio
29      book(_forw_y_pt_hist, "TMP/_forw_y_pt_hist", refData(5, 1, 1));
30      book(_backw_y_pt_hist, "TMP/_backw_y_pt_hist", refData(5, 1, 1));
31
32      // Select D0 and D0bar mesons
33      declare(UnstableParticles(
34        (Cuts::abspid == PID::D0) &&
35        (Cuts::pT < 30 * GeV) &&
36        (Cuts::rapIn(1.5, 4.0) || Cuts::rapIn(-5.0, -2.5))), "UPs");
37    }
38
39    void analyze(const Event &ev)
40    {
41      // Apply UnstableParticles projection to get entire decay chain of every particle
42      const UnstableParticles &unst_parts = apply<UnstableParticles>(ev, "UPs");
43      for (const Particle &part : unst_parts.particles())
44      {
45        // veto particle if beauty parent
46        if (part.fromBottom()) continue;
47        
48        double y = part.rapidity();
49        double pt = part.pT();
50
51        _pt_hist->fill(y, pt);
52        if (y > 2.5 && y < 4.0)
53          _forw_y_pt_hist->fill(pt);
54        else if (y > -4.0 && y < -2.5)
55          _backw_y_pt_hist->fill(pt);
56      }
57    }
58
59    void finalize()
60    {
61      // Compute scale factor with inelastic cross-section from input file and sum of
62      // weights (corresponds to number of events in input file)
63      const double scale_fact = crossSection() / millibarn / sumOfWeights();
64
65      // Apply scale factor (histogram scaled by transverse-momentum interval widths
66      // when running plotting command [results in differential cross-section])
67      _pt_hist->divByGroupWidth();
68      _pt_hist->scaleW(scale_fact);
69
70      // Compute forward-to-backward ratio
71      divide(_forw_y_pt_hist, _backw_y_pt_hist, _forw_to_backw_rat);
72    }
73
74    Histo1DGroupPtr _pt_hist;
75    Estimate1DPtr _forw_to_backw_rat;
76    Histo1DPtr _forw_y_pt_hist;
77    Histo1DPtr _backw_y_pt_hist;
78  };
79
80  RIVET_DECLARE_PLUGIN(LHCB_2022_I2694685);
81}