Rivet analyses


title: CMS_2012_I1193338

Measurement of the inelastic proton-proton cross section at $\sqrt{s} = 7$ TeV

Experiment: CMS (LHC)

Inspire ID: 1193338

Status: VALIDATED

Authors: - Sercan Sen

References: - arXiv: 1210.6718

Beams: p+ p+

Beam energies: (3500.0, 3500.0)GeV

Run details: - Inelastic events (non-diffractive and inelastic diffractive).

The inelastic cross-section is measured through two independent methods based on information from (i) forward calorimetry (for pseudorapidity $3 < |\eta| < 5$), in collisions where at least one proton loses more than $\xi > 5 \cdot 10^{-6}$ of its longitudinal momentum, and (ii) the central tracker ($|\eta| < 2.4$), in collisions containing an interaction vertex with more than 1, 2, or 3 tracks with $p_\perp > 200~\MeV/c$.

Source code:CMS_2012_I1193338.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/ChargedFinalState.hh"

include "Rivet/Projections/FinalState.hh"

namespace Rivet {

class CMS_2012_I1193338 : public Analysis { public:

CMS_2012_I1193338()
    : Analysis("CMS_2012_I1193338") { }


void init() {
  declare(ChargedFinalState((Cuts::etaIn(-2.4, 2.4) && Cuts::pT >= 0.2 * GeV)), "CFS");
  declare(FinalState(), "FS");

  book(_h_sigma, 1, 1, 1);
}


void analyze(const Event& event) {

  const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "CFS");
  if (cfs.size() > 1) {
    _h_sigma->fill(1.5);
  }
  if (cfs.size() > 2) {
    _h_sigma->fill(2.5);
  }
  if (cfs.size() > 3) {
    _h_sigma->fill(3.5);
  }

  const FinalState& fs = apply<FinalState>(event, "FS");
  if (fs.size() < 2) vetoEvent; // need at least two particles to calculate gaps

  double gapcenter = 0.;
  double LRG = 0.;
  double etapre = 0.;
  bool first = true;

  for (const Particle& p : fs.particles(cmpMomByEta)) { // sorted from minus to plus
    if (first) {                                        // First particle
      first = false;
      etapre = p.eta();
    }
    else {
      double gap = fabs(p.eta() - etapre);
      if (gap > LRG) {
        LRG = gap; // largest gap
        gapcenter = (p.eta() + etapre)
            / 2.; // find the center of the gap to separate the X and Y systems.
      }
      etapre = p.eta();
    }
  }


  FourMomentum mxFourVector, myFourVector;
  for (const Particle& p : fs.particles(cmpMomByEta)) {
    ((p.eta() > gapcenter) ? mxFourVector : myFourVector) += p.momentum();
  }
  const double M2 = max(mxFourVector.mass2(), myFourVector.mass2());
  const double xi = M2 / sqr(sqrtS()); // sqrt(s)=7000 GeV, note that units cancel
  if (xi < 5e-6) vetoEvent;

  _h_sigma->fill(0.5);
}


void finalize() {
  scale(_h_sigma, crossSection() / millibarn / sumOfWeights());
}

private:

Histo1DPtr _h_sigma;

};

RIVET_DECLARE_PLUGIN(CMS_2012_I1193338);

} ```