rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2017_I1606201

Baryon spectra in $e^+e^-$ collisions at 10.52 GeV
Experiment: BELLE (KEKB)
Inspire ID: 1606201
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D97 (2018) no.7, 072005
Beams: e- e+
Beam energies: (5.3, 5.3) GeV
Run details:
  • e+ e- to hadrons and e+ e-

Measurement of spectra for hyperon and charm baryon production in $e^+e^-$ collisions at 10.52 GeV by BELLE. The spectra for $\Lambda^0$, $\Sigma^0$, $\Sigma^{*+}$, $\Lambda^0(1520)$, $\Xi^-$, $\Omega^-$ and $\Xi^{*0}$ hyperons are measured. The spectra for the $\Lambda_c^+$, $\Lambda_c(2595)^+$, $\Lambda_c(2625)^+$, $\Sigma_c(2455)^0$, $\Sigma_c(2520)^0$, $\Omega_c^0$ and $\Xi_c^0$ charm baryons are also measured.

Source code: BELLE_2017_I1606201.cc
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// @brief Add a short analysis description here
  class BELLE_2017_I1606201 : public Analysis {
  public:

    /// Constructor
    DEFAULT_RIVET_ANALYSIS_CTOR(BELLE_2017_I1606201);


    /// @name Analysis methods
    //@{

    /// Book histograms and initialise projections before the run
    void init() {
      // Initialise and register projections
      declare(UnstableParticles(), "UFS");
      // Book histograms
      for(unsigned int ix=1;ix<16;++ix)
	book(_h[ix], ix, 1, 1);
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {
      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");

      for (const Particle& p : ufs.particles()) {
	const Vector3 mom3 = p.p3();
	double pp = mom3.mod();
	double xp = 2.*pp/sqrtS();
	int id = abs(p.pid());
	if(id==3122)
	  _h[ 1]->fill(xp);
	else if(id==3212)
	  _h[ 2]->fill(xp);
	else if(id==3224)
	  _h[ 3]->fill(xp);
	else if(id==3124)
	  _h[ 4]->fill(xp);
	else if(id==3312)
	  _h[ 5]->fill(xp);
	else if(id==3334)
	  _h[ 6]->fill(xp);
	else if(id==3324)
	  _h[ 7]->fill(xp);
	else if(id==4122)
	  _h[ 8]->fill(xp);
	else if(id==14122)
	  _h[ 9]->fill(xp);
	else if(id==4124)
	  _h[10]->fill(xp);
	else if(id==4112)
	  _h[11]->fill(xp);
	else if(id==4114)
	  _h[12]->fill(xp);
	else if(id==4332) {
	  if(isDecay(p,{3334,-211})) 
	    _h[13]->fill(xp);
	}
	else if(id==4132) {
	  if(isDecay(p,{3312,211}))
	    _h[14]->fill(xp);
	  else if(isDecay(p,{3334,321}))
	    _h[15]->fill(xp);
	}
      }
    }

    // Check for explicit decay into pdgids
    bool isDecay(const Particle& mother, vector<int> ids) {
      if(mother.pid()<0) {
	for(unsigned int ix=0;ix<ids.size();++ix)
	  ids[ix] *= -1;
      }
      // Trivial check to ignore any other decays but the one in question modulo photons
      const Particles children = mother.children(Cuts::pid!=PID::PHOTON);
      if (children.size()!=ids.size()) return false;
      // Check for the explicit decay
      return all(ids, [&](int i){return count(children, hasPID(i))==1;});
    }

    /// Normalise histograms etc., after the run
    void finalize() {
      // norm to cross section
      for(unsigned int ix=1;ix<16;++ix) {
	if( ix<=4 || (ix>=8 &&ix<=12) ) 
	  scale(_h[ix], crossSection()/nanobarn/sumOfWeights());
	else
	  scale(_h[ix], crossSection()/picobarn/sumOfWeights());
      }
    }

    //@}


    /// @name Histograms
    //@{
    Histo1DPtr _h[16];
    //@}


  };


  // The hook for the plugin system
  DECLARE_RIVET_PLUGIN(BELLE_2017_I1606201);


}