Rivet analyses referenceBABAR_2015_I1335269Mass distributions in the decays $B^0\to D^-D^0K^+$ and $B^+\to\bar{D}^0D^0K^+$Experiment: BABAR (PEP-II) Inspire ID: 1335269 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Mass distributions in the decays $B^0\to D^-D^0K^+$ and $B^+\to\bar{D}^0D^0K^+$ the data were read from the plots in the paper and the backgrounds from the paper subtracted they may be be correct for efficiency. Source code: BABAR_2015_I1335269.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 D K
10 class BABAR_2015_I1335269 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2015_I1335269);
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 declare(BB, "BB");
30 // histograms
31 for(unsigned int ix=0;ix<2;++ix) {
32 for(unsigned int iy=0;iy<3;++iy) {
33 book(_h[ix][iy],1+ix,1,1+iy);
34 }
35 }
36 }
37
38
39 /// Perform the per-event analysis
40 void analyze(const Event& event) {
41 static const map<PdgId,unsigned int> & mode1 = { {-411,1},{ 421,1}, { 321,1}};
42 static const map<PdgId,unsigned int> & mode1CC = { { 411,1},{-421,1}, {-321,1}};
43 static const map<PdgId,unsigned int> & mode2 = { {-421,1},{ 421,1}, { 321,1}};
44 static const map<PdgId,unsigned int> & mode2CC = { { 421,1},{-421,1}, {-321,1}};
45 DecayedParticles BB = apply<DecayedParticles>(event, "BB");
46 for(unsigned int ix=0;ix<BB.decaying().size();++ix) {
47 int sign = 1, imode = 0;
48 if (BB.decaying()[ix].pid()>0 && BB.modeMatches(ix,3,mode1)) {
49 imode=0;
50 sign=1;
51 }
52 else if (BB.decaying()[ix].pid()<0 && BB.modeMatches(ix,3,mode1CC)) {
53 imode=0;
54 sign=-1;
55 }
56 else if (BB.decaying()[ix].pid()>0 && BB.modeMatches(ix,3,mode2)) {
57 imode=1;
58 sign=1;
59 }
60 else if (BB.decaying()[ix].pid()<0 && BB.modeMatches(ix,3,mode2CC)) {
61 imode=1;
62 sign=-1;
63 }
64 else
65 continue;
66 const Particle & D0 = BB.decayProducts()[ix].at( sign*421)[0];
67 const Particle & Kp = BB.decayProducts()[ix].at( sign*321)[0];
68 int iD = imode==0 ? 411 : 421;
69 const Particle & Dm = BB.decayProducts()[ix].at(-sign*iD )[0];
70 _h[imode][0]->fill((D0.momentum()+Dm.momentum()).mass());
71 _h[imode][1]->fill((Kp.momentum()+Dm.momentum()).mass());
72 _h[imode][2]->fill((Kp.momentum()+D0.momentum()).mass());
73 }
74 }
75
76
77 /// Normalise histograms etc., after the run
78 void finalize() {
79 for(unsigned int ix=0;ix<2;++ix) {
80 for(unsigned int iy=0;iy<3;++iy) {
81 normalize(_h[ix][iy], 1., false);
82 }
83 }
84 }
85
86 /// @}
87
88
89 /// @name Histograms
90 /// @{
91 Histo1DPtr _h[2][3];
92 /// @}
93
94
95 };
96
97
98 RIVET_DECLARE_PLUGIN(BABAR_2015_I1335269);
99
100}
|