Rivet analyses referencePLUTO_1979_I140818Hadronic cross section in $e^+e^-$ collisions for energies between 9.4 to 9.48Experiment: PLUTO (PETRA) Inspire ID: 140818 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the hadronic cross section in $e^+e^-$ collisions for energies between 9.4 to 9.48 GeV. Source code: PLUTO_1979_I140818.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 PLUTO_1979_I140818 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(PLUTO_1979_I140818);
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 // counters for R
24 book(_c_hadrons, "/TMP/sigma_hadrons");
25 }
26
27
28 /// Perform the per-event analysis
29 void analyze(const Event& event) {
30 const FinalState& fs = apply<FinalState>(event, "FS");
31
32 map<long,int> nCount;
33 int ntotal(0);
34 for (const Particle& p : fs.particles()) {
35 nCount[p.pid()] += 1;
36 ++ntotal;
37 }
38 if(nCount[-13]==1 and nCount[13]==1 && ntotal==2+nCount[22]) {
39 // mu+mu- + photons
40 vetoEvent;
41 }
42 else {
43 // everything else
44 _c_hadrons->fill();
45 }
46
47 }
48
49
50 /// Normalise histograms etc., after the run
51 void finalize() {
52 double fact = crossSection()/ sumOfWeights() /nanobarn;
53 double sig_h = _c_hadrons->val()*fact;
54 double err_h = _c_hadrons->err()*fact;
55 Estimate1DPtr hadrons;
56 book(hadrons, 2, 1, 1);
57 for (auto& b : hadrons->bins()) {
58 if (inRange(sqrtS()/GeV, b.xMin(), b.xMax())) {
59 b.set(sig_h, err_h);
60 }
61 }
62 }
63
64 /// @}
65
66
67 /// @name Histograms
68 /// @{
69 CounterPtr _c_hadrons;
70 /// @}
71
72
73 };
74
75
76 RIVET_DECLARE_PLUGIN(PLUTO_1979_I140818);
77
78
79}
|