rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ZEUS_2011_I945935

Scaled momentum distributions for $K^0_S$ and $\Lambda/\bar{\Lambda}$ in DIS at HERA
Experiment: ZEUS (HERA)
Inspire ID: 945935
Status: VALIDATED
Authors:
  • Andrii Verbytskyi andrii.verbytskyi@mpp.mpg.de
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^{\pm} p$ deep inelastic scattering with $p$ at 920 GeV, $e^{\pm}$ at 27.5 GeV \to $\sqrt{s} = 318 \text{GeV}$

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 $330 pb^{-1}$. The evolution of these distributions with the photon virtuality, $Q^2$, was studied in the kinematic region $10<Q^2<40000 GeV^2$ 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 $K^0_{S}$ and $\Lambda/\bar{ \Lambda}$ 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
 12class ZEUS_2011_I945935 : public Analysis {
 13public:
 14
 15    /// Constructor
 16    DEFAULT_RIVET_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, DISFinalState::BoostFrame::BREIT, diskin);
 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: filter_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: filter_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).area());
101            scale(_h_LAMBDA[offset], 1.0/_h_Q2_tmp->bin(offset).area());
102        }
103    }
104    Histo1DPtr _h_K0S[7];
105    Histo1DPtr _h_LAMBDA[7];
106    Histo1DPtr _h_Q2_tmp;
107};
108/// The hook for the plugin system
109RIVET_DECLARE_PLUGIN(ZEUS_2011_I945935);
110}