rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ATLAS_2011_I925932

Measurement of the W pT with electrons and muons at 7 TeV
Experiment: ATLAS (LHC)
Inspire ID: 925932
Status: VALIDATED
Authors:
  • Elena Yatsenko
  • Judith Katzy
References: Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
  • Run with $W$ decays to $e\,\nu_e$ and/or $\mu\,\nu_\mu$.

The W pT at $\sqrt{s} = 7$ TeV is measured using $W\to e \, \nu_e$ and $W\to \mu \, \nu_\mu$ decay channels. The dressed leptons kinematics calculated from the sum of the post-FSR lepton momentum and the momenta of all photons radiated in a cone around the lepton, while the bare uses the lepton kinematics after all QED radiation.

Source code: ATLAS_2011_I925932.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/WFinder.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// ATLAS W pT analysis
  9  class ATLAS_2011_I925932 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2011_I925932);
 14
 15
 16    /// @name Analysis methods
 17    //@{
 18
 19    void init() {
 20      // Set up projections
 21      FinalState fs;
 22      Cut cuts = Cuts::abseta < 2.4 && Cuts::pT > 20*GeV;
 23      WFinder wfinder_dressed_el(fs, cuts, PID::ELECTRON, 0*GeV, 1000*GeV, 25*GeV, 0.2);
 24      declare(wfinder_dressed_el, "WFinder_dressed_el");
 25      WFinder wfinder_bare_el(fs, cuts, PID::ELECTRON, 0*GeV, 1000*GeV, 25*GeV, 0.0);
 26      declare(wfinder_bare_el, "WFinder_bare_el");
 27      WFinder wfinder_dressed_mu(fs, cuts, PID::MUON, 0*GeV, 1000*GeV, 25*GeV, 0.2);
 28      declare(wfinder_dressed_mu, "WFinder_dressed_mu");
 29      WFinder wfinder_bare_mu(fs, cuts, PID::MUON, 0*GeV, 1000*GeV, 25*GeV, 0.0);
 30      declare(wfinder_bare_mu, "WFinder_bare_mu");
 31
 32      // Book histograms
 33      book(_hist_wpt_dressed_el  ,1, 1, 1);
 34      book(_hist_wpt_bare_el     ,1, 1, 2);
 35      book(_hist_wpt_dressed_mu  ,2, 1, 1);
 36      book(_hist_wpt_bare_mu     ,2, 1, 2);
 37    }
 38
 39
 40    /// Do the analysis
 41    void analyze(const Event& event) {
 42      const WFinder& wfinder_dressed_el = apply<WFinder>(event, "WFinder_dressed_el");
 43      const WFinder& wfinder_bare_el    = apply<WFinder>(event, "WFinder_bare_el");
 44      const WFinder& wfinder_dressed_mu = apply<WFinder>(event, "WFinder_dressed_mu");
 45      const WFinder& wfinder_bare_mu    = apply<WFinder>(event, "WFinder_bare_mu");
 46      MSG_DEBUG("Found " << wfinder_dressed_el.size() + wfinder_dressed_mu.size() << " dressed W -> e/mu nu");
 47      MSG_DEBUG("Found " << wfinder_bare_el.size() + wfinder_bare_mu.size() << " bare W -> e/mu nu");
 48
 49      if (wfinder_dressed_el.empty() && wfinder_bare_el.empty() &&
 50          wfinder_dressed_mu.empty() && wfinder_bare_mu.empty()) {
 51        MSG_DEBUG("No W bosons found");
 52        vetoEvent;
 53      }
 54
 55      // "Dressed" electron
 56      if (!wfinder_dressed_el.empty()) {
 57        /// @todo Is this safe? Using MET would be better
 58	    const FourMomentum nu = wfinder_dressed_el.constituentNeutrinos()[0];
 59	    if (wfinder_dressed_el.mT() > 40*GeV && nu.pT() > 25*GeV) {
 60          _hist_wpt_dressed_el->fill(wfinder_dressed_el.bosons()[0].pT()/GeV);
 61	    }
 62      }
 63
 64      // "Bare" electron
 65      if (!wfinder_bare_el.empty()) {
 66        /// @todo Is this safe? Using MET would be better
 67	    const FourMomentum nu = wfinder_bare_el.constituentNeutrinos()[0];
 68	    if (wfinder_bare_el.mT() > 40*GeV && nu.pT() > 25*GeV) {
 69          _hist_wpt_bare_el->fill(wfinder_bare_el.bosons()[0].pT()/GeV);
 70	    }
 71      }
 72
 73      // "Dressed" muon
 74      if (!wfinder_dressed_mu.empty()) {
 75        /// @todo Is this safe? Using MET would be better
 76	    const FourMomentum nu = wfinder_dressed_mu.constituentNeutrinos()[0];
 77	    if (wfinder_dressed_mu.mT() > 40*GeV && nu.pT() > 25*GeV) {
 78          _hist_wpt_dressed_mu->fill(wfinder_dressed_mu.bosons()[0].pT()/GeV);
 79	    }
 80      }
 81
 82      // "Bare" muon
 83      if (!wfinder_bare_mu.empty()) {
 84        /// @todo Is this safe? Using MET would be better
 85	    const FourMomentum nu = wfinder_bare_mu.constituentNeutrinos()[0];
 86	    if (wfinder_bare_mu.mT() > 40*GeV && nu.pT() > 25*GeV) {
 87          _hist_wpt_bare_mu->fill(wfinder_bare_mu.bosons()[0].pT()/GeV);
 88	    }
 89      }
 90
 91    }
 92
 93
 94    // Normalize histos
 95    void finalize() {
 96      normalize(_hist_wpt_dressed_el);
 97      normalize(_hist_wpt_bare_el);
 98      normalize(_hist_wpt_dressed_mu);
 99      normalize(_hist_wpt_bare_mu);
100    }
101
102    //@}
103
104
105  private:
106
107	Histo1DPtr _hist_wpt_dressed_el, _hist_wpt_bare_el, _hist_wpt_dressed_mu, _hist_wpt_bare_mu;
108
109  };
110
111
112  // Hook for the plugin system
113  RIVET_DECLARE_PLUGIN(ATLAS_2011_I925932);
114
115}