rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BESIII_2023_I2674370

Cross section for $e^+e^-\to pK^-\bar\Lambda^0 +\text{c.c.}$ for $\sqrt{s}$ from 4.009 and 4.951 GeV
Experiment: BESIII (BEPC)
Inspire ID: 2674370
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References: Beams: e+ e-
Beam energies: (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.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.2, 2.2); (2.3, 2.3); (2.3, 2.3); (2.3, 2.3); (2.3, 2.3); (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.4, 2.4); (2.5, 2.5); (2.5, 2.5) GeV
Run details:
  • e+ e- to hadrons

Measurement of the cross section for $e^+e^-\to pK^-\bar\Lambda^0 +\text{c.c.}$ for $\sqrt{s}$ from 4.009 and 4.951 GeV by the BESIII collaboration. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: BESIII_2023_I2674370.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/UnstableParticles.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief e+ e- -> p K- Lambdabar +cc
 10  class BESIII_2023_I2674370 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2023_I2674370);
 15
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22
 23      // Initialise and register projections
 24      declare(FinalState(), "FS");
 25      declare(UnstableParticles(Cuts::abspid==3122), "UFS");
 26      // counter
 27      book(_sigma, 1, 1, 1);
 28      for (const string& en : _sigma.binning().edges<0>()) {
 29        const double end = std::stod(en)*GeV;
 30        if (isCompatibleWithSqrtS(end)) {
 31          _ecms = en;
 32          break;
 33        }
 34      }
 35      if (_ecms.empty()) MSG_ERROR("Beam energy incompatible with analysis.");
 36    }
 37
 38    void findChildren(const Particle& p,map<long,int>& nRes, int &ncount) {
 39      for (const Particle& child : p.children()) {
 40        if (child.children().empty()) {
 41          nRes[child.pid()]-=1;
 42          --ncount;
 43        }
 44        else {
 45          findChildren(child,nRes,ncount);
 46        }
 47      }
 48    }
 49
 50    /// Perform the per-event analysis
 51    void analyze(const Event& event) {
 52      const FinalState& fs = apply<FinalState>(event, "FS");
 53
 54      map<long,int> nCount;
 55      int ntotal(0);
 56      for (const Particle& p : fs.particles()) {
 57      	nCount[p.pid()] += 1;
 58      	++ntotal;
 59      }
 60      const FinalState& ufs = apply<FinalState>(event, "UFS");
 61      // loop over Lambda baryons
 62      for (const Particle& lam : ufs.particles()) {
 63        bool matched = false;
 64        map<long,int> nRes=nCount;
 65        int ncount = ntotal;
 66        findChildren(lam,nRes,ncount);
 67        int sign = lam.pid()/lam.abspid();
 68        if (ncount==2) {
 69          matched=true;
 70          for (auto const& val : nRes) {
 71            if (val.first== sign*321 || val.first==-sign*2212) {
 72              if (val.second!=1) {
 73                matched = false;
 74                break;
 75              }
 76            }
 77            else if (val.second!=0) {
 78              matched = false;
 79              break;
 80            }
 81          }
 82        }
 83        if (matched) {
 84          _sigma->fill(_ecms);
 85          break;
 86        }
 87      }
 88    }
 89
 90
 91    /// Normalise histograms etc., after the run
 92    void finalize() {
 93      scale(_sigma, crossSection()/ sumOfWeights() /picobarn);
 94    }
 95
 96    /// @}
 97
 98
 99    /// @name Histograms
100    /// @{
101    BinnedHistoPtr<string> _sigma;
102    string _ecms;
103    /// @}
104
105
106  };
107
108
109  RIVET_DECLARE_PLUGIN(BESIII_2023_I2674370);
110
111}