rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEO_1992_I315181

Baryon spectra in $\Upsilon(4S)$ decays
Experiment: CLEO (CESR)
Inspire ID: 315181
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D45 (1992) 752-770
Beams: * *
Beam energies: ANY
Run details:
  • Any processs producing Upslion(4S), originally e+e-

Measurement of the proton, $\Lambda_c^+$, $\Lambda$ and $\Xi^-$ momentum spectra in B decays at the $\Upsilon(4S)$ by CLEO.

Source code: CLEO_1992_I315181.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief p, Lambda, Lambda_c and Xi spectra at Upsilon(4s)
  9  class CLEO_1992_I315181 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_1992_I315181);
 14
 15
 16    /// @name Analysis methods
 17    /// @{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21      declare(UnstableParticles(), "UFS");
 22      book(_c_ups,"/TMP/c_ups");
 23      book(_h_p       ,1,1,1);
 24      book(_h_Lambda_c,2,1,1);
 25      book(_h_Lambda  ,3,1,1);
 26      book(_h_Xi      ,4,1,1);
 27    }
 28
 29    void findDecayProducts(Particle parent, Particles & protons, Particles & lambda_c, Particles & lambda, Particles & xi) {
 30      for(const Particle & p : parent.children()) {
 31	if (p.abspid() == PID::PROTON) {
 32	  protons.push_back(p);
 33	  continue;
 34	}
 35	else if(p.abspid()== PID::LAMBDA) {
 36	  lambda.push_back(p);
 37	  continue;
 38	}
 39	else if(p.abspid()== PID::XIMINUS) {
 40	  xi.push_back(p);
 41	}
 42	else if(p.abspid()== 4122) {
 43	  lambda_c.push_back(p);
 44	}
 45	if (!p.children().empty())
 46          findDecayProducts(p,protons,lambda_c,lambda,xi);
 47      }
 48    }
 49
 50    /// Perform the per-event analysis
 51    void analyze(const Event& event) {
 52      // Find the upsilons
 53      for (const Particle& ups : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==300553)) {
 54	_c_ups->fill();
 55	Particles protons,lambda_c,lambda,xi;
 56	findDecayProducts(ups,protons,lambda_c,lambda,xi);
 57        LorentzTransform boost;
 58        if (ups.p3().mod() > 1*MeV)
 59          boost = LorentzTransform::mkFrameTransformFromBeta(ups.momentum().betaVec());
 60	for(const Particle & p : protons) {
 61          double pcm = boost.transform(p.momentum()).p3().mod();
 62	  _h_p->fill(pcm);
 63	}
 64	for(const Particle & p : lambda_c) {
 65          double pcm = boost.transform(p.momentum()).p3().mod();
 66	  _h_Lambda_c->fill(pcm);
 67	}
 68	for(const Particle & p : lambda) {
 69          double pcm = boost.transform(p.momentum()).p3().mod();
 70	  _h_Lambda->fill(pcm);
 71	}
 72	for(const Particle & p : xi) {
 73          double pcm = boost.transform(p.momentum()).p3().mod();
 74	  _h_Xi->fill(pcm);
 75	}
 76      }
 77    }
 78
 79
 80    /// Normalise histograms etc., after the run
 81    void finalize() {
 82      // br for lambda_c mode used (p K- pi+)
 83      double br=0.0623;
 84      scale(_h_p       ,0.5   / *_c_ups);
 85      scale(_h_Lambda_c,0.5*br/ *_c_ups);
 86      scale(_h_Lambda  ,0.5   / *_c_ups);
 87      scale(_h_Xi      ,0.5   / *_c_ups);
 88    }
 89
 90    /// @}
 91
 92
 93    /// @name Histograms
 94    /// @{
 95    CounterPtr _c_ups;
 96    Histo1DPtr _h_p,_h_Lambda_c,_h_Lambda,_h_Xi;
 97    /// @}
 98
 99
100  };
101
102
103  RIVET_DECLARE_PLUGIN(CLEO_1992_I315181);
104
105}