Rivet analyses referenceBESIII_2017_I1509241Cross section for $e^+e^-\to p \bar{p} \pi^0$ at energies between 4.008 and 4.600 GeVExperiment: BESIII (BEPC) Inspire ID: 1509241 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Cross section for $e^+e^-\to p \bar{p} \pi^0$ at energies between 4.008 and 4.600 GeV measured by the BESIII collaboration. Source code: BESIII_2017_I1509241.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4
5namespace Rivet {
6
7
8 /// @brief Cross section for $e^+e^-\to p \bar{p} \pi^0$ at energies between 4.008 and 4.600 GeV
9 class BESIII_2017_I1509241 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2017_I1509241);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21
22 // Initialise and register projections
23 declare(FinalState(), "FS");
24
25 // Book histograms
26 book(_nproton, "TMP/proton");
27
28 }
29
30
31 /// Perform the per-event analysis
32 void analyze(const Event& event) {
33 const FinalState& fs = apply<FinalState>(event, "FS");
34 if(fs.particles().size()!=3) vetoEvent;
35 for (const Particle& p : fs.particles()) {
36 if(abs(p.pid())!=PID::PROTON&& p.pid()==PID::PI0) vetoEvent;
37 }
38 _nproton->fill();
39 }
40
41
42 /// Normalise histograms etc., after the run
43 void finalize() {
44 double sigma = _nproton->val();
45 double error = _nproton->err();
46 sigma *= crossSection()/ sumOfWeights() /picobarn;
47 error *= crossSection()/ sumOfWeights() /picobarn;
48 Estimate1D temphisto(refData(1, 1, 1));
49 Estimate1DPtr mult;
50 book(mult, 1, 1, 1);
51 for (auto& b : mult->bins()) {
52 if (inRange(sqrtS()/GeV, b.xMin(), b.xMax())) {
53 b.set(sigma, error);
54 }
55 }
56 }
57
58 /// @}
59
60
61 /// @name Histograms
62 /// @{
63 CounterPtr _nproton;
64 /// @}
65
66
67 };
68
69
70 RIVET_DECLARE_PLUGIN(BESIII_2017_I1509241);
71
72}
|