Rivet analyses referenceSND_2014_I1321689Cross section for $e^+e^-\to n\bar{n}$ between threshold and 2 GeVExperiment: SND (VEPP-2M) Inspire ID: 1321689 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the cross section for $e^+e^-\to n\bar{n}$ at energies between threshold and 2 GeV. Source code: SND_2014_I1321689.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4
5
6namespace Rivet {
7
8
9 /// @brief e+ e- > n nbar
10 class SND_2014_I1321689 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(SND_2014_I1321689);
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 for(unsigned int ix=0;ix<2;++ix)
28 book(_nneutron[ix], 1+ix,1,1);
29
30 }
31
32
33 /// Perform the per-event analysis
34 void analyze(const Event& event) {
35 const FinalState& fs = apply<FinalState>(event, "FS");
36 if (fs.particles().size() != 2) vetoEvent;
37 for (const Particle& p : fs.particles()) {
38 if (p.abspid() != PID::NEUTRON) vetoEvent;
39 }
40 for(unsigned int ix=0;ix<2;++ix) _nneutron[ix]->fill(round(sqrtS()/MeV));
41 }
42
43
44 /// Normalise histograms etc., after the run
45 void finalize() {
46
47 for(unsigned int ix=0;ix<2;++ix)
48 scale(_nneutron[ix], crossSection()/ sumOfWeights() /nanobarn);
49 }
50
51 /// @}
52
53
54 /// @name Histograms
55 /// @{
56 BinnedHistoPtr<int> _nneutron[2];
57 /// @}
58
59
60 };
61
62
63 RIVET_DECLARE_PLUGIN(SND_2014_I1321689);
64
65
66}
|