rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

LHCB_2014_I1262703

Study of forward Z + jet production in $pp$ collisions at $\sqrt{s}=7$ TeV in the LHCb fiducial phase-space
Experiment: LHCb (LHC)
Inspire ID: 1262703
Status: VALIDATED
Authors:
  • William Barter
  • Albert Bursche
  • Marek Sirendi
References: Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
  • $pp$ $Z +$ jet events at 7 TeV with direct $\mu$ decays

A study of forward $Z +$ jet production in $pp$ collisions at $\sqrt{s}=7$ TeV is presented. Results are shown for two jet thresholds of $p_T>10$ GeV and $p_T>20$ GeV. Total cross-sections and six differential cross-sections are measured.

Source code: LHCB_2014_I1262703.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/DileptonFinder.hh"
  4#include "Rivet/Projections/FastJets.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief Study of forward Z + jet production at 7 TeV at LHCb
 10  ///
 11  /// @author W. Barter, A. Bursche, M. Sirendi (Rivet implementation)
 12  class LHCB_2014_I1262703 : public Analysis {
 13  public:
 14
 15    /// Default constructor
 16    RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2014_I1262703);
 17
 18
 19    /// Initialise histograms and projections
 20    void init() {
 21
 22      // Projections
 23      const Cut mycut = Cuts::eta >= 2.0 && Cuts::eta <= 4.5 && Cuts::pT > 20*GeV;
 24      DileptonFinder zfinder(91.2*GeV, 0.0, mycut && Cuts::abspid == PID::MUON, Cuts::massIn(60*GeV, 120*GeV));
 25      declare(zfinder, "DileptonFinder");
 26      FastJets jetpro(zfinder.remainingFinalState(), JetAlg::ANTIKT, 0.5);
 27      declare(jetpro, "Jets");
 28
 29      // Histograms
 30      book(_h_jet_pT   , 3, 1, 1);
 31      book(_h_jet_eta20, 4, 1, 1);
 32      book(_h_jet_eta10, 4, 1, 2);
 33      book(_h_Z_y20    , 5, 1, 1);
 34      book(_h_Z_y10    , 5, 1, 2);
 35      book(_h_Z_pT20   , 6, 1, 1);
 36      book(_h_Z_pT10   , 6, 1, 2);
 37      book(_h_dphi20   , 7, 1, 1);
 38      book(_h_dphi10   , 7, 1, 2);
 39      book(_h_dy20     , 8, 1, 1);
 40      book(_h_dy10     , 8, 1, 2);
 41    }
 42
 43
 44    /// Do the analysis
 45    void analyze(const Event & e) {
 46
 47      const DileptonFinder& zfinder = apply<DileptonFinder>(e, "DileptonFinder");
 48      if (zfinder.bosons().size() != 1) vetoEvent;
 49      const Particles leptons = zfinder.constituents();
 50
 51      const Cut jetSelector = Cuts::eta >= 2.0 && Cuts::eta <= 4.5 && Cuts::pT > 10*GeV;
 52      const Jets jets = apply<FastJets>(e, "Jets").jetsByPt(jetSelector);
 53
 54      if (jets.empty()) vetoEvent;
 55
 56      // Clean the jets against the lepton candidates with a deltaR cut of 0.4
 57      const Jets cleanedJets = discard(jets, [&](const Jet& j) { return any(leptons, deltaRLess(j, 0.4)); });
 58      // vector<const Jet*> cleanedJets;
 59      // for (size_t i = 0; i < jets.size(); i++) {
 60      //   bool isolated = true;
 61      //   for (size_t j = 0; j < 2; j++) {
 62      //     if (deltaR(leptons[j], jets[i]) < 0.4) {
 63      //       isolated = false;
 64      //       break;
 65      //     }
 66      //   }
 67      //   if (isolated) cleanedJets.push_back(&jets[i]);
 68      // }
 69
 70      // Require at least 1 survivor and note if it is above a 20 GeV jet pT threshold
 71      if (cleanedJets.empty()) vetoEvent;
 72      const bool above20 = cleanedJets[0].pT() > 20*GeV;
 73      const double dphi = deltaPhi(zfinder.boson(), cleanedJets[0]);
 74      const double drap = zfinder.boson().rap() - cleanedJets[0].rap();
 75
 76      // Fill histograms
 77      _h_jet_pT->fill(cleanedJets[0].pT()/GeV);
 78      _h_jet_eta10->fill(cleanedJets[0].eta());
 79      _h_Z_y10->fill(zfinder.boson().rap());
 80      _h_Z_pT10->fill(zfinder.boson().pT()/GeV);
 81      _h_dphi10->fill(dphi);
 82      _h_dy10->fill(drap);
 83      if (above20) {
 84        _h_jet_eta20->fill(cleanedJets[0].eta());
 85        _h_Z_y20->fill(zfinder.boson().rap());
 86        _h_Z_pT20->fill(zfinder.boson().pT()/GeV);
 87        _h_dphi20->fill(dphi);
 88        _h_dy20->fill(drap);
 89      }
 90
 91    }
 92
 93
 94    /// Finalize
 95    void finalize() {
 96      normalize(_h_jet_pT); normalize(_h_jet_eta20); normalize(_h_jet_eta10);
 97      normalize(_h_Z_y20);  normalize(_h_Z_y10);     normalize(_h_Z_pT20);
 98      normalize(_h_Z_pT10); normalize(_h_dphi20);    normalize(_h_dphi10);
 99      normalize(_h_dy20);   normalize(_h_dy10);
100    }
101
102
103    /// Histograms
104    Histo1DPtr _h_jet_pT, _h_jet_eta20, _h_jet_eta10, _h_Z_y20, _h_Z_y10, _h_Z_pT20, _h_Z_pT10, _h_dphi20, _h_dphi10, _h_dy20, _h_dy10;
105
106  };
107
108
109  RIVET_DECLARE_PLUGIN(LHCB_2014_I1262703);
110
111}