Rivet analyses
title: ATLAS_2016_I1426515
WW production at 8 TeV
Experiment: ATLAS (LHC)
Inspire ID: 1426515
Status: VALIDATED
Authors: - Kristin Lohwasser - Christian Gutschow
References: - Expt page: ATLAS-STDM-2013-07 - JHEP 1609 (2016) 029 - DOI: 10.1007/JHEP09(2016)029 - arXiv: 1603.01702
Beams: p+ p+
Beam energies: (4000.0, 4000.0)GeV
Run details: - pp -> WW production at 8 TeV
The production of $W$ boson pairs in proton--proton collisions at $\sqrt{s} = 8$ TeV is studied using data corresponding to 20.3 fb${}^{-1}$ of integrated luminosity collected by the ATLAS detector during 2012 at the CERN Large Hadron Collider. The $W$ bosons are reconstructed using their leptonic decays into electrons or muons and neutrinos. Events with reconstructed jets are not included in the candidate event sample. A total of 6636 $WW$ candidate events are observed. Measurements are performed in fiducial regions closely approximating the detector acceptance. The integrated measurement is corrected for all acceptance effects and for the $W$ branching fractions to leptons in order to obtain the total $WW$ production cross section, which is found to be $71.1 \pm 1.1$ (stat) ${}^{+5.7}{-5.0}$ (syst) $\pm 1.4$ (lumi) pb. This agrees with the next-to-next-to-leading-order Standard Model prediction of $63.2 {}^{+1.6}{-1.4}$ (scale) $\pm 1.2$ (PDF) pb. Fiducial differential cross sections are measured as a function of each of six kinematic variables. The distribution of the transverse momentum of the leading lepton is used to set limits on anomalous triple-gauge-boson couplings.
Source code:ATLAS_2016_I1426515.cc
```c++ // -- C++ --
include "Rivet/Analysis.hh"
include "Rivet/Projections/FastJets.hh"
include "Rivet/Projections/FinalState.hh"
include "Rivet/Projections/IdentifiedFinalState.hh"
include "Rivet/Projections/LeptonFinder.hh"
include "Rivet/Projections/PromptFinalState.hh"
include "Rivet/Projections/VetoedFinalState.hh"
include "Rivet/Projections/VisibleFinalState.hh"
namespace Rivet {
/// WW production at 8 TeV class ATLAS_2016_I1426515 : public Analysis { public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2016_I1426515);
/// Book histograms and initialise projections before the run
void init() {
const FinalState fs(Cuts::abseta < 4.5);
// Project photons for dressing
IdentifiedFinalState photon_id(fs);
photon_id.acceptIdPair(PID::PHOTON);
// Project dressed electrons with pT > 15 GeV and |eta| < 2.47
PromptFinalState el_bare(FinalState(Cuts::abspid == PID::ELECTRON));
Cut cuts = (Cuts::abseta < 2.47) && ((Cuts::abseta <= 1.37) || (Cuts::abseta >= 1.52))
&& (Cuts::pT > 10 * GeV);
LeptonFinder el_dressed_FS(el_bare, photon_id, 0.1, cuts);
declare(el_dressed_FS, "EL_DRESSED_FS");
// Project dressed muons with pT > 15 GeV and |eta| < 2.5
PromptFinalState mu_bare(FinalState(Cuts::abspid == PID::MUON));
LeptonFinder mu_dressed_FS(mu_bare, photon_id, 0.1, Cuts::abseta < 2.4 && Cuts::pT > 15 * GeV);
declare(mu_dressed_FS, "MU_DRESSED_FS");
Cut cuts_WW = (Cuts::abseta < 2.5) && (Cuts::pT > 20 * GeV);
IdentifiedFinalState lep_id(fs);
lep_id.acceptIdPair(PID::MUON);
lep_id.acceptIdPair(PID::ELECTRON);
PromptFinalState lep_bare(lep_id);
LeptonFinder leptons(lep_bare, photon_id, 0.1, cuts_WW);
declare(leptons, "leptons");
declare(FinalState(Cuts::abspid == PID::TAU || Cuts::abspid == PID::NU_TAU), "tau_id");
// Get MET from generic invisibles
VetoedFinalState ivfs(fs);
ivfs.addVetoOnThisFinalState(VisibleFinalState(fs));
declare(ivfs, "InvisibleFS");
// Project jets
FastJets jets(fs, JetAlg::ANTIKT, 0.4, JetMuons::NONE, JetInvisibles::NONE);
declare(jets, "jets");
// Integrated cross sections
// d01 ee/mm fiducial integrated cross sections
book(_hist_mm_fid_intxsec, 1, 1, 1);
book(_hist_ee_fid_intxsec, 1, 1, 2);
// d02 emme fiducial integrated cross sections
book(_hist_emme_fid_intxsec, 2, 1, 1);
// d10 emme fiducial differential cross section (leading lepton ptlead + ptlead normalized)
book(_hist_emme_fid_ptlead, 10, 1, 1);
book(_hist_emme_fid_ptleadnorm, 10, 1, 2);
// d11 emme fiducial differential cross section (dilepton-system ptll + ptll normalized)
book(_hist_emme_fid_ptll, 11, 1, 1);
book(_hist_emme_fid_ptllnorm, 11, 1, 2);
// d12 emme fiducial differential cross section (dilepton-system mll + mll normalized)
book(_hist_emme_fid_mll, 12, 1, 1);
book(_hist_emme_fid_mllnorm, 12, 1, 2);
// d13 emme fiducial differential cross section (dilepton-system delta_phi_ll + dphill normalized)
book(_hist_emme_fid_dphill, 13, 1, 1);
book(_hist_emme_fid_dphillnorm, 13, 1, 2);
// d14 emme fiducial differential cross section (absolute rapidity of dilepton-system y_ll + y_ll normalized)
book(_hist_emme_fid_yll, 14, 1, 1);
book(_hist_emme_fid_yllnorm, 14, 1, 2);
// d15 emme fiducial differential cross section (absolute costheta* of dilepton-system costhetastar_ll + costhetastar_ll normalized)
book(_hist_emme_fid_costhetastarll, 15, 1, 1);
book(_hist_emme_fid_costhetastarllnorm, 15, 1, 2);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
// Find leptons
const FinalState& ifs = apply<VetoedFinalState>(event, "InvisibleFS");
const DressedLeptons& leptons = apply<LeptonFinder>(event, "leptons").dressedLeptons();
const DressedLeptons& good_mu = apply<LeptonFinder>(event, "MU_DRESSED_FS").dressedLeptons();
const DressedLeptons& good_el = apply<LeptonFinder>(event, "EL_DRESSED_FS").dressedLeptons();
const Jets& jets = apply<FastJets>(event, "jets").jetsByPt(Cuts::pT > 25 * GeV && Cuts::abseta < 4.5);
// Taus are excluded from the fiducial cross section
const Particles taus = apply<FinalState>(event, "tau_id")
.particlesByPt(Cuts::pT > 12. * GeV && Cuts::abseta < 3.0);
if (!taus.empty()) vetoEvent;
// Remove events that do not contain 2 good leptons (either muons or electrons)
if (leptons.size() != 2 && (good_el.size() != 1 || good_mu.size() != 1)) vetoEvent;
// Split into channels
int channel = -1; // 1=mm, 2=ee; 3=emu; 4=mue
if (good_mu.size() == 2)
channel = 1; //mm
else if (good_el.size() == 2)
channel = 2; //ee
else if (good_mu.size() == 1 && good_el.size() == 1 && good_el[0].pT() > good_mu[0].pT())
channel = 3; //emu
else if (good_mu.size() == 1 && good_el.size() == 1 && good_el[0].pT() < good_mu[0].pT())
channel = 4; //mue
if (channel == -1) vetoEvent;
// Assign leptons
const DressedLepton *lep1, *lep2;
if (channel == 1) { //mm
if (good_mu[0].pT() > good_mu[1].pT()) {
lep1 = &good_mu[0];
lep2 = &good_mu[1];
}
else {
lep1 = &good_mu[1];
lep2 = &good_mu[0];
}
}
else if (channel == 2) { //ee
if (good_el[0].pT() > good_el[1].pT()) {
lep1 = &good_el[0];
lep2 = &good_el[1];
}
else {
lep1 = &good_el[1];
lep2 = &good_el[0];
}
}
else if (channel == 3) { //emu
lep1 = &good_el[0];
lep2 = &good_mu[0];
}
else { // if (channel == 4) { //mue
lep1 = &good_mu[0];
lep2 = &good_el[0];
}
// Cut on leptons
if (lep1->pT() < 25 * GeV || lep2->pT() < 20 * GeV) vetoEvent;
// Select jets isolated from electrons
const Jets jets_selected = select(jets, [&](const Jet& j) { return all(good_el, deltaRGtr(j, 0.3)); });
// Define variables
const FourMomentum met = sum(ifs.particles(), FourMomentum());
const FourMomentum dilep = lep1->momentum() + lep2->momentum();
const double ptll = dilep.pT() / GeV;
const double Mll = dilep.mass() / GeV;
const double Yll = dilep.absrap();
const double DPhill = fabs(deltaPhi(*lep1, *lep2));
const double costhetastar = fabs(tanh((lep1->eta() - lep2->eta()) / 2));
// Calculate dphi to MET
double DPhi_met = fabs(deltaPhi((*lep1), met));
if (fabs(deltaPhi((*lep2), met)) < DPhi_met) DPhi_met = fabs(deltaPhi((*lep2), met));
if (DPhi_met > M_PI / 2)
DPhi_met = 1.;
else
DPhi_met = fabs(sin(DPhi_met));
// Apply selections
// mll lower cut (reject quarkonia)
if ((channel == 1 || channel == 2) && Mll < 15.)
vetoEvent;
else if (Mll < 10.)
vetoEvent;
// Z veto (reject Z -- only dilepton channels)
if ((channel == 1 || channel == 2) && abs(Mll - 91.1876) < 15.) vetoEvent;
// Met rel cut
if ((channel == 1 || channel == 2) && met.pT() * DPhi_met < 45 * GeV)
vetoEvent;
else if (met.pT() * DPhi_met < 15 * GeV)
vetoEvent;
// MET (pt-MET) cut
if ((channel == 1 || channel == 2) && met.pT() <= 45 * GeV)
vetoEvent; // begin MET cut
else if (met.pT() <= 20 * GeV)
vetoEvent;
// Require 0 jets
if (!jets_selected.empty()) vetoEvent;
// Fill histograms
if (channel == 1) {
_hist_mm_fid_intxsec->fill(1.0);
}
else if (channel == 2) {
_hist_ee_fid_intxsec->fill(1.0);
}
else if (channel == 3 || channel == 4) {
_hist_emme_fid_intxsec->fill(1.0);
_hist_emme_fid_ptlead->fill(lep1->pT() / GeV);
_hist_emme_fid_ptleadnorm->fill(lep1->pT() / GeV);
_hist_emme_fid_ptll->fill(ptll);
_hist_emme_fid_ptllnorm->fill(ptll);
_hist_emme_fid_mll->fill(Mll);
_hist_emme_fid_mllnorm->fill(Mll);
_hist_emme_fid_dphill->fill(DPhill);
_hist_emme_fid_dphillnorm->fill(DPhill);
_hist_emme_fid_yll->fill(Yll);
_hist_emme_fid_yllnorm->fill(Yll);
_hist_emme_fid_costhetastarll->fill(costhetastar);
_hist_emme_fid_costhetastarllnorm->fill(costhetastar);
}
}
/// Normalise histograms etc., after the run
void finalize() {
const double sf(crossSection() / femtobarn / sumOfWeights());
scale(_hist_mm_fid_intxsec, sf);
scale(_hist_ee_fid_intxsec, sf);
scale(_hist_emme_fid_intxsec, sf);
scale(_hist_emme_fid_ptlead, sf);
scale(_hist_emme_fid_ptll, sf);
scale(_hist_emme_fid_mll, sf);
scale(_hist_emme_fid_dphill, sf);
scale(_hist_emme_fid_yll, sf);
scale(_hist_emme_fid_costhetastarll, sf);
normalize(_hist_emme_fid_ptleadnorm);
normalize(_hist_emme_fid_ptllnorm);
normalize(_hist_emme_fid_mllnorm);
normalize(_hist_emme_fid_dphillnorm);
normalize(_hist_emme_fid_yllnorm);
normalize(_hist_emme_fid_costhetastarllnorm);
}
private:
/// @name Histograms
/// @{
// d01 ee/mm fiducial integrated cross sections
Histo1DPtr _hist_mm_fid_intxsec, _hist_ee_fid_intxsec;
// d02 emme fiducial integrated cross sections
Histo1DPtr _hist_emme_fid_intxsec;
// d10 emme fiducial differential cross section (leading lepton ptlead + ptlead normalized)
Histo1DPtr _hist_emme_fid_ptlead, _hist_emme_fid_ptleadnorm;
// d11 emme fiducial differential cross section (dilepton-system ptll + ptll normalized)
Histo1DPtr _hist_emme_fid_ptll, _hist_emme_fid_ptllnorm;
// d12 emme fiducial differential cross section (dilepton-system mll + mll normalized)
Histo1DPtr _hist_emme_fid_mll, _hist_emme_fid_mllnorm;
// d13 emme fiducial differential cross section (dilepton-system delta_phi_ll + dphill normalized)
Histo1DPtr _hist_emme_fid_dphill, _hist_emme_fid_dphillnorm;
// d14 emme fiducial differential cross section (absolute rapidity of dilepton-system y_ll + y_ll normalized)
Histo1DPtr _hist_emme_fid_yll, _hist_emme_fid_yllnorm;
// d15 emme fiducial differential cross section (absolute costheta* of dilepton-system costhetastar_ll + costhetastar_ll normalized)
Histo1DPtr _hist_emme_fid_costhetastarll, _hist_emme_fid_costhetastarllnorm;
/// @}
};
RIVET_DECLARE_PLUGIN(ATLAS_2016_I1426515);
} ```