rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMS_2015_I1342266

Measurements of the $\Upsilon(1S)$, $\Upsilon(2S)$, and $\Upsilon(3S)$ differential cross sections in pp collisions at $\sqrt{s}=7$ TeV
Experiment: CMS (LHC)
Inspire ID: 1342266
Status: VALIDATED
Authors:
  • Daniel Clarke
  • Peter Richardson
References: Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
  • Upsilon production at LHC energies

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}