Rivet analyses referenceCMD_1985_I221309Cross section for $e^+e^-\to \pi^+\pi^-$ for energies below 1.4 GeVExperiment: CMD (VEPP-2M) Inspire ID: 221309 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); (0.3, 0.3); (0.3, 0.3); (0.3, 0.3); (0.3, 0.3); (0.3, 0.3); (0.3, 0.3); (0.3, 0.3); (0.3, 0.3); (0.3, 0.3); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.4, 0.4); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.6, 0.6); (0.7, 0.7); (0.7, 0.7); (0.7, 0.7); (0.7, 0.7); (0.7, 0.7); (0.7, 0.7); (0.7, 0.7); (0.7, 0.7); (0.7, 0.7); (0.7, 0.7) GeV Run details:
1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4
5
6namespace Rivet {
7
8
9 /// @brief e+e- -> pi+pi-
10 class CMD_1985_I221309 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CMD_1985_I221309);
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(_sigma1, 1,1,1);
28 book(_sigma2, 2,1,1);
29 for (const string& en : _sigma1.binning().edges<0>()) {
30 double end = std::stod(en)*MeV;
31 if(isCompatibleWithSqrtS(end)) {
32 ecms = en;
33 break;
34 }
35 }
36 icms=-1;
37 for(const int& en : _sigma2.binning().edges<0>()) {
38 double end = double(en)*MeV;
39 if(isCompatibleWithSqrtS(end)) {
40 icms = en;
41 break;
42 }
43 }
44 if(ecms.empty() && icms<0) MSG_ERROR("Beam energy incompatible with analysis.");
45 }
46
47
48 /// Perform the per-event analysis
49 void analyze(const Event& event) {
50 const FinalState& fs = apply<FinalState>(event, "FS");
51 if(fs.particles().size()!=2) vetoEvent;
52 for (const Particle& p : fs.particles()) {
53 if(abs(p.pid())!=PID::PIPLUS) vetoEvent;
54 }
55 if(!ecms.empty()) _sigma1->fill(ecms);
56 if(icms>0 ) _sigma2->fill(icms);
57 }
58
59
60 /// Normalise histograms etc., after the run
61 void finalize() {
62 scale(_sigma1,crossSection()/ sumOfWeights() /nanobarn);
63 scale(_sigma2,crossSection()/ sumOfWeights() /nanobarn);
64 }
65
66 /// @}
67
68
69 /// @name Histograms
70 /// @{
71 BinnedHistoPtr<string> _sigma1;
72 BinnedHistoPtr<int> _sigma2;
73 string ecms;
74 int icms;
75 /// @}
76
77
78 };
79
80
81 RIVET_DECLARE_PLUGIN(CMD_1985_I221309);
82
83
84}
|