rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

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
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief Delta++ rate and spectrum
  9  class ARGUS_1989_I278932 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1989_I278932);
 14
 15
 16    /// @name Analysis methods
 17    ///@{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21      // Initialise and register projections
 22      declare(UnstableParticles(), "UFS");
 23      // histograms
 24      book( _r_ups,1,1,2);
 25      book(_r_cont,2,1,2);
 26      book(_h_p,3,1,1);
 27      book(_w_ups ,"TMP/w_ups" );
 28      book(_w_cont,"TMP/w_cont");
 29    }
 30
 31
 32    /// Recursively walk the decay tree to find decay products of @a p
 33    void findDecayProducts(Particle mother, Particles& delta) {
 34      // dleta pdg code
 35      static const long id = 2224;
 36      for(const Particle & p: mother.children()) {
 37	if(p.abspid() == id) {
 38	  delta.push_back(p);
 39	}
 40	else if(!p.children().empty())
 41	  findDecayProducts(p, delta);
 42      }
 43    }
 44
 45    /// Perform the per-event analysis
 46    void analyze(const Event& event) {
 47      UnstableParticles ufs = apply<UnstableParticles>(event, "UFS");
 48      Particles ups = ufs.particles(Cuts::pid==553);
 49      // continuum
 50      if(ups.empty()) {
 51	_w_cont->fill();
 52	_r_cont->fill(sqrtS(),ufs.particles(Cuts::abspid==2224).size());
 53      }
 54      // upsilon decays
 55      else {
 56	for(const Particle & p : ups) {
 57	  _w_ups->fill();
 58	  Particles delta;
 59	  findDecayProducts(p,delta);
 60	  if(delta.empty()) continue;
 61	  LorentzTransform boost;
 62	  if (p.p3().mod() > 1*MeV)
 63	    boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
 64	  for(const Particle& del : delta) {
 65	    _r_ups->fill(9.46);
 66	    double mom = boost.transform(del.momentum()).p3().mod();
 67	    _h_p->fill(mom);
 68	  }
 69	}
 70      }
 71    }
 72
 73
 74    /// Normalise histograms etc., after the run
 75    void finalize() {
 76      if(_w_cont->effNumEntries()>0) {
 77	scale(_r_cont, 1./ *_w_cont);
 78      }
 79      // direct upsilon decays, i.e. to gg gamma and ggg so need to renormalize
 80      // factor and values from arxiv:0612019
 81      if(_w_ups->effNumEntries()>0) {
 82	double Bmumu=0.0249, rhad = 3.56;
 83	double fact = 1.-(3.+rhad)*Bmumu;
 84	scale(_r_ups, 1./fact / *_w_ups);
 85	scale(_h_p  , 100./fact / *_w_ups);
 86      }	
 87    }
 88
 89    ///@}
 90
 91
 92    /// @name Histograms
 93    ///@{
 94    Histo1DPtr _r_ups,_r_cont;
 95    Histo1DPtr _h_p;
 96    CounterPtr _w_ups,_w_cont;
 97    ///@}
 98
 99
100  };
101
102
103  RIVET_DECLARE_PLUGIN(ARGUS_1989_I278932);
104
105}