Rivet analyses

High-mass CC Drell-Yan at 13 TeV

Experiment: ATLAS (LHC)

Inspire ID: 2895869

Status: VALIDATED

Authors: - Maximilian Jaffke - Tim Frederik Beumker - Frank Ellinghaus

References: - Expt page: ATLAS-STDM-2018-41 - JHEP 07 (2025) 026 - DOI:10.1007/JHEP07(2025)026 - arXiv: 2502.21088

Beams: p+ p+

Beam energies: (6500.0, 6500.0)GeV

Run details: - W → ν ( = e, μ) events at $\sqrt{s} = 13$~TeV

This paper presents a first measurement of the cross-section for the charged-current Drell–Yan process pp → W± → ±ν above the resonance region, where is an electron or muon. The measurement is performed for transverse masses, mTW, between 200 GeV and 5000 GeV, using a sample of 140~fb−1 of pp collision data at a centre-of-mass energy of $\sqrt{s}$ = 13 TeV collected by the ATLAS detector at the LHC during 2015–2018. The data are presented single differentially in transverse mass and double differentially in transverse mass and absolute lepton pseudorapidity. A test of lepton flavour universality shows no significant deviations from the Standard Model. The electron and muon channel measurements are combined to achieve a total experimental precision of 3% at low mTW. The single- and double differential W-boson charge asymmetries are evaluated from the measurements. A comparison to next-to-next-to-leading-order perturbative QCD predictions using several recent parton distribution functions and including next-to-leading-order electroweak effects indicates the potential of the data to constrain parton distribution functions. The data are also used to constrain four fermion operators in the Standard Model Effective Field Theory formalism, in particular the lepton-quark operator Wilson coefficient cq(3).

Source code:ATLAS_2025_I2895869.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/InvisibleFinalState.hh"
#include "Rivet/Projections/LeptonFinder.hh"
#include "Rivet/Projections/PromptFinalState.hh"

namespace Rivet {


  /// @brief High-mass CC Drell-Yan at 13 TeV
  class ATLAS_2025_I2895869 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2025_I2895869);


    void init() {
      //Mode selection for Electron and Muon
      _mode = 0;
      if ( getOption("LMODE") == "EL" ) _mode = 0;
      if ( getOption("LMODE") == "MU" ) _mode = 1;

      const Cut lcut = Cuts::pT > 65*GeV && Cuts::abseta < 2.4;
      const Cut ncut = Cuts::pT > 85*GeV;
      FinalState nfs(ncut);

      PromptFinalState lepton(Cuts::abspid ==(_mode ?  PID::MUON : PID::ELECTRON));
      declare(lepton, "Lepton");

      PromptFinalState photons(Cuts::abspid == PID::PHOTON);
      declare(photons, "Photons");

      declare(InvisibleFinalState(OnlyPrompt::YES), "InvFS");

      LeptonFinder lf(lepton, photons, 0.1, lcut);
      declare(lf, "Leptons");

      const vector<double> mll_bins{200., 300., 425., 600., 900., 2000. };

      book(_h_etaLpDres, mll_bins);
      book(_h_etaLmDres, mll_bins);
      book(_h_etaLpmDres, mll_bins);

      size_t ch = _mode ? 18 : 0; //channel offset Mu or E

      for(size_t i = 0; i < _h_etaLpDres->numBins(); ++i) {
        book(_h_etaLpDres->bin(i+1),  12 + ch + i, 1, 2);
        book(_h_etaLmDres->bin(i+1),  17 + ch + i, 1, 2);
        book(_h_etaLpmDres->bin(i+1), 22 + ch + i, 1, 2);
      }

      book(_h_Lp_mtwDres, 9 + ch, 1, 2);
      book(_h_Lm_mtwDres, 10 + ch, 1, 2);
      book(_h_Lpm_mtwDres, 11 + ch, 1, 2);
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {

      const Particles& ne = apply<InvisibleFinalState>(event, "InvFS").particles();
      if (ne.empty()) vetoEvent;
      const Particle& n = ne[0];
      P4 pmiss = n.mom();

      const Particles& ls = apply<LeptonFinder>(event, "Leptons").particles();
      if (ls.size() != 1) vetoEvent;
      const Particle& l = ls[0];

      if (mT(l.mom(), pmiss) < 200*GeV) vetoEvent;
      if (mT(l.mom(), pmiss) > 5000*GeV) vetoEvent;

      _h_Lpm_mtwDres->fill(mT(l.mom(), pmiss)/GeV);
      _h_etaLpmDres->fill(mT(l.mom(), pmiss)/GeV, l.abseta()/GeV);

      if(l.charge() > 0) {
        _h_etaLpDres->fill(mT(l.mom(), pmiss)/GeV, l.abseta()/GeV);
        _h_Lp_mtwDres->fill(mT(l.mom(), pmiss)/GeV);
      }
      else if(l.charge() < 0) {
        _h_etaLmDres->fill(mT(l.mom(), pmiss)/GeV, l.abseta()/GeV);
        _h_Lm_mtwDres->fill(mT(l.mom(), pmiss)/GeV);
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      scale(_h_Lp_mtwDres, crossSectionPerEvent()/picobarn);
      scale(_h_Lm_mtwDres, crossSectionPerEvent()/picobarn);
      scale(_h_Lpm_mtwDres, crossSectionPerEvent()/picobarn);
      scale(_h_etaLpDres, crossSectionPerEvent()/picobarn);
      scale(_h_etaLmDres, crossSectionPerEvent()/picobarn);
      scale(_h_etaLpmDres, crossSectionPerEvent()/picobarn);
      divByGroupWidth(_h_etaLpDres);
      divByGroupWidth(_h_etaLmDres);
      divByGroupWidth(_h_etaLpmDres);
    }

    /// @}

    size_t _mode;
    /// @name Histograms
    /// @{
    /// @}
    Histo1DPtr _h_Lp_mtwDres;
    Histo1DPtr _h_Lm_mtwDres;
    Histo1DPtr _h_Lpm_mtwDres;
    Histo1DGroupPtr _h_etaLpDres;
    Histo1DGroupPtr _h_etaLmDres;
    Histo1DGroupPtr _h_etaLpmDres;
  };


  RIVET_DECLARE_PLUGIN(ATLAS_2025_I2895869);

}