rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ARGUS_1989_I267206

$\bar{B}^0\to D^{*+}\ell^-\bar\nu_\ell$
Experiment: ARGUS (DORIS)
Inspire ID: 267206
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Lett.B 219 (1989) 121-126
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B mesons, originally Upsilon(4S) decays

$q^2$ spectrum, lepton momentum spectrum and $D^*$ helicty angle in $\bar{B}^0\to D^{*+}\ell^-\bar\nu_\ell$. Corrected data read from figure 7.

Source code: ARGUS_1989_I267206.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* l nu
10  class ARGUS_1989_I267206 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1989_I267206);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22      // Initialise and register projections
23      UnstableParticles ufs = UnstableParticles(Cuts::abspid==511);
24      declare(ufs, "UFS");
25      DecayedParticles BB(ufs);
26      BB.addStable(411); BB.addStable(-411);
27      BB.addStable(421); BB.addStable(-421);
28      BB.addStable(413); BB.addStable(-413);
29      BB.addStable(423); BB.addStable(-423);
30      BB.addStable(PID::PI0);
31      declare(BB, "BB");
32      // histos
33      for (unsigned int ix=0; ix<3; ++ix) {
34        book(_h[ix], 1+ix, 1, 1);
35      }
36    }
37
38
39    /// Perform the per-event analysis
40    void analyze(const Event& event) {
41      // loop over B mesons
42      DecayedParticles BB = apply<DecayedParticles>(event, "BB");
43      // loop over particles
44      for (unsigned int ix=0; ix<BB.decaying().size(); ++ix) {
45      	for (unsigned int il=0; il<2; ++il) {
46          if (BB.modeMatches(ix,3,mode[il])) {
47            int sign = il%2==0 ? -1 : 1;
48            const Particle & DD = BB.decayProducts()[ix].at(sign*413)[0];
49            const Particle & em = BB.decayProducts()[ix].at(sign*11)[0];
50            FourMomentum qq  = BB.decaying()[ix].mom() - DD.mom();
51            _h[1]->fill(em.mom().p3().mod());
52            _h[2]->fill(qq.mass2());
53            if(DD.children().size()!=2) continue;
54            // boost to B rest frame
55            LorentzTransform boost1 = LorentzTransform::mkFrameTransformFromBeta(BB.decaying()[ix].mom().betaVec());
56            FourMomentum pDD = boost1.transform(DD.mom());
57            Particle D0;
58            if (DD.children()[0].pid() ==sign*211 && DD.children()[1].pid()==sign*421) {
59              D0 = DD.children()[1];
60            }
61            else if (DD.children()[1].pid()==sign*211 && DD.children()[0].pid()==sign*421) {
62              D0 = DD.children()[0];
63            }
64            else {
65              continue;
66            }
67            FourMomentum pD0 = boost1.transform(D0.mom());
68            LorentzTransform boost3 = LorentzTransform::mkFrameTransformFromBeta(pDD.betaVec());
69            pD0 = boost3.transform(pD0);
70            double cTheta = pD0.p3().unit().dot(pDD.p3().unit());
71            _h[0]->fill(cTheta);
72          }
73        }
74      }
75    }
76
77
78    /// Normalise histograms etc., after the run
79    void finalize() {
80      normalize(_h, 1.0, false);
81    }
82
83    /// @}
84
85
86    /// @name Histograms
87    /// @{
88    Histo1DPtr _h[3];
89    const map<PdgId,unsigned int> mode[2] = {{ {-413,1}, {-11,1}, { 12,1}}, { { 413,1}, { 11,1}, {-12,1}}};
90    /// @}
91
92
93  };
94
95
96  RIVET_DECLARE_PLUGIN(ARGUS_1989_I267206);
97
98}