rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

SND_2024_I2696331

Cross section for $e^+e^-\to n\bar{n}$ for $\sqrt{s}$ between 1.891 and 2.007 GeV
Experiment: SND (VEPP-2000)
Inspire ID: 2696331
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Atom.Nucl. 86 (2023) 6, 1165-1172
  • arXiv: 2309.05241
Beams: * *
Beam energies: (0.9, 0.9); (1.0, 1.0); (1.0, 1.0); (1.0, 1.0); (1.0, 1.0); (1.0, 1.0); (1.0, 1.0); (1.0, 1.0) GeV
Run details:
  • e+e- to hadrons

Measurement of the cross section for $e^+e^-\to n\bar{n}$ for $\sqrt{s}$ between 1.891 and 2.007 GeV. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: SND_2024_I2696331.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4#include "Rivet/Projections/FastJets.hh"
 5#include "Rivet/Projections/LeptonFinder.hh"
 6#include "Rivet/Projections/MissingMomentum.hh"
 7#include "Rivet/Projections/DirectFinalState.hh"
 8
 9namespace Rivet {
10
11
12  /// @brief e+ e- > n nbar
13  class SND_2024_I2696331 : public Analysis {
14  public:
15
16    /// Constructor
17    RIVET_DEFAULT_ANALYSIS_CTOR(SND_2024_I2696331);
18
19
20    /// @name Analysis methods
21    /// @{
22
23    /// Book histograms and initialise projections before the run
24    void init() {
25      // Initialise and register projections
26      declare(FinalState(), "FS");
27
28      // Book histograms
29      book(_nneutron, 1, 1, 1);
30
31      for (const string& en : _nneutron.binning().edges<0>()) {
32        double end = 2.*std::stod(en)*MeV;
33        if(isCompatibleWithSqrtS(end)) {
34          _ecms = en;
35          break;
36        }
37      }
38      if(_ecms.empty()) MSG_ERROR("Beam energy incompatible with analysis.");
39    }
40
41
42    /// Perform the per-event analysis
43    void analyze(const Event& event) {
44      const FinalState& fs = apply<FinalState>(event, "FS");
45      if (fs.particles().size()!=2) vetoEvent;
46      for (const Particle& p : fs.particles()) {
47        if(abs(p.pid())!=PID::NEUTRON) vetoEvent;
48      }
49      _nneutron->fill(_ecms);
50    }
51
52
53    /// Normalise histograms etc., after the run
54    void finalize() {
55      scale(_nneutron, crossSection()/ sumOfWeights() /nanobarn);
56    }
57
58    /// @}
59
60
61    /// @name Histograms
62    /// @{
63    BinnedHistoPtr<string> _nneutron;
64    string _ecms;
65    /// @}
66
67
68  };
69
70
71  RIVET_DECLARE_PLUGIN(SND_2024_I2696331);
72
73}