Rivet analyses

Measurement of pp inelastic cross-section at 13 TeV using prompt, long-lived particles in the LHCb fiducial phase-space

Experiment: LHCB (LHC)

Inspire ID: 1889335

Status: VALIDATED

Authors: - Lars Kolk

References: - JHEP 01 (2022) 166 - DOI:10.1007/JHEP01(2022)166 - arXiv: 2107.10090 - Expt page: LHCb-PAPER-2021-010 - CERN-EP-2021-110

Beams: p+ p+

Beam energies: (6500.0, 6500.0)GeV

Run details: - Proton-proton interactions at 13 TeV centre-of-mass energy. LHCb minimum bias, inelastic events.

The differential cross-section of prompt inclusive production of long-lived charged particles in proton-proton collisions is measured using a data sample recorded by the LHCb experiment at a centre-of-mass energy of $\sqrt{s} = 13$ TeV. The data sample, collected with an unbiased trigger, corresponds to an integrated luminosity of 5.4 nb−1. The differential cross-section is measured as a function of transverse momentum and pseudorapidity in the ranges pT ∈ [80, 10000) MeV/c and η ∈ [2.0, 4.8) and is determined separately for positively and negatively charged particles.

Source code:LHCB_2021_I1889335.cc

// -*-C++ - *-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/AliceCommon.hh"

namespace Rivet {


  /// @brief Charged particle production at 13 TeV
  class LHCB_2021_I1889335 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2021_I1889335);


    /// @name Analysis methods
    //@{

    /// Book histograms and initialise projections before the run
    void init() {

      // Register projection for primary particles
      declare(ALICE::PrimaryParticles(Cuts::etaIn(2.0, 4.8) && Cuts::abscharge > 0), "APRIM");

      vector<double> edges = {2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 4.8};
      book(_h_ppInel_neg, edges);
      book(_h_ppInel_pos, edges);
      for (size_t i=1; i < edges.size(); ++i) {
        book(_h_ppInel_neg->bin(i), 1, 1, i);
        book(_h_ppInel_pos->bin(i), 2, 1, i);
      }
    }


    void analyze(const Event &event) {

      const Particles cfs = apply<ALICE::PrimaryParticles>(event, "APRIM").particles();

      for (const Particle& myp : cfs) {
        if (myp.charge() < 0) {
          _h_ppInel_neg->fill(myp.eta(), myp.pT()/GeV);
        }
        else {
          _h_ppInel_pos->fill(myp.eta(), myp.pT()/GeV);
        }
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      const double scale_factor = crossSection() / millibarn / sumOfWeights();
      scale({_h_ppInel_neg, _h_ppInel_pos}, scale_factor);
      divByGroupWidth({_h_ppInel_neg, _h_ppInel_pos});
    }

    /// @}


  private:

    /// @name Histogram
    Histo1DGroupPtr _h_ppInel_neg, _h_ppInel_pos;

  };


  RIVET_DECLARE_PLUGIN(LHCB_2021_I1889335);

}