rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2006_I722820

Mass and helicity angle distributions in $B\to\eta K^*$
Experiment: BABAR (PEP-II)
Inspire ID: 722820
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 97 (2006) 201802
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B mesons, originally Upsilon(4S)

Measurement of the $K\pi$ mass and helicity angle in $B\to\eta K^*$ decays. The data were read from Figure 2 in the paper and the backgrounds given subtracted.

Source code: BABAR_2006_I722820.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 -> eta K*
 10  class BABAR_2006_I722820 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2006_I722820);
 15
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22      // projection
 23      UnstableParticles ufs = UnstableParticles(Cuts::abspid==511||
 24						Cuts::abspid==521);
 25      declare(ufs, "UFS");
 26      DecayedParticles BB(ufs);
 27      BB.addStable(PID::ETA);
 28      BB.addStable(PID::K0S);
 29      BB.addStable(PID::PI0);
 30      declare(BB, "BB");
 31      // histograms
 32      for(unsigned int ix=0;ix<2;++ix)
 33	for(unsigned int iy=0;iy<2;++iy)
 34	  book(_h[ix][iy],1,1+ix,1+iy);
 35    }
 36
 37
 38    /// Perform the per-event analysis
 39    void analyze(const Event& event) {
 40      static const map<PdgId,unsigned int> & mode1   = { { 321,1},{-211,1}, { 221,1}};
 41      static const map<PdgId,unsigned int> & mode1CC = { {-321,1},{ 211,1}, { 221,1}};
 42      static const map<PdgId,unsigned int> & mode2   = { { 321,1},{ 111,1}, { 221,1}};
 43      static const map<PdgId,unsigned int> & mode2CC = { {-321,1},{ 111,1}, { 221,1}};
 44      static const map<PdgId,unsigned int> & mode3   = { { 310,1},{ 211,1}, { 221,1}};
 45      static const map<PdgId,unsigned int> & mode3CC = { { 310,1},{-211,1}, { 221,1}};
 46      DecayedParticles BB = apply<DecayedParticles>(event, "BB");
 47      // loop over particles
 48      for(unsigned int ix=0;ix<BB.decaying().size();++ix) {
 49      	int imode = 1, iK=321, iPi=-211;
 50       	if (BB.decaying()[ix].pid()>0 && BB.modeMatches(ix,3,mode1)) {
 51	  imode=0;
 52	  iK  = 321;
 53	  iPi =-211;
 54      	}
 55      	else if  (BB.decaying()[ix].pid()<0 && BB.modeMatches(ix,3,mode1CC)) {
 56	  imode=0;
 57	  iK  =-321;
 58	  iPi = 211;
 59      	}
 60	else if (BB.decaying()[ix].pid()>0 && BB.modeMatches(ix,3,mode2)) {
 61	  iK  = 321;
 62	  iPi = 111;
 63      	}
 64      	else if  (BB.decaying()[ix].pid()<0 && BB.modeMatches(ix,3,mode2CC)) {
 65	  iK  =-321;
 66	  iPi = 111;
 67      	}
 68	else if (BB.decaying()[ix].pid()>0 && BB.modeMatches(ix,3,mode3)) {
 69	  iK  = 310;
 70	  iPi = 211;
 71      	}
 72      	else if  (BB.decaying()[ix].pid()<0 && BB.modeMatches(ix,3,mode3CC)) {
 73	  iK  = 310;
 74	  iPi =-211;
 75      	}
 76      	else
 77      	  continue;
 78	const Particle & KK = BB.decayProducts()[ix].at(iK )[0];
 79	const Particle & pi = BB.decayProducts()[ix].at(iPi)[0];
 80	double mKpi  = (KK.momentum()+pi.momentum()).mass();
 81	_h[0][imode]->fill(mKpi);
 82	// boost to b rest frame
 83	LorentzTransform boost1 = LorentzTransform::mkFrameTransformFromBeta(BB.decaying()[ix].momentum().betaVec());
 84	FourMomentum pK  = boost1.transform(KK.momentum());
 85	FourMomentum ppi = boost1.transform(pi.momentum());
 86	FourMomentum pKS = pK+ppi;
 87	LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pKS.betaVec());
 88	Vector3 axis = pKS.p3().unit();
 89	_h[1][imode]->fill(axis.dot(boost2.transform(pK).p3().unit()));
 90      }
 91    }
 92
 93
 94    /// Normalise histograms etc., after the run
 95    void finalize() {
 96      for(unsigned int ix=0;ix<2;++ix)
 97	for(unsigned int iy=0;iy<2;++iy)
 98	  normalize(_h[ix][iy],1.,false);
 99    }
100
101    /// @}
102
103
104    /// @name Histograms
105    /// @{
106    Histo1DPtr _h[2][2];
107    /// @}
108
109
110  };
111
112
113  RIVET_DECLARE_PLUGIN(BABAR_2006_I722820);
114
115}