Rivet analyses
Inclusive-jet photoproduction at HERA and determination of the strong coupling
Experiment: ZEUS (HERA Run II)
Inspire ID: 1116258
Status: UNVALIDATED
Authors: - Jon Butterworth
References: - Nucl.Phys. B864 (2012) 1-37 - DESY 12/045 - hep-ex/1205.6153
Beams: p+ e+
Beam energies: (920.0, 27.5)GeV
Run details: - 920 GeV protons colliding with 27.5 GeV positrons; Direct and resolved photoproduction of dijets; Jet pT > 17 GeV Jet pseudorapidity −1 < |η| < 2.5
Inclusive-jet cross sections have been measured in the reaction ep->e+jet+X for photon virtuality Q2 < 1 GeV2 and gamma-p centre-of-mass energies in the region 142 < W(gamma-p) < 293 GeV with the ZEUS detector at HERA using an integrated luminosity of 300 pb-1. Jets were identified using the kT, anti-kT or SIScone jet algorithms in the laboratory frame. Single-differential cross sections are presented as functions of the jet transverse energy, ETjet, and pseudorapidity, etajet, for jets with ETjet > 17 GeV and -1 < etajet < 2.5. In addition, measurements of double-differential inclusive-jet cross sections are presented as functions of ETjet in different regions of etajet. Next-to-leading-order QCD calculations give a good description of the measurements, except for jets with low ETjet and high etajet. The influence of non-perturbative effects not related to hadronisation was studied. Measurements of the ratios of cross sections using different jet algorithms are also presented; the measured ratios are well described by calculations including up to O(alphas2) terms. Values of alphas(Mz) were extracted from the measurements and the energy-scale dependence of the coupling was determined. The value of alphas(Mz) extracted from the measurements based on the kT jet algorithm is alphas(Mz) = 0.1206 +0.0023 -0.0022 (exp.) +0.0042 -0.0035 (th.); the results from the anti-kT and SIScone algorithms are compatible with this value and have a similar precision.
Source
code:ZEUS_2012_I1116258.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/Beam.hh"
#include "Rivet/Projections/DISKinematics.hh"
#include "Rivet/Projections/FastJets.hh"
#include "fastjet/SISConePlugin.hh"
namespace Rivet {
/// @brief ZEUS inclusive jet photoproduction study used to measure alpha_s
///
/// @author Jon Butterworth
class ZEUS_2012_I1116258 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ZEUS_2012_I1116258);
/// @name Analysis methods
/// @{
// Book projections and histograms
void init() {
// Projections
// Jet schemes checked with original code, M.Wing, A.Geiser
FinalState fs;
double jet_radius = 1.0;
declare(FastJets(fs, fastjet::JetAlgorithm::kt_algorithm, fastjet::RecombinationScheme::Et_scheme, jet_radius), "Jets");
declare(FastJets(fs, fastjet::JetAlgorithm::antikt_algorithm, fastjet::RecombinationScheme::Et_scheme, jet_radius), "Jets_akt");
// bit of messing about to use the correct recombnation scheme for SISCone.
double overlap_threshold = 0.75;
fastjet::SISConePlugin * plugin = new fastjet::SISConePlugin(jet_radius, overlap_threshold);
plugin->set_use_jet_def_recombiner(true);
JetDefinition siscone(plugin);
siscone.set_recombination_scheme(fastjet::RecombinationScheme::Et_scheme);
declare(FastJets(fs, siscone), "Jets_sis");
declare(DISKinematics(), "Kinematics");
// all eta
book(_h_etjet[0], 1, 1, 1);
// two ET cuts.
book(_h_etajet[0], 2, 1, 1);
book(_h_etajet[1], 3, 1, 1);
// in eta regions
book(_h_etjet[1], 4, 1, 1);
book(_h_etjet[2], 5, 1, 1);
book(_h_etjet[3], 6, 1, 1);
book(_h_etjet[4], 7, 1, 1);
book(_h_etjet[5], 8, 1, 1);
// antiKT
book(_h_etjet[6], 9, 1, 1);
book(_h_etajet[2], 11, 1, 1);
// SiSCone
book(_h_etjet[7], 10, 1, 1);
book(_h_etajet[3], 12, 1, 1);
}
// Do the analysis
void analyze(const Event& event) {
// Determine kinematics, including event orientation since ZEUS coord system is for +z = proton direction
const DISKinematics& kin = apply<DISKinematics>(event, "Kinematics");
const int orientation = kin.orientation();
// Q2 and inelasticity cuts
if (kin.Q2() > 1*GeV2) vetoEvent;
if (!inRange(sqrt(kin.W2()), 142.0, 293.0)) vetoEvent;
// Jet selection
/// @todo check the recombination scheme
const Jets jets = apply<FastJets>(event, "Jets") \
.jets(Cuts::Et > 17*GeV && Cuts::etaIn(-1*orientation, 2.5*orientation), cmpMomByEt);
MSG_DEBUG("kT Jet multiplicity = " << jets.size());
const Jets jets_akt = apply<FastJets>(event, "Jets_akt") \
.jets(Cuts::Et > 17*GeV && Cuts::etaIn(-1*orientation, 2.5*orientation), cmpMomByEt);
const Jets jets_sis = apply<FastJets>(event, "Jets_sis") \
.jets(Cuts::Et > 17*GeV && Cuts::etaIn(-1*orientation, 2.5*orientation), cmpMomByEt);
// Fill histograms
for (const Jet& jet : jets ){
_h_etjet[0]->fill(jet.pt());
_h_etajet[0]->fill(orientation*jet.eta());
if (jet.pt()>21*GeV) {
_h_etajet[1]->fill(orientation*jet.eta());
}
if (orientation*jet.eta() < 0) {
_h_etjet[1]->fill(jet.pt());
} else if (orientation*jet.eta() < 1) {
_h_etjet[2]->fill(jet.pt());
} else if (orientation*jet.eta() < 1.5) {
_h_etjet[3]->fill(jet.pt());
} else if (orientation*jet.eta() < 2) {
_h_etjet[4]->fill(jet.pt());
} else {
_h_etjet[5]->fill(jet.pt());
}
}
for (const Jet& jet : jets_akt ){
_h_etjet[6]->fill(jet.pt());
_h_etajet[2]->fill(orientation*jet.eta());
}
for (const Jet& jet : jets_sis ){
_h_etjet[7]->fill(jet.pt());
_h_etajet[3]->fill(orientation*jet.eta());
}
}
// Finalize
void finalize() {
const double sf = crossSection()/picobarn/sumOfWeights();
for( int i = 0; i < 8; i++ ) {
scale(_h_etjet[i], sf);
}
for( int i = 0; i < 4; i++ ) {
scale(_h_etajet[i], sf);
}
}
/// @}
private:
/// @name Histograms
/// @{
Histo1DPtr _h_etjet[8], _h_etajet[4];
/// @}
};
RIVET_DECLARE_PLUGIN(ZEUS_2012_I1116258);
}