Rivet analyses referenceSND_2024_I2809918Cross section for $e^+e^-\to K^0_SK^0_L$ near the $\phi$ resonanceExperiment: SND (VEPP-2000) Inspire ID: 2809918 Status: VALIDATED NOHEPDATA Authors:
Beam energies: (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.5, 0.5); (0.6, 0.6) GeV Run details:
Cross section for $e^+e^-\to K^0_SK^0_L$ near the $\phi$ resonance Source code: SND_2024_I2809918.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4
5namespace Rivet {
6
7
8 /// @brief e+e- > KS0 KL0
9 class SND_2024_I2809918 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(SND_2024_I2809918);
14
15 /// @name Analysis methods
16 /// @{
17
18 /// Book histograms and initialise projections before the run
19 void init() {
20 declare(FinalState(), "FS");
21 book(_nK0K0, 1, 1, 1);
22 for (const string& en : _nK0K0.binning().edges<0>()) {
23 const double end = std::stod(en)*MeV;
24 if (isCompatibleWithSqrtS(end)) {
25 _ecms = en;
26 break;
27 }
28 }
29 if (_ecms.empty())
30 MSG_ERROR("Beam energy incompatible with analysis.");
31 }
32
33
34 /// Perform the per-event analysis
35 void analyze(const Event& event) {
36
37 const FinalState& fs = apply<FinalState>(event, "FS");
38
39 map<long,int> nCount;
40 int ntotal(0);
41 for (const Particle& p : fs.particles()) {
42 nCount[p.pid()] += 1;
43 ++ntotal;
44 }
45 if(ntotal==2 &&
46 nCount[130]==1 && nCount[310]==1)
47 _nK0K0->fill(_ecms);
48
49 }
50
51
52 /// Normalise histograms etc., after the run
53 void finalize() {
54 scale(_nK0K0, crossSection()/ sumOfWeights() /nanobarn);
55 }
56
57 /// @}
58
59 /// @name Histograms
60 /// @{
61 BinnedHistoPtr<string> _nK0K0;
62 string _ecms;
63 /// @}
64
65 };
66
67
68 RIVET_DECLARE_PLUGIN(SND_2024_I2809918);
69
70}
|