Rivet analyses referenceCMD2_2006_I728191Cross section for $e^+e^-\to \pi^+\pi^-$ between 370 and 520 MeVExperiment: CMD2 (VEPP-2M) Inspire ID: 728191 Status: VALIDATED Authors:
Beam energies: (0.2, 0.2); (0.2, 0.2); (0.2, 0.2); (0.2, 0.2); (0.2, 0.2); (0.2, 0.2); (0.2, 0.2); (0.2, 0.2); (0.3, 0.3); (0.3, 0.3) GeV Run details:
Measurement of the cross section for $e^+e^-\to \pi^+\pi^-$ at energies between 370 and 520 MeV. Useful for comparing models of the pion form factor. Source code: CMD2_2006_I728191.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4
5
6namespace Rivet {
7
8
9 /// @brief Add a short analysis description here
10 class CMD2_2006_I728191 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CMD2_2006_I728191);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22
23 // Initialise and register projections
24 declare(FinalState(), "FS");
25
26 // Book histograms
27 book(_npion, 3,1,1);
28 vector<int> enint({370, 390, 410, 430, 450, 470, 480, 500, 510, 520});
29 icms=-1;
30 for(const int& en : enint) {
31 double end = double(en)*MeV;
32 if(isCompatibleWithSqrtS(end)) {
33 icms = en;
34 break;
35 }
36 }
37 if(icms<0) MSG_ERROR("Beam energy incompatible with analysis.");
38 }
39
40
41 /// Perform the per-event analysis
42 void analyze(const Event& event) {
43 const FinalState& fs = apply<FinalState>(event, "FS");
44 if(fs.particles().size()!=2) vetoEvent;
45 for (const Particle& p : fs.particles()) {
46 if(abs(p.pid())!=PID::PIPLUS) vetoEvent;
47 }
48 _npion->fill(icms);
49 }
50
51
52 /// Normalise histograms etc., after the run
53 void finalize() {
54 scale(_npion,crossSection()/ sumOfWeights() /nanobarn);
55 }
56
57 /// @}
58
59
60 /// @name Histograms
61 /// @{
62 BinnedHistoPtr<int> _npion;
63 int icms;
64 /// @}
65
66
67 };
68
69
70 RIVET_DECLARE_PLUGIN(CMD2_2006_I728191);
71
72
73}
|