rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2009_I836615

Spectrum for $D^{*\pm}$ in $\Upsilon(1S)$ decays
Experiment: BABAR (PEP-II)
Inspire ID: 836615
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D81 (2010) 011102
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing Upsilon(1S) mesons, original e+e-

Spectrum for $D^{*\pm}$ in $\Upsilon(1S)$ decays measured by Babar

Source code: BABAR_2009_I836615.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief D*+/- in Upsilon(1S) decays
 9  class BABAR_2009_I836615 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2009_I836615);
14
15
16    /// @name Analysis methods
17    /// @{
18
19    /// Book histograms and initialise projections before the run
20    void init() {
21
22      // Initialise and register projections
23      declare(UnstableParticles(), "UFS");
24      // book the histogram
25      book(_hist,1,1,1);
26    }
27
28   /// Recursively walk the decay tree to find decay products of @a p
29    void findDecayProducts(Particle mother, Particles& unstable) {
30      for(const Particle & p: mother.children()) {
31        const int id = abs(p.pid());
32	if(id == 413) {
33	  unstable.push_back(p);
34	}
35	if(!p.children().empty())
36	  findDecayProducts(p, unstable);
37      }
38    }
39
40    /// Perform the per-event analysis
41    void analyze(const Event& event) {
42      // maximum momentum of D* calculated using PDG 2008 masses (as in paper)
43      static const double Pmax = 4.28172;
44      // Loop over the upsilons
45      // Find the Upsilons among the unstables
46      for(const Particle & ups : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==553)) {
47	// boost to rest frame
48	LorentzTransform boost;
49	if (ups.p3().mod() > 1*MeV)
50	  boost = LorentzTransform::mkFrameTransformFromBeta(ups.momentum().betaVec());
51	// find D*
52	Particles unstable;
53	findDecayProducts(ups,unstable);
54	// loop over D*
55	for(const Particle& p : unstable) {
56	  const FourMomentum p2 = boost.transform(p.momentum());
57	  const double xP = p2.p3().mod()/Pmax;
58	  _hist->fill(xP);
59	}
60      }
61    }
62
63
64    /// Normalise histograms etc., after the run
65    void finalize() {
66      normalize(_hist);
67    }
68
69    /// @}
70
71
72    /// @name Histograms
73    /// @{
74    Histo1DPtr _hist;
75    /// @}
76
77
78  };
79
80
81  RIVET_DECLARE_PLUGIN(BABAR_2009_I836615);
82
83}