Rivet analyses referenceCMSTOTEM_2014_I1294140Charged particle pseudorapidity distribution at $\sqrt{s}$=8 TeVExperiment: CMS, TOTEM (LHC) Inspire ID: 1294140 Status: VALIDATED Authors:
Beam energies: (4000.0, 4000.0) GeV Run details:
The pseudorapidity distribution of charged particles produced in proton-proton collisions at a centre-of-mass energy of 8 TeV are measured in the ranges $|\eta| < 2.2$ and $5.3 < |\eta| < 6.4$, with the CMS and TOTEM detectors, respectively. The measurement is performed with a one-side TOTEM trigger, which is sensitive to 99\% of non-diffractive interactions and diffractive interactions with masses above 3.6 GeV, for three different event selections. An inclusive sample with the least selection bias, a sample enhanced in non-single diffractive events, and a sample enhanced in single-diffractive events were selected. Source code: CMSTOTEM_2014_I1294140.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/ChargedFinalState.hh"
4#include "Rivet/Projections/Beam.hh"
5
6namespace Rivet {
7
8
9 class CMSTOTEM_2014_I1294140 : public Analysis {
10 public:
11
12 RIVET_DEFAULT_ANALYSIS_CTOR(CMSTOTEM_2014_I1294140);
13
14 void init() {
15 ChargedFinalState cfs(Cuts::abseta < 7.0);
16 declare(cfs, "CFS");
17
18 book(_Nevt_after_cuts_or, "Nevt_or");
19 book(_Nevt_after_cuts_and, "Nevt_and");
20 book(_Nevt_after_cuts_xor, "Nevt_xor");
21 book(_h_dNch_dEta_OR, 1, 1, 1);
22 book(_h_dNch_dEta_AND, 2, 1, 1);
23 book(_h_dNch_dEta_XOR, 3, 1, 1);
24 }
25
26
27 void analyze(const Event& event) {
28 // Count forward and backward charged particles
29 const ChargedFinalState& charged = apply<ChargedFinalState>(event, "CFS");
30 int count_plus = 0, count_minus = 0;
31 for (const Particle& p : charged.particles()) {
32 if (inRange(p.eta(), 5.3, 6.5)) ++count_plus;
33 if (inRange(p.eta(), -6.5, -5.3)) ++count_minus;
34 }
35
36 // Cut combinations
37 const bool cutsor = (count_plus || count_minus);
38 const bool cutsand = (count_plus && count_minus);
39 const bool cutsxor = (count_plus && !count_minus) || (!count_plus && count_minus);
40
41 // Increment counters and fill histos
42 if (cutsor) _Nevt_after_cuts_or->fill();
43 if (cutsand) _Nevt_after_cuts_and->fill();
44 if (cutsxor) _Nevt_after_cuts_xor->fill();
45 for (const Particle& p : charged.particles()) {
46 if (cutsor) _h_dNch_dEta_OR->fill(p.abseta());
47 if (cutsand) _h_dNch_dEta_AND->fill(p.abseta());
48 if (cutsxor) _h_dNch_dEta_XOR->fill(p.abseta());
49 }
50
51 }
52
53
54 void finalize() {
55 scale(_h_dNch_dEta_OR, 0.5 / *_Nevt_after_cuts_or);
56 scale(_h_dNch_dEta_AND, 0.5 / *_Nevt_after_cuts_and);
57 scale(_h_dNch_dEta_XOR, 0.5 / *_Nevt_after_cuts_xor);
58 }
59
60
61 private:
62
63 Histo1DPtr _h_dNch_dEta_OR, _h_dNch_dEta_AND, _h_dNch_dEta_XOR;
64 CounterPtr _Nevt_after_cuts_or, _Nevt_after_cuts_and, _Nevt_after_cuts_xor;
65
66 };
67
68
69 RIVET_DECLARE_PLUGIN(CMSTOTEM_2014_I1294140);
70
71}
|