Rivet analyses
Inclusive production of K*(892), ρ0(770), and ω(783) mesons in the upsilon energy region.
Experiment: ARGUS (DORIS)
Inspire ID: 356616
Status: VALIDATED
Authors: - Peter Richardson
References: - Z.Phys. C61 (1994) 1-18
Beams: e+ e-
Beam energies: (4.7, 4.7); (5.2, 5.2); (5.3, 5.3)GeV
Run details: - e+e− analysis in the 10 GeV CMS energy range
Measurement of the inclusive production of the vector mesons K*(892), ρ0(770) and ω(783) in e+e− annihilation in the Upsilon region by the Argus Collaboration. Useful for tuning simulations of B meson and bottomium decays.
Source
code:ARGUS_1993_I356616.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"
namespace Rivet {
/// @brief ARGUS vector meson production
///
/// @author Peter Richardson
class ARGUS_1993_I356616 : public Analysis {
public:
RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1993_I356616);
void init() {
declare(UnstableParticles(), "UFS");
for (unsigned int ix=0; ix<3; ++ix) {
for (unsigned int iy=0; iy<5; ++iy) {
if (ix==2 && iy==0) continue;
book(_mult[ix][iy], ix+1, 1, iy+1);
}
}
book(_hist_cont_KStarPlus, 4, 1, 1);
book(_hist_Ups1_KStarPlus, 5, 1, 1);
book(_hist_Ups4_KStarPlus, 6, 1, 1);
book(_hist_cont_KStar0, 7, 1, 1);
book(_hist_Ups1_KStar0, 8, 1, 1);
book(_hist_Ups4_KStar0, 9, 1, 1);
book(_hist_cont_Rho0, 10, 1, 1);
book(_hist_Ups1_Rho0, 11, 1, 1);
book(_hist_Ups4_Rho0, 12, 1, 1);
book(_hist_cont_Omega, 13, 1, 1);
book(_hist_Ups1_Omega, 14, 1, 1);
book(_weightSum_cont,"TMP/weightSumcont");
book(_weightSum_Ups1,"TMP/weightSumUps1");
book(_weightSum_Ups4,"TMP/weightSumUps4");
}
void analyze(const Event& e) {
// Find the upsilons
// First in unstable final state
const UnstableParticles& ufs = apply<UnstableParticles>(e, "UFS");
Particles upsilons = ufs.particles(Cuts::pid==553 || Cuts::pid==300553);
// continuum
if (upsilons.empty()) {
_weightSum_cont->fill();
for (const Particle& p : ufs.particles()) {
int id = p.abspid();
double xp = 2.*p.E()/sqrtS();
double beta = p.p3().mod()/p.E();
if (id == 113) {
_hist_cont_Rho0->fill(xp, 1./beta);
_mult[0][1]->fill(Ecm1);
}
else if (id == 313) {
_hist_cont_KStar0->fill(xp, 1./beta);
_mult[0][2]->fill(Ecm1);
}
else if (id == 223) {
_hist_cont_Omega->fill(xp, 1./beta);
_mult[0][0]->fill(Ecm1);
}
else if (id == 323) {
_hist_cont_KStarPlus->fill(xp,1./beta);
_mult[0][3]->fill(Ecm1);
}
else if (id == 333) {
_mult[0][4]->fill(Ecm1);
}
}
}
// found an upsilon
else {
for (const Particle& ups : upsilons) {
const int parentId = ups.pid();
if(parentId == 553)
_weightSum_Ups1->fill();
else
_weightSum_Ups4->fill();
Particles unstable;
// Find the decay products we want
findDecayProducts(ups,unstable);
LorentzTransform cms_boost;
if (ups.p3().mod() > 0.001)
cms_boost = LorentzTransform::mkFrameTransformFromBeta(ups.momentum().betaVec());
double mass = ups.mass();
for( const Particle & p : unstable) {
int id = p.abspid();
FourMomentum p2 = cms_boost.transform(p.momentum());
double xp = 2.*p2.E()/mass;
double beta = p2.p3().mod()/p2.E();
if (id == 113) {
if (parentId == 553) {
_hist_Ups1_Rho0->fill(xp,1./beta);
_mult[1][1]->fill(Ecm2);
}
else {
_hist_Ups4_Rho0->fill(xp,1./beta);
_mult[2][1]->fill(Ecm3);
}
}
else if (id == 313) {
if (parentId == 553) {
_hist_Ups1_KStar0->fill(xp,1./beta);
_mult[1][2]->fill(Ecm2);
}
else {
_hist_Ups4_KStar0->fill(xp,1./beta);
_mult[2][2]->fill(Ecm3);
}
}
else if (id == 223) {
if (parentId == 553) {
_hist_Ups1_Omega->fill(xp,1./beta);
_mult[1][0]->fill(Ecm2);
}
}
else if (id == 323) {
if (parentId == 553) {
_hist_Ups1_KStarPlus->fill(xp,1./beta);
_mult[1][3]->fill(Ecm2);
}
else {
_hist_Ups4_KStarPlus->fill(xp,1./beta);
_mult[2][3]->fill(Ecm3);
}
}
else if (id == 333) {
if (parentId == 553) {
_mult[1][4]->fill(Ecm2);
}
else {
_mult[2][4]->fill(Ecm3);
}
}
}
}
}
}
void finalize() {
// multiplicities
const vector<CounterPtr> scales = {_weightSum_cont,_weightSum_Ups1,_weightSum_Ups4};
for (size_t i=0; i<scales.size(); ++i) {
if (!scales[i]->val()) continue;
for (size_t j=0; j<5; ++j) {
if (i==2 && j==0) continue;
_mult[i][j]->scaleW(1.0/ scales[i]->val());
}
}
// spectra
if (_weightSum_cont->val() > 0.) {
scale(_hist_cont_KStarPlus, 1. / *_weightSum_cont);
scale(_hist_cont_KStar0 , 1. / *_weightSum_cont);
scale(_hist_cont_Rho0 , 1. / *_weightSum_cont);
scale(_hist_cont_Omega , 1. / *_weightSum_cont);
}
if (_weightSum_Ups1->val() > 0.) {
scale(_hist_Ups1_KStarPlus, 1. / *_weightSum_Ups1);
scale(_hist_Ups1_KStar0 , 1. / *_weightSum_Ups1);
scale(_hist_Ups1_Rho0 , 1. / *_weightSum_Ups1);
scale(_hist_Ups1_Omega , 1. / *_weightSum_Ups1);
}
if (_weightSum_Ups4->val() > 0.) {
scale(_hist_Ups4_KStarPlus, 1. / *_weightSum_Ups4);
scale(_hist_Ups4_KStar0 , 1. / *_weightSum_Ups4);
scale(_hist_Ups4_Rho0 , 1. / *_weightSum_Ups4);
}
}
private:
Histo1DPtr _hist_cont_KStarPlus, _hist_Ups1_KStarPlus, _hist_Ups4_KStarPlus;
Histo1DPtr _hist_cont_KStar0, _hist_Ups1_KStar0, _hist_Ups4_KStar0 ;
Histo1DPtr _hist_cont_Rho0, _hist_Ups1_Rho0, _hist_Ups4_Rho0;
Histo1DPtr _hist_cont_Omega, _hist_Ups1_Omega;
BinnedHistoPtr<string> _mult[3][5];
CounterPtr _weightSum_cont,_weightSum_Ups1,_weightSum_Ups4;
const string Ecm1 = "10.45", Ecm2 = "9.46", Ecm3 = "10.58";
/// Recursively walk the decay tree to find decay products of @a p
void findDecayProducts(Particle mother, Particles& unstable) {
for(const Particle & p: mother.children()) {
const int id = abs(p.pid());
if (id == 113 || id == 313 || id == 323 ||
id == 333 || id == 223 ) {
unstable.push_back(p);
}
else if(!p.children().empty())
findDecayProducts(p, unstable);
}
}
};
RIVET_DECLARE_ALIASED_PLUGIN(ARGUS_1993_I356616, ARGUS_1993_S2789213);
}Aliases: - ARGUS_1993_S2789213