Rivet analyses referenceCMS_2015_I1345023Prompt J/$\psi$ and $\psi(2S)$ production at 7 TeVExperiment: CMS (LHC) Inspire ID: 1345023 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
Measurement of prompt $J/\psi$ and $\psi(2S)$ at 7 TeV by the CMS collaboration. The transverse momentum spectra are measured in a numbver of rapidity intervals, together with the ratio of the production of the $\psi(2S)$ to the $J/\psi$. Source code: CMS_2015_I1345023.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5
6namespace Rivet {
7
8
9 /// @brief prompt J/psi and psi(2S) at 7 TeV
10 class CMS_2015_I1345023 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2015_I1345023);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 // projection
23 declare(UnstableParticles(), "UFS");
24 // J/psi/psi(2s) histos
25 for (unsigned int ipsi=0;ipsi<2;++ipsi) {
26 book(_h_psi[ipsi], {0.,0.3,0.6,0.9,1.2});
27 for (unsigned int iy=1;iy<5;++iy) {
28 Histo1DPtr tmp;
29 book(_h_psi[ipsi]->bin(iy),ipsi+1,1,iy);
30 }
31 book(_h_pT[ipsi][0],3+ipsi,1,1);
32 book(_h_pT[ipsi][1],"TMP/psi_"+toString(ipsi),refData(5, 1, 1));
33 }
34 }
35
36
37 /// Perform the per-event analysis
38 void analyze(const Event& event) {
39 // Final state of unstable particles to get particle spectra
40 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
41 // loop over onium states
42 for (const Particle& p : ufs.particles(Cuts::pid==443 or Cuts::pid==100443)) {
43 // prompt
44 if (p.fromBottom()) continue;
45 // cuts on rapidity
46 const double y = p.absrap();
47 if (y>1.2) continue;
48 const double pT = p.perp();
49 unsigned int ipsi=p.pid()/100000;
50 _h_psi[ipsi]->fill(y,pT);
51 _h_pT[ipsi][0]->fill(pT);
52 _h_pT[ipsi][1]->fill(pT);
53 }
54 }
55
56
57 /// Normalise histograms etc., after the run
58 void finalize() {
59 // 0.5 due folded rapidity
60 const double factor = 0.5*crossSection() / picobarn/ sumOfWeights();
61 // branching ratios to muons
62 const vector<double> brs={0.05961,0.00793};
63 for (unsigned int ix=0; ix<2; ++ix) {
64 scale(_h_psi[ix], factor*brs[ix]);
65 divByGroupWidth(_h_psi[ix]);
66 scale(_h_pT[ix][0],brs[ix]*factor/1.2);
67 scale(_h_pT[ix][1],brs[ix]*factor/1.2);
68 }
69 // ratio plots
70 Estimate1DPtr tmp;
71 book(tmp,5,1,1);
72 divide(_h_pT[1][1],_h_pT[0][1],tmp);
73 // convert to %age
74 tmp->scale(100.);
75 }
76
77 /// @}
78
79
80 /// @name Histograms
81 /// @{
82 Histo1DGroupPtr _h_psi[2];
83 Histo1DPtr _h_pT[2][2];
84 /// @}
85
86
87 };
88
89
90 RIVET_DECLARE_PLUGIN(CMS_2015_I1345023);
91
92}
|