rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ARGUS_1985_I204851

Spectrum of $D^{*+}$ mesons in $e^+e^-$ at $\sqrt{s}=10.4\,$GeV
Experiment: ARGUS (DORIS)
Inspire ID: 204851
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Lett.B 150 (1985) 235-241
Beams: e+ e-
Beam energies: (5.2, 5.2) GeV
Run details:
  • e+ e- > hadrons

Measurement of the scaled momentum spectrum of $D^{*+}$ mesons in $e^+e^-$ at $\sqrt{s}=10.4\,$GeV

Source code: ARGUS_1985_I204851.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief e+e- > D*+ + X
 9  class ARGUS_1985_I204851 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1985_I204851);
14
15
16    /// @name Analysis methods
17    /// @{
18
19    /// Book histograms and initialise projections before the run
20    void init() {
21      // projections
22      declare(UnstableParticles(Cuts::abspid==413), "UFS");
23      // histos
24      for (unsigned int ix=0; ix<2; ++ix) {
25        book(_h_sigma[ix],1,1,1+ix);
26      }
27      book(_h_spect,2,1,1);
28    }
29
30
31    /// Perform the per-event analysis
32    void analyze(const Event& event) {
33      if(_edges[0].empty()) {
34        _edges[0] = _h_sigma[0]->xEdges();
35        _edges[1] = _h_spect   ->xEdges();
36      }
37      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
38      for (const Particle& p : ufs.particles()) {
39        const double xp = p.p3().mod()/sqrt(0.25*sqr(sqrtS())-sqr(p.mass()));
40        const size_t idx = _axis.index(xp);
41        if(idx&&idx<=_edges[1].size()) _h_spect->fill(_edges[1][idx-1]);
42        for (unsigned int ix=0; ix<2; ++ix) {
43          _h_sigma[ix]->fill(_edges[0][1]);
44          if (xp>0.5) _h_sigma[ix]->fill(_edges[0][0]);
45        }
46      }
47    }
48
49
50    /// Normalise histograms etc., after the run
51    void finalize() {
52      const double br[2] = {0.03947,0.0822};
53      const double fact = 0.677*crossSection()/sumOfWeights()/picobarn;
54      for (unsigned int ix=0; ix<2; ++ix) {
55        scale(_h_sigma[ix],fact*br[ix]);
56      }
57      scale(_h_spect,sqr(sqrtS())*crossSection()/sumOfWeights()/microbarn);
58      for(auto & b : _h_spect->bins()) {
59        b.scaleW(1./_axis.width(b.index()));
60      }
61    }
62
63    /// @}
64
65
66    /// @name Histograms
67    /// @{
68    BinnedHistoPtr<string> _h_spect,_h_sigma[2];
69    vector<string> _edges[2];
70    YODA::Axis<double> _axis{0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0};
71    /// @}
72
73
74  };
75
76
77  RIVET_DECLARE_PLUGIN(ARGUS_1985_I204851);
78
79}