Rivet analyses
High-mass di-tau at 13 TeV
Experiment: ATLAS (LHC)
Inspire ID: 2905252
Status: VALIDATED
Authors: - Jon Butterworth - Christian Gutschow - Tony Yue - Peng Wang
References: none listed
Beams: p+ p+
Beam energies: (6500.0, 6500.0)GeV
Run details: - pp interactions at 13 TeV producing tau pairs. Dominantly Drell-Yan, with some ttbar. Particles with ctau>10mm are stable.
The production cross-section of high-mass τ-lepton pairs is measured as a function of the dilepton visible invariant mass, using 140 fb−1 of $\sqrt{s}=13$ TeV proton-proton collision data recorded with the ATLAS detector at the Large Hadron Collider. The measurement agrees with the predictions of the Standard Model. A fit to the invariant mass distribution is performed as a function of b-jet multiplicity, to constrain the non-resonant production of new particles described by an effective field theory or in models containing leptoquarks or Z′ bosons that couple preferentially to third-generation fermions. The constraints on new particles improve on previous results, and the constraints on effective operators include those affecting the anomalous magnetic moment of the τ-lepton.
Source
code:ATLAS_2025_I2905252.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/TauFinder.hh"
#include "Rivet/Tools/Utils.hh"
namespace Rivet {
/// @brief High-mass Drell-Yan prototype at 13 TeV
class ATLAS_2025_I2905252 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2025_I2905252);
//@}
/// @name Analysis methods
//@{
/// Book histograms and initialise projections before the run
void init() {
// Basic final-state projection for hadronic taus
declare(TauFinder(TauDecay::HADRONIC, Cuts::abseta < 4.9), "hadtaus");
book(_e, "mll");
book(_h, "_mll", _e.binning().edges<0>());
}
/// Perform the per-event analysis
void analyze(const Event& event) {
// visible.
const vector<Particle> hadtaus = apply<TauFinder>(event, "hadtaus").taus();
FourMomentum ditau;
vector<double> taus;
for (const Particle& tau : hadtaus) {
FourMomentum l;
for (const Particle& p : tau.children()) {
if (p.isNeutrino()) continue;
ditau += p.mom();
l += p.mom();
}
if ((l.abseta() > 1.37) && (l.abseta() < 1.52 || l.abseta() > 2.47)) continue;
if (l.pT() < 20*GeV) continue;
taus.push_back(l.pT());
}
if (taus.size() != 2) vetoEvent;
std::sort(taus.begin(), taus.end(), std::greater<double>());
if (taus[0] < 90*GeV) vetoEvent;
if (taus[1] < 60*GeV) vetoEvent;
const double mll = ditau.mass();
if (mll <= 100*GeV) vetoEvent;
//histogram filling
_h->fill(mll/GeV);
}
/// Normalise histograms etc., after the run
void finalize() {
scale(_h, crossSectionPerEvent()/femtobarn);
*_e = _h->mkEstimate(_e->path(), "stats", true, 1.0);
}
//@}
/// @name Histograms
//@{
Histo1DPtr _h;
Estimate1DPtr _e;
//@}
};
RIVET_DECLARE_PLUGIN(ATLAS_2025_I2905252);
}