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