Rivet analyses referenceLHCB_2022_I2694685Measurement 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:
Beam energies: (4080.0, 4080.0); (6500.0, 533000.0) GeV Run details:
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}
|