rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ATLAS_2011_I917931

Measurement of the Z pT with electrons and muons at 7 TeV
Experiment: ATLAS (LHC)
Inspire ID: 917931
Status: VALIDATED
Authors:
  • Elena Yatsenko
  • Judith Katzy
References: Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
  • Run with inclusive $Z$ events, with $Z/\gamma^*$ decays to electrons and/or muons.

The Z pT at $\sqrt{s} = 7$ TeV is measured using electron and muon $Z$ decay channels. The dressed leptons definition uses photons clustered in a cone around the charged leptons, while the bare lepton definition uses the post-FSR charged leptons only in the $Z$ reconstruction. The data used in the bare leptons calculation are based on a forward application of a PHOTOS-based energy loss correction and are hence not quite model-independent.

Source code: ATLAS_2011_I917931.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/DileptonFinder.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief ATLAS Z pT in Drell-Yan events at 7 TeV
  9  ///
 10  /// @author Elena Yatsenko, Judith Katzy
 11  class ATLAS_2011_I917931 : public Analysis {
 12  public:
 13
 14    /// Constructor
 15    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2011_I917931);
 16
 17
 18    /// @name Analysis methods
 19    /// @{
 20
 21    void init() {
 22
 23      // Set up projections
 24      Cut cut = Cuts::abseta < 2.4 && Cuts::pT > 20*GeV;
 25      DileptonFinder zfinder_dressed_el(91.2*GeV, 0.1, cut && Cuts::abspid == PID::ELECTRON, Cuts::massIn(66.0*GeV, 116.0*GeV));
 26      declare(zfinder_dressed_el, "DileptonFinder_dressed_el");
 27      DileptonFinder zfinder_bare_el(91.2*GeV, 0.0, cut && Cuts::abspid == PID::ELECTRON, Cuts::massIn(66.0*GeV, 116.0*GeV));
 28      declare(zfinder_bare_el, "DileptonFinder_bare_el");
 29      DileptonFinder zfinder_dressed_mu(91.2*GeV, 0.1, cut && Cuts::abspid == PID::MUON, Cuts::massIn(66.0*GeV, 116.0*GeV));
 30      declare(zfinder_dressed_mu, "DileptonFinder_dressed_mu");
 31      DileptonFinder zfinder_bare_mu(91.2*GeV, 0.0, cut && Cuts::abspid == PID::MUON, Cuts::massIn(66.0*GeV, 116.0*GeV));
 32      declare(zfinder_bare_mu, "DileptonFinder_bare_mu");
 33
 34      // Book histograms
 35      book(_hist_zpt_el_dressed     ,1, 1, 2);  // electron "dressed"
 36      book(_hist_zpt_el_bare        ,1, 1, 3);  // electron "bare"
 37      book(_hist_zpt_mu_dressed     ,2, 1, 2);  // muon "dressed"
 38      book(_hist_zpt_mu_bare        ,2, 1, 3);  // muon "bare"
 39
 40      book(_sumw_el_bare, "_sumw_el_bare");
 41      book(_sumw_el_dressed, "_sumw_el_dressed");
 42      book(_sumw_mu_bare, "_sumw_mu_bare");
 43      book(_sumw_mu_dressed, "_sumw_mu_dressed");
 44    }
 45
 46
 47    /// Do the analysis
 48    void analyze(const Event& evt) {
 49      const DileptonFinder& zfinder_dressed_el = apply<DileptonFinder>(evt, "DileptonFinder_dressed_el");
 50      if (!zfinder_dressed_el.bosons().empty()) {
 51        _sumw_el_dressed->fill();
 52        const FourMomentum pZ = zfinder_dressed_el.bosons()[0].momentum();
 53        _hist_zpt_el_dressed->fill(pZ.pT()/GeV);
 54      }
 55
 56      const DileptonFinder& zfinder_bare_el = apply<DileptonFinder>(evt, "DileptonFinder_bare_el");
 57      if (!zfinder_bare_el.bosons().empty()) {
 58        _sumw_el_bare->fill();
 59	    const FourMomentum pZ = zfinder_bare_el.bosons()[0].momentum();
 60        _hist_zpt_el_bare->fill(pZ.pT()/GeV);
 61      }
 62
 63      const DileptonFinder& zfinder_dressed_mu = apply<DileptonFinder>(evt, "DileptonFinder_dressed_mu");
 64      if (!zfinder_dressed_mu.bosons().empty()) {
 65        _sumw_mu_dressed->fill();
 66        const FourMomentum pZ = zfinder_dressed_mu.bosons()[0].momentum();
 67        _hist_zpt_mu_dressed->fill(pZ.pT()/GeV);
 68      }
 69
 70      const DileptonFinder& zfinder_bare_mu = apply<DileptonFinder>(evt, "DileptonFinder_bare_mu");
 71      if (!zfinder_bare_mu.bosons().empty()) {
 72        _sumw_mu_bare->fill();
 73        const FourMomentum pZ = zfinder_bare_mu.bosons()[0].momentum();
 74        _hist_zpt_mu_bare->fill(pZ.pT()/GeV);
 75      }
 76
 77    }
 78
 79
 80    void finalize() {
 81      if (_sumw_el_dressed->val() != 0) scale(_hist_zpt_el_dressed, 1/ *_sumw_el_dressed);
 82      if (_sumw_el_bare->val()    != 0) scale(_hist_zpt_el_bare,    1/ *_sumw_el_bare);
 83      if (_sumw_mu_dressed->val() != 0) scale(_hist_zpt_mu_dressed, 1/ *_sumw_mu_dressed);
 84      if (_sumw_mu_bare->val()    != 0) scale(_hist_zpt_mu_bare,    1/ *_sumw_mu_bare);
 85    }
 86
 87    /// @}
 88
 89
 90    private:
 91
 92	CounterPtr _sumw_el_bare, _sumw_el_dressed;
 93	CounterPtr _sumw_mu_bare, _sumw_mu_dressed;
 94
 95	Histo1DPtr _hist_zpt_el_dressed;
 96	Histo1DPtr _hist_zpt_el_bare;
 97	Histo1DPtr _hist_zpt_mu_dressed;
 98	Histo1DPtr _hist_zpt_mu_bare;
 99  };
100
101
102
103  RIVET_DECLARE_ALIASED_PLUGIN(ATLAS_2011_I917931, ATLAS_2011_S9131140);
104
105}