Rivet analyses


title: ATLAS_2014_I1288706

Measurement of the low-mass Drell-Yan differential cross section at 7 TeV

Experiment: ATLAS (LHC)

Inspire ID: 1288706

Status: VALIDATED

Authors: - Elena Yatsenko

References: - Expt page: ATLAS-STDM-2011-41 - JHEP06(2014)112 - DOI: 10.1007/JHEP06(2014)112 - arXiv: 1404.1212

Beams: p+ p+

Beam energies: (3500.0, 3500.0)GeV

Run details: - Run with inclusive $Z$ events, with $Z/\gamma^*$ decays to electrons and/or muons at $\sqrt{s} = 7$~TeV.

Measurements of the differential cross section for the process $Z/\gamma^\ast \rightarrow l$ $(l = e, \mu)$ as a function of dilepton invariant mass in pp collisions at $\sqrt{s} = 7$~TeV. The measurement is performed in the $e$ and $\mu$ channels for invariant masses between 26 GeV and 66 GeV in the fiducial region $p_\text{T}^\text{leading} > 15$~GeV, $p_\text{T}^\text{subleading} > 12$~GeV, $|\eta| < 2.4$ using an integrated luminosity of 1.6~$\text{fb}^{-1}$. The analysis is extended to invariant masses as low as 12 GeV in the muon channel within a fiducal region of $p_\text{T}^\text{leading} > 9$~GeV, $p_\text{T}^\text{subleading} > 6$~GeV, $|\eta| < 2.4$ with 35~$\text{pb}^{-1}$.

Source code:ATLAS_2014_I1288706.cc

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Particle.fhh"

include "Rivet/Projections/DileptonFinder.hh"

include "Rivet/Projections/FinalState.hh"

namespace Rivet {

/// Low-mass Drell-Yan differential cross section at 7 TeV class ATLAS_2014_I1288706 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2014_I1288706);


/// @name Analysis methods
/// @{

/// Book histograms and initialise projections before the run
void init() {

  // Set up projections
  DileptonFinder zfinder_ext_dressed_mu(91.2 * GeV, 0.1,
                                        Cuts::abseta < 2.4 && Cuts::pT > 6.0 * GeV
                                            && Cuts::abspid == PID::MUON,
                                        Cuts::massIn(12.0 * GeV, 66.0 * GeV));
  declare(zfinder_ext_dressed_mu, "DileptonFinder_ext_dressed_mu");

  DileptonFinder zfinder_dressed_mu(91.2 * GeV, 0.1,
                                    Cuts::abseta < 2.4 && Cuts::pT > 12 * GeV
                                        && Cuts::abspid == PID::MUON,
                                    Cuts::massIn(26.0 * GeV, 66.0 * GeV));
  declare(zfinder_dressed_mu, "DileptonFinder_dressed_mu");

  DileptonFinder zfinder_dressed_el(91.2 * GeV, 0.1,
                                    Cuts::abseta < 2.4 && Cuts::pT > 12 * GeV
                                        && Cuts::abspid == PID::ELECTRON,
                                    Cuts::massIn(26.0 * GeV, 66.0 * GeV));
  declare(zfinder_dressed_el, "DileptonFinder_dressed_el");

  book(_hist_ext_mu_dressed, 1, 1, 1); // muon, dressed level, extended phase space
  book(_hist_mu_dressed, 2, 1, 1);     // muon, dressed level, nominal phase space
  book(_hist_el_dressed, 2, 1, 2);     // electron, dressed level, nominal phase space
}


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

  const DileptonFinder& zfinder_ext_dressed_mu = apply<DileptonFinder>(event,
                                                                       "DileptonFinder_ext_dressed_mu");
  const DileptonFinder& zfinder_dressed_mu = apply<DileptonFinder>(event, "DileptonFinder_dressed_mu");
  const DileptonFinder& zfinder_dressed_el = apply<DileptonFinder>(event, "DileptonFinder_dressed_el");

  fillPlots(zfinder_ext_dressed_mu, _hist_ext_mu_dressed, 9 * GeV);
  fillPlots(zfinder_dressed_mu, _hist_mu_dressed, 15 * GeV);
  fillPlots(zfinder_dressed_el, _hist_el_dressed, 15 * GeV);
}


/// Helper function to fill the histogram if a Z is found with the required lepton cuts
void fillPlots(const DileptonFinder& zfinder, Histo1DPtr hist, double leading_pT) {
  if (zfinder.bosons().size() != 1) return;
  const FourMomentum el1 = zfinder.leptons()[0];
  const FourMomentum el2 = zfinder.leptons()[1];
  if (el1.pT() < leading_pT && el2.pT() < leading_pT) return;
  const double mass = zfinder.bosons()[0].mass();
  hist->fill(mass / GeV);
}


/// Normalise histograms etc., after the run
void finalize() {
  scale(_hist_ext_mu_dressed, crossSection() / picobarn / sumOfWeights());
  scale(_hist_mu_dressed, crossSection() / picobarn / sumOfWeights());
  scale(_hist_el_dressed, crossSection() / picobarn / sumOfWeights());
}

/// @}

private:

/// Histograms
Histo1DPtr _hist_ext_mu_dressed, _hist_mu_dressed, _hist_el_dressed;

};

RIVET_DECLARE_PLUGIN(ATLAS_2014_I1288706);

} ```