Rivet analyses referenceBELLE_2011_I897683$\phi K$ mass distribution in $B^{+,0}\to\phi K^{+,0}\gamma$ decaysExperiment: BELLE (KEKB) Inspire ID: 897683 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
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}
|