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);

}