rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

SND_2016_I1418483

Cross section for $e^+e^-\to\pi\gamma$ for energies between 600 MeV and 1380 MeV
Experiment: SND (VEPP-2M)
Inspire ID: 1418483
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D93 (2016) no.9, 092001
Beams: e+ e-
Beam energies: ANY
Run details:
  • e+ e- to hadrons

Cross section for $e^+e^-\to\pi\gamma$ for energies between 600 MeV and 1380 MeV

Source code: SND_2016_I1418483.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4
 5
 6namespace Rivet {
 7
 8
 9  /// @brief e+e- -> pi0 gamma
10  class SND_2016_I1418483 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(SND_2016_I1418483);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22      declare(FinalState(), "FS");
23      book(_numPi0Gamma, 1, 1, 5);
24      for (const string& en : _numPi0Gamma.binning().edges<0>()) {
25        const size_t idx = en.find("-");
26        if(idx!=std::string::npos) {
27          const double emin = std::stod(en.substr(0,idx));
28          const double emax = std::stod(en.substr(idx+1,string::npos));
29          if(inRange(sqrtS()/MeV, emin, emax)) {
30            _ecms = en;
31            break;
32          }
33        }
34        else {
35          const double end = std::stod(en)*MeV;
36          if (isCompatibleWithSqrtS(end)) {
37            _ecms = en;
38            break;
39          }
40        }
41      }
42      if (_ecms.empty())
43        MSG_ERROR("Beam energy incompatible with analysis.");
44    }
45
46
47    /// Perform the per-event analysis
48    void analyze(const Event& event) {
49
50      const FinalState& fs = apply<FinalState>(event, "FS");
51
52      map<long,int> nCount;
53      int ntotal(0);
54      for (const Particle& p : fs.particles()) {
55	nCount[p.pid()] += 1;
56	++ntotal;
57      }
58      if(ntotal==2 && nCount[22]==1 && nCount[111]==1)
59	_numPi0Gamma->fill(_ecms);
60
61    }
62
63
64    /// Normalise histograms etc., after the run
65    void finalize() {
66      scale(_numPi0Gamma, crossSection()/ sumOfWeights() /nanobarn);
67    }
68
69    /// @}
70
71
72    /// @name Histograms
73    /// @{
74    BinnedHistoPtr<string> _numPi0Gamma;
75    string _ecms;
76    /// @}
77
78
79  };
80
81
82  RIVET_DECLARE_PLUGIN(SND_2016_I1418483);
83
84
85}