Rivet analyses
Charm cross sections and spectra at 4.03 and 4.14 GeV
Experiment: BES (BEPC)
Inspire ID: 508349
Status: VALIDATED
Authors: - Peter Richardson
References: - Phys.Rev. D62 (2000) 012002
Beams: e+ e-
Beam energies: (2.0, 2.0); (2.1, 2.1)GeV
Run details: - e+e- to hadrons.
Measurement of the total cvharm cross section, together with the D0, D+ rates and spectra at 4.03 and 4.14 GeV by the BES collaboration.
Source
code:BES_1999_I508349.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"
namespace Rivet {
/// @brief charm cross sections
class BES_1999_I508349 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(BES_1999_I508349);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
declare(UnstableParticles(), "UFS");
for (size_t ix = 0; ix < 4; ++ix) {
book(_nD[ix], 1, 1, 1 + ix);
}
_edge = "4.03";
for (double eVal : allowedEnergies()) {
const string en = toString(round(eVal / MeV));
if (isCompatibleWithSqrtS(eVal)) {
_sqs = en;
if (en == "4140"s) _edge = "4.14";
}
size_t ih = en == "4140"s;
book(_h_D0[en], 2 + ih, 1, 1);
book(_h_Dp[en], 2 + ih, 1, 2);
}
raiseBeamErrorIf(_sqs.empty());
}
/// Perform the per-event analysis
void analyze(const Event& event) {
double nD0(0), nDp(0), nDs(0);
for (const Particle& p :
apply<UnstableParticles>(event, "UFS")
.particles(Cuts::abspid == 411 or Cuts::abspid == 421 or Cuts::abspid == 431)) {
if (p.abspid() == 421) {
_h_D0[_sqs]->fill(p.mom().p3().mod());
++nD0;
}
else if (p.abspid() == 411) {
_h_Dp[_sqs]->fill(p.mom().p3().mod());
++nDp;
}
else {
++nDs;
}
}
_nD[0]->fill(_edge, 0.5 * nD0);
_nD[1]->fill(_edge, 0.5 * nDp);
_nD[2]->fill(_edge, 0.5 * nDs);
_nD[3]->fill(_edge, 0.5 * (nD0 + nDp + nDs));
}
/// Normalise histograms etc., after the run
void finalize() {
const double fact = crossSection() / sumOfWeights() / nanobarn;
scale(_h_D0, 0.5 * fact);
scale(_h_Dp, 0.5 * fact);
scale(_nD, fact);
}
/// @}
/// @name Histograms
/// @{
BinnedHistoPtr<string> _nD[4];
map<string, Histo1DPtr> _h_D0, _h_Dp;
string _sqs = "", _edge = "";
/// @}
};
RIVET_DECLARE_PLUGIN(BES_1999_I508349);
}