Rivet analyses
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 γγ → ℓ+ℓ− (ℓ = e, μ) 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 fb−1.
Source
code:ATLAS_2015_I1377585.cc
// -*- 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);
}