Rivet analyses referenceCMS_2015_I1342266Measurements of the $\Upsilon(1S)$, $\Upsilon(2S)$, and $\Upsilon(3S)$ differential cross sections in pp collisions at $\sqrt{s}=7$ TeVExperiment: CMS (LHC) Inspire ID: 1342266 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
Measurement of the transverse momentum distribtions for $\Upsilon(1S)$, $\Upsilon(2S)$, and $\Upsilon(3S)$ production in three rapidity intervals. The production ratios are also measured. Source code: CMS_2015_I1342266.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7 class CMS_2015_I1342266 : public Analysis {
8 public:
9 /// Constructor
10 RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2015_I1342266);
11
12 /// Book histograms and initialise projections before the run
13 void init() {
14 declare(UnstableParticles(), "UFS");
15 for (unsigned int ix=0; ix<3; ++ix) {
16 book(_h_dy_pT[ix], {0.0,0.6,1.2});
17 for (unsigned int iy=1; iy<3; ++iy) {
18 book(_h_dy_pT[ix]->bin(iy), iy, 1, 1+ix);
19 }
20 book(_h_pT[ix], 3, 1, 1+ix);
21 }
22 }
23
24 /// Perform the per-event analysis
25 void analyze(const Event& event) {
26 // Final state of unstable particles to get particle spectra
27 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
28
29 for (const Particle& p : ufs.particles(Cuts::pid==553 || Cuts::pid==100553 || Cuts::pid==200553)) {
30 const double absrap = p.absrap();
31 const double xp = p.perp();
32 if (absrap>1.2) continue;
33 unsigned int iups = p.pid()/100000;
34 _h_pT [iups]->fill(xp);
35 _h_dy_pT[iups]->fill(absrap,xp);
36 }
37 }
38
39
40 /// Normalise histograms etc., after the run
41 void finalize() {
42 const double factor = crossSection() / femtobarn/ sumOfWeights();
43 const vector<double> brs = {0.0248,0.0193,0.0218};
44 for (unsigned int ix=0; ix<3; ++ix) {
45 scale(_h_dy_pT[ix], factor*brs[ix]); //branching ratio
46 divByGroupWidth(_h_dy_pT[ix]);
47 scale(_h_pT[ix],factor * brs[ix]);
48 }
49 for (unsigned int i=1; i<3; ++i) {
50 Estimate1DPtr tmp;
51 book(tmp,i+3,1,1);
52 divide(_h_dy_pT[1]->bin(i), _h_dy_pT[0]->bin(i), tmp);
53 book(tmp,i+3,1,2);
54 divide(_h_dy_pT[2]->bin(i), _h_dy_pT[0]->bin(i), tmp);
55 }
56 Estimate1DPtr tmp;
57 book(tmp,6,1,1);
58 divide(_h_pT[1], _h_pT[0], tmp);
59 book(tmp,6,1,2);
60 divide(_h_pT[2], _h_pT[0], tmp);
61 }
62
63 private:
64
65 Histo1DGroupPtr _h_dy_pT[3];
66 Histo1DPtr _h_pT[3];
67
68 };
69
70 RIVET_DECLARE_PLUGIN(CMS_2015_I1342266);
71}
|