rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### BELLE_2019_I1718551

Cross sections for $\pi^\pm$, $K^\pm$ and $p\bar{p}$ as functions of $z$ and $p_\perp$ at $E_{\text{cms}}=10.58$ GeV
Experiment: BELLE (KEKB)
Inspire ID: 1718551
Status: VALIDATED
Authors:
• Peter Richardson
References:
• Phys.Rev. D92 (2015) no.9, 092007
Beams: e+ e-
Beam energies: (5.3, 5.3) GeV
Run details:
• e+e- to hadrons at 10.58 continuum events only

Cross sections for $\pi^\pm$, $K^\pm$ and $p\bar{p}$ as functions of $z$ and $p_\perp$ at $E_{\text{cms}}=10.58$ GeV

Source code: BELLE_2019_I1718551.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 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/FinalState.hh" #include "Rivet/Projections/Thrust.hh" #include "Rivet/Projections/Beam.hh" namespace Rivet { /// @brief pi, kaon and proton spectra at 10.58 GeV class BELLE_2019_I1718551 : public Analysis { public: /// Constructor DEFAULT_RIVET_ANALYSIS_CTOR(BELLE_2019_I1718551); /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { // projections const FinalState fs; declare(fs, "FS"); declare(Thrust(fs),"Thrust"); declare(Beam(), "Beams"); for(unsigned int ix=0;ix<6;++ix) { double xmin=0.05; for(unsigned int iy=0;iy<18;++iy) { xmin+=0.05; // pions if(ix==0&&iy>15) continue; Histo1DPtr temp1; book(temp1,1,ix+1,iy+1); _pion[ix].add(xmin,xmin+0.05,temp1); // kaons Histo1DPtr temp2; book(temp2,2,ix+1,iy+1); _kaon[ix].add(xmin,xmin+0.05,temp2); if(iy>15 || (iy>14&&ix<3) || (iy>11&&ix==0)) continue; // protons Histo1DPtr temp3; book(temp3,3,ix+1,iy+1); _proton[ix].add(xmin,xmin+0.05,temp3); } } } /// Perform the per-event analysis void analyze(const Event& event) { // Get beams and average beam momentum const ParticlePair& beams = apply(event, "Beams").beams(); const double meanBeamMom = ( beams.first.p3().mod() + beams.second.p3().mod() ) / 2.0; // get the thrust const double tbins[6]={0.7,0.8,0.85,0.9,0.95,1.0}; const Thrust& thrust = apply(event, "Thrust"); // find the thrust bin unsigned int ithrust=0; for(;ithrust<6;++ithrust) if(thrust.thrust()<=tbins[ithrust]) break; Vector3 a1 = thrust.thrustMajorAxis(); Vector3 a2 = thrust.thrustMinorAxis(); // loop over the charged hadrons const FinalState & fs = apply(event, "FS"); for(const Particle & charged : fs.particles(Cuts::abspid==211 or Cuts::abspid==321 or Cuts::abspid==2212)) { double xE = charged.momentum().t()/meanBeamMom; double pT = sqrt(sqr(a1.dot(charged.momentum().p3()))+ sqr(a2.dot(charged.momentum().p3()))); if(charged.abspid()==211) _pion [ithrust].fill(xE,pT); else if(charged.abspid()==321) _kaon [ithrust].fill(xE,pT); else if(charged.abspid()==2212) _proton[ithrust].fill(xE,pT); } } /// Normalise histograms etc., after the run void finalize() { // scale factor including bin width in x_E double fact = crossSection()/femtobarn/sumOfWeights()/0.05; for(unsigned int ix=0;ix<6;++ix) { for(Histo1DPtr histo : _pion [ix].histos()) scale(histo,fact); for(Histo1DPtr histo : _kaon [ix].histos()) scale(histo,fact); for(Histo1DPtr histo : _proton[ix].histos()) scale(histo,fact); } } //@} /// @name Histograms //@{ BinnedHistogram _pion[6],_kaon[6],_proton[6]; //@} }; DECLARE_RIVET_PLUGIN(BELLE_2019_I1718551); }