Rivet analyses
Cross section for e+e− → DD̄ near the ψ(3770) resonance
Experiment: BESIII (BEPC)
Inspire ID: 1794583
Status: VALIDATED NOHEPDATA
Authors: - Peter Richardson
References: - Phys.Rev.D 109 (2024) 11, 114010 - arXiv: 2404.03896 - URN/HDL:11299/199064
Beams: e+ e-
Beam energies: (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9)GeV
Run details: - e+ e- > hadrons
Measurement of the cross section for e+e− → DD̄ near the ψ(3770) resonance. The experimental values are taken from PhD thesis of A. Julin together with the extraction of the Born cross section from Phys.Rev.D 109 (2024) 11, 114010.
Source
code:BESIII_2017_I1794583.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"
namespace Rivet {
/// @brief e+e- -> D Dbar
class BESIII_2017_I1794583 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2017_I1794583);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
declare(FinalState(), "FS");
declare(UnstableParticles(Cuts::abspid==411 || Cuts::abspid==421), "UFS");
book(_sigma[0], 1, 1, 1);
book(_sigma[1], 2, 1, 1);
for (const string& en : _sigma[0].binning().edges<0>()) {
const double eval = stod(en)*GeV;
if (isCompatibleWithSqrtS(eval)) {
_sqs = en; break;
}
}
raiseBeamErrorIf(_sqs.empty());
}
void findChildren(const Particle& p, map<long,int>& nRes, int &ncount) const {
for (const Particle& child : p.children()) {
if (child.children().empty()) {
nRes[child.pid()]-=1;
--ncount;
}
else {
findChildren(child,nRes,ncount);
}
}
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const FinalState& fs = apply<FinalState>(event, "FS");
map<long,int> nCount;
int ntotal(0);
for (const Particle& p : fs.particles()) {
nCount[p.pid()] += 1;
++ntotal;
}
const FinalState& ufs = apply<FinalState>(event, "UFS");
for (size_t ix=0; ix<ufs.particles().size(); ++ix) {
const Particle& p1 = ufs.particles()[ix];
map<long,int> nRes = nCount;
int ncount = ntotal;
findChildren(p1,nRes,ncount);
bool matched=false;
for (size_t iy=ix+1; iy<ufs.particles().size(); ++iy) {
const Particle& p2 = ufs.particles()[iy];
if (p2.pid() != -p1.pid()) continue;
if (!p2.parents().empty() && p2.parents()[0].pid()==p1.pid()) continue;
map<long,int> nRes2 = nRes;
int ncount2 = ncount;
findChildren(p2,nRes2,ncount2);
if (ncount2!=0) continue;
matched=true;
for (const auto& val : nRes2) {
if (val.second!=0) {
matched = false;
break;
}
}
if (matched) break;
}
if (matched) {
_sigma[int(p1.abspid()!=421)]->fill(_sqs);
break;
}
}
}
/// Normalise histograms etc., after the run
void finalize() {
scale(_sigma, crossSection()/sumOfWeights()/nanobarn);
}
/// @}
/// @name Histograms
/// @{
BinnedHistoPtr<string> _sigma[2];
string _sqs = "";
/// @}
};
RIVET_DECLARE_PLUGIN(BESIII_2017_I1794583);
}