Rivet analyses referenceBELLE_2004_I658085Mass distributions in $B\to D^* n\pi$ decaysExperiment: BELLE (KEKB) Inspire ID: 658085 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY
Measurement of mass distributions of the pions in the decays $B\to D^* n\pi$, where all the pions are charged. The data were read from, the plots in the papers but are corrected for efficiency. Source code: BELLE_2004_I658085.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* + pions
10 class BELLE_2004_I658085 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2004_I658085);
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 ||
23 Cuts::abspid==521);
24 declare(ufs, "UFS");
25 DecayedParticles BB(ufs);
26 BB.addStable(PID::PI0);
27 BB.addStable( 413);
28 BB.addStable(-413);
29 BB.addStable( 423);
30 BB.addStable(-423);
31 BB.addStable(PID::PI0);
32 declare(BB, "BB");
33 for (unsigned int ix=0;ix<6;++ix)
34 book(_h[ix],1,1,1+ix);
35 }
36
37
38 /// Perform the per-event analysis
39 void analyze(const Event& event) {
40 // decay modes
41 static const map<PdgId,unsigned int> & mode1 = { { -413,1}, { 211,2}, {-211,1} };
42 static const map<PdgId,unsigned int> & mode1CC = { { 413,1}, {-211,2}, { 211,1} };
43 static const map<PdgId,unsigned int> & mode2 = { { -413,1}, { 211,3}, {-211,1} };
44 static const map<PdgId,unsigned int> & mode2CC = { { 413,1}, {-211,3}, { 211,1} };
45 static const map<PdgId,unsigned int> & mode3 = { { -413,1}, { 211,3}, {-211,2} };
46 static const map<PdgId,unsigned int> & mode3CC = { { 413,1}, {-211,3}, { 211,2} };
47 static const map<PdgId,unsigned int> & mode4 = { { -423,1}, { 211,2}, {-211,1} };
48 static const map<PdgId,unsigned int> & mode4CC = { { 423,1}, {-211,2}, { 211,1} };
49 static const map<PdgId,unsigned int> & mode5 = { { -423,1}, { 211,2}, {-211,2} };
50 static const map<PdgId,unsigned int> & mode5CC = { { 423,1}, {-211,2}, { 211,2} };
51 static const map<PdgId,unsigned int> & mode6 = { { -423,1}, { 211,3}, {-211,2} };
52 static const map<PdgId,unsigned int> & mode6CC = { { 423,1}, {-211,3}, { 211,2} };
53 // loop over particles
54 DecayedParticles BB = apply<DecayedParticles>(event, "BB");
55 int imode = -1;
56 for(unsigned int ix=0;ix<BB.decaying().size();++ix) {
57 int sign = BB.decaying()[ix].pid()/BB.decaying()[ix].abspid();
58 if ( (sign== 1 && BB.modeMatches(ix,4,mode1) ) ||
59 (sign==-1 && BB.modeMatches(ix,4,mode1CC) ) )
60 imode=0;
61 else if ( (sign== 1 && BB.modeMatches(ix,5,mode2) ) ||
62 (sign==-1 && BB.modeMatches(ix,5,mode2CC) ) )
63 imode=1;
64 else if ( (sign== 1 && BB.modeMatches(ix,6,mode3) ) ||
65 (sign==-1 && BB.modeMatches(ix,6,mode3CC) ) )
66 imode=2;
67 else if ( (sign== 1 && BB.modeMatches(ix,4,mode4) ) ||
68 (sign==-1 && BB.modeMatches(ix,4,mode4CC) ) )
69 imode=3;
70 else if ( (sign== 1 && BB.modeMatches(ix,5,mode5) ) ||
71 (sign==-1 && BB.modeMatches(ix,5,mode5CC) ) )
72 imode=4;
73 else if ( (sign== 1 && BB.modeMatches(ix,6,mode6) ) ||
74 (sign==-1 && BB.modeMatches(ix,6,mode6CC) ) )
75 imode=5;
76 else
77 continue;
78 FourMomentum ptotal;
79 for(const Particle & p : BB.decayProducts()[ix].at( sign*211) ) {
80 ptotal+=p.momentum();
81 }
82 for(const Particle & p : BB.decayProducts()[ix].at(-sign*211) ) {
83 ptotal+=p.momentum();
84 }
85 _h[imode]->fill(ptotal.mass());
86 }
87 }
88
89
90 /// Normalise histograms etc., after the run
91 void finalize() {
92 for (unsigned int ix=0;ix<6;++ix)
93 normalize(_h[ix]);
94 }
95
96 /// @}
97
98
99 /// @name Histograms
100 /// @{
101 Histo1DPtr _h[6];
102 /// @}
103
104
105 };
106
107
108 RIVET_DECLARE_PLUGIN(BELLE_2004_I658085);
109
110}
|