rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2006_I713862

$\bar{B}^0\to D^{*+} \omega\pi^-$ decays
Experiment: BABAR (PEP-II)
Inspire ID: 713862
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 74 (2006) 012001
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B mesons, originally Upsilon(4S) decays

Measurement of mass distributions and the $D^{*+}$ polarization in $\bar{B}^0\to D^{*+} \omega\pi^-$ decays. The background subtracted/corrected data for the mass distributions was read from the figures in the paper and the polarization from Table 1.

Source code: BABAR_2006_I713862.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 Bbar0 -> D*+ omega pi-
 10  class BABAR_2006_I713862 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2006_I713862);
 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      declare(ufs, "UFS");
 24      DecayedParticles BB(ufs);
 25      BB.addStable(PID::PI0);
 26      BB.addStable( 413);
 27      BB.addStable(-413);
 28      BB.addStable(223);
 29      declare(BB, "BB");
 30      // histos
 31      for(unsigned int ix=0;ix<2;++ix)
 32      	book(_h[ix],1+ix,1,1);
 33      book(_p,3,1,1);
 34      book(_c,"TMP/nB");
 35    }
 36
 37
 38    /// Perform the per-event analysis
 39    void analyze(const Event& event) {
 40      static const map<PdgId,unsigned int> & mode1   = { { -413,1}, { 211,1}, { 223,1}};
 41      static const map<PdgId,unsigned int> & mode1CC = { {  413,1}, {-211,1}, { 223,1}};
 42      // loop over particles
 43      DecayedParticles BB = apply<DecayedParticles>(event, "BB");
 44      for(unsigned int ix=0;ix<BB.decaying().size();++ix) {
 45	_c->fill();
 46	int sign = BB.decaying()[ix].pid()/BB.decaying()[ix].abspid();
 47	if ( (sign== 1 && BB.modeMatches(ix,3,mode1) ) ||
 48	     (sign==-1 && BB.modeMatches(ix,3,mode1CC) ) ) {
 49	  const Particle & omega = BB.decayProducts()[ix].at(      223)[0];
 50	  const Particle & pim   = BB.decayProducts()[ix].at( sign*211)[0];
 51	  const Particle & Dstar = BB.decayProducts()[ix].at(-sign*413)[0];
 52	  double mX = (omega.momentum()+pim.momentum()).mass();
 53	  _h[0]->fill(sqr(mX));
 54	  if(Dstar.children().size()!=2) continue;
 55	  // boost to B rest frame
 56	  LorentzTransform boost1 =
 57	    LorentzTransform::mkFrameTransformFromBeta(BB.decaying()[ix].momentum().betaVec());
 58	  FourMomentum pDpi = boost1.transform(Dstar.momentum()+pim.momentum());
 59	  LorentzTransform boost2 =
 60	    LorentzTransform::mkFrameTransformFromBeta(pDpi.betaVec());
 61	  FourMomentum pDstar = boost2.transform(boost1.transform(Dstar.momentum()));
 62	  double c1 = pDstar.p3().unit().dot(pDpi.p3().unit());
 63	  if(c1<0.5) _h[1]->fill(pDpi.mass());
 64	  Particle D0;
 65	  if(Dstar.children()[0].pid()   ==-sign*211 &&
 66	     Dstar.children()[1].abspid()==-sign*421)
 67	    D0 = Dstar.children()[1];
 68	  else if(Dstar.children()[1].pid()     ==-sign*211 &&
 69	  	    Dstar.children()[0].abspid()==-sign*421)
 70	    D0 = Dstar.children()[0];
 71	  else
 72	    continue;
 73	  FourMomentum pD0    = boost2.transform(boost1.transform(D0   .momentum()));
 74	  LorentzTransform boost3 = LorentzTransform::mkFrameTransformFromBeta(pDstar.betaVec());
 75	  pD0 = boost3.transform(pD0);
 76	  double cTheta = pD0.p3().unit().dot(pDstar.p3().unit());
 77	  _p->fill(mX,.5*(5.*sqr(cTheta)-1.));
 78	}
 79      }
 80    }
 81
 82
 83    /// Normalise histograms etc., after the run
 84    void finalize() {
 85      // first hist is differential BR/ BR for leptons
 86      double br = .1033;
 87      scale(_h[0], 1./br/ *_c);
 88      normalize(_h[1],1.,false);
 89    }
 90
 91    /// @}
 92
 93
 94    /// @name Histograms
 95    /// @{
 96    Histo1DPtr _h[2];
 97    Profile1DPtr _p;
 98    CounterPtr _c;
 99    /// @}
100
101
102  };
103
104
105  RIVET_DECLARE_PLUGIN(BABAR_2006_I713862);
106
107}