Rivet analyses
Spectra of D hadrons in e+e− at $\sqrt{s}=10.55\,$GeV
Experiment: CLEO (CESR)
Inspire ID: 22954
Status: VALIDATED
Authors: - Peter Richardson
References: - Phys.Rev.D 37 (1988) 1719
Beams: e+ e-
Beam energies: (5.3, 5.3)GeV
Run details: - e+ e- > hadrons
Scaled momentum spectra for D*+, D*0, D+, D0, Ds+ and Λc+ in e+e− at $\sqrt{s}=10.55\,$GeV
Source
code:CLEO_1988_I22954.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"
namespace Rivet {
/// @brief charm spectra at 10.55
class CLEO_1988_I22954 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_1988_I22954);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// projections
declare(UnstableParticles(Cuts::abspid==411 ||
Cuts::abspid==421 ||
Cuts::abspid==413 ||
Cuts::abspid==423 ||
Cuts::abspid==431 ||
Cuts::abspid==4122), "UFS");
// histos
for (unsigned int ix=0; ix<4; ++ix) {
book(_h_spect[ix],1+2*ix,1,1);
book(_h_scale[ix],2+2*ix,1,1);
book(_h_sigma[ix],14,1,1+ix);
if (ix==3) continue;
book(_h_spect[4+ix], 9+ix,1,1);
}
book(_h_scale[4],12,1,1);
for (unsigned int ix=0;ix<2;++ix) {
for (unsigned int iy=0;iy<7;++iy) {
book(_h_sigma_br[ix][iy],13,1+ix,1+iy);
}
}
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
for (const Particle& p : ufs.particles()) {
double Emax = 0.5*sqrtS();
double pmax = sqrt(sqr(Emax)-p.mass2());
double xp = (p.E()+p.p3().mod())/(Emax+pmax);
if (p.abspid()==413) {
_h_spect[0]->fill(xp);
_h_scale[0]->fill(xp);
_h_spect[1]->fill(xp);
_h_scale[1]->fill(xp);
_h_sigma[2]->fill("10.55"s);
for (unsigned int ix=0; ix<2; ++ix) {
_h_sigma_br[ix][2]->fill(xp);
}
for (unsigned int ix=0; ix<2; ++ix) {
_h_sigma_br[ix][3]->fill(xp);
}
}
else if (p.abspid()==421) {
_h_spect[2]->fill(xp);
_h_scale[2]->fill(xp);
_h_sigma[0]->fill("10.55"s);
for (unsigned int ix=0; ix<2; ++ix) {
_h_sigma_br[ix][0]->fill(xp);
}
}
else if (p.abspid()==411) {
_h_spect[3]->fill(xp);
_h_scale[3]->fill(xp);
_h_sigma[1]->fill("10.55"s);
for (unsigned int ix=0; ix<2; ++ix) {
_h_sigma_br[ix][1]->fill(xp);
}
}
else if (p.abspid()==431) {
_h_spect[4]->fill(xp);
for (unsigned int ix=0;ix<2;++ix) {
_h_sigma_br[ix][5]->fill(xp);
}
}
else if (p.abspid()==4122) {
_h_spect[5]->fill(xp);
for (unsigned int ix=0;ix<2;++ix) {
_h_sigma_br[ix][6]->fill(xp);
}
}
else if (p.abspid()==423) {
_h_spect[6]->fill(xp);
_h_scale[4]->fill(xp);
_h_sigma[3]->fill("10.55"s);
for (unsigned int ix=0;ix<2;++ix) {
_h_sigma_br[ix][4]->fill(xp);
}
}
}
}
/// Normalise histograms etc., after the run
void finalize() {
const vector<double> br = {0.677*0.03947,0.677*0.0822,0.03947,0.0938,0.045,0.0628,0.03947};
const double fact1 = crossSection()/picobarn/sumOfWeights();
const double fact2 = crossSection()/nanobarn/sumOfWeights()*sqr(sqrtS());
for (unsigned int ix=0; ix<7; ++ix) {
scale(_h_spect[ix],fact1*br[ix]);
if (ix>4) continue;
scale(_h_scale[ix],fact2);
if (ix==4) continue;
scale(_h_sigma[ix],fact1*1e-3);
}
const double width[2]={1.,0.5};
for (unsigned int ix=0; ix<2; ++ix) {
scale(_h_sigma_br[ix][0],width[ix]*fact1*br[2]);
scale(_h_sigma_br[ix][1],width[ix]*fact1*br[3]);
scale(_h_sigma_br[ix][2],width[ix]*fact1*br[0]);
scale(_h_sigma_br[ix][3],width[ix]*fact1*br[1]);
scale(_h_sigma_br[ix][4],width[ix]*fact1*br[6]);
scale(_h_sigma_br[ix][5],width[ix]*fact1*br[4]);
scale(_h_sigma_br[ix][6],width[ix]*fact1*br[5]);
}
}
/// @}
/// @name Histograms
/// @{
Histo1DPtr _h_spect[7],_h_scale[5],_h_sigma_br[2][7];
BinnedHistoPtr<string> _h_sigma[4];
/// @}
};
RIVET_DECLARE_PLUGIN(CLEO_1988_I22954);
}