rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BESIII_2021_I1929314

Cross sections for $e^+e^-\to$ $K^+K^-\pi^+\pi^-(\pi^0)$, $K^+K^-K^+K^-(\pi^0)$, $\pi^+\pi^-\pi^+\pi^-(\pi^0)$ and $p\bar{p}\pi^+\pi^-(\pi^0)$ between 3.773 and 4.6 GeV
Experiment: BESIII (BEPC)
Inspire ID: 1929314
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 104 (2021) 11, 112009
Beams: e+ e-
Beam energies: (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (2.0, 2.0); (2.0, 2.0); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.3, 2.3); (2.3, 2.3); (2.3, 2.3) GeV
Run details:
  • e+e- to hadrons

Measurement of the dressed cross sections for $e^+e^-\to$ $K^+K^-\pi^+\pi^-(\pi^0)$, $K^+K^-K^+K^-(\pi^0)$, $\pi^+\pi^-\pi^+\pi^-(\pi^0)$ and $p\bar{p}\pi^+\pi^-(\pi^0)$ between 3.773 and 4.6 GeV by the BESIII collaboration. There were three duplicate energy points in the data, for these points the one with higher statistics was retained. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: BESIII_2021_I1929314.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief e+e- -> 4 charged particles (+pi0) cross sections
 9  class BESIII_2021_I1929314 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2021_I1929314);
14
15
16    /// @name Analysis methods
17    /// @{
18
19    /// Book histograms and initialise projections before the run
20    void init() {
21      declare(FinalState(), "FS");
22      for (unsigned int ix=0;ix<8;++ix) {
23        book(_nCharged[ix], 1, 1, ix+1);
24      }
25
26      for (const string& en : _nCharged[0].binning().edges<0>()) {
27        const double end = std::stod(en)*GeV;
28        if (isCompatibleWithSqrtS(end)) {
29          _ecms = en;
30          break;
31        }
32      }
33      if(_ecms.empty()) MSG_ERROR("Beam energy incompatible with analysis.");
34    }
35
36
37    /// Perform the per-event analysis
38    void analyze(const Event& event) {
39      const FinalState& fs = apply<FinalState>(event, "FS");
40      map<long,int> nCount;
41      int ntotal(0);
42      for (const Particle& p : fs.particles()) {
43	nCount[p.pid()] += 1;
44	++ntotal;
45      }
46      if(ntotal==4) {
47	if(nCount[211]==1 && nCount[-211]==1) {
48	  if(nCount[321]==1 && nCount[-321]==1 )
49	    _nCharged[0]->fill(_ecms);
50	  else if(nCount[2212]==1 && nCount[-2212]==1 )
51	    _nCharged[3]->fill(_ecms);
52	}
53	else if(nCount[321]==2 && nCount[-321]==2 )
54	  _nCharged[1]->fill(_ecms);
55	else if (nCount[211]==2 && nCount[-211]==2 )
56	  _nCharged[2]->fill(_ecms);
57      }
58      else if(ntotal==5 && nCount[111]==1) {
59	if(nCount[211]==1 && nCount[-211]==1) {
60	  if(nCount[321]==1 && nCount[-321]==1 )
61	    _nCharged[4]->fill(_ecms);
62	  else if(nCount[2212]==1 && nCount[-2212]==1 )
63	    _nCharged[7]->fill(_ecms);
64	}
65	else if(nCount[321]==2 && nCount[-321]==2 )
66	  _nCharged[5]->fill(_ecms);
67	else if (nCount[211]==2 && nCount[-211]==2 )
68	  _nCharged[6]->fill(_ecms);
69      }
70    }
71
72
73    /// Normalise histograms etc., after the run
74    void finalize() {
75      double fact = crossSection()/ sumOfWeights() /picobarn;
76      for (unsigned int ix=0;ix<8;++ix)
77        scale(_nCharged[ix],fact);
78    }
79    /// @}
80
81
82    /// @name Histograms
83    /// @{
84    BinnedHistoPtr<string> _nCharged[8];
85    string _ecms;
86    /// @}
87
88
89  };
90
91
92  RIVET_DECLARE_PLUGIN(BESIII_2021_I1929314);
93
94}