rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEO_2004_S5809304

Charm hadrons from fragmentation near the $\Upsilon(4S)$
Experiment: CLEO (CESR)
Inspire ID: 645209
Status: VALIDATED
Authors:
  • Peter Richardson
References: Beams: e+ e-
Beam energies: (5.3, 5.3) GeV
Run details:
  • $e^+ e^-$ analysis near the $\Upsilon(4S)$ resonance

Analysis of charm quark fragmentation at 10.5 GeV, based on a data sample of 103 fb collected by the CLEO experiment. Fragmentation into charm is studied for the charmed hadron ground states, namely $D^0$, $D^+$, as well as the excited states $D^{*0}$ and $D^{*+}$. This analysis can be used to constrain charm fragmentation in Monte Carlo generators.

Source code: CLEO_2004_S5809304.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/UnstableParticles.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief CLEO charmed mesons and baryons from fragmentation
 10  ///
 11  /// @author Peter Richardson
 12  class CLEO_2004_S5809304 : public Analysis {
 13  public:
 14
 15    RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2004_S5809304);
 16
 17    void init() {
 18      declare(Beam(), "Beams");
 19      declare(UnstableParticles(), "UFS");
 20
 21      // continuum cross sections
 22      book(_sigmaDPlus      ,1,1,1);
 23      book(_sigmaD0A        ,1,1,2);
 24      book(_sigmaD0B        ,1,1,3);
 25      book(_sigmaDStarPlusA ,1,1,4);
 26      book(_sigmaDStarPlusB ,1,1,5);
 27      book(_sigmaDStar0A    ,1,1,6);
 28      book(_sigmaDStar0B    ,1,1,7);
 29
 30       // histograms for continuum data
 31      book(_histXpDplus      ,2, 1, 1);
 32      book(_histXpD0A        ,3, 1, 1);
 33      book(_histXpD0B        ,4, 1, 1);
 34      book(_histXpDStarPlusA ,5, 1, 1);
 35      book(_histXpDStarPlusB ,6, 1, 1);
 36      book(_histXpDStar0A    ,7, 1, 1);
 37      book(_histXpDStar0B    ,8, 1, 1);
 38      book(_histXpTotal      ,9, 1, 1);
 39
 40    }
 41
 42
 43    void analyze(const Event& e) {
 44      // Loop through unstable FS particles and look for charmed mesons/baryons
 45      const UnstableParticles& ufs = apply<UnstableParticles>(e, "UFS");
 46
 47      const Beam beamproj = apply<Beam>(e, "Beams");
 48      const ParticlePair& beams = beamproj.beams();
 49      const FourMomentum mom_tot = beams.first.momentum() + beams.second.momentum();
 50      LorentzTransform cms_boost;
 51      if (mom_tot.p3().mod() > 1*MeV)
 52        cms_boost = LorentzTransform::mkFrameTransformFromBeta(mom_tot.betaVec());
 53      const double s = sqr(beamproj.sqrtS());
 54
 55      // Particle masses from PDGlive (accessed online 16. Nov. 2009).
 56      for (const Particle& p : ufs.particles()) {
 57
 58        double xp = 0.0;
 59        double mH2 = 0.0;
 60        // 3-momentum in CMS frame
 61        const double mom = cms_boost.transform(p.momentum()).vector3().mod();
 62
 63        const int pdgid = p.abspid();
 64        MSG_DEBUG("pdgID = " << pdgid << "  mom = " << mom);
 65        switch (pdgid) {
 66
 67        case 421:
 68          MSG_DEBUG("D0 found");
 69          mH2 = 3.47763; // 1.86484^2
 70          xp = mom/sqrt(s/4.0 - mH2);
 71          _sigmaD0A->fill(10.6);
 72          _sigmaD0B->fill(10.6);
 73          _histXpD0A->fill(xp);
 74          _histXpD0B->fill(xp);
 75          _histXpTotal->fill(xp);
 76          break;
 77
 78        case 411:
 79          MSG_DEBUG("D+ found");
 80          mH2 = 3.49547; // 1.86962^2
 81          xp = mom/sqrt(s/4.0 - mH2);
 82          _sigmaDPlus->fill(10.6);
 83          _histXpDplus->fill(xp);
 84          _histXpTotal->fill(xp);
 85          break;
 86
 87        case 413:
 88          MSG_DEBUG("D*+ found");
 89          mH2 = 4.04119; // 2.01027^2
 90          xp = mom/sqrt(s/4.0 - mH2);
 91          _sigmaDStarPlusA->fill(10.6);
 92          _sigmaDStarPlusB->fill(10.6);
 93          _histXpDStarPlusA->fill(xp);
 94          _histXpDStarPlusB->fill(xp);
 95          _histXpTotal->fill(xp);
 96          break;
 97
 98        case 423:
 99          MSG_DEBUG("D*0 found");
100          mH2 = 4.02793; // 2.00697**2
101          xp = mom/sqrt(s/4.0 - mH2);
102          _sigmaDStar0A->fill(10.6);
103          _sigmaDStar0B->fill(10.6);
104          _histXpDStar0A->fill(xp);
105          _histXpDStar0B->fill(xp);
106          _histXpTotal->fill(xp);
107          break;
108        }
109
110      }
111    }
112
113
114    void finalize() {
115
116      scale(_sigmaDPlus     , crossSection()/picobarn/sumOfWeights());
117      scale(_sigmaD0A       , crossSection()/picobarn/sumOfWeights());
118      scale(_sigmaD0B       , crossSection()/picobarn/sumOfWeights());
119      scale(_sigmaDStarPlusA, crossSection()/picobarn/sumOfWeights());
120      scale(_sigmaDStarPlusB, crossSection()/picobarn/sumOfWeights());
121      scale(_sigmaDStar0A   , crossSection()/picobarn/sumOfWeights());
122      scale(_sigmaDStar0B   , crossSection()/picobarn/sumOfWeights());
123
124      scale(_histXpDplus     , crossSection()/picobarn/sumOfWeights());
125      scale(_histXpD0A       , crossSection()/picobarn/sumOfWeights());
126      scale(_histXpD0B       , crossSection()/picobarn/sumOfWeights());
127      scale(_histXpDStarPlusA, crossSection()/picobarn/sumOfWeights());
128      scale(_histXpDStarPlusB, crossSection()/picobarn/sumOfWeights());
129      scale(_histXpDStar0A   , crossSection()/picobarn/sumOfWeights());
130      scale(_histXpDStar0B   , crossSection()/picobarn/sumOfWeights());
131      scale(_histXpTotal     , crossSection()/picobarn/sumOfWeights()/4.);
132    }
133
134
135  private:
136
137    // Histograms for the continuum cross sections
138    Histo1DPtr _sigmaDPlus     ;
139    Histo1DPtr _sigmaD0A       ;
140    Histo1DPtr _sigmaD0B       ;
141    Histo1DPtr _sigmaDStarPlusA;
142    Histo1DPtr _sigmaDStarPlusB;
143    Histo1DPtr _sigmaDStar0A   ;
144    Histo1DPtr _sigmaDStar0B   ;
145
146    // Histograms for continuum data
147    Histo1DPtr _histXpDplus     ;
148    Histo1DPtr _histXpD0A       ;
149    Histo1DPtr _histXpD0B       ;
150    Histo1DPtr _histXpDStarPlusA;
151    Histo1DPtr _histXpDStarPlusB;
152    Histo1DPtr _histXpDStar0A   ;
153    Histo1DPtr _histXpDStar0B   ;
154    Histo1DPtr _histXpTotal     ;
155
156  };
157
158
159  RIVET_DECLARE_ALIASED_PLUGIN(CLEO_2004_S5809304, CLEO_2004_I645209);
160
161}