Processing math: 100%
rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ARGUS_1994_I375418

Visible hadronic cross section near the Υ(1S), Υ(2S) and Υ(4S) resonances
Experiment: ARGUS (DORIS)
Inspire ID: 375418
Status: VALIDATED NOHEPDATA SINGLEWEIGHT
Authors:
  • Peter Richardson
References:
  • Z.Phys.C 65 (1995) 619-626
Beams: e- e+
Beam energies: ANY
Run details:
  • e+ e- to hadrons including the Upsilon resonances

Measurement of the visible hadronic cross section near the Υ(1S), Υ(2S) and Υ(4S) resonances. As the analyses requires the beam energy smearing described in the paper then central CMS energy should be specified using the ECENT (in GeV) option.

Source code: ARGUS_1994_I375418.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4#include "Rivet/Projections/ChargedFinalState.hh"
 5
 6namespace Rivet {
 7
 8
 9  /// @brief e+ e- > hadrons near Upsilon resonances
10  class ARGUS_1994_I375418 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1994_I375418);
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      declare(ChargedFinalState(), "CFS");
26
27      // Book histograms
28      for(unsigned int ix=0;ix<3;++ix)
29        book(_sigma[ix], 1+ix,1,1);
30      _eCent = getOption<string>("ECENT", std::to_string(sqrtS()/MeV));
31    }
32
33
34    /// Perform the per-event analysis
35    void analyze(const Event& event) {
36      if (apply<ChargedFinalState>(event,"CFS").particles().size()<3) vetoEvent;
37      const FinalState& fs = apply<FinalState>(event, "FS");
38      map<long,int> nCount;
39      int ntotal(0);
40      for (const Particle& p : fs.particles()) {
41        nCount[p.pid()] += 1;
42        ++ntotal;
43      }
44      // mu+mu- + photons
45      if (nCount[-13]==1 and nCount[13]==1 && ntotal==2+nCount[22]) {
46        vetoEvent;
47      }
48      else if (nCount[-11]==1 and nCount[11]==1 && ntotal==2+nCount[22]) {
49        vetoEvent;
50      }
51      else { // everything else
52        _sigma[0]->fill(_eCent);
53        _sigma[1]->fill(_eCent);
54        double H0=0.,H2=0;
55        for (unsigned int ix=0; ix<fs.particles().size(); ++ix) {
56          double p1 = fs.particles()[ix].p3().mod();
57          for (unsigned int iy=0; iy<fs.particles().size(); ++iy) {
58            double p2 = fs.particles()[iy].p3().mod();
59            double cTheta=fs.particles()[ix].p3().dot(fs.particles()[iy].p3())/p1/p2;
60            double pre=p1*p2/s;
61            H0 += pre;
62            H2 += 0.5*pre*(3.*sqr(cTheta)-1);
63          }
64        }
65        if (H2/H0<0.35) _sigma[2]->fill(_eCent);
66      }
67    }
68
69
70    /// Normalise histograms etc., after the run
71    void finalize() {
72      scale(_sigma, crossSection()/sumOfWeights()/nanobarn);
73    }
74
75    /// @}
76
77
78    /// @name Histograms
79    /// @{
80    BinnedHistoPtr<string> _sigma[3];
81    string _eCent;
82    /// @}
83
84
85  };
86
87
88  RIVET_DECLARE_PLUGIN(ARGUS_1994_I375418);
89
90}