rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ATLAS_2019_I1744201

Z+jet at 8 TeV
Experiment: ATLAS (LHC)
Inspire ID: 1744201
Status: VALIDATED
Authors:
  • Aliaksei Hrynevich
  • Deepak Kar
References: Beams: p+ p+
Beam energies: (4000.0, 4000.0) GeV
Run details:
  • pp -> Z(ee)+jets at 8 TeV

The inclusive cross-section for jet production in association with a $Z$ boson decaying into an electron-positron pair is measured as a function of the transverse momentum and the absolute rapidity of jets using 19.9 fb$^{-1}$ of $\sqrt{s}=8$ TeV proton-proton collision data collected with the ATLAS detector at the Large Hadron Collider. The measured Z+ jets cross-section is unfolded to the particle level. The cross-section is compared with state-of-the-art Standard Model calculations, including the next-to-leading-order and next-to-next-to-leading-order perturbative QCD calculations, corrected for non-perturbative and QED radiation effects. The results of the measurements cover final-state jets with transverse momenta up to 1 TeV, and show good agreement with fixed-order calculations.

Source code: ATLAS_2019_I1744201.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FastJets.hh"
 4#include "Rivet/Projections/ZFinder.hh"
 5#include "Rivet/Projections/FinalState.hh"
 6
 7namespace Rivet{
 8
 9  /// @brief:  Z+jet at 8 TeV
10  class ATLAS_2019_I1744201 : public Analysis {
11  public:
12
13    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2019_I1744201);
14  
15    void init() {
16
17      const FinalState fs(Cuts::abseta < 5.0);
18      Cut cut = Cuts::abseta < 2.47 && Cuts::pT >= 20*GeV;
19          
20      ZFinder zfinder_el(fs, cut, PID::ELECTRON, 66*GeV, 116*GeV, 0.1, ZFinder::ChargedLeptons::PROMPT);
21      declare(zfinder_el, "ZFinder_el");
22      
23      declare(FastJets(zfinder_el.remainingFinalState(), FastJets::ANTIKT, 0.4, 
24                       JetAlg::Muons::NONE, JetAlg::Invisibles::NONE), "AKT04");
25
26      h_jet_y_pt.resize(6);
27      for (size_t iPtBin=0; iPtBin < h_jet_y_pt.size(); ++iPtBin) {
28        book(h_jet_y_pt[iPtBin], iPtBin+2, 1, 1); 
29      }
30
31    }
32    
33    void analyze(const Event& event) {
34
35      // electrons selection
36      const ZFinder& zfinder = apply<ZFinder>(event, "ZFinder_el");
37      if ( zfinder.bosons().size() != 1)  vetoEvent; 
38
39      const Particles& leptons = zfinder.constituents();
40      if ( leptons.size() != 2)  vetoEvent; 
41
42      if (deltaR(leptons[0], leptons[1]) < 0.2)  vetoEvent; 
43
44
45      // jets selection
46      Jets jets = apply<FastJets>(event, "AKT04").jetsByPt( Cuts::pT > 25*GeV && Cuts::absrap < 3.4 );
47      idiscardIfAnyDeltaRLess(jets, leptons, 0.4);
48      if (jets.empty())  vetoEvent;  // require at least one jet in event
49
50      for (const Jet& jet : jets) {
51        const double jet_pt = jet.pT() / GeV;
52        for(size_t iPtBin = 0; iPtBin < (ptBins.size() - 1); ++iPtBin) {
53          if (jet_pt >= ptBins[iPtBin] && jet_pt < ptBins[iPtBin+1]) {
54            h_jet_y_pt[iPtBin]->fill(jet.absrap());
55          }
56        }
57	    }
58   }
59    
60  void finalize() {
61 
62    const double norm = crossSection()/femtobarn/sumOfWeights();
63    for(int iPtBin=0; iPtBin < 6; ++iPtBin){
64    	scale(h_jet_y_pt[iPtBin], norm / ( ptBins[iPtBin+1] - ptBins[iPtBin] ));
65    }
66      
67  }
68
69   protected:
70
71     vector<double> ptBins = { 25., 50., 100., 200., 300., 400., 1050. };
72  
73   private:
74     vector<Histo1DPtr> h_jet_y_pt;
75
76  };
77  
78  // The hook for the plugin system
79  RIVET_DECLARE_PLUGIN(ATLAS_2019_I1744201);
80}