rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2011_I897683

$\phi K$ mass distribution in $B^{+,0}\to\phi K^{+,0}\gamma$ decays
Experiment: BELLE (KEKB)
Inspire ID: 897683
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 84 (2011) 071101
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B+ and B0 mesons

Measurement of the $\phi K$ mass distribution in $B^{+,0}\to\phi K^{+,0}\gamma$ decays. The data was read from the plots in the paper whcih are background subtracted and efficiency corrected.

Source code: BELLE_2011_I897683.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 -> phi K gamma
10  class BELLE_2011_I897683 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2011_I897683);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22      // Initialise and register projections
23      UnstableParticles ufs = UnstableParticles(Cuts::abspid==511 || Cuts::abspid==521);
24      declare(ufs, "UFS");
25      DecayedParticles BB(ufs);
26      BB.addStable(PID::PHI);
27      BB.addStable(PID::K0S);
28      declare(BB, "BB");
29      // histos
30      for (unsigned int ix=0; ix<2; ++ix) {
31        book(_h[ix], 1, 1, 1+ix);
32      }
33    }
34
35
36    /// Perform the per-event analysis
37    void analyze(const Event& event) {
38      DecayedParticles BB = apply<DecayedParticles>(event, "BB");
39      // loop over particles
40      for (unsigned int ix=0; ix<BB.decaying().size(); ++ix) {
41      	int sign = 1, imode=0, iK=321;
42        if (BB.decaying()[ix].abspid()==521) {
43          if (BB.decaying()[ix].pid()>0 && BB.modeMatches(ix,3,mode1)) {
44            sign=1;
45          }
46          else if  (BB.decaying()[ix].pid()<0 && BB.modeMatches(ix,3,mode1CC)) {
47            sign=-1;
48          }
49          else {
50            continue;
51          }
52        }
53        else if (BB.modeMatches(ix,3,mode2)) {
54          imode=1;
55          iK=310;
56        }
57        else {
58          continue;
59        }
60        const Particle& K   = BB.decayProducts()[ix].at( sign*iK)[0];
61        const Particle& phi = BB.decayProducts()[ix].at(     333)[0];
62        _h[imode]->fill((K.mom()+phi.mom()).mass());
63      }
64    }
65
66
67    /// Normalise histograms etc., after the run
68    void finalize() {
69      normalize(_h, 1., false);
70    }
71
72    /// @}
73
74
75    /// @name Histograms
76    /// @{
77    Histo1DPtr _h[2];
78    const map<PdgId,unsigned int> mode1   = { { 333,1},{ 321,1}, {22,1}};
79    const map<PdgId,unsigned int> mode1CC = { { 333,1},{-321,1}, {22,1}};
80    const map<PdgId,unsigned int> mode2   = { { 333,1},{ 310,1}, {22,1}};
81    /// @}
82
83
84  };
85
86
87  RIVET_DECLARE_PLUGIN(BELLE_2011_I897683);
88
89}