rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BESII_2008_I801208

Cross-sections for light hadrons at 3.773 and 3.650 GeV
Experiment: BESII (BEPC II)
Inspire ID: 801208
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett. B670 (2008) 179-183, 2008
Beams: e+ e-
Beam energies: ANY
Run details:
  • e+e- to hadrons

Cross section for $e^+e^-\to K^-\pi^+$, $K^-\pi^+\pi^0$, $K^-\pi^+\pi^+\pi^-$, $K^-\pi^+\pi^+\pi^-\pi^0$ and $K^-\pi^+\pi^0\pi^0$ together with a $K_S^0$ meson at 3.773 and 3.650 GeV.

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