Rivet analyses

Differential meson cross sections in e+e at $\sqrt{s}=10.58$GeV

Experiment: BELLE (KEKB)

Inspire ID: 2849895

Status: VALIDATED NOHEPDATA

Authors: - Peter Richardson

References: - Phys.Rev.D 111 (2025) 5, 052003 - arXiv: 2411.12216

Beams: e+ e-

Beam energies: (5.3, 5.3)GeV

Run details: - e+ e- to hadrons

Differential cross sections vs scaled momentum fraction for D+, D0, Ds+, D*+, D*0, Ds*+, ρ+, ρ0, ω, K*+, K*0, ϕ, η, KS0, f0 mesons at $\sqrt{s}=10.58$GeV by the BELLE collaboration.

Source code:BELLE_2025_I2849895.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// @brief meson spectra at 10.58 GeV
  class BELLE_2025_I2849895 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2025_I2849895);


    /// @name Analysis methods
    /// @{

    /// Book histograms and initialise projections before the run
    void init() {
      declare(UnstableParticles(), "UFS");
      for (unsigned int ix = 0; ix < 6; ++ix) book(_h[ix], 1, 1, 1 + ix);
      for (unsigned int ix = 0; ix < 9; ++ix) book(_h[6 + ix], 2, 1, 1 + ix);
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {
      // apply projection
      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
      // fill single particle histos
      for (const Particle& p : ufs.particles()) {
        // remove particles from radiation/mixing
        bool self = false;
        for (const Particle& child : p.children()) self |= p.abspid() == child.pid();
        if (self) continue;
        const double xp = 2. * p.momentum().p3().mod() / sqrtS();
        switch (p.abspid()) {
          case 411: _h[0]->fill(xp); break;
          case 421: _h[1]->fill(xp); break;
          case 431: _h[2]->fill(xp); break;
          case 413: _h[3]->fill(xp); break;
          case 423: _h[4]->fill(xp); break;
          case 433: _h[5]->fill(xp); break;
          case 213:
            if (p.pid() > 0) _h[6]->fill(xp);
            break;
          case 113: _h[7]->fill(xp); break;
          case 223: _h[8]->fill(xp); break;
          case 323: _h[9]->fill(xp); break;
          case 313: _h[10]->fill(xp); break;
          case 333: _h[11]->fill(xp); break;
          case 221: _h[12]->fill(xp); break;
          case PID::K0S: _h[13]->fill(xp); break;
          case 9010221: _h[14]->fill(xp); break;
          default: break;
        }
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      scale(_h, crossSection() / picobarn / sumOfWeights());
    }

    /// @}


    /// @name Histograms
    /// @{
    Histo1DPtr _h[15];
    /// @}
  };


  RIVET_DECLARE_PLUGIN(BELLE_2025_I2849895);

}