rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2022_I2146263

Cross section for $e^+e^-\to\eta\phi$
Experiment: BELLE (KEKB)
Inspire ID: 2146263
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References: Beams: e+ e-
Beam energies: ANY
Run details:
  • e+ e- to hadrons

Measurement of the cross section for $e^+e^-\to\eta\phi$ using ISR for centre-of-mass energies between 1.55 and 3.95 GeV by the BELLE collaboration.

Source code: BELLE_2022_I2146263.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- > eta phi
 10  class BELLE_2022_I2146263 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2022_I2146263);
 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(), "UFS");
 26      book(_sigmaPhiEta,"/TMP/_nPhiEta",refData(1,1,1));
 27    }
 28
 29    void findChildren(const Particle & p,map<long,int> & nRes, int &ncount) {
 30      for (const Particle &child : p.children()) {
 31        if (child.children().empty()) {
 32          nRes[child.pid()]-=1;
 33          --ncount;
 34        }
 35        else {
 36          findChildren(child,nRes,ncount);
 37        }
 38      }
 39    }
 40
 41          /// Perform the per-event analysis
 42    void analyze(const Event& event) {
 43      const FinalState& fs = apply<FinalState>(event, "FS");
 44
 45      map<long,int> nCount;
 46      int ntotal(0);
 47      for (const Particle& p : fs.particles()) {
 48        nCount[p.pid()] += 1;
 49        ++ntotal;
 50      }
 51      const FinalState& ufs = apply<FinalState>(event, "UFS");
 52
 53      // loop over eta mesons
 54      for (const Particle& p : ufs.particles(Cuts::pid==221)) {
 55        if (p.children().empty()) continue;
 56        map<long,int> nRes = nCount;
 57        int ncount = ntotal;
 58        findChildren(p,nRes,ncount);
 59        // loop over phi mesons
 60        for (const Particle& p2 : ufs.particles(Cuts::pid==333)) {
 61          if (p2.parents()[0].isSame(p)) continue;
 62          map<long,int> nResB = nRes;
 63          int ncountB = ncount;
 64          findChildren(p2,nResB,ncountB);
 65          if (ncountB!=0) continue;
 66          bool matched = true;
 67          for (const auto& val : nResB) {
 68            if (val.second!=0) {
 69              matched = false;
 70              break;
 71            }
 72          }
 73          if (matched) _sigmaPhiEta->fill(sqrtS());
 74        }
 75      }
 76    }
 77
 78
 79    /// Normalise histograms etc., after the run
 80    void finalize() {
 81      scale(_sigmaPhiEta,crossSection()/ sumOfWeights()/picobarn);
 82      Estimate1DPtr tmp;
 83      book(tmp,1,1,1);
 84      barchart(_sigmaPhiEta,tmp);
 85    }
 86
 87    /// @}
 88
 89
 90    /// @name Histograms
 91    /// @{
 92    Histo1DPtr _sigmaPhiEta;
 93    /// @}
 94
 95
 96  };
 97
 98
 99  RIVET_DECLARE_PLUGIN(BELLE_2022_I2146263);
100
101}