Rivet analyses
Same-sign WW cross section
Experiment: ATLAS (LHC)
Inspire ID: 1298023
Status: VALIDATED
Authors: - Simone Pagan Griso - Christian Gutschow
References: - Expt page: ATLAS-STDM-2013-06 - Phys.Rev.Lett. 113 (2014) 141803 - DOI: 10.1103/PhysRevLett.113.141803 - arXiv: 1405.6241
Beams: p+ p+
Beam energies: (4000.0, 4000.0)GeV
Run details: - p + p -> W W j j, where the W bosons decay leptonically
First measurement of W±W±jj, same-electric-charge diboson production in association with two jets, using 20.3fb−1 of proton-proton collision data at $\sqrt{s} = 8$,TeV recorded by the ATLAS detector at the Large Hadron Collider. Events with two reconstructed same-charge leptons (e±e±, e±μ±, and μ±μ±) and two or more jets are analyzed. Production cross sections are measured in two fiducial regions, with different sensitivities to the electroweak and strong production mechanisms. First evidence for W±W±jj production and electroweak-only W±W±jj production is observed with a significance of 4.5 and 3.6 standard deviations, respectively.
Source
code:ATLAS_2014_I1298023.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedLeptons.hh"
#include "Rivet/Projections/VetoedFinalState.hh"
#include "Rivet/Projections/MissingMomentum.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/LeptonFinder.hh"
namespace Rivet {
/// ATLAS same-sign WW production at 8 TeV (PRL)
class ATLAS_2014_I1298023 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2014_I1298023);
/// @name Analysis methods
/// @{
void init() {
const FinalState fs;
// bare leptons
ChargedLeptons bare_leptons(fs);
// dressed leptons
Cut cuts = (Cuts::abseta < 2.5) & (Cuts::pT > 25*GeV);
LeptonFinder leptons(bare_leptons, fs, 0.1, cuts);
declare(leptons, "leptons");
// MET
declare(MissingMomentum(fs), "MissingET");
// jets
VetoedFinalState vfs(fs);
vfs.addVetoPairId(PID::MUON);
vfs.vetoNeutrinos();
declare(FastJets(vfs, JetAlg::ANTIKT, 0.4), "jets");
// book histogram
book(_hist ,1, 1, 1);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const DressedLeptons& leptons = apply<LeptonFinder>(event, "leptons").dressedLeptons();
if ( leptons.size() < 2 ) vetoEvent;
double minDR_ll = DBL_MAX, mll = -1.0;
for (unsigned int i = 0; i < leptons.size(); ++i) {
DressedLepton lep1 = leptons[i];
for (unsigned int j = i + 1; j < leptons.size(); ++j) {
DressedLepton lep2 = leptons[j];
double dr = deltaR(lep1, lep2);
if ( dr < minDR_ll ) minDR_ll = dr;
double m = (lep1.momentum() + lep2.momentum()).mass();
if ( mll < 0. || m < mll ) mll = m;
}
}
if ( minDR_ll <= 0.3 || mll <= 20*GeV ) vetoEvent;
if ( leptons[0].charge() * leptons[1].charge() < 0.0 ) vetoEvent;
const MissingMomentum& met = apply<MissingMomentum>(event, "MissingET");
if ( met.vectorEt().mod() <= 40*GeV ) vetoEvent;
const Jets& all_jets = apply<FastJets>(event, "jets").jetsByPt( (Cuts::abseta < 4.5) && (Cuts::pT > 30*GeV) );
Jets jets;
double minDR_overall = DBL_MAX;
for (const Jet& jet : all_jets) {
double minDR_jet = DBL_MAX, minDR_electrons = DBL_MAX;
for( DressedLepton lep : leptons ) {
double dr = deltaR(jet, lep);
if ( dr < minDR_jet ) minDR_jet = dr;
if ( lep.abspid() == 11 && dr < minDR_electrons ) minDR_electrons = dr;
}
if ( minDR_electrons < 0.05 ) continue; // veto jet if it overlaps with electron
if ( minDR_jet < minDR_overall ) minDR_overall = minDR_jet;
jets += jet;
}
if ( jets.size() < 2 || minDR_overall <= 0.3 ) vetoEvent;
FourMomentum dijet = jets[0].momentum() + jets[1].momentum();
if ( dijet.mass() <= 500*GeV ) vetoEvent;
// inclusive region
_hist->fill(1);
// VBS region
if ( deltaRap(jets[0], jets[1]) > 2.4 ) _hist->fill(2);
}
/// Normalise histograms etc., after the run
void finalize() {
const double scalefactor( crossSection()/picobarn / sumOfWeights() );
scale(_hist, scalefactor);
}
/// @}
private:
/// @name Histograms
/// @{
Histo1DPtr _hist;
/// @}
};
RIVET_DECLARE_PLUGIN(ATLAS_2014_I1298023);
}