|
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:
- cms-pag-conveners-smp@cern.ch
- Sercan Sen
- Pierre Van Mechelen
- Hans Van Haevermaet
References:
- JHEP 07 (2018) 161
- DOI 10.1007/JHEP07(2018)161
- 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
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
74
75
76
77
78
79
80
81
82
83
84
85
86 | // -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
namespace Rivet {
class CMS_2018_I1653948 : public Analysis {
public:
CMS_2018_I1653948()
: Analysis("CMS_2018_I1653948"), _xi_hf_cut(1E-6), _xi_castor_cut(1E-7)
{ }
/// Book projections and histograms
void init() {
declare(FinalState(),"FS");
book(_h_xsec, 1, 1, 1);
}
/// Analyze each event
void analyze(const Event& event) {
const FinalState& fs = applyProjection<FinalState>(event, "FS");
if (fs.size() < 3) vetoEvent; // veto on elastic events
const Particles particlesByRapidity = fs.particles(cmpMomByRap);
const size_t num_particles = particlesByRapidity.size();
vector<double> gaps;
vector<double> midpoints;
for (size_t ip = 1; ip < num_particles; ++ip) {
const Particle& p1 = particlesByRapidity[ip-1];
const Particle& p2 = particlesByRapidity[ip];
const double gap = p2.momentum().rapidity() - p1.momentum().rapidity();
const double mid = (p2.momentum().rapidity() + p1.momentum().rapidity()) / 2.;
gaps.push_back(gap);
midpoints.push_back(mid);
}
int imid = std::distance(gaps.begin(), max_element(gaps.begin(), gaps.end()));
double gapcenter = midpoints[imid];
FourMomentum MxFourVector(0.,0.,0.,0.);
FourMomentum MyFourVector(0.,0.,0.,0.);
for (const Particle& p : fs.particles(cmpMomByEta)) {
if (p.momentum().rapidity() < gapcenter) {
MxFourVector += p.momentum();
} else {
MyFourVector += p.momentum();
}
}
double Mx = MxFourVector.mass();
double My = MyFourVector.mass();
double xix = (Mx * Mx) / (sqrtS()/GeV * sqrtS()/GeV);
double xiy = (My * My) / (sqrtS()/GeV * sqrtS()/GeV);
double xi = max(xix, xiy);
if (xi > _xi_hf_cut) _h_xsec->fill(0.5);
if (xix > _xi_castor_cut || xiy > _xi_hf_cut) _h_xsec->fill(1.5);
}
/// Normalizations, etc.
void finalize() {
scale(_h_xsec, crossSection()/millibarn/sumOfWeights());
}
private:
Histo1DPtr _h_xsec;
double _xi_hf_cut;
double _xi_castor_cut;
};
DECLARE_RIVET_PLUGIN(CMS_2018_I1653948);
}
|
|