Rivet analyses referenceBELLE_2023_I2655951$K^-K^0_S$ mass distribution in $B\to D^{(*)}K^-K^0_S$ decaysExperiment: BELLE (KEKB) Inspire ID: 2655951 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of $K^-K^0_S$ mass distribution in $B\to D^{(*)}K^-K^0_S$ decays. The corrected, background subtracted data was read from the figures in the paper. Source code: BELLE_2023_I2655951.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 -> D(*) K- KS0
10 class BELLE_2023_I2655951 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2023_I2655951);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 UnstableParticles ufs = UnstableParticles(Cuts::abspid==511 or Cuts::abspid==521);
23 declare(ufs, "UFS");
24 DecayedParticles BB(ufs);
25 BB.addStable( 411);
26 BB.addStable(-411);
27 BB.addStable( 421);
28 BB.addStable(-421);
29 BB.addStable( 413);
30 BB.addStable(-413);
31 BB.addStable( 423);
32 BB.addStable(-423);
33 BB.addStable( 310);
34 BB.addStable( 313);
35 BB.addStable(-313);
36 declare(BB, "BB");
37 for(unsigned int ix=0;ix<4;++ix) {
38 book(_h[ix],1,1,1+ix);
39 }
40 }
41
42
43 /// Perform the per-event analysis
44 void analyze(const Event& event) {
45 static const double mDs = 1.96835;
46 static const map<PdgId,unsigned int> modes [4] = { { {-421,1}, { 321,1}, { 310,1} },
47 { {-411,1}, { 321,1}, { 310,1} },
48 { {-423,1}, { 321,1}, { 310,1} },
49 { {-413,1}, { 321,1}, { 310,1} }};
50 static const map<PdgId,unsigned int> modesCC[4] = { { { 421,1}, {-321,1}, { 310,1} },
51 { { 411,1}, {-321,1}, { 310,1} },
52 { { 423,1}, {-321,1}, { 310,1} },
53 { { 413,1}, {-321,1}, { 310,1} }};
54 DecayedParticles BB = apply<DecayedParticles>(event, "BB");
55 for (unsigned int ix=0;ix<BB.decaying().size();++ix) {
56 int imode=-1;
57 for (unsigned int iy=0;iy<4;++iy) {
58 if (BB.decaying()[ix].pid()>0 && BB.modeMatches(ix,3,modes[iy])) {
59 imode=iy;
60 break;
61 }
62 else if (BB.decaying()[ix].pid()<0 && BB.modeMatches(ix,3,modesCC[iy])) {
63 imode=iy;
64 break;
65 }
66 }
67 if (imode<0) continue;
68 int sign = BB.decaying()[ix].pid()/BB.decaying()[ix].abspid();
69 const Particle & Km = BB.decayProducts()[ix].at( sign*321)[0];
70 const Particle & K0 = BB.decayProducts()[ix].at( 310 )[0];
71 double mKK=(Km.momentum()+K0.momentum()).mass();
72 if (abs(mKK-mDs)<0.02) continue;
73 _h[imode]->fill(mKK);
74 }
75 }
76
77
78 /// Normalise histograms etc., after the run
79 void finalize() {
80 normalize(_h, 1.0,false);
81 }
82
83 /// @}
84
85
86 /// @name Histograms
87 /// @{
88 Histo1DPtr _h[4];
89 /// @}
90
91
92 };
93
94
95 RIVET_DECLARE_PLUGIN(BELLE_2023_I2655951);
96
97}
|