rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2018_I1700174

Cross section for $e^+e^-\to \gamma\chi_{c1}$ at energies near 10.58 GeV
Experiment: BELLE (KEKB)
Inspire ID: 1700174
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 98 (2018) 9, 092015
Beams: e+ e-
Beam energies: (5.3, 5.3); (5.3, 5.3); (5.4, 5.4) GeV
Run details:
  • e+e- to hadrons

Measurement of the cross section for $e^+e^-\to \gamma\chi_{c1}$ at energies near 10.58 GeV. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

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