rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

MARKI_1975_I100733

Measurement of $R$ and the hadronic cross section for energies between 2.4 and 6.9 GeV
Experiment: MARKI (Spear)
Inspire ID: 100733
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • https://doi.org/10.17182/hepdata.18759
Beams: e- e+
Beam energies: ANY
Run details:
  • e+ e- to hadrons and e+ e- to mu+ mu- (for normalization). Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Measurement of $R$ and the hadronic cross section for energies between 2.4 and 6.9 GeV. The charged hadron spectum at 3, 4.8 and 7.4 GeV is also measured. The muonic cross sections is also outputted to the yoda file so that ratio $R$ can be recalcuated if runs are combined. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: MARKI_1975_I100733.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief Add a short analysis description here
  9  class MARKI_1975_I100733 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(MARKI_1975_I100733);
 14
 15
 16    /// @name Analysis methods
 17    //@{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21
 22      declare(FinalState(), "FS");
 23      // Book histograms
 24      book(_c_hadrons, "/TMP/sigma_hadrons");
 25      book(_c_muons, "/TMP/sigma_muons");
 26      if(isCompatibleWithSqrtS(3.))
 27      	book(_h_charged, 3, 1, 1);
 28      else if(isCompatibleWithSqrtS(4.8))
 29        book(_h_charged, 3, 1, 2);
 30      else if(isCompatibleWithSqrtS(7.4))
 31        book(_h_charged, 3, 1, 3);
 32    }
 33
 34
 35    /// Perform the per-event analysis
 36    void analyze(const Event& event) {
 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      // mu+mu- + photons
 46      if(nCount[-13]==1 and nCount[13]==1 &&
 47      	 ntotal==2+nCount[22])
 48      	_c_muons->fill();
 49      // everything else
 50      else {
 51      	_c_hadrons->fill();
 52	if(_h_charged) {
 53	  for (const Particle& p : fs.particles()) {
 54	    if(PID::isCharged(p.pid())) {
 55	      double x = 2.*p.p3().mod()/sqrtS();
 56	      _h_charged->fill(x);
 57	    }
 58	  }
 59	}
 60      }
 61    }
 62
 63
 64    /// Normalise histograms etc., after the run
 65    void finalize() {
 66      if(_h_charged) {
 67      	scale(_h_charged, crossSection()/ sumOfWeights() /microbarn*sqr(sqrtS()));
 68      }
 69      // R
 70      Scatter1D R = *_c_hadrons/ *_c_muons;
 71      double              rval = R.point(0).x();
 72      pair<double,double> rerr = R.point(0).xErrs();
 73      double fact = crossSection()/ sumOfWeights() /nanobarn;
 74      double sig_h = _c_hadrons->val()*fact;
 75      double err_h = _c_hadrons->err()*fact;
 76      double sig_m = _c_muons  ->val()*fact;
 77      double err_m = _c_muons  ->err()*fact;
 78      Scatter2D temphisto(refData(1, 1, 1));
 79      Scatter2DPtr hadrons;
 80      book(hadrons, 1,1,1);
 81      Scatter2DPtr muons;
 82      book(muons, "sigma_muons"  );
 83      Scatter2DPtr mult;
 84      book(mult, 2,1,1);
 85      for (size_t b = 0; b < temphisto.numPoints(); b++) {
 86      	const double x  = temphisto.point(b).x();
 87      	pair<double,double> ex = temphisto.point(b).xErrs();
 88      	pair<double,double> ex2 = ex;
 89      	if(ex2.first ==0.) ex2. first=0.0001;
 90      	if(ex2.second==0.) ex2.second=0.0001;
 91      	if (inRange(sqrtS()/GeV, x-ex2.first, x+ex2.second)) {
 92      	  mult   ->addPoint(x, rval, ex, rerr);
 93      	  hadrons->addPoint(x, sig_h, ex, make_pair(err_h,err_h));
 94      	  muons  ->addPoint(x, sig_m, ex, make_pair(err_m,err_m));
 95      	}
 96      	else {
 97      	  mult   ->addPoint(x, 0., ex, make_pair(0.,.0));
 98      	  hadrons->addPoint(x, 0., ex, make_pair(0.,.0));
 99      	  muons  ->addPoint(x, 0., ex, make_pair(0.,.0));
100      	}
101      }
102    }
103
104    //@}
105
106
107    /// @name Histograms
108    //@{
109    CounterPtr _c_hadrons, _c_muons;
110    Histo1DPtr _h_charged;
111    //@}
112
113
114  };
115
116
117  // The hook for the plugin system
118  RIVET_DECLARE_PLUGIN(MARKI_1975_I100733);
119
120
121}