rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2006_I714147

Helicity angle in $B^-\to D^0K^{*-}$
Experiment: BABAR (PEP-II)
Inspire ID: 714147
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 73 (2006) 111104
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B+-, originally Upsilon(4S) decay

Measurement of the Helicity angle in $B^-\to D^0K^{*-}$. The acceptance corrected data was read from Figure 2 in the paper and the background given subtracted.

Source code: BABAR_2006_I714147.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- -> D0 K*-
 10  class BABAR_2006_I714147 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2006_I714147);
 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==521);
 24      declare(ufs, "UFS");
 25      // hists
 26      book(_h,1,1,1);
 27    }
 28
 29    bool isKstar(int pid) const {
 30      return pid==313 || pid==323;
 31    }
 32
 33    bool isK(int pid) const {
 34      return pid==130 || pid==310 || pid==311 || pid==321;
 35    }
 36
 37    bool isPi(int pid) const {
 38      return pid==211 || pid==111;
 39    }
 40
 41    /// Perform the per-event analysis
 42    void analyze(const Event& event) {
 43      UnstableParticles ufs = apply<UnstableParticles>(event, "UFS");
 44      for(const Particle & B : ufs.particles()) {
 45	if(B.children().size()!=2) continue;
 46	int sign = B.pid()/B.abspid();
 47	Particle D,Kstar;
 48	if(B.children()[0].pid()==-sign*421 &&
 49	   isKstar(B.children()[1].abspid())) {
 50	  D     = B.children()[0];
 51	  Kstar = B.children()[1];
 52	}
 53	else if(B.children()[1].pid()==-sign*421 &&
 54		isKstar(B.children()[0].abspid())) {
 55	  D     = B.children()[1];
 56	  Kstar = B.children()[0];
 57	}
 58	else
 59	  continue;
 60	// find Kstar decay products
 61	Particle pi;
 62	if(isK (Kstar.children()[0].abspid()) &&
 63	   isPi(Kstar.children()[1].abspid())) {
 64	  pi = Kstar.children()[1];
 65	}
 66	else if(isK (Kstar.children()[1].abspid()) &&
 67		isPi(Kstar.children()[0].abspid())) {
 68	  pi = Kstar.children()[0];
 69	}
 70	else
 71	  continue;
 72	// boost to B rest frame
 73	LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(B.momentum().betaVec());
 74	FourMomentum pD     = boost.transform(D    .momentum());
 75	FourMomentum pKstar = boost.transform(Kstar.momentum());
 76	FourMomentum pPi     = boost.transform(pi   .momentum());
 77	// pion helicity angle
 78	Vector3 axisX = pD.p3().unit();
 79	LorentzTransform boostK = LorentzTransform::mkFrameTransformFromBeta(pKstar.betaVec());
 80	double cosPi = -axisX.dot(boostK.transform(pPi).p3().unit());
 81	_h->fill(cosPi);
 82      }
 83    }
 84
 85
 86    /// Normalise histograms etc., after the run
 87    void finalize() {
 88      normalize(_h,1.,false);
 89    }
 90
 91    /// @}
 92
 93
 94    /// @name Histograms
 95    /// @{
 96    Histo1DPtr _h;
 97    /// @}
 98
 99
100  };
101
102
103  RIVET_DECLARE_PLUGIN(BABAR_2006_I714147);
104
105}