Rivet analyses
Cross section for e+e− → Υ(1, 2S) → μ+μ−
Experiment: CRYSTAL_BALL (DORIS)
Inspire ID: 306832
Status: VALIDATED
Authors: - Peter Richardson
References: - Z.Phys.C 53 (1992) 193-206
Beams: e+ e-
Beam energies: ANY
Run details: - e+e- > Upslion(1,2S) -> mu+mu-
Cross section for e+e− → Υ(1, 2S) → μ+μ−. The continuum contribution was subtracted. As the analyses requires the beam energy smearing described in the paper then central CMS energy should be specified using the ECENT (in MeV) option..
Source
code:CRYSTAL_BALL_1992_I306832.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/Beam.hh"
#include "Rivet/Projections/FinalState.hh"
namespace Rivet {
/// @brief e+e- to Upsilon to mu+mu-
class CRYSTAL_BALL_1992_I306832 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(CRYSTAL_BALL_1992_I306832);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
declare(Beam(), "Beams");
declare(FinalState(), "FS");
// histograms
for(unsigned int ix=0;ix<2;++ix)
book(_c[ix], 1+ix, 1, 1);
_eCent = getOption<string>("ECENT", std::to_string(sqrtS()/MeV));
}
/// Perform the per-event analysis
void analyze(const Event& event) {
// loop over FS particles
Particles fs = apply<FinalState>(event,"FS").particles();
Particles mm,mp;
for (const Particle& p : fs) {
if (p.abspid()==PID::MUON) {
if (p.pid()>0) mm.push_back(p);
else mp.push_back(p);
}
else if(p.pid()!=PID::GAMMA) {
vetoEvent;
}
}
if (mm.size()==1 && mp.size()==1) {
_c[0]->fill(_eCent);
_c[1]->fill(_eCent);
}
}
/// Normalise histograms etc., after the run
void finalize() {
double fact = crossSection()/ sumOfWeights() /picobarn;
for (unsigned int ix=0; ix<2; ++ix)
scale(_c[ix],fact);
}
/// @}
/// @name Histograms
/// @{
BinnedHistoPtr<string> _c[2];
string _eCent;
/// @}
};
RIVET_DECLARE_PLUGIN(CRYSTAL_BALL_1992_I306832);
}