rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2022_I2142648

Cross section for $e^+e^-\to\omega\chi_{b(0,1,2)}$ for $\sqrt{s}$ near 10,75 GeV
Experiment: BELLE (KEKB)
Inspire ID: 2142648
Status: VALIDATED NOHEPDATA SINGLEWEIGHT
Authors:
  • Peter Richardson
References:
  • 2208.13189 [hep-ex]
Beams: e+ e-
Beam energies: (5.4, 5.4); (5.4, 5.4); (5.4, 5.4) GeV
Run details:
  • e+ e- > hadrons

Measurement of the cross section for $e^+e^-\to\omega\chi_{b(0,1,2)}$ for $\sqrt{s}$ near 10,75 GeV by BELLE. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

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