Rivet analyses


title: ARGUS_1993_I340894

Inclusive production of charged pions, kaons and protons in $\Upsilon(4S)$ decays.

Experiment: ()

Inspire ID: 340894

Status: VALIDATED

Authors: - Peter Richardson

References: - Z.Phys. C58 (1993) 191-198

Beams: e+ e-

Beam energies: (5.3, 5.3)GeV

Run details: - $e^+ e^-$ analysis on the $\Upsilon(4S)$ resonance.

Measurement of inclusive production of charged pions, kaons and protons from $\Upsilon(4S)$ decays. Kaon spectra are determined in two different ways using particle identification and detecting decays in-flight. Results are background continuum subtracted. This analysis is useful for tuning $B$ meson decay modes.

Source code:ARGUS_1993_I340894.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

/// @brief ARGUS pi+/-, K+/- and proton/antiproton spectrum at Upsilon(4S) /// /// @author Peter Richardson class ARGUS_1993_I340894 : public Analysis { public:

RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1993_I340894);


void analyze(const Event& e) {
  // Find the upsilons
  const UnstableParticles& ufs = apply<UnstableParticles>(e, "UFS");
  for (const Particle& p : ufs.particles(Cuts::pid == 300553)) {
    _weightSum->fill();
    Particles pionsA, pionsB, protonsA, protonsB, kaons;
    // Find the decay products we want
    findDecayProducts(p, pionsA, pionsB, protonsA, protonsB, kaons);
    LorentzTransform cms_boost;
    if (p.p3().mod() > 1 * MeV)
      cms_boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
    for (size_t ix = 0; ix < pionsA.size(); ++ix) {
      FourMomentum ptemp(pionsA[ix].momentum());
      FourMomentum p2 = cms_boost.transform(ptemp);
      double pcm = cms_boost.transform(ptemp).vector3().mod();
      _histPiA->fill(pcm);
    }
    _multPiA->fill(Ecm, double(pionsA.size()));
    for (size_t ix = 0; ix < pionsB.size(); ++ix) {
      double pcm = cms_boost.transform(pionsB[ix].momentum()).vector3().mod();
      _histPiB->fill(pcm);
    }
    _multPiB->fill(Ecm, double(pionsB.size()));
    for (size_t ix = 0; ix < protonsA.size(); ++ix) {
      double pcm = cms_boost.transform(protonsA[ix].momentum()).vector3().mod();
      _histpA->fill(pcm);
    }
    _multpA->fill(Ecm, double(protonsA.size()));
    for (size_t ix = 0; ix < protonsB.size(); ++ix) {
      double pcm = cms_boost.transform(protonsB[ix].momentum()).vector3().mod();
      _histpB->fill(pcm);
    }
    _multpB->fill(Ecm, double(protonsB.size()));
    for (size_t ix = 0; ix < kaons.size(); ++ix) {
      double pcm = cms_boost.transform(kaons[ix].momentum()).vector3().mod();
      _histKA->fill(pcm);
      _histKB->fill(pcm);
    }
    _multK->fill(Ecm, double(kaons.size()));
  }
}


void finalize() {
  if (_weightSum->val() > 0.) {
    scale(_histPiA, 1. / *_weightSum);
    scale(_histPiB, 1. / *_weightSum);
    scale(_histKA, 1. / *_weightSum);
    scale(_histKB, 1. / *_weightSum);
    scale(_histpA, 1. / *_weightSum);
    scale(_histpB, 1. / *_weightSum);
    scale(_multPiA, 1. / *_weightSum);
    scale(_multPiB, 1. / *_weightSum);
    scale(_multK, 1. / *_weightSum);
    scale(_multpA, 1. / *_weightSum);
    scale(_multpB, 1. / *_weightSum);
  }
}


void init() {
  declare(UnstableParticles(), "UFS");

  // spectra
  book(_histPiA, 1, 1, 1);
  book(_histPiB, 2, 1, 1);
  book(_histKA, 3, 1, 1);
  book(_histKB, 6, 1, 1);
  book(_histpA, 4, 1, 1);
  book(_histpB, 5, 1, 1);
  // multiplicities
  book(_multPiA, 7, 1, 1);
  book(_multPiB, 8, 1, 1);
  book(_multK, 9, 1, 1);
  book(_multpA, 10, 1, 1);
  book(_multpB, 11, 1, 1);

  book(_weightSum, "TMP/weightSum");
}

private:

/// @{
/// Count of weights
CounterPtr _weightSum;
/// Spectra
Histo1DPtr _histPiA, _histPiB, _histKA, _histKB, _histpA, _histpB;
/// Multiplicities
BinnedHistoPtr<string> _multPiA, _multPiB, _multK, _multpA, _multpB;
const string Ecm = "10.58";
/// @}


void findDecayProducts(Particle parent,
                       Particles& pionsA,
                       Particles& pionsB,
                       Particles& protonsA,
                       Particles& protonsB,
                       Particles& kaons) {
  int parentId = parent.pid();
  for (const Particle& p : parent.children()) {
    int id = abs(p.pid());
    if (id == PID::PIPLUS) {
      if (parentId != PID::LAMBDA && parentId != PID::K0S) {
        pionsA.push_back(p);
        pionsB.push_back(p);
      }
      else
        pionsB.push_back(p);
    }
    else if (id == PID::PROTON) {
      if (parentId != PID::LAMBDA && parentId != PID::K0S) {
        protonsA.push_back(p);
        protonsB.push_back(p);
      }
      else
        protonsB.push_back(p);
    }
    else if (id == PID::KPLUS) {
      kaons.push_back(p);
    }
    else if (!p.children().empty())
      findDecayProducts(p, pionsA, pionsB, protonsA, protonsB, kaons);
  }
}

};

RIVET_DECLARE_ALIASED_PLUGIN(ARGUS_1993_I340894, ARGUS_1993_S2653028);

} ```

Aliases: - ARGUS_1993_S2653028