rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

LHCB_2015_I1327230

$B_c^+$ meson production at 8 TeV
Experiment: LHCB (LHC)
Inspire ID: 1327230
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 114 (2015) 132001
Beams: p+ p+
Beam energies: (4000.0, 4000.0) GeV
Run details:
  • hadronic events with B meson

Measurement of the double differential (in $p_\perp$ and $y$) ratio $B_c^+/B^+$ meson production at 8 TeV by the LHCb collaboration. The branching ratio for the decay $B^+\to J\psi K^+$ is taken to be $0.00102$ from PDG2023 while by default the branching ratio for $B_c^+\to J\psi\pi^+$ is measured from the events, however it can be specified using the BCBR option.

Source code: LHCB_2015_I1327230.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief B_c production
  9  class LHCB_2015_I1327230 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2015_I1327230);
 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      for(unsigned int ib=0;ib<2;++ib) {
 23	book(_h_pT[ib], "TMP/h_pT_"+toString(ib), refData(2,1,1));
 24	book(_h_y [ib], "TMP/h_y_" +toString(ib), refData(3,1,1));
 25        book(_h_B[ib],{2.0,2.9,3.3,4.5});
 26	for(unsigned int iy=0;iy<3;++iy) {
 27          book(_h_B[ib]->bin(iy+1),"TMP/hB_"+toString(ib)+"_"+toString(iy),refData(1,1,1+iy));
 28	}
 29	book(_c_Bc[ib],"TMP/c_Bc_"+toString(ib));
 30      }
 31      _brBp = getOption<double>("BPBR",1.02e-3);
 32      _brBc = getOption<double>("BCBR",-1.);
 33    }
 34
 35
 36    /// Perform the per-event analysis
 37    void analyze(const Event& event) {
 38      // Final state of unstable particles to get particle spectra
 39      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
 40      for (const Particle& p : ufs.particles(Cuts::pid==521 or Cuts::pid==541 )) {
 41	if(p.pid()==541) {
 42	  if(p.children().size()==2 && 
 43	     ( (p.children()[0].pid()==211 && p.children()[1].pid()==443) ||
 44	       (p.children()[1].pid()==211 && p.children()[0].pid()==443) ))
 45	    _c_Bc[0]->fill(1.);
 46	  _c_Bc[1]->fill(1.);
 47	}
 48        double absrap = p.absrap();
 49	if(absrap<2. || absrap>4.5) continue;
 50        double pT = p.perp();
 51	// select B0
 52	if(p.pid()==521) {
 53	  _h_B [1]->fill(absrap,pT);
 54	  _h_pT[1]->fill(pT);
 55	  if(pT<20.) _h_y [1]->fill(absrap);
 56	}
 57	// select B_c+
 58	else {
 59	  _h_B [0]->fill(absrap,pT);
 60	  _h_pT[0]->fill(pT);
 61	  if(pT<20.) _h_y [0]->fill(absrap);
 62	}
 63      }
 64    }
 65
 66
 67    /// Normalise histograms etc., after the run
 68    void finalize() {
 69      // branching ratio Bc -> J/psi pi+
 70      if (_brBc<0.) {
 71        Estimate0DPtr tmp2;
 72        book(tmp2,"TMP/br");
 73        divide(_c_Bc[0],_c_Bc[1],tmp2);
 74        _brBc = tmp2->val();
 75      }
 76      // scale by B+ br (for B_c directly selected before filling histos)
 77      scale(_h_B[0], _brBc);
 78      scale(_h_B[1],_brBp);
 79      for(unsigned int ix=0;ix<2;++ix) divByGroupWidth(_h_B[ix]);
 80      scale(_h_pT[0], _brBc);
 81      scale(_h_pT[1],_brBp);
 82      scale(_h_y [0], _brBc);
 83      scale(_h_y [1], _brBp);
 84      for(unsigned int iy=0;iy<3;++iy) {
 85	Estimate1DPtr tmp;
 86	book(tmp,1,1,1+iy);
 87	divide(_h_B[0]->bin(iy+1),_h_B[1]->bin(iy+1),tmp);
 88	// convert ratio to %
 89	tmp->scale(100.);
 90      }
 91      Estimate1DPtr tmp;
 92      book(tmp,2,1,1);
 93      divide(_h_pT[0],_h_pT[1],tmp);
 94      // convert ratio to %
 95      tmp->scale(100.);
 96      book(tmp,3,1,1);
 97      divide(_h_y [0],_h_y [1],tmp);
 98      // convert ratio to %
 99      tmp->scale(100.);
100    }
101
102    /// @}
103
104
105    /// @name Histograms
106    /// @{
107    Histo1DGroupPtr _h_B[2];
108    Histo1DPtr _h_pT[2],_h_y[2];
109    CounterPtr _c_Bc[2];
110    double _brBp,_brBc;
111    /// @}
112
113
114  };
115
116
117  RIVET_DECLARE_PLUGIN(LHCB_2015_I1327230);
118
119}