rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BESIII_2008_I779017

Cross section for light hadron production for $\sqrt{s}=3.65\to3.87\,$GeV
Experiment: BESIII (BEPC)
Inspire ID: 779017
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Lett.B 659 (2008) 74-79
Beams: e+ e-
Beam energies: ANY
Run details:
  • e+e- > hadrons

Measurement of the cross section for $e^+e^-\to\text{light hadrons}$ for $\sqrt{s}=3.65\to3.87\,$GeV. As the analyses requires the beam energy smearing described in the paper then central CMS energy should be specified using the ECENT (in GeV) option.

Source code: BESIII_2008_I779017.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- > light hadrons
10  class BESIII_2008_I779017 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2008_I779017);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22      // Initialise and register projections
23      declare(UnstableParticles(Cuts::abspid==411 ||
24                                Cuts::abspid==421 ||
25                                Cuts::abspid==431 ||
26                                Cuts::abspid==4122||
27                                Cuts::abspid==4232||
28                                Cuts::abspid==4132||
29                                Cuts::abspid==4332), "UFS");
30      declare(FinalState(), "FS");
31
32      // Book histograms
33      book(_sigma, 1,1,1);
34      _eCent = getOption<string>("ECENT", std::to_string(sqrtS()/GeV));
35    }
36
37
38    /// Perform the per-event analysis
39    void analyze(const Event& event) {
40      const FinalState& fs = apply<FinalState>(event, "FS");
41      const FinalState& ufs = apply<FinalState>(event, "UFS");
42      if (!ufs.particles().empty()) vetoEvent;
43      map<long,int> nCount;
44      int ntotal(0);
45      for (const Particle& p : fs.particles()) {
46        nCount[p.pid()] += 1;
47        ++ntotal;
48      }
49      // mu+mu- + photons
50      if(nCount[-13]==1 and nCount[13]==1 &&
51	 ntotal==2+nCount[22])
52	vetoEvent;
53      else if(nCount[-11]==1 and nCount[11]==1 &&
54	      ntotal==2+nCount[22])
55	vetoEvent;
56      // everything else
57      else
58	_sigma->fill(_eCent);
59    }
60
61
62    /// Normalise histograms etc., after the run
63    void finalize() {
64      scale(_sigma,crossSection()/sumOfWeights()/nanobarn);
65    }
66
67    /// @}
68
69
70    /// @name Histograms
71    /// @{
72    BinnedHistoPtr<string> _sigma;
73    string _eCent;
74    /// @}
75
76
77  };
78
79
80  RIVET_DECLARE_PLUGIN(BESIII_2008_I779017);
81
82}