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

Rivet analyses reference

H1_2002_I588263

H1 inclusive jet cross sections in DIS
Experiment: H1 (HERA)
Inspire ID: 588263
Status: VALIDATED
Authors:
  • Joni Laulainen
  • Ilkka Helenius
References:
  • Phys.Lett.B542:193-206,2002
  • DOI:10.1016/s0370-2693(02)02375-4
  • arXiv: hep-ex/0206029
Beams: p+ e+, e+ p+, p+ e-, e- p+
Beam energies: (820.0, 27.5); (27.5, 820.0); (820.0, 27.5); (27.5, 820.0) GeV
Run details:
  • NC DIS events

Inclusive jet cross sections in neutral current deep inelastic scattering of protons and positrons are measured with the H1 detector, with an integrated luminosity of 21.1 pb1. The phase space is restricted by cuts to photon virtuality 5<Q2<100 GeV2 and inelasticity 0.2<y<0.6. Jet selection is done with the kT-cluster algorithm, with additional cuts to their transverse energies in the Breit frame ET>5 GeV and pseudorapidities in the lab frame 1<ηlab<2.8.

Source code: H1_2002_I588263.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/DISFinalState.hh"
  7
  8namespace Rivet {
  9
 10
 11  /// @brief Inclusive jet cross sections, differential in
 12  /// jet transverse energy E_T.
 13  class H1_2002_I588263 : public Analysis {
 14  public:
 15
 16    /// Constructor
 17    RIVET_DEFAULT_ANALYSIS_CTOR(H1_2002_I588263);
 18
 19
 20    /// @name Analysis methods
 21    /// @{
 22
 23    /// Book histograms and initialise projections before the run
 24    void init() {
 25
 26      // Initialise and register projections
 27      declare(DISKinematics(), "Kinematics");
 28
 29      // The final-state particles are clustered in Breit frame
 30      // using FastJet with the kT algorithm and a jet-radius parameter of 1.
 31      const DISFinalState DISfs(DISFrame::BREIT);
 32      FastJets jets(DISfs, JetAlg::KT, 1.0);
 33      declare(jets, "Jets");
 34
 35      // Book histograms.
 36      // Transverse jet energies separated into pseudorapidity ranges.
 37      book(_h_etjet_eta[0], 1, 1, 1);
 38      book(_h_etjet_eta[1], 1, 1, 2);
 39      book(_h_etjet_eta[2], 1, 1, 3);
 40
 41      // Transverse jet energies separated into Q2 ranges.
 42      book(_h_etjet_q2[0], 2, 1, 1);
 43      book(_h_etjet_q2[1], 2, 1, 2);
 44      book(_h_etjet_q2[2], 2, 1, 3);
 45      book(_h_etjet_q2[3], 2, 1, 4);
 46      book(_h_etjet_q2[4], 2, 1, 5);
 47
 48      // ET^2 by Q^2, separated into pseudorapidity ranges.
 49      book(_h_et2q2jet_eta[0], 3, 1, 1);
 50      book(_h_et2q2jet_eta[1], 4, 1, 1);
 51      book(_h_et2q2jet_eta[2], 5, 1, 1);
 52
 53    }
 54
 55    /// Perform the per-event analysis
 56    void analyze(const Event& event) {
 57
 58      // Lorentz invariant DIS quantities
 59      DISKinematics dis = apply<DISKinematics>(event, "Kinematics");
 60      double Q2 = dis.Q2();
 61      double y  = dis.y();
 62
 63      // Kinematic cuts on virtuality and inelasticity.
 64      if ( !inRange(Q2, 5.*GeV2, 100.*GeV2) ) vetoEvent;
 65      if ( !inRange(y, 0.2, 0.6) )            vetoEvent;
 66
 67      // Lorentz boosts for Breit and lab frames.
 68      const LorentzTransform breitboost = dis.boostBreit();
 69      const LorentzTransform labboost = breitboost.inverse();
 70
 71      // Retrieve clustered jets in Breit frame, sorted by pT.
 72      Jets jets = apply<FastJets>(event, "Jets").jetsByPt(Cuts::Et > 5*GeV);
 73
 74      // Boost jets to lab frame.
 75      for (size_t i = 0; i < jets.size(); ++i) {
 76        jets[i].transformBy(labboost);
 77      }
 78
 79      // Cut on Pseurdorapidity in lab frame.
 80      // 1 if hadron in "conventional" +z direction, -1 if in -z.
 81      const int orientation = dis.orientation();
 82      Jets labJets;
 83      for (size_t i = 0; i < jets.size(); ++i) {
 84        double etaJet = jets[i].eta()*orientation;
 85        if ( inRange(etaJet, -1., 2.8) ) {
 86          labJets += jets[i];
 87        }
 88      }
 89
 90      // Boost jets back to Breit frame.
 91      Jets breitJets = labJets;
 92      for (size_t i = 0; i < breitJets.size(); ++i){
 93        breitJets[i].transformBy(breitboost);
 94      }
 95
 96      // Fill histograms.
 97      for (size_t i = 0; i < labJets.size(); ++i) {
 98
 99        // Jets are in the same order in both frames.
100        double etaJet = labJets[i].eta()*orientation;
101        double eTJet  = breitJets[i].Et();
102        double eT2Q2  = eTJet*eTJet / Q2;
103
104        // ET in 3 different eta ranges
105        if ( inRange(etaJet, -1., 0.5) ) {
106          _h_etjet_eta[0]->fill(eTJet);
107          _h_et2q2jet_eta[0]->fill(eT2Q2);
108        } else if ( inRange(etaJet, 0.5, 1.5) ) {
109          _h_etjet_eta[1]->fill(eTJet);
110          _h_et2q2jet_eta[1]->fill(eT2Q2);
111        } else if ( inRange(etaJet, 1.5, 2.8) ) {
112          _h_etjet_eta[2]->fill(eTJet);
113          _h_et2q2jet_eta[2]->fill(eT2Q2);
114        }
115        // ET of forward region, in 5 different Q2 ranges
116        if ( inRange(etaJet, 1.5, 2.8) ){
117          if (5*GeV2 < Q2 && Q2 < 10*GeV2) {
118            _h_etjet_q2[0]->fill(eTJet);
119          } else if (10*GeV2 < Q2 && Q2 < 20*GeV2) {
120            _h_etjet_q2[1]->fill(eTJet);
121          } else if (20*GeV2 < Q2 && Q2 < 35*GeV2) {
122            _h_etjet_q2[2]->fill(eTJet);
123          } else if (35*GeV2 < Q2 && Q2 < 70*GeV2) {
124            _h_etjet_q2[3]->fill(eTJet);
125          } else if (70*GeV2 < Q2 && Q2 < 100*GeV2) {
126            _h_etjet_q2[4]->fill(eTJet);
127          }
128        }
129      }
130    }
131
132    /// Normalise histograms after the run
133    void finalize() {
134      // Scaling factor
135      const double sf = crossSection()/picobarn/sumW();
136
137      scale(_h_etjet_eta[0], sf);
138      scale(_h_etjet_eta[1], sf);
139      scale(_h_etjet_eta[2], sf);
140
141      scale(_h_etjet_q2[0], sf);
142      scale(_h_etjet_q2[1], sf);
143      scale(_h_etjet_q2[2], sf);
144      scale(_h_etjet_q2[3], sf);
145      scale(_h_etjet_q2[4], sf);
146
147      scale(_h_et2q2jet_eta[0], sf);
148      scale(_h_et2q2jet_eta[1], sf);
149      scale(_h_et2q2jet_eta[2], sf);
150    }
151
152    /// @}
153
154  private:
155
156    /// @name Histograms
157    /// @{
158    Histo1DPtr _h_etjet_eta[3];
159    Histo1DPtr _h_etjet_q2[5];
160    Histo1DPtr _h_et2q2jet_eta[3];
161    /// @}
162  };
163
164
165  RIVET_DECLARE_PLUGIN(H1_2002_I588263);
166
167}