Rivet analyses referenceDM1_1979_I141565Cross section for $e^+e^-\to p\bar{p}$ between 1.925 and 2.18 GeVExperiment: DM1 (DCI) Inspire ID: 141565 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the cross section for $e^+e^-\to p\bar{p}$ between 1.925 and 2.18 GeV. Source code: DM1_1979_I141565.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_I141565 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(DM1_1979_I141565);
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(_nProton, "/TMP/nProton" );
24 }
25
26
27 /// Perform the per-event analysis
28 void analyze(const Event& event) {
29 const FinalState& fs = apply<FinalState>(event, "FS");
30 // total hadronic and muonic cross sections
31 map<long,int> nCount;
32 int ntotal(0);
33 for (const Particle& p : fs.particles()) {
34 nCount[p.pid()] += 1;
35 ++ntotal;
36 }
37 if(ntotal==2 && nCount[2212]==1 && nCount[-2212]==1)
38 _nProton->fill();
39 }
40
41
42 /// Normalise histograms etc., after the run
43 void finalize() {
44 double fact = crossSection()/ sumOfWeights() /nanobarn;
45 double sigma = _nProton->val()*fact;
46 double error = _nProton->err()*fact;
47 Estimate1DPtr mult;
48 book(mult, 1, 1, 1);
49 for (auto& b : mult->bins()) {
50 if (inRange(sqrtS()/GeV, b.xMin(), b.xMax())) {
51 b.set(sigma, error);
52 }
53 }
54 }
55
56 /// @}
57
58
59 /// @name Histograms
60 /// @{
61 CounterPtr _nProton;
62 /// @}
63
64
65 };
66
67
68 RIVET_DECLARE_PLUGIN(DM1_1979_I141565);
69
70
71}
|