Rivet analyses referenceDM1_1979_I132828Cross section for $e^+e^-\to\pi^+\pi^+\pi^-\pi^+$ between 0.89 and 1.1 GeVExperiment: DM1 (ACO) Inspire ID: 132828 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the cross section for $e^+e^-\to\pi^+\pi^+\pi^-\pi^+$ between 0.89 and 1.1 GeV Source code: DM1_1979_I132828.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4
5namespace Rivet {
6
7
8 /// @brief Add a short analysis description here
9 class DM1_1979_I132828 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(DM1_1979_I132828);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // Initialise and register projections
22 declare(FinalState(), "FS");
23 // Book histograms
24 book(_npion, 1, 1, 1);
25
26 }
27
28
29 /// Perform the per-event analysis
30 void analyze(const Event& event) {
31 if (Ecm == "") {
32 const size_t idx = _ecmAxis.index(sqrtS()/MeV);
33 Ecm = idx? _npion->xEdges()[idx-1] : "OTHER";
34 }
35 const FinalState& fs = apply<FinalState>(event, "FS");
36 if(fs.particles().size()!=4) vetoEvent;
37 for (const Particle& p : fs.particles()) {
38 if(abs(p.pid())!=PID::PIPLUS) vetoEvent;
39 }
40 _npion->fill(Ecm);
41 }
42
43
44 /// Normalise histograms etc., after the run
45 void finalize() {
46 scale(_npion, crossSection()/ sumOfWeights() /nanobarn);
47 }
48
49 /// @}
50
51 /// @name Histograms
52 /// @{
53 BinnedHistoPtr<string> _npion;
54 YODA::Axis<double> _ecmAxis{963., 1008., 1024., 1055., 1088., 1108.};
55 string Ecm = "";
56 /// @}
57
58
59 };
60
61
62 RIVET_DECLARE_PLUGIN(DM1_1979_I132828);
63
64
65}
|