Rivet analyses


title: ZEUS_1999_I470499

Forward jet production in deep inelastic scattering at HERA (ZEUS)

Experiment: ZEUS (HERA)

Inspire ID: 470499

Status: VALIDATED

Authors: - Wendy Zhang - Hannes Jung

References: - Eur.Phys.J.C 6 (1999) 239 - DOI: 10.1007/s100529801018 - arXiv: hep-ex/9805016 - DESY-98-050

Beams: e+ p+, p+ e+

Beam energies: (27.5, 820.0); (820.0, 27.5)GeV

Run details: none listed

The inclusive forward jet cross section in deep inelastic e+p scattering has been measured in the region of x-Bjorken, $4.5 \times 10^{-4}$ to $4.5 \times 10^{-2}$. This measurement is motivated by the search for effects of BFKL-like parton shower evolution. The cross section at hadron level as a function of x is compared to cross sections predicted by various Monte Carlo models. An excess of forward jet production at small x is observed, which is not reproduced by models based on DGLAP parton shower evolution.

Source code:ZEUS_1999_I470499.cc

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Projections/DISKinematics.hh"

include "Rivet/Projections/FastJets.hh"

include "Rivet/Projections/FinalState.hh"

include "fastjet/SISConePlugin.hh"

namespace Rivet {

/// @brief Forward jet production in deep inelastic scattering at HERA (ZEUS) class ZEUS_1999_I470499 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ZEUS_1999_I470499);


/// @name Analysis methods
///@{

/// Book histograms and initialise projections before the run
void init() {

  // Initialise and register projections

  // The basic final-state projection:
  // all final-state particles within
  // the given eta acceptance
  const FinalState fs;
  declare(fs, "FS");

  // declare jets
  double jet_radius = 1.0;
  declare(FastJets(fs, JetAlg::PXCONE, jet_radius), "Jets");

  // declare DIS Kinematics
  declare(DISLepton(), "Lepton");
  declare(DISKinematics(), "Kinematics");

  // take binning from reference data using HEPData ID (digits in "d01-x01-y01" etc.)
  book(_h["xbj"], 1, 1, 1);
}


/// Perform the per-event analysis
void analyze(const Event& event) {

  // Retrieve dressed leptons, sorted by pT
  const FinalState& fs = apply<FinalState>(event, "FS");

  const size_t numParticles = fs.particles().size();

  if (numParticles < 2) {
    MSG_DEBUG("Failed leptonic event cut");
    vetoEvent;
  }

  const DISKinematics& dk = apply<DISKinematics>(event, "Kinematics");
  const DISLepton& dl = apply<DISLepton>(event, "Lepton");

  // Get the DIS kinematics
  double xbj = dk.x();
  double ybj = dk.y();
  double Q2 = dk.Q2() / GeV;

  //cut on y
  if (ybj < 0.1) vetoEvent;
  if (4.5 * pow(10, -4) > xbj && xbj > 4.5 * pow(10, -2)) vetoEvent;

  //Frame transfer
  const LorentzTransform breitboost = dk.boostBreit();

  //on scattered lepton

  FourMomentum leptonMom = dl.out().mom();
  double enel = leptonMom.E();

  bool cut = enel > 10 * GeV;
  if (!cut) vetoEvent;

  //scattered jets
  const Jets jets = apply<FastJets>(event, "Jets")
                        .jets(Cuts::Et > 5 * GeV && Cuts::eta < 2.6, cmpMomByEt);

  bool loopjet = false;
  for (const Jet& j : jets) {
    //cout << " j.pz "  << j.pz()/(820*GeV) << endl;
    if (j.pz() / (820 * GeV) < 0.036) continue;
    // cout << pow(j.Et(),2) << endl;

    if (0.5 > sqr(j.Et()) / Q2 || sqr(j.Et()) / Q2 > 2.0) continue;
    FourMomentum breMom = breitboost.transform(j.mom());
    //cout<< " pz " << breMom.pz() << endl;
    if (breMom.pz() < 0) continue;

    loopjet = true;
  }
  // cout<< " loojet " << loopjet << endl;
  if (loopjet) _h["xbj"]->fill(xbj);
}

/// Normalise histograms etc., after the run
void finalize() {
  scale(_h["xbj"], crossSection() / nanobarn / sumW());
}

///@}


/// @name Histograms
///@{
map<string, Histo1DPtr> _h;
///@}

};

RIVET_DECLARE_PLUGIN(ZEUS_1999_I470499); } ```