Rivet analyses referenceBELLE_2009_I820737Mass distributions in $\bar{B}^0\to K^-\pi^+\psi(2S)$ and $B^+\to K^0_S\pi^+\psi(2S)$Experiment: BELLE (KEKB) Inspire ID: 820737 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of mass distributions in $\bar{B}^0\to K^-\pi^+\psi(2S)$ and $B^+\to K^0_S\pi^+\psi(2S)$ decays, only the average of the two modes is measured. The data were read from the plots in the paper and may not be corrected for efficiency/acceptance, however the backgrounds given in the paper have been subtracted. Source code: BELLE_2009_I820737.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-> K pi psi(2S)
10 class BELLE_2009_I820737 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2009_I820737);
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(310);
27 BB.addStable(100443);
28 declare(BB, "BB");
29 // histograms
30 const vector<double> bins1 = {0,sqr(0.796),sqr(0.996),sqr(1.332),sqr(1.532),3};
31 const vector<double> bins2 = {0,19.0,20.5,23};
32 book(_h_piPsi, bins1, {"d01-x01-y01","d01-x01-y02","d01-x01-y03","d01-x01-y04","d01-x01-y05"});
33 book(_h_Kpi, bins2, {"d02-x01-y01","d02-x01-y02","d02-x01-y03"});
34 book(_h_veto,3,1,1);
35 book(_c,"TMP/nB");
36 }
37
38
39 /// Perform the per-event analysis
40 void analyze(const Event& event) {
41 static const map<PdgId,unsigned int> & mode1 = { { 321,1},{-211,1}, { 100443,1}};
42 static const map<PdgId,unsigned int> & mode1CC = { {-321,1},{ 211,1}, { 100443,1}};
43 static const map<PdgId,unsigned int> & mode2 = { { 310,1},{-211,1}, { 100443,1}};
44 static const map<PdgId,unsigned int> & mode2CC = { { 310,1},{ 211,1}, { 100443,1}};
45 DecayedParticles BB = apply<DecayedParticles>(event, "BB");
46 // loop over particles
47 for (unsigned int ix=0; ix<BB.decaying().size(); ++ix) {
48 int sign = 1,iK(0);
49 if (BB.decaying()[ix].pid()>0 && BB.modeMatches(ix,3,mode1)) {
50 sign=1; iK = 321;
51 }
52 else if (BB.decaying()[ix].pid()<0 && BB.modeMatches(ix,3,mode1CC)) {
53 sign=-1; iK=-321;
54 }
55 else if (BB.decaying()[ix].pid()<0 && BB.modeMatches(ix,3,mode2)) {
56 sign=1; iK = 310;
57 }
58 else if (BB.decaying()[ix].pid()>0 && BB.modeMatches(ix,3,mode2CC)) {
59 sign=-1; iK= 310;
60 }
61 else {
62 continue;
63 }
64 _c->fill();
65 const Particle & Kp = BB.decayProducts()[ix].at( iK)[0];
66 const Particle & pim = BB.decayProducts()[ix].at(-211*sign)[0];
67 const Particle & psi = BB.decayProducts()[ix].at( 100443 )[0];
68 double m2Kpi = (Kp .momentum()+pim.momentum()).mass2();
69 double m2Psipi= (psi.momentum()+pim.momentum()).mass2();
70 _h_piPsi->fill(m2Kpi, m2Psipi);
71 _h_Kpi->fill(m2Psipi, m2Kpi);
72 if(m2Kpi<sqr(0.796) || (m2Kpi>sqr(0.996)&&m2Kpi<sqr(1.332)) ||
73 m2Kpi>sqr(1.532)) _h_veto->fill(m2Psipi);
74 }
75 }
76
77
78 /// Normalise histograms etc., after the run
79 void finalize() {
80 scale(_h_piPsi, 1./ *_c);
81 scale(_h_Kpi, 1./ *_c);
82 normalize(_h_veto, 1.0, false);
83 }
84
85 /// @}
86
87
88 /// @name Histograms
89 /// @{
90 Histo1DGroupPtr _h_piPsi, _h_Kpi;
91 CounterPtr _c;
92 Histo1DPtr _h_veto;
93 /// @}
94
95
96 };
97
98
99 RIVET_DECLARE_PLUGIN(BELLE_2009_I820737);
100
101}
|