Rivet analyses referenceATLAS_2019_I1744201Z+jet at 8 TeVExperiment: ATLAS (LHC) Inspire ID: 1744201 Status: VALIDATED Authors:
Beam energies: (4000.0, 4000.0) GeV Run details:
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/DileptonFinder.hh"
5#include "Rivet/Projections/FinalState.hh"
6
7namespace Rivet{
8
9
10 /// Z+jet at 8 TeV
11 class ATLAS_2019_I1744201 : public Analysis {
12 public:
13
14 /// Constructor
15 RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2019_I1744201);
16
17
18 void init() {
19
20 DileptonFinder zfinder_el(91.2*GeV, 0.1, Cuts::abseta < 2.47 && Cuts::pT > 20*GeV &&
21 Cuts::abspid == PID::ELECTRON, Cuts::massIn(66*GeV, 116*GeV));
22 declare(zfinder_el, "DileptonFinder_el");
23
24 declare(FastJets(zfinder_el.remainingFinalState(), JetAlg::ANTIKT, 0.4,
25 JetMuons::NONE, JetInvisibles::NONE), "AKT04");
26
27 h_jet_y_pt.resize(6);
28 for (size_t iPtBin=0; iPtBin < h_jet_y_pt.size(); ++iPtBin) {
29 book(h_jet_y_pt[iPtBin], iPtBin+2, 1, 1);
30 }
31
32 }
33
34
35 void analyze(const Event& event) {
36
37 // electrons selection
38 const DileptonFinder& zfinder = apply<DileptonFinder>(event, "DileptonFinder_el");
39 if ( zfinder.bosons().size() != 1) vetoEvent;
40
41 const Particles& leptons = zfinder.constituents();
42 if ( leptons.size() != 2) vetoEvent;
43
44 if (deltaR(leptons[0], leptons[1]) < 0.2) vetoEvent;
45
46
47 // jets selection
48 Jets jets = apply<FastJets>(event, "AKT04").jetsByPt( Cuts::pT > 25*GeV && Cuts::absrap < 3.4 );
49 idiscardIfAnyDeltaRLess(jets, leptons, 0.4);
50 if (jets.empty()) vetoEvent; // require at least one jet in event
51
52 for (const Jet& jet : jets) {
53 const double jet_pt = jet.pT() / GeV;
54 for(size_t iPtBin = 0; iPtBin < (ptBins.size() - 1); ++iPtBin) {
55 if (jet_pt >= ptBins[iPtBin] && jet_pt < ptBins[iPtBin+1]) {
56 h_jet_y_pt[iPtBin]->fill(jet.absrap());
57 }
58 }
59 }
60 }
61
62 void finalize() {
63
64 const double norm = crossSection()/femtobarn/sumOfWeights();
65 for(int iPtBin=0; iPtBin < 6; ++iPtBin){
66 scale(h_jet_y_pt[iPtBin], norm / ( ptBins[iPtBin+1] - ptBins[iPtBin] ));
67 }
68
69 }
70
71 protected:
72
73 vector<double> ptBins = { 25., 50., 100., 200., 300., 400., 1050. };
74
75 private:
76 vector<Histo1DPtr> h_jet_y_pt;
77
78 };
79
80 RIVET_DECLARE_PLUGIN(ATLAS_2019_I1744201);
81}
|