rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2005_I686014

Rates and Spectra for Charm hadrons in $\Upsilon(4S)$ decays and the continuum
Experiment: BELLE (KEKB)
Inspire ID: 686014
Status: VALIDATED
Authors:
  • Peter Richardson
No references listed
Beams: e+ e-
Beam energies: (5.3, 5.3); (5.3, 5.3) GeV
Run details:
  • e+e- to hadrons at the Upsilon 4S and nearby continuum. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Measurement of the cross section and scaled momentum spectrum for the production of charm hadrons, $D^0$, $D^+$, $D_s^+$, $\Lambda_c^+$, $D^{*0}$ and $D^{*+}$. The cross section and spectra in the continuum together with the branching ratio and spectra in $\Upsilon(4S)$ decays are measured. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: BELLE_2005_I686014.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/FastJets.hh"
  5#include "Rivet/Projections/LeptonFinder.hh"
  6#include "Rivet/Projections/MissingMomentum.hh"
  7#include "Rivet/Projections/PromptFinalState.hh"
  8#include "Rivet/Projections/UnstableParticles.hh"
  9
 10namespace Rivet {
 11
 12
 13  /// @brief Charm-hadron production
 14  class BELLE_2005_I686014 : public Analysis {
 15  public:
 16
 17    /// Constructor
 18    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2005_I686014);
 19
 20
 21    /// @name Analysis methods
 22    /// @{
 23
 24    /// Book histograms and initialise projections before the run
 25    void init() {
 26      // projections
 27      declare(UnstableParticles(),"UFS");
 28
 29      // histos
 30      if (isCompatibleWithSqrtS(10.52*GeV)) _mode=1;
 31      else if (isCompatibleWithSqrtS(10.58*GeV,1e-4)) _mode=2;
 32      else MSG_ERROR("Beam energy not supported!");
 33
 34      for (unsigned int ix=0;ix<7;++ix) {
 35        if (_mode==1)
 36          book(_r[ix],2,1,ix+1);
 37        else
 38          book(_r[ix],1,1,ix+1);
 39        book(_h[ix],2+_mode,1,ix+1);
 40      }
 41      book(_c,"TMP/wgt");
 42    }
 43
 44    /// Perform the per-event analysis
 45    void analyze(const Event& event) {
 46      // unstable particles
 47      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
 48      if (_mode==2 && ufs.particles(Cuts::pid==300553).size()!=1)
 49        vetoEvent;
 50      _c->fill();
 51      for (const Particle & p : ufs.particles(Cuts::abspid==411 ||
 52                                              Cuts::abspid==421 ||
 53                                              Cuts::abspid==431 ||
 54                                              Cuts::abspid==413 ||
 55                                              Cuts::abspid==423 ||
 56                                              Cuts::abspid==4122 )) {
 57        double pmax = sqrt(0.25*sqr(sqrtS())-sqr(p.mass()));
 58        double xp = p.momentum().p3().mod()/pmax;
 59        if (p.abspid()==421) {
 60          _r[0]->fill(0.5);
 61          _h[0]->fill(xp);
 62        }
 63        else if (p.abspid()==421) {
 64          _r[0]->fill(0.5);
 65          _h[0]->fill(xp);
 66        }
 67        else if (p.abspid()==411) {
 68          _r[1]->fill(0.5);
 69          _h[1]->fill(xp);
 70        }
 71        else if (p.abspid()==431) {
 72          _r[2]->fill(0.5);
 73          _h[2]->fill(xp);
 74        }
 75        else if (p.abspid()==4122) {
 76          _r[3]->fill(0.5);
 77          _h[3]->fill(xp);
 78        }
 79        else if (p.abspid()==413) {
 80          _r[4]->fill(0.5);
 81          _h[4]->fill(xp);
 82          _r[5]->fill(0.5);
 83          _h[5]->fill(xp);
 84        }
 85        else if (p.abspid()==423) {
 86          _r[6]->fill(0.5);
 87          _h[6]->fill(xp);
 88        }
 89      }
 90    }
 91
 92
 93    /// Normalise histograms etc., after the run
 94    void finalize() {
 95      if (_mode==1) {
 96        for (unsigned int ix=0;ix<7;++ix) {
 97          scale(_r[ix],crossSection()/picobarn/sumOfWeights());
 98          scale(_h[ix],crossSection()/nanobarn/sumOfWeights());
 99        }
100      }
101      else {
102        for (unsigned int ix=0;ix<7;++ix) {
103          scale(_r[ix], 0.5/ *_c);
104          scale(_h[ix],crossSection()/nanobarn/sumOfWeights());
105        }
106      }
107    }
108
109    /// @}
110
111
112    /// @name Histograms
113    /// @{
114    Histo1DPtr _h[7];
115    Histo1DPtr _r[7];
116    CounterPtr _c;
117    unsigned int _mode=0;
118    /// @}
119
120
121  };
122
123
124  RIVET_DECLARE_PLUGIN(BELLE_2005_I686014);
125
126}