rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2004_I658085

Mass distributions in $B\to D^* n\pi$ decays
Experiment: BELLE (KEKB)
Inspire ID: 658085
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 70 (2004) 111103
Beams: * *
Beam energies: ANY
    No run details listed

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}