Rivet analyses


title: LHCB_2013_I1251899

Study of $J/\psi$ production and cold nuclear matter effects in $p\mathrm{Pb}$ collisions at $\sqrt{s_{NN}} = 5$ TeV

Experiment: LHCB (LHC)

Inspire ID: 1251899

Status: VALIDATED

Authors: - Gino Daniels - Lars Kolk - Julian Boelhauve

References: - JHEP 02 (2014) 072 - DOI:10.1007/JHEP02(2014)072 - arXiv: 1308.6729 - CERN-PH-EP-2013-156 - LHCB-PAPER-2013-052

Beams: p+ 1000822080

Beam energies: (4000.0, 328000.0)GeV

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

The production of $J/\psi$ mesons with rapidity $1.5 < y < 4.0$ or $-5.0 < y < -2.5$ and transverse momentum $p_\mathrm{T} < 14\,\mathrm{GeV}/c$ is studied with the LHCb detector in proton-lead collisions at a nucleon-nucleon centre-of-mass energy $\sqrt{s_{NN}} = 5\,\mathrm{TeV}$. The $J/\psi$ mesons are renconstructed using the dimuon decay mode. The analysis is based on a data sample corresponding to an integrated luminosity of about $1.6\,\mathrm{nb}^{-1}$. For the first time the nuclear modification factor and forward-backward production ratio are determined separately for prompt $J/\psi$ mesons and $J/\psi$ from $b$-hadron decays. Clear suppression of prompt $J/\psi$ production with respect to proton-proton collisions at large rapidity is observed, while the production of $J/\psi$ from $b$-hadron decays is less suppressed. These results show good agreement with available theoretical predictions. The measurement shows that cold nuclear matter effects are important for interpretations of the related quark-gluon plasma signatures in heavy-ion collisions.

Source code:LHCB_2013_I1251899.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet { /// @brief J/psi production in pPb collisions at $\sqrt{s_{NN}} = 5$ TeV class LHCB_2013_I1251899 : public Analysis {

public:

RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2013_I1251899);

void init() {
  for (size_t i = 0; i < 2; ++i) {
    book(_int_fw_y_pt[i], 1, 1, i + 1);
    book(_int_bw_y_pt[i], 2, 1, i + 1);
    book(_fw_y_hist[i], 3, 1, i + 1);
    book(_bw_y_hist[i], 4, 1, i + 1);
    string hname = "d0" + std::to_string(i + 5) + "-x01-y0";
    book(_diff_fw_y_pt_hist[i], {1.5, 2.0, 2.5, 3.0, 3.5, 4.0},
         {hname + "1", hname + "2", hname + "3", hname + "4", hname + "5"});
    book(_fw_bw_ratio[i], 9, 1, i + 1);
    // Define temporary histograms with transverse-momentum intervals to compute
    // forward-to-backward ratios
    book(_fw_red_y_pt_hist[i], "TMP/_fw_red_y_pt_hist" + std::to_string(i + 1), refData(9, 1, i + 1));
    book(_bw_red_y_pt_hist[i], "TMP/_bw_red_y_pt_hist" + std::to_string(i + 1), refData(9, 1, i + 1));
  }

  // Select J/psi mesons
  declare(UnstableParticles((Cuts::abspid == PID::JPSI) && (Cuts::pT < 14. * GeV)
                            && (Cuts::rapIn(1.5, 4.0) || Cuts::rapIn(-5.0, -2.5))),
          "UPs");
}

void analyze(const Event& ev) {
  Particles prompt_jpsi_mesons;
  Particles from_b_jpsi_mesons;
  size_t idx = -1; // 0 for prompt, 1 for from-b

  // 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()) {
    double y = part.rapidity();
    double pt = part.pT();

    idx = (part.fromBottom()) ? 1 : 0; // histogram index depending on promptness

    if (y > 0) { // forward region J/psi
      _int_fw_y_pt[idx]->fill(pt);
      _fw_y_hist[idx]->fill(y);
      _diff_fw_y_pt_hist[idx]->fill(y, pt);
      _fw_red_y_pt_hist[idx]->fill(pt);
    }
    else { // backward region J/psi
      _int_bw_y_pt[idx]->fill(pt);
      _bw_y_hist[idx]->fill(y);
      _bw_red_y_pt_hist[idx]->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() / microbarn / sumOfWeights();

  // Apply scale factor (histogram scaled by interval widths when running plotting
  // command [results in differential cross-section])
  for (size_t i = 0; i < 2; ++i) {
    scale(_int_fw_y_pt[i], scale_fact);
    scale(_int_bw_y_pt[i], scale_fact);
    scale(_fw_y_hist[i], scale_fact);
    scale(_bw_y_hist[i], scale_fact);
    _diff_fw_y_pt_hist[i]->divByGroupWidth();
    _diff_fw_y_pt_hist[i]->scaleW(scale_fact);
    // Compute forward-to-backward ratios
    divide(_fw_red_y_pt_hist[i], _bw_red_y_pt_hist[i], _fw_bw_ratio[i]);
  }
}

Histo1DPtr _int_fw_y_pt[2]; // 0 for prompt, 1 for from-b
Histo1DPtr _int_bw_y_pt[2];
Histo1DPtr _fw_y_hist[2];
Histo1DPtr _bw_y_hist[2];
Histo1DGroupPtr _diff_fw_y_pt_hist[2];
Estimate1DPtr _fw_bw_ratio[2];
Histo1DPtr _fw_red_y_pt_hist[2];
Histo1DPtr _bw_red_y_pt_hist[2];

};

RIVET_DECLARE_PLUGIN(LHCB_2013_I1251899); } ```