Rivet analyses

Cross section for e+e → KΞ̄+Λ0/Σ0 for $\sqrt{s}$ from 3.510 and 4.914 GeV

Experiment: BESIII (BEPC)

Inspire ID: 2802333

Status: VALIDATED NOHEPDATA

Authors: - Peter Richardson

References: - JHEP 07 (2024) 258 - arXiv: 2406.18183

Beams: e+ e-

Beam energies: (1.8, 1.8); (1.8, 1.8); (1.8, 1.8); (1.8, 1.8); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (2.0, 2.0); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.3, 2.3); (2.3, 2.3); (2.3, 2.3); (2.3, 2.3); (2.4, 2.4); (2.4, 2.4); (2.4, 2.4); (2.5, 2.5)GeV

Run details: - e+ e- to hadrons

Measurement of the cross section for e+e → KΞ̄+Λ0/Σ0 for $\sqrt{s}$ from 3.510 and 4.914 GeV by the BESIII collaboration. N.B. the cross sections stated are only for the charge combinations, although both charge combinations are used and the results averaged.

Source code:BESIII_2024_I2802333.cc

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

namespace Rivet {


  /// @brief e+ e- > K- Xibar+ Lambda0/Sigma0
  class BESIII_2024_I2802333 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2024_I2802333);

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

    /// Book histograms and initialise projections before the run
    void init() {

      // Initialise and register projections
      declare(FinalState(), "FS");
      declare(UnstableParticles(Cuts::abspid==3122 or Cuts::abspid==3212 or Cuts::abspid==3312), "UFS");
      // counter
      for (size_t ix=0; ix<2; ++ix) {
        book(_sigma[ix], 1+ix, 1, 1);
      }
      for (const string& en : _sigma[0].binning().edges<0>()) {
        const double eval = stod(en);
        if (isCompatibleWithSqrtS(eval)) {
          _sqs = en; break;
        }
      }
      raiseBeamErrorIf(_sqs.empty());
    }

    void findChildren(const Particle& p, map<long,int>& nRes, int& ncount) const {
      for (const Particle& child : p.children()) {
        if (child.children().empty()) {
          nRes[child.pid()]-=1;
          --ncount;
        }
        else {
          findChildren(child,nRes,ncount);
        }
      }
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {
      const FinalState& fs = apply<FinalState>(event, "FS");

      map<long,int> nCount;
      int ntotal(0);
      for (const Particle& p : fs.particles()) {
        nCount[p.pid()] += 1;
        ++ntotal;
      }
      const FinalState& ufs = apply<FinalState>(event, "UFS");
      // first for the Xi
      for (const Particle& xi : ufs.particles(Cuts::abspid==3312)) {
        bool matched = false;
        map<long,int> nRes1=nCount;
        int ncount1 = ntotal;
        findChildren(xi,nRes1,ncount1);
        int sign = xi.pid()/xi.abspid();
        for (const Particle& lam : ufs.particles(Cuts::pid==-sign*3122 or Cuts::pid==-sign*3212)) {
          map<long,int> nRes2=nRes1;
          int ncount2 = ncount1;
          findChildren(lam,nRes2,ncount2);
          if (ncount2!=1) continue;
          matched = true;
          for (const auto& val : nRes2) {
            if (val.first== sign*321) {
              if (val.second!=1) {
                matched = false;
                break;
              }
            }
            else if (val.second!=0) {
              matched = false;
              break;
            }
          }
          if (matched) {
            if (lam.abspid()==3122) _sigma[0]->fill(_sqs);
            else                    _sigma[1]->fill(_sqs);
            break;
          }
        }
        if (matched) break;
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      // factor of 1/2 from considering botyh charge states
      scale(_sigma, 0.5*crossSection()/ sumOfWeights() /femtobarn);
    }

    /// @}

    /// @name Histograms
    /// @{
    BinnedHistoPtr<string> _sigma[2];
    string _sqs = "";
    /// @}

  };


  RIVET_DECLARE_PLUGIN(BESIII_2024_I2802333);

}