rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2017_I1621593

$e^+e^-\to \pi^+\pi^-\pi^0\pi^0$ cross section from 0.85 to 4.5 GeV
Experiment: BABAR (PEP-II)
Inspire ID: 1621593
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D96 (2017) no.9, 092009
Beams: e+ e-
Beam energies: ANY
Run details:
  • e+ e- to hadrons

Measurement of the cross section for $e^+e^-\to \pi^+\pi^-\pi^0\pi^0$ between 0.85 to 4.5 GeV using radiative return.

Source code: BABAR_2017_I1621593.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4#include "Rivet/Projections/FinalState.hh"
 5
 6
 7namespace Rivet {
 8
 9
10  /// @brief e+e- > pi+ pi- 2pi0 (including omega)
11  class BABAR_2017_I1621593 : public Analysis {
12  public:
13
14    /// Constructor
15    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2017_I1621593);
16
17
18    /// @name Analysis methods
19    /// @{
20
21    /// Book histograms and initialise projections before the run
22    void init() {
23
24      // Initialise and register projections
25      declare(FinalState(), "FS");
26      declare(UnstableParticles(), "UFS");
27
28      book(_num4pi,   "TMP/num4");
29      book(_numOmega, "TMP/numOmega");
30      _mult.resize(2);
31      book(_mult[0], 1, 1, 1);
32      book(_mult[1], 2, 1, 1);
33
34    }
35
36
37    /// Perform the per-event analysis
38    void analyze(const Event& event) {
39      const FinalState& fs = apply<FinalState>(event, "FS");
40
41      map<long,int> nCount;
42      int ntotal(0);
43      for (const Particle& p : fs.particles()) {
44        nCount[p.pid()] += 1;
45        ++ntotal;
46      }
47      if(ntotal!=4) vetoEvent;
48      if(nCount[-211]==1&&nCount[211]==1&&nCount[111]==2) {
49        _num4pi->fill();
50        const FinalState& ufs = apply<FinalState>(event, "UFS");
51        if (!ufs.particles(Cuts::pid==223).empty()) {
52          _numOmega->fill();
53        }
54      }
55
56    }
57
58
59    /// Normalise histograms etc., after the run
60    void finalize() {
61
62      for(size_t ix=1;ix<3;++ix) {
63        double sigma,error;
64        if(ix==1) {
65          sigma = _num4pi->val();
66          error = _num4pi->err();
67        }
68        else {
69          sigma = _numOmega->val();
70          error = _numOmega->err();
71        }
72        sigma *= crossSection()/ sumOfWeights() /nanobarn;
73        error *= crossSection()/ sumOfWeights() /nanobarn;
74        for (auto& b : _mult[ix-1]->bins()) {
75          if (inRange(sqrtS()/GeV, b.xMin(), b.xMax())) {
76            b.set(sigma, error);
77          }
78        }
79      }
80    }
81
82    /// @}
83
84    /// @name Histograms
85    /// @{
86    CounterPtr _num4pi, _numOmega;
87    vector<Estimate1DPtr> _mult;
88    /// @}
89
90
91  };
92
93
94  RIVET_DECLARE_PLUGIN(BABAR_2017_I1621593);
95
96
97}