Rivet analyses


title: ATLAS_2015_I1377585

Exclusive photon-photon production of lepton pairs in proton-proton collisions at $\sqrt{s} = 7$ TeV

Experiment: ATLAS (LHC)

Inspire ID: 1377585

Status: VALIDATED

Authors: - Peter Richardson

References: - Phys.Lett.B 749 (2015) 242-261

Beams: p+ p+

Beam energies: (3500.0, 3500.0)GeV

Run details: - gamma gamma -> l+ l- process.

Measurement of the exclusive $\gamma\gamma\to\ell^+\ell^-$ ($\ell=e,\mu$) cross-section in proton-proton collisions at a centre-of-mass energy of 7 TeV by the ATLAS experiment at the LHC, based on an integrated luminosity of 4.6 $\text{fb}^{-1}$.

Source code:ATLAS_2015_I1377585.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/ChargedFinalState.hh"

include "Rivet/Projections/IdentifiedFinalState.hh"

namespace Rivet {

/// @brief gamma gamma -> l+ l- class ATLAS_2015_I1377585 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2015_I1377585);


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

/// Book histograms and initialise projections before the run
void init() {
  ChargedFinalState cfs(Cuts::abseta < 2.5 and Cuts::pT > 0.4);
  declare(cfs, "CFS");
  // Get electrons which pass the initial kinematic cuts
  IdentifiedFinalState electron_fs(Cuts::abseta < 2.4 && Cuts::pT > 12 * GeV);
  electron_fs.acceptIdPair(PID::ELECTRON);
  declare(electron_fs, "ELECTRON_FS");
  // Get muons which pass the initial kinematic cuts
  IdentifiedFinalState muon_fs(Cuts::abseta < 2.4 && Cuts::pT > 10 * GeV);
  muon_fs.acceptIdPair(PID::MUON);
  declare(muon_fs, "MUON_FS");
  // book histos
  for (unsigned int ix = 0; ix < 2; ++ix) book(_h_sigma[ix], 1, 1, 1 + ix);
}


/// Perform the per-event analysis
void analyze(const Event& event) {
  const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "CFS");
  if (cfs.size() != 2) vetoEvent; // no other charged particles in 2.5
  // have e+e-
  const Particles& electronFS = apply<IdentifiedFinalState>(event, "ELECTRON_FS").particles();
  if (electronFS.size() == 2 && electronFS[0].pid() == -electronFS[1].pid()) {
    double mee = (electronFS[0].momentum() + electronFS[1].momentum()).mass();
    if (mee > 24.) _h_sigma[0]->fill(7000);
  }
  // have 2 muons with opposite charge
  const Particles& muonFS = apply<IdentifiedFinalState>(event, "MUON_FS").particles();
  if (muonFS.size() == 2 && muonFS[0].pid() == -muonFS[1].pid()) {
    double mmumu = (muonFS[0].momentum() + muonFS[1].momentum()).mass();
    if (mmumu > 20.) _h_sigma[1]->fill(7000);
  }
}


/// Normalise histograms etc., after the run
void finalize() {
  for (unsigned int ix = 0; ix < 2; ++ix) scale(_h_sigma[ix], crossSection() / picobarn / sumOfWeights());
}

/// @}


/// @name Histograms
/// @{
BinnedHistoPtr<int> _h_sigma[2];
/// @}

};

RIVET_DECLARE_PLUGIN(ATLAS_2015_I1377585);

} ```