Rivet analyses referenceCMS_2010_S8656010Charged-particle transverse momentum and pseudorapidity spectra from proton-proton collisions at 7000 GeVExperiment: CMS (LHC) Inspire ID: 855299 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
Charged particle spectra are measured in proton-proton collisions at center-of-mass energies 7000 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 ($p_\perp$) spectra from 0.1 to 2 GeV in bins of pseudorapidity ($\eta$) and the $p_\perp$ spectrum from 0.1 to 6 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 $p_\perp$. 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. Source code: CMS_2010_S8656010.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 7000 GeV
9 class CMS_2010_S8656010 : public Analysis {
10 public:
11
12 RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2010_S8656010);
13
14
15 void init() {
16 ChargedFinalState cfs((Cuts::etaIn(-2.5, 2.5)));
17 declare(cfs, "CFS");
18
19 for (int d=1; d<=3; d++) {
20 for (int y=1; y<=4; y++) {
21 _h_dNch_dpT.push_back(Histo1DPtr());
22 book(_h_dNch_dpT.back(), d, 1, y);
23 }
24 }
25
26 book(_h_dNch_dpT_all ,4, 1, 1);
27 book(_h_dNch_dEta ,5, 1, 1);
28 }
29
30
31 void analyze(const Event& event) {
32 const double weight = 1.0;
33
34 //charged particles
35 const ChargedFinalState& charged = apply<ChargedFinalState>(event, "CFS");
36
37 for (const Particle& p : charged.particles()) {
38 //selecting only charged hadrons
39 if (! PID::isHadron(p.pid())) continue;
40
41 const double pT = p.pT();
42 const double eta = p.eta();
43
44 // The data is actually a duplicated folded distribution. This should mimic it.
45 _h_dNch_dEta->fill(eta, 0.5*weight);
46 _h_dNch_dEta->fill(-eta, 0.5*weight);
47 if (fabs(eta) < 2.4 && pT > 0.1*GeV) {
48 if (pT < 6.0*GeV) {
49 _h_dNch_dpT_all->fill(pT/GeV, weight/(pT/GeV));
50 if (pT < 2.0*GeV) {
51 int ietabin = int(fabs(eta)/0.2);
52 _h_dNch_dpT[ietabin]->fill(pT/GeV, weight);
53 }
54 }
55 }
56 }
57 }
58
59
60 void finalize() {
61 const double normfac = 1.0/sumOfWeights(); // Normalizing to unit eta is automatic
62 // The pT distributions in bins of eta must be normalized to unit eta. This is a factor of 2
63 // for the |eta| times 0.2 (eta range).
64 // The pT distributions over all eta are normalized to unit eta (2.0*2.4) and by 1/2*pi*pT.
65 // The 1/pT part is taken care of in the filling. The 1/2pi is taken care of here.
66 const double normpT = normfac/(2.0*0.2);
67 const double normpTall = normfac/(2.0*M_PI*2.0*2.4);
68
69 for (size_t ietabin=0; ietabin < _h_dNch_dpT.size(); ietabin++){
70 scale(_h_dNch_dpT[ietabin], normpT);
71 }
72 scale(_h_dNch_dpT_all, normpTall);
73 scale(_h_dNch_dEta, normfac);
74 }
75
76
77 private:
78
79 /// @{
80 std::vector<Histo1DPtr> _h_dNch_dpT;
81 Histo1DPtr _h_dNch_dpT_all;
82 Histo1DPtr _h_dNch_dEta;
83 /// @}
84
85 };
86
87
88
89 RIVET_DECLARE_ALIASED_PLUGIN(CMS_2010_S8656010, CMS_2010_I855299);
90
91}
|