rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2004_I630328

Differential branching ratio w.r.t $p\bar{p}$ mass for $B^+\to p\bar{p} \pi^+,K^+,K^{*+}$ and $B^0\to p\bar{p}K^0_S$
Experiment: BELLE (KEKB)
Inspire ID: 630328
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 92 (2004) 131801
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B+ mesons, originally Upsilon(4S) decays

Measurement of the differential branching ratio with respect to the $p\bar{p}$ mass for $B^+\to p\bar{p} \pi^+,K^+,K^{*+}$ and $B^0\to p\bar{p}K^0_S$. The data was taken from table 1 in the paper.

Source code: BELLE_2004_I630328.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4#include "Rivet/Projections/DecayedParticles.hh"
 5
 6namespace Rivet {
 7
 8
 9  /// @brief B+ -> p pbar pi+/K+/K*+ and B0 -> p pbar KS0
10  class BELLE_2004_I630328 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2004_I630328);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22      // projections
23      UnstableParticles ufs = UnstableParticles(Cuts::abspid==511 || Cuts::abspid==521);
24      declare(ufs, "UFS");
25      DecayedParticles BB(ufs);
26      BB.addStable( 310);
27      BB.addStable( 323);
28      BB.addStable(-323);
29      declare(BB, "BB");
30      // histograms
31      for (unsigned int ix=0; ix<4; ++ix) {
32        book(_h[ix],1,1,1+ix);
33      }
34      for (unsigned int ix=0; ix<2; ++ix) {
35        book(_c[ix],"TMP/nB_"+toString(ix+1));
36      }
37    }
38
39
40    /// Perform the per-event analysis
41    void analyze(const Event& event) {
42      DecayedParticles BB = apply<DecayedParticles>(event, "BB");
43      // loop over particles
44      for (unsigned int ix=0; ix<BB.decaying().size(); ++ix) {
45        int imode=0;
46        if (BB.decaying()[ix].abspid()==511) _c[0]->fill();
47        else                                 _c[1]->fill();
48        if ((BB.decaying()[ix].pid()   == 521 && BB.modeMatches(ix,3,mode1)) ||
49            (BB.decaying()[ix].pid()   ==-521 && BB.modeMatches(ix,3,mode1CC))) imode = 0;
50        else if ((BB.decaying()[ix].pid()   == 521 && BB.modeMatches(ix,3,mode2)) ||
51                 (BB.decaying()[ix].pid()   ==-521 && BB.modeMatches(ix,3,mode2CC))) imode = 1;
52        else if ((BB.decaying()[ix].pid()   == 521 && BB.modeMatches(ix,3,mode3)) ||
53                 (BB.decaying()[ix].pid()   ==-521 && BB.modeMatches(ix,3,mode3CC))) imode = 2;
54        else if (BB.decaying()[ix].abspid()== 511 && BB.modeMatches(ix,3,mode4))  imode = 3;
55        else {
56          continue;
57        }
58        const Particle& pp   = BB.decayProducts()[ix].at( 2212)[0];
59        const Particle& pbar = BB.decayProducts()[ix].at(-2212)[0];
60        const double mass = (pp.mom()+pbar.mom()).mass();
61       	_h[imode]->fill(mass);
62      }
63    }
64
65
66    /// Normalise histograms etc., after the run
67    void finalize() {
68      for (unsigned int ix=0; ix<4; ++ix) {
69        if (ix==2) scale(_h[ix], 1e6/ *_c[0]);
70        else       scale(_h[ix], 1e6/ *_c[1]);
71      }
72    }
73
74    /// @}
75
76
77    /// @name Histograms
78    /// @{
79    Histo1DPtr _h[4];
80    CounterPtr _c[2];
81    const map<PdgId,unsigned int> mode1   = { { 2212,1}, {-2212,1}, { 321,1} };
82    const map<PdgId,unsigned int> mode1CC = { { 2212,1}, {-2212,1}, {-321,1} };
83    const map<PdgId,unsigned int> mode2   = { { 2212,1}, {-2212,1}, { 211,1} };
84    const map<PdgId,unsigned int> mode2CC = { { 2212,1}, {-2212,1}, {-211,1} };
85    const map<PdgId,unsigned int> mode3   = { { 2212,1}, {-2212,1}, { 323,1} };
86    const map<PdgId,unsigned int> mode3CC = { { 2212,1}, {-2212,1}, {-323,1} };
87    const map<PdgId,unsigned int> mode4   = { { 2212,1}, {-2212,1}, { 310,1} };
88    /// @}
89
90
91  };
92
93
94  RIVET_DECLARE_PLUGIN(BELLE_2004_I630328);
95
96}