|
Rivet analyses reference
CMS_2017_I1511284
Measurement of the inclusive energy spectrum in the very forward direction in proton-proton collisions at 13 TeV
Experiment: CMS (LHC)
Inspire ID: 1511284
Status: VALIDATED
Authors:
- cms-pag-conveners-fsq@cern.ch
- Sebastian Baur
No references listed
Beams: p+ p+
Beam energies: (6500.0, 6500.0) GeV
Run details:
- Proton-proton beam, 13 TeV center-of-mass-energy, minimum-bias processes.
The differential cross section for inclusive particle production as a function of energy in proton-proton collisions at a center-of-mass energy of 13 TeV is measured in the very forward region of the CMS detector. The measurement is based on data collected with the CMS apparatus at the LHC, and corresponds to an integrated luminosity of 0.35 inverse microbarns. The energy is measured in the CASTOR calorimeter, which covers the pseudorapidity region $-6.6 < \eta < -5.2$. The results are given as a function of the total energy deposited in CASTOR, as well as of its electromagnetic and hadronic components. The spectra are sensitive to the modeling of multiparton interactions in pp collisions, and provide new constraints for hadronic interaction models used in collider and in high energy cosmic ray physics.
Source code:
CMS_2017_I1511284.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 | #include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
namespace Rivet {
/// Measurement of the inclusive energy spectrum in the very forward direction in pp collisions at 13 TeV
class CMS_2017_I1511284 : public Analysis {
public:
/// Constructor
CMS_2017_I1511284()
: Analysis("CMS_2017_I1511284")
{ }
/// Book histograms and initialise projections
void init() {
declare(FinalState(), "FS");
book(_h_totEnergy, 1, 1, 1);
book(_h_emEnergy , 2, 1, 1);
book(_h_hadEnergy, 3, 1, 1);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const Particles fsparticles = apply<FinalState>(event, "FS").particles(cmpMomByRap);
if (fsparticles.size() < 2) vetoEvent; // need at least two particles to calculate gaps
double gapCenter = 0,largestGap = 0;
double previousRapidity = fsparticles.front().rapidity();
for (const Particle& p : fsparticles) {
const double gap = fabs(p.rapidity() - previousRapidity);
if (gap > largestGap) {
largestGap = gap; // largest gap
gapCenter = (p.rapidity()+previousRapidity)/2.; // find the center of the gap to separate the X and Y systems.
}
previousRapidity = p.rapidity();
}
FourMomentum mxFourVector, myFourVector;
for (const Particle& p : fsparticles)
(p.rapidity() > gapCenter ? mxFourVector : myFourVector) += p.momentum();
const double xiX = mxFourVector.mass2()/sqr(sqrtS());
const double xiY = myFourVector.mass2()/sqr(sqrtS());
const double xi = max(xiX, xiY);
if (xi < 1e-6) vetoEvent;
double totEnergy = 0, emEnergy = 0, hadEnergy = 0;
for (const Particle& p : fsparticles) {
if (!inRange(p.eta(), -6.6, -5.2)) continue; //< @todo Should be abseta()?
if (!p.isVisible() || p.abspid() == PID::MUON) continue;
totEnergy += p.energy();
if (p.abspid() == PID::ELECTRON || p.abspid() == PID::PHOTON || p.abspid() == 111) emEnergy += p.energy();
if (p.abspid() != PID::ELECTRON && p.abspid() != PID::PHOTON && p.abspid() != 111) hadEnergy += p.energy();
}
const double weight = 1.0;
_h_totEnergy->fill(totEnergy/GeV, weight);
_h_emEnergy->fill(emEnergy/GeV, weight);
_h_hadEnergy->fill(hadEnergy/GeV, weight);
}
/// Normalize histograms
void finalize() {
const double sf = crossSection()/microbarn/sumOfWeights();
scale(_h_totEnergy, sf);
scale(_h_emEnergy, sf);
scale(_h_hadEnergy, sf);
}
private:
Histo1DPtr _h_totEnergy, _h_emEnergy, _h_hadEnergy;
};
RIVET_DECLARE_PLUGIN(CMS_2017_I1511284);
}
|
|