Beams: p+ p+ Beam energies: (6500.0, 6500.0) GeV Run details:
Inelastic events (non-diffractive and inelastic diffractive).
Inelastic cross-section is measured for $\xi > 1 \times 10^{-6}$, where $\xi=M_X^2/s$ is calculated from the invariant mass, $M_X$, of hadrons selected using the largest rapidity gap in the event.
// -*- C++ -*-
#include"Rivet/Analysis.hh"#include"Rivet/Projections/FinalState.hh"namespace Rivet {
/// Measurement of the inelastic proton-proton cross-section at \sqrt{s} = 13 TeV
classATLAS_2016_I1468167:public Analysis {
public: RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2016_I1468167);
/// Initialisation
voidinit() {
declare(FinalState(), "FS");
book(_h_sigma, 1, 1, 1);
}
/// Per-event analysis
voidanalyze(const Event& event) {
// Get all particles, sorted from minus to plus in eta
const FinalState& fs = apply<FinalState>(event, "FS");
if (fs.size() <2) vetoEvent; // need at least two particles to calculate gaps
const Particles particles = fs.particles(cmpMomByEta);
// Find this event's largest gap size and center
double etapre = particles.front().eta();
double gapcenter =0.;
double gapsize =-1;
for (const Particle&p : particles) {
constdouble gap = fabs(p.eta() - etapre);
if (gap > gapsize) { // new largest gap
gapsize = gap;
gapcenter = (p.eta() + etapre)/2.;
}
etapre = p.eta();
}
// Calculate xi variable of the more massive side of the event, and apply xi cut
FourMomentum mxFourVector, myFourVector;
for (const Particle&p : particles) {
((p.eta() > gapcenter) ?mxFourVector : myFourVector) += p;
}
constdouble M2 = max(mxFourVector.mass2(), myFourVector.mass2());
constdouble xi = M2/sqr(sqrtS()); // sqrt(s)=7000 GeV, note that units cancel
if (xi <1e-6) vetoEvent;
// Fill the histogram
_h_sigma->fill(sqrtS()/GeV);
}
/// Scale the acceptance histogram to inelastic cross-section
voidfinalize() {
scale(_h_sigma, crossSection()/millibarn/sumOfWeights());
}
/// Histogram
Histo1DPtr _h_sigma;
};
// The hook for the plugin system
RIVET_DECLARE_PLUGIN(ATLAS_2016_I1468167);
}