Processing math: 100%
rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ZEUS_2011_I945935

Scaled momentum distributions for K0S and Λ/ˉΛ in DIS at HERA
Experiment: ZEUS (HERA)
Inspire ID: 945935
Status: VALIDATED
Authors:
  • Andrii Verbytskyi
References:
  • JHEP 1203 (2012) 020
  • DOI: 10.1007/JHEP03(2012)020
  • DESY-11-205
  • arXiv: 1111.3526
Beams: p+ e+, p+ e-
Beam energies: (920.0, 27.5); (920.0, 27.5) GeV
Run details:
  • e±p deep inelastic scattering with p at 920 GeV, e± at 27.5 GeV \to s=318GeV

Scaled momentum distributions for the strange hadrons K0s and Lambda/bar Lambda were measured in deep inelastic ep scattering with the ZEUS detector at HERA using an integrated luminosity of 330pb1. The evolution of these distributions with the photon virtuality, Q2, was studied in the kinematic region 10<Q2<40000GeV2 and 0.001<x<0.75, where x is the Bjorken scaling variable. Clear scaling violations are observed. Predictions based on different approaches to fragmentation were compared to the measurements. Leading-logarithm parton-shower Monte Carlo calculations interfaced to the Lund string fragmentation model describe the data reasonably well in the whole range measured. Next-to-leading-order QCD calculations based on fragmentation functions, FFs, extracted from e+e data alone, fail to describe the measurements. The calculations based on FFs extracted from a global analysis including e+e, ep and pp data give an improved description. The measurements presented in this paper have the potential to further constrain the FFs of quarks, anti-quarks and gluons yielding K0S and Λ/ˉΛ strange hadrons.

Source code: ZEUS_2011_I945935.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/UnstableParticles.hh"
  5#include "Rivet/Projections/DISKinematics.hh"
  6#include "Rivet/Projections/DISFinalState.hh"
  7
  8namespace Rivet {
  9
 10
 11  /// @brief Scaled momenta of identified particles
 12  class ZEUS_2011_I945935 : public Analysis {
 13  public:
 14
 15      /// Constructor
 16      RIVET_DEFAULT_ANALYSIS_CTOR(ZEUS_2011_I945935);
 17
 18
 19      /// @name Analysis methods
 20      /// @{
 21
 22      /// Book histograms and initialise projections before the run
 23      void init() {
 24
 25          const UnstableParticles& labcut = UnstableParticles();
 26          declare(labcut, "UFS");
 27          const DISKinematics& diskin = DISKinematics();
 28          declare(diskin, "Kinematics");
 29          const DISFinalState&  disfsbf = DISFinalState(labcut, DISFrame::BREIT);
 30          declare(disfsbf, "FSBF");
 31
 32          for (size_t offset = 0; offset < 5; offset++) {
 33              book(_h_K0S[offset],  2, 1, offset+1);
 34              book(_h_LAMBDA[offset], 5, 1, offset+1);
 35          }
 36
 37          book(_h_K0S[5], 3, 1, 1);
 38          book(_h_K0S[6], 3, 1, 2);
 39          book(_h_LAMBDA[5], 6, 1, 1);
 40          book(_h_LAMBDA[6], 6, 1, 2);
 41          book(_h_Q2_tmp, "_TMP/N", 7, 0, 7);
 42      }
 43
 44      int getbinQ2v1(const DISKinematics& dk) {
 45          if (inRange(dk.Q2()/GeV2, 10.0, 40.0) && inRange(dk.x(), 0.001, 0.75) ) return 1;
 46          if (inRange(dk.Q2()/GeV2, 40.0, 160.0) && inRange(dk.x(), 0.001, 0.75) ) return 2;
 47          if (inRange(dk.Q2()/GeV2, 160.0, 640.0) && inRange(dk.x(), 0.001, 0.75)) return 3;
 48          if (inRange(dk.Q2()/GeV2, 640.0, 2560.0) && inRange(dk.x(), 0.001, 0.75)) return 4;
 49          if (inRange(dk.Q2()/GeV2, 2650.0, 10240.0) && inRange(dk.x(), 0.001, 0.75)) return 5;
 50          return -1;
 51      }
 52      int getbinQ2v2(const DISKinematics& dk) {
 53          if (inRange(dk.Q2()/GeV2, 10.0, 100.0) && inRange(dk.x(), 0.001, 0.75) ) return 1;
 54          if (inRange(dk.Q2()/GeV2, 100.0, 1000.0) && inRange(dk.x(), 0.001, 0.75) ) return 2;
 55          return -1;
 56      }
 57
 58      /// Perform the per-event analysis
 59      void analyze(const Event& event) {
 60          /// DIS kinematics
 61          const DISKinematics& dk = apply<DISKinematics>(event, "Kinematics");
 62          const double q2  = dk.Q2();
 63          const double x = dk.x();
 64          const double y = dk.y();
 65
 66          if (!inRange(q2/GeV2, 10.0, 40000.0)) vetoEvent;
 67          if (!inRange(y, 0.04, 0.95)) vetoEvent;
 68          if (!inRange(x, 0.001, 0.75)) vetoEvent;
 69          const int ofv1 = getbinQ2v1(dk) - 1;
 70          const int ofv2 = getbinQ2v2(dk) - 1;
 71          if ( ofv1 < 0 ) vetoEvent;
 72
 73          /// @todo Do the event by event analysis here
 74          _h_Q2_tmp->fill(ofv1);
 75          if (ofv2 >= 0) _h_Q2_tmp->fill(5+ofv2);
 76          const DISFinalState& disfsbf = apply<DISFinalState>(event, "FSBF");
 77
 78          for (const Particle& p: select(disfsbf.particles(), Cuts::abspid == abs(PID::K0S))) {
 79              //// Scaled energy.
 80              if (p.pz() > 0) continue;
 81              const double energy = p.momentum().vector3().mod();
 82              const double scaledEnergy = 2.0*energy/sqrt(q2);
 83              _h_K0S[ofv1]->fill(scaledEnergy);
 84              if (ofv2 >= 0) _h_K0S[5+ofv2]->fill(scaledEnergy);
 85          }
 86
 87          for (const Particle& p: select(disfsbf.particles(), Cuts::abspid == abs(PID::LAMBDA))) {
 88              //// Scaled energy.
 89              if (p.pz() > 0) continue;
 90              const double energy = p.momentum().vector3().mod();
 91              const double scaledEnergy = 2.0*energy/sqrt(q2);
 92              _h_LAMBDA[ofv1]->fill(scaledEnergy);
 93              if (ofv2 >= 0) _h_LAMBDA[5+ofv2]->fill(scaledEnergy);
 94          }
 95      }
 96
 97      /// Normalise histograms etc., after the run
 98      void finalize() {
 99        for (size_t offset = 0; offset < 7; offset++) {
100          scale(_h_K0S[offset], 1.0/_h_Q2_tmp->bin(offset+1).sumW());
101          scale(_h_LAMBDA[offset], 1.0/_h_Q2_tmp->bin(offset+1).sumW());
102        }
103      }
104
105      Histo1DPtr _h_K0S[7];
106      Histo1DPtr _h_LAMBDA[7];
107      Histo1DPtr _h_Q2_tmp;
108
109  };
110
111
112  RIVET_DECLARE_PLUGIN(ZEUS_2011_I945935);
113
114}