Rivet analyses
title: ATLAS_2011_I954993
$WZ$ fiducial cross-section at 7 TeV in ATLAS
Experiment: ATLAS (LHC 7TeV)
Inspire ID: 954993
Status: VALIDATED
Authors: - Lynn Marx - Roman Lysak
References: - Expt page: ATLAS-STDM-2011-25 - Phys.Lett. B709 (2012) 341-357 - arXiv: 1111.5570
Beams: p+ p+
Beam energies: (3500.0, 3500.0)GeV
Run details: - pp WZ events at 7 TeV with direct e, mu W/Z boson decays (no taus from W/Z)
This is a measurement of $WZ$ production in 1.02 fb$^{-1}$ of $pp$ collision data at $\sqrt{s} = $7 TeV collected by the ATLAS experiment in 2011. Doubly leptonic decay events are selected with electrons, muons and missing transverse momentum in the final state. The measurement of the combined fiducial cross section for the $WZ$ bosons decaying directly into electrons and muons is performed.
Source code:ATLAS_2011_I954993.cc
```c++ // -- C++ --
include "Rivet/Analysis.hh"
include "Rivet/Projections/DileptonFinder.hh"
include "Rivet/Projections/LeptonFinder.hh"
include "Rivet/Projections/MissingMomentum.hh"
include "Rivet/Projections/PromptFinalState.hh"
include "Rivet/Projections/VetoedFinalState.hh"
namespace Rivet {
/// @brief WZ fiducial cross-section measurement class ATLAS_2011_I954993 : public Analysis { public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2011_I954993);
/// @name Analysis methods
/// @{
/// Projection and histogram setup
void init() {
Cut cuts = Cuts::abseta < 2.5 && Cuts::pT > 15 * GeV;
DileptonFinder zfinder_e(91.2 * GeV, 0.1, cuts && Cuts::abspid == PID::ELECTRON,
Cuts::massIn(81.1876 * GeV, 101.1876 * GeV));
declare(zfinder_e, "DileptonFinder_e");
DileptonFinder zfinder_mu(91.2 * GeV, 0.1, cuts && Cuts::abspid == PID::MUON,
Cuts::massIn(81.1876 * GeV, 101.1876 * GeV));
declare(zfinder_mu, "DileptonFinder_mu");
declare("MET", MissingMomentum());
VetoedFinalState weinput;
weinput.addVetoOnThisFinalState(zfinder_e);
LeptonFinder ef(weinput, 0.1, cuts && Cuts::abspid == PID::ELECTRON);
declare(ef, "Elecs");
VetoedFinalState wminput;
wminput.addVetoOnThisFinalState(zfinder_mu);
LeptonFinder mf(wminput, 0.1, cuts && Cuts::abspid == PID::MUON);
declare(mf, "Muons");
// Histograms
book(_h_fiducial, 1, 1, 1);
}
/// Do the analysis
void analyze(const Event& event) {
// Looking for a Z, exit if not found
const DileptonFinder& zfinder_e = apply<DileptonFinder>(event, "DileptonFinder_e");
const DileptonFinder& zfinder_mu = apply<DileptonFinder>(event, "DileptonFinder_mu");
if (zfinder_e.bosons().size() != 1 && zfinder_mu.bosons().size() != 1) {
MSG_DEBUG("No Z boson found, vetoing event");
vetoEvent;
}
// Looking for a W, exit if not found
const P4& pmiss = apply<MissingMom>(event, "MET").missingMom();
if (pmiss.Et() < 25 * GeV) vetoEvent;
const Particles& es = apply<LeptonFinder>(event, "Elecs").particles();
const int iefound = closestMatchIndex(es, pmiss, Kin::mass, 80.4 * GeV, 0 * GeV, 1000 * GeV);
const Particles& mus = apply<LeptonFinder>(event, "Muons").particles();
const int imfound = closestMatchIndex(mus, pmiss, Kin::mass, 80.4 * GeV, 0 * GeV, 1000 * GeV);
if (iefound < 0 && imfound < 0) {
MSG_DEBUG("No W boson found, vetoing event");
vetoEvent;
}
// If we find a W, make fiducial acceptance cuts and exit if not found
if (iefound >= 0) {
const Particle& e = es[iefound];
const double mt = mT(pmiss, e);
if (e.pT() < 20 * GeV || mt < 20 * GeV) vetoEvent;
}
else if (imfound >= 0) {
const Particle& m = mus[imfound];
const double mt = mT(pmiss, m);
if (m.pT() < 20 * GeV || mt < 20 * GeV) vetoEvent;
}
// Update the fiducial cross-section histogram
/// @todo Would be better as a counter
_h_fiducial->fill(7000);
}
/// Finalize
void finalize() {
scale(_h_fiducial, crossSection() / femtobarn / sumOfWeights());
}
/// @}
private:
/// Histogram
Histo1DPtr _h_fiducial;
};
RIVET_DECLARE_PLUGIN(ATLAS_2011_I954993);
} ```