rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

HRS_1986_I18688

$f_2(1270)$, $f_0(980)$ and $K_2(1430)^0$ spectra at 29 GeV
Experiment: HRS (HRS)
Inspire ID: 18688
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 57 (1986) 1990
Beams: e+ e-
Beam energies: (14.5, 14.5) GeV
    No run details listed

Measurement of the $f_2(1270)$, $f_0(980)$ and $K_2(1430)^0$ spectra at 29 GeV by the HRS experiment.

Source code: HRS_1986_I18688.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief f_2, f_0 and K_2 spectra at 29 GeV
 9  class HRS_1986_I18688 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(HRS_1986_I18688);
14
15    /// @name Analysis methods
16    ///@{
17
18    /// Book histograms and initialise projections before the run
19    void init() {
20      declare(UnstableParticles(), "UFS");
21      book(_h_f2,1,1,1);
22      book(_h_f0,1,1,2);
23      book(_h_K2,1,1,3);
24    }
25
26
27    /// Perform the per-event analysis
28    void analyze(const Event& event) {
29      if (_edges.empty())  _edges = _h_f2->xEdges();
30      UnstableParticles ufs = apply<UnstableParticles>(event,"UFS");
31      for (const Particle& p : ufs.particles(Cuts::abspid==9010221 ||
32                                             Cuts::abspid==225 ||
33                                             Cuts::abspid==315)) {
34      	Vector3 mom3 = p.p3();
35        const double energy = p.E();
36      	double modp = mom3.mod();
37      	double beta = modp/energy;
38      	double xE = 2.*modp/sqrtS();
39        if (p.pid()==225) {
40          _h_f2->fill(map2string(xE), 1./beta);
41        }
42        else if (p.pid()==315) {
43          _h_K2->fill(map2string(xE), 1./beta);
44        }
45        else {
46          _h_f0->fill(map2string(xE), 1./beta);
47        }
48      }
49    }
50
51
52    /// Normalise histograms etc., after the run
53    void finalize() {
54      scale( _h_f0, sqr(sqrtS())*crossSection()/nanobarn/sumOfWeights());
55      scale( _h_f2, sqr(sqrtS())*crossSection()/nanobarn/sumOfWeights());
56      scale( _h_K2, sqr(sqrtS())*crossSection()/nanobarn/sumOfWeights());
57      for( auto & hist : {_h_f0,_h_f2,_h_K2} ) {
58        for(auto & b: hist->bins()) {
59          const size_t idx = b.index();
60          b.scaleW(1./_axis.width(idx));
61        }
62      }
63    }
64
65    ///@}
66
67    string map2string(const double value) const {
68      const size_t idx = _axis.index(value);
69      if (idx && idx <= _edges.size())  return _edges[idx-1];
70      return "OTHER";
71    }
72
73    /// @name Histograms
74    ///@{
75    BinnedHistoPtr<string> _h_f0, _h_f2, _h_K2;
76    YODA::Axis<double> _axis{0.1, 0.2, 0.3, 0.4, 0.7};
77    vector<string> _edges;
78    ///@}
79
80
81  };
82
83
84  RIVET_DECLARE_PLUGIN(HRS_1986_I18688);
85
86}