Rivet analyses


title: ARGUS_1989_I278932

Spectrum of $\Delta^{++}$ baryons produced in $\Upsilon(1S)$ decays

Experiment: ARGUS (DORIS)

Inspire ID: 278932

Status: VALIDATED

Authors: - Peter Richardson

References: - Phys. Lett. B230 169-174

Beams: * *

Beam energies: ANY

Run details: - e+e- to hadrons

Measurement of the production rate of $\Delta^{++}$ baryons in $\Upsilon(1S)$ decays and the nearby continuum. The momentum spectrum in $\Upsilon(1S)$ decays is measured, but not that in the continuum.

Source code:ARGUS_1989_I278932.cc

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

/// @brief Delta++ rate and spectrum class ARGUS_1989_I278932 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1989_I278932);


/// @name Analysis methods
/// @{

/// Book histograms and initialise projections before the run
void init() {
  // Initialise and register projections
  declare(UnstableParticles(), "UFS");
  // histograms
  book(_r_ups, 1, 1, 2);
  book(_r_cont, 2, 1, 2);
  book(_h_p, 3, 1, 1);
  book(_w_ups, "TMP/w_ups");
  book(_w_cont, "TMP/w_cont");
}


/// Recursively walk the decay tree to find decay products of @a p
void findDecayProducts(Particle mother, Particles& delta) {
  // dleta pdg code
  static const long id = 2224;
  for (const Particle& p : mother.children()) {
    if (p.abspid() == id) {
      delta.push_back(p);
    }
    else if (!p.children().empty()) {
      findDecayProducts(p, delta);
    }
  }
}

/// Perform the per-event analysis
void analyze(const Event& event) {
  UnstableParticles ufs = apply<UnstableParticles>(event, "UFS");
  Particles ups = ufs.particles(Cuts::pid == 553);
  // continuum
  if (ups.empty()) {
    _w_cont->fill();
    _r_cont->fill(Ecm2, ufs.particles(Cuts::abspid == 2224).size());
  }
  // upsilon decays
  else {
    for (const Particle& p : ups) {
      _w_ups->fill();
      Particles delta;
      findDecayProducts(p, delta);
      if (delta.empty()) continue;
      LorentzTransform boost;
      if (p.p3().mod() > 1 * MeV) {
        boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
      }
      for (const Particle& del : delta) {
        _r_ups->fill(Ecm1);
        double mom = boost.transform(del.momentum()).p3().mod();
        _h_p->fill(mom);
      }
    }
  }
}


/// Normalise histograms etc., after the run
void finalize() {
  if (_w_cont->effNumEntries() > 0) {
    scale(_r_cont, 1. / *_w_cont);
  }
  // direct upsilon decays, i.e. to gg gamma and ggg so need to renormalize
  // factor and values from arxiv:0612019
  if (_w_ups->effNumEntries() > 0) {
    const double Bmumu = 0.0249, rhad = 3.56;
    const double fact = 1. - (3. + rhad) * Bmumu;
    scale(_r_ups, 1. / fact / *_w_ups);
    scale(_h_p, 100. / fact / *_w_ups);
  }
}

/// @}


/// @name Histograms
/// @{
BinnedHistoPtr<string> _r_ups, _r_cont;
Histo1DPtr _h_p;
CounterPtr _w_ups, _w_cont;
const string Ecm1 = "9.46", Ecm2 = "10.2";
/// @}

};

RIVET_DECLARE_PLUGIN(ARGUS_1989_I278932);

} ```