rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BESIII_2022_I2163048

Cross section for $e^+e^-\to J/\psi\pi^+\pi^-$ at energies between 3.773 and 4.7 GeV
Experiment: BESIII (BEPC)
Inspire ID: 2163048
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • arXiv: 2206.08554
  • Phys.Rev.D 106 (2022) 7, 072001
Beams: e+ e-
Beam energies: (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (2.0, 2.0); (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.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.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) GeV
Run details:
  • e+e- to hadrons

Measurement of the cross section for $e^+e^-\to J/\psi\pi^+\pi^-$ at energies between 3.773 and 4.7 GeV. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

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