Rivet analyses referenceCMS_2010_I845323Charged-particle pT and pseudorapidity spectra from pp collisions at 900 and 2360 GeV.Experiment: CMS (LHC) Inspire ID: 845323 Status: VALIDATED Authors:
Beam energies: (450.0, 450.0); (1180.0, 1180.0) GeV Run details:
Charged particle spectra are measured in proton-proton collisions at center-of-mass energies 900 and 2360 GeV. The spectra are normalized to all non-single-diffractive (NSD) events using corrections for trigger and selection efficiency, acceptance, and branching ratios. There are transverse-momentum (pT) spectra from 0.1 to 2 GeV in bins of pseudorapidity (eta) and pT spectra from 0.1 to 4 GeV for |eta|<2.4. The eta spectra come from the average of three methods and cover |eta|<2.5 and are corrected to include all pT. The data were corrected according to the SD/DD/ND content of the CMS trigger, as predicted by PYTHIA6. The uncertainties connected with correct or incorrect modelling of diffraction were included in the systematic errors. Beam energy must be specified (in GeV) as analysis option "ENERGY" when rivet-merging samples. Source code: CMS_2010_I845323.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/ChargedFinalState.hh"
4
5namespace Rivet {
6
7
8 /// Charged-particle pT and pseudorapidity spectra from pp collisions at 900 and 2360 GeV
9 class CMS_2010_I845323 : public Analysis {
10 public:
11
12 RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2010_I845323);
13
14
15 /// @{
16
17 void init() {
18 ChargedFinalState cfs((Cuts::etaIn(-2.5, 2.5)));
19 declare(cfs, "CFS");
20
21 if (isCompatibleWithSqrtS(900*GeV)) {
22 for (int d=1; d<=3; d++) {
23 for (int y=1; y<=4; y++) {
24 _h_dNch_dpT.push_back(Histo1DPtr());
25 book(_h_dNch_dpT.back(), d, 1, y);
26 }
27 }
28 book(_h_dNch_dpT_all ,7, 1, 1);
29 book(_h_dNch_dEta ,8, 1, 1);
30 } else if (isCompatibleWithSqrtS(2360*GeV)) {
31 for (int d=4; d<=6; d++) {
32 for (int y=1; y<=4; y++) {
33 _h_dNch_dpT.push_back(Histo1DPtr());
34 book(_h_dNch_dpT.back(), d, 1, y);
35 }
36 }
37 book(_h_dNch_dpT_all ,7, 1, 2);
38 book(_h_dNch_dEta ,8, 1, 2);
39 }
40 }
41
42
43 void analyze(const Event& event) {
44
45 //charged particles
46 const ChargedFinalState& charged = apply<ChargedFinalState>(event, "CFS");
47
48 for (const Particle& p : charged.particles()) {
49 //selecting only charged hadrons
50 if (! PID::isHadron(p.pid())) continue;
51
52 const double pT = p.pT();
53 const double eta = p.eta();
54
55 // The data is actually a duplicated folded distribution. This should mimic it.
56 _h_dNch_dEta->fill(eta, 0.5);
57 _h_dNch_dEta->fill(-eta, 0.5);
58 if (fabs(eta) < 2.4 && pT > 0.1*GeV) {
59 if (pT < 4.0*GeV) {
60 _h_dNch_dpT_all->fill(pT/GeV, 1.0/(pT/GeV));
61 if (pT < 2.0*GeV) {
62 int ietabin = int(fabs(eta)/0.2);
63 _h_dNch_dpT[ietabin]->fill(pT/GeV);
64 }
65 }
66 }
67 }
68 }
69
70
71 void finalize() {
72 const double normfac = 1.0/sumOfWeights(); // Normalizing to unit eta is automatic
73 // The pT distributions in bins of eta must be normalized to unit eta. This is a factor of 2
74 // for the |eta| times 0.2 (eta range).
75 // The pT distributions over all eta are normalized to unit eta (2.0*2.4) and by 1/2*pi*pT.
76 // The 1/pT part is taken care of in the filling. The 1/2pi is taken care of here.
77 const double normpT = normfac/(2.0*0.2);
78 const double normpTall = normfac/(2.0*M_PI*2.0*2.4);
79
80 for (size_t ietabin=0; ietabin < _h_dNch_dpT.size(); ietabin++){
81 scale(_h_dNch_dpT[ietabin], normpT);
82 }
83 scale(_h_dNch_dpT_all, normpTall);
84 scale(_h_dNch_dEta, normfac);
85 }
86
87 /// @}
88
89
90 private:
91
92 /// @{
93 std::vector<Histo1DPtr> _h_dNch_dpT;
94 Histo1DPtr _h_dNch_dpT_all;
95 Histo1DPtr _h_dNch_dEta;
96 /// @}
97
98 };
99
100
101
102 RIVET_DECLARE_ALIASED_PLUGIN(CMS_2010_I845323, CMS_2010_S8547297);
103
104}
|