Rivet analyses

Study of J/ψ production and cold nuclear matter effects in pPb 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/ψ mesons with rapidity 1.5 < y < 4.0 or −5.0 < y < −2.5 and transverse momentum pT < 14 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/ψ 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 nb−1. For the first time the nuclear modification factor and forward-backward production ratio are determined separately for prompt J/ψ mesons and J/ψ from b-hadron decays. Clear suppression of prompt J/ψ production with respect to proton-proton collisions at large rapidity is observed, while the production of J/ψ 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++ -*-
#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);
}