|
Rivet analyses reference
ATLAS_2016_I1468167
Measurement of the inelastic proton--proton cross-section at $\sqrt{s} = 13\,\text{TeV}$
Experiment: ATLAS (LHC)
Inspire ID: 1468167
Status: VALIDATED
Authors:
- Zachary Marshall
- Christian Gutschow
References:
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.
Source code:
ATLAS_2016_I1468167.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 | // -*- 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
class ATLAS_2016_I1468167 : public Analysis {
public:
RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2016_I1468167);
/// Initialisation
void init() {
declare(FinalState(), "FS");
book(_h_sigma, 1, 1, 1);
}
/// Per-event analysis
void analyze(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) {
const double 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;
}
const double M2 = max(mxFourVector.mass2(), myFourVector.mass2());
const double 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
void finalize() {
scale(_h_sigma, crossSection()/millibarn/sumOfWeights());
}
/// Histogram
Histo1DPtr _h_sigma;
};
// The hook for the plugin system
RIVET_DECLARE_PLUGIN(ATLAS_2016_I1468167);
}
|
|