rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ZEUS_1999_I508906

Measurement of the E**2(T,jet) / Q**2 dependence of forward jet production at HERA
Experiment: ZEUS (HERA)
Inspire ID: 508906
Status: VALIDATED
Authors:
  • Wendy Zhang
  • Hannes Jung
References: Beams: e+ p+, p+ e+
Beam energies: (27.5, 820.0); (820.0, 27.5) GeV
    No run details listed

The forward-jet cross section in deep inelastic ep scattering has been measured using the ZEUS detector at HERA with an integrated luminosity of 6.36 pb$^{-1}$. The jet cross section is presented as a function of jet transverse energy squared, E(T,jet)^2, and Q^2 in the kinematic ranges 10^-2<E(T,jet)^2/Q^2<10^2 and 2.5 10^-4<x<8.0 10^-2. Since the perturbative QCD predictions for this cross section are sensitive to the treatment of the log(E_T/Q)^2 terms, this measurement provides an important test.

Source code: ZEUS_1999_I508906.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/FastJets.hh"
  5#include "Rivet/Projections/DISKinematics.hh"
  6#include "Rivet/Projections/DISLepton.hh"
  7#include "fastjet/SISConePlugin.hh"
  8#include<cmath>
  9
 10namespace Rivet {
 11
 12
 13  /// @brief Measurement of the E**2(T,jet)/Q**2 dependence of forward jet production at HERA (ZEUS)
 14  class ZEUS_1999_I508906 : public Analysis {
 15  public:
 16
 17    /// Constructor
 18    RIVET_DEFAULT_ANALYSIS_CTOR(ZEUS_1999_I508906);
 19
 20
 21    /// @name Analysis methods
 22    ///@{
 23
 24    /// Book histograms and initialise projections before the run
 25    void init() {
 26
 27      // Initialise and register projections
 28
 29      // The basic final-state projection:
 30      // all final-state particles within
 31      // the given eta acceptance
 32      const FinalState fs; 
 33      declare(fs, "FS");
 34        
 35      // declare jets
 36      double jet_radius = 1.0;///FIGURE THIS OUT
 37      declare(FastJets(fs, JetAlg::PXCONE, jet_radius), "Jets");//FIGURE THE JET OUT
 38       
 39      // declare DIS Kinematics
 40      declare(DISLepton(), "Lepton");
 41      declare(DISKinematics(), "Kinematics");
 42
 43      // take binning from reference data using HEPData ID (digits in "d01-x01-y01" etc.)
 44      book(_h["Et2/Q2"], 1, 1, 1);
 45  
 46
 47    }
 48
 49
 50    /// Perform the per-event analysis
 51    void analyze(const Event& event) {
 52
 53      // Retrieve dressed leptons, sorted by pT
 54      const FinalState& fs = apply<FinalState>(event, "FS");
 55        
 56      const size_t numParticles = fs.particles().size();
 57
 58      if (numParticles < 2) {
 59          MSG_DEBUG("Failed leptonic event cut");
 60          vetoEvent;
 61        }
 62        
 63      const DISKinematics& dk = apply<DISKinematics>(event, "Kinematics");
 64      const DISLepton& dl = apply<DISLepton>(event,"Lepton");
 65        
 66      // Get the DIS kinematics
 67      double xbj  = dk.x();
 68      double ybj = dk.y();
 69      double Q2 = dk.Q2();
 70      
 71      //cut on y
 72      if (ybj<0.1) vetoEvent;
 73      if (2.5*pow(10,-4)>xbj || xbj>8*pow(10,-2)) vetoEvent;
 74      if (Q2<10) vetoEvent;
 75          
 76
 77        
 78    //Frame transfer
 79      const LorentzTransform breitboost = dk.boostBreit();
 80    
 81        //on scattered lepton
 82        
 83          FourMomentum leptonMom = dl.out().momentum();
 84          double enel = leptonMom.E();
 85              
 86          bool cut = enel>10*GeV;
 87          if (!cut) vetoEvent;
 88        
 89        //scattered jets
 90       
 91
 92        const Jets jets = apply<FastJets>(event, "Jets").jets(Cuts::Et > 5*GeV && Cuts::eta<2.6, cmpMomByEt);
 93        //Cuts::pz/(820*GeV)>0.036
 94        //&& Cuts::0.5<pow(Et,2)/Q2<2 && Cuts::breMom.pz>0
 95        
 96        bool loopjet=false;
 97        for (const Jet&j:jets){
 98            //cout << " j.pz "  << j.pz()/(820*GeV) << endl;
 99            
100            if (j.pz()/(820*GeV)<0.036) continue;
101            
102            FourMomentum breMom = breitboost.transform(j.momentum());
103            //cout<< " pz " << breMom.pz() << endl; 
104            if (breMom.pz()<0) continue;
105            
106            loopjet=true;
107            
108            if(loopjet)  _h["Et2/Q2"]->fill(pow(j.Et(),2)/Q2);
109        }
110        
111        
112
113
114      // Fill histogram with leading b-jet pT
115        
116    }
117
118
119    /// Normalise histograms etc., after the run
120    void finalize() {
121
122      scale(_h["Et2/Q2"], crossSection()/picobarn/sumW());
123 
124    }
125
126    ///@}
127
128
129    /// @name Histograms
130    ///@{
131    map<string, Histo1DPtr> _h;
132    map<string, Profile1DPtr> _p;
133    map<string, CounterPtr> _c;
134    ///@}
135
136
137  };
138
139
140  RIVET_DECLARE_PLUGIN(ZEUS_1999_I508906);
141
142}