Rivet analyses referenceBESIII_2008_I779017Cross section for light hadron production for $\sqrt{s}=3.65\to3.87\,$GeVExperiment: BESIII (BEPC) Inspire ID: 779017 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
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}
|