rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMS_2012_I1113442

$\Lambda_b$ production at 7 TeV
Experiment: CMS (LHC)
Inspire ID: 1113442
Status: VALIDATED
Authors:
  • Peter Richardson
References: Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
  • hadronic events with Lambda_b meson

Measurement of the cross section for $\Lambda_b$ production at 7 TeV at TeV. The ratio of $\bar{\Lambda}_b$ to $\Lambda_b$ production is also measured.

Source code: CMS_2012_I1113442.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief Lambda_b at 7 TeV
  9  class CMS_2012_I1113442 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2012_I1113442);
 14
 15
 16    /// @name Analysis methods
 17    /// @{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21      declare(UnstableParticles(), "UFS");
 22      // histograms
 23      book(_h_lam   , 1,1,1);
 24      book(_h_bar   , "TMP/bar_total",refData<YODA::BinnedEstimate<int> >(1,1,2));
 25      book(_h_pT_lam, 2,1,1);
 26      book(_h_pT_bar, "TMP/bar_pT"   ,refData(2,1,2));
 27      book(_h_y_lam , 3,1,1);
 28      book(_h_y_bar , "TMP/bar_y"    ,refData(3,1,2));
 29      for (unsigned int ix=0; ix<2; ++ix) {
 30        book(_c_lam[ix], "TMP/c_lam_"+toString(ix+1));
 31      }
 32    }
 33
 34
 35    /// Perform the per-event analysis
 36    void analyze(const Event& event) {
 37      // Final state of unstable particles to get particle spectra
 38      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
 39      for (const Particle& p : ufs.particles(Cuts::abspid==5122) ) {
 40        // stuff for the branching ratio
 41        const double sign = p.pid()/p.abspid();
 42        if (p.children().size()==2 &&
 43         ( (p.children()[0].pid()==sign*3122 && p.children()[1].pid()==443) ||
 44           (p.children()[1].pid()==sign*3122 && p.children()[0].pid()==443) )) {
 45          _c_lam[0]->fill(1.);
 46        }
 47        _c_lam[1]->fill(1.);
 48        const double pT = p.perp();
 49        const double y  = p.absrap();
 50        if (y>2. || pT<10.) continue;
 51        if (p.pid()>0) {
 52          _h_lam->fill(round(sqrtS()));
 53          _h_pT_lam->fill(pT);
 54          _h_y_lam ->fill(y);
 55        }
 56        else {
 57          _h_bar->fill(round(sqrtS()));
 58          _h_pT_bar->fill(pT);
 59          _h_y_bar ->fill(y);
 60        }
 61      }
 62    }
 63
 64
 65    /// Normalise histograms etc., after the run
 66    void finalize() {
 67      double fact = crossSection()/nanobarn/sumOfWeights();
 68      // total cross sectiohn and ratio
 69      scale(_h_lam, fact);
 70      scale(_h_bar, fact);
 71      BinnedEstimatePtr<int> tmpI;
 72      book(tmpI,1,1,2);
 73      divide(_h_bar, _h_lam, tmpI);
 74      // d sig / dpT
 75      fact *= 1000.;
 76      scale(_h_pT_lam, fact);
 77      scale(_h_pT_bar, fact);
 78      Estimate1DPtr tmp;
 79      book(tmp, 2, 1, 2);
 80      divide(_h_pT_bar, _h_pT_lam, tmp);
 81      // d sig / dy
 82      scale(_h_y_lam, fact);
 83      scale(_h_y_bar, fact);
 84      book(tmp,3, 1, 2);
 85      divide(_h_y_bar, _h_y_lam, tmp);
 86      // now branching ratio for cross sections
 87      if (_c_lam[1]->effNumEntries()>0.) {
 88        scale(_h_lam   , *_c_lam[0]/ *_c_lam[1]);
 89        scale(_h_pT_lam, *_c_lam[0]/ *_c_lam[1]);
 90        scale(_h_y_lam , *_c_lam[0]/ *_c_lam[1]);
 91      }
 92    }
 93
 94    /// @}
 95
 96
 97    /// @name Histograms
 98    /// @{
 99    BinnedHistoPtr<int> _h_lam,_h_bar;
100    Histo1DPtr _h_pT_lam,_h_pT_bar;
101    Histo1DPtr _h_y_lam,_h_y_bar;
102    CounterPtr _c_lam[2];
103    /// @}
104
105
106  };
107
108
109  RIVET_DECLARE_PLUGIN(CMS_2012_I1113442);
110
111}