rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMS_2018_I1653948

Measurement of the inelastic proton-proton cross section at 13 TeV
Experiment: CMS (LHC)
Inspire ID: 1653948
Status: VALIDATED
Authors: References:
  • JHEP 07 (2018) 161
  • DOI 10.1007/JHEP07(2018)161
  • Public page: CMS-FSQ-15-005
  • arXiv: 1802.02613
  • CERN-EP-2018-004
  • http://cms-results.web.cern.ch/cms-results/public-results/publications/FSQ-15-005/
Beams: p+ p+
Beam energies: (6500.0, 6500.0) GeV
Run details:
  • Inelastic events (non-diffractive and inelastic diffractive).

A measurement of the inelastic proton-proton cross section at $\sqrt{s} = 13$ TeV with the CMS detector at the LHC has been presented. An inelastic cross section of $67.5 \pm 0.8 \text{(syst)} \pm 1.6 \text{(lumi)}$ mb is obtained for $\xi = M^2/s > 10^{-6}$ (corresponding to $M > 13$ GeV), with $M$ the larger of $M_{\mathrm{X}}$ and $M_{\mathrm{Y}}$, where $M_{\mathrm{X}}$ and $M_{\mathrm{Y}}$ are the masses of the diffractive dissociation systems with negative and positive pseudorapidities, respectively. In addition, an inelastic cross section of $68.6 \pm 0.5 \text{(syst)} \pm 1.6 \text{(lumi)}$ mb is obtained in the enlarged phase space $\xi_{\mathrm{X}} > 10^{-7}$ and/or $\xi_{\mathrm{Y}} > 10^{-6}$ (corresponding to $M_{\mathrm{X}} > 4.1$ GeV and/or $M_{\mathrm{Y}} > 13$ GeV).

Source code: CMS_2018_I1653948.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4
 5namespace Rivet {
 6
 7
 8  class CMS_2018_I1653948 : public Analysis {
 9  public:
10
11    CMS_2018_I1653948()
12      : Analysis("CMS_2018_I1653948"), _xi_hf_cut(1E-6), _xi_castor_cut(1E-7)
13    {    }
14
15
16    /// Book projections and histograms
17    void init() {
18      declare(FinalState(),"FS");
19      book(_h_xsec, 1, 1, 1);
20    }
21
22
23    /// Analyze each event
24    void analyze(const Event& event) {
25
26      const FinalState& fs = apply<FinalState>(event, "FS");
27      if (fs.size() < 3) vetoEvent; // veto on elastic events
28      const Particles particlesByRapidity = fs.particles(cmpMomByRap);
29      const size_t num_particles = particlesByRapidity.size();
30
31      vector<double> gaps;
32      vector<double> midpoints;
33
34      for (size_t ip = 1; ip < num_particles; ++ip) {
35        const Particle& p1 = particlesByRapidity[ip-1];
36        const Particle& p2 = particlesByRapidity[ip];
37        const double gap = p2.momentum().rapidity() - p1.momentum().rapidity();
38        const double mid = (p2.momentum().rapidity() + p1.momentum().rapidity()) / 2.;
39        gaps.push_back(gap);
40        midpoints.push_back(mid);
41      }
42
43      int imid = std::distance(gaps.begin(), max_element(gaps.begin(), gaps.end()));
44      double gapcenter = midpoints[imid];
45
46      FourMomentum MxFourVector(0.,0.,0.,0.);
47      FourMomentum MyFourVector(0.,0.,0.,0.);
48
49      for (const Particle& p : fs.particles(cmpMomByEta)) {
50        if (p.momentum().rapidity() < gapcenter) {
51          MxFourVector += p.momentum();
52        } else {
53          MyFourVector += p.momentum();
54        }
55      }
56
57      double Mx = MxFourVector.mass();
58      double My = MyFourVector.mass();
59
60      double xix = (Mx * Mx) / (sqrtS()/GeV * sqrtS()/GeV);
61      double xiy = (My * My) / (sqrtS()/GeV * sqrtS()/GeV);
62      double xi  = max(xix, xiy);
63
64      if (xi > _xi_hf_cut) _h_xsec->fill(1);
65      if (xix > _xi_castor_cut || xiy > _xi_hf_cut) _h_xsec->fill(2);
66    }
67
68
69    /// Normalizations, etc.
70    void finalize() {
71      scale(_h_xsec, crossSection()/millibarn/sumOfWeights());
72    }
73
74
75  private:
76
77    BinnedHistoPtr<int> _h_xsec;
78    double _xi_hf_cut;
79    double _xi_castor_cut;
80
81  };
82
83
84  RIVET_DECLARE_PLUGIN(CMS_2018_I1653948);
85
86}