Rivet analyses referenceATLAS_2015_I1377585Exclusive photon-photon production of lepton pairs in proton-proton collisions at $\sqrt{s} = 7$ TeVExperiment: ATLAS (LHC) Inspire ID: 1377585 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
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 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/ChargedFinalState.hh"
4#include "Rivet/Projections/IdentifiedFinalState.hh"
5
6namespace Rivet {
7
8
9 /// @brief gamma gamma -> l+ l-
10 class ATLAS_2015_I1377585 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2015_I1377585);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 ChargedFinalState cfs(Cuts::abseta < 2.5 and Cuts::pT>0.4);
23 declare(cfs,"CFS");
24 // Get electrons which pass the initial kinematic cuts
25 IdentifiedFinalState electron_fs(Cuts::abseta < 2.4 && Cuts::pT > 12*GeV);
26 electron_fs.acceptIdPair(PID::ELECTRON);
27 declare(electron_fs, "ELECTRON_FS");
28 // Get muons which pass the initial kinematic cuts
29 IdentifiedFinalState muon_fs(Cuts::abseta < 2.4 && Cuts::pT > 10*GeV);
30 muon_fs.acceptIdPair(PID::MUON);
31 declare(muon_fs, "MUON_FS");
32 // book histos
33 for(unsigned int ix=0;ix<2;++ix)
34 book(_h_sigma [ix],1,1,1+ix);
35 }
36
37
38 /// Perform the per-event analysis
39 void analyze(const Event& event) {
40 const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "CFS");
41 if (cfs.size() != 2) vetoEvent; // no other charged particles in 2.5
42 // have e+e-
43 const Particles& electronFS = apply<IdentifiedFinalState>(event, "ELECTRON_FS").particles();
44 if (electronFS.size() == 2 && electronFS[0].pid() == -electronFS[1].pid()) {
45 double mee = (electronFS[0].momentum()+electronFS[1].momentum()).mass();
46 if(mee>24.) _h_sigma[0]->fill(7000);
47 }
48 // have 2 muons with opposite charge
49 const Particles& muonFS = apply<IdentifiedFinalState>(event, "MUON_FS").particles();
50 if (muonFS.size() == 2 && muonFS[0].pid() == -muonFS[1].pid()) {
51 double mmumu = (muonFS[0].momentum()+muonFS[1].momentum()).mass();
52 if(mmumu>20.) _h_sigma[1]->fill(7000);
53 }
54 }
55
56
57 /// Normalise histograms etc., after the run
58 void finalize() {
59 for(unsigned int ix=0;ix<2;++ix)
60 scale(_h_sigma [ix], crossSection()/picobarn/sumOfWeights());
61 }
62
63 /// @}
64
65
66 /// @name Histograms
67 /// @{
68 BinnedHistoPtr<int> _h_sigma[2];
69 /// @}
70
71
72 };
73
74
75 RIVET_DECLARE_PLUGIN(ATLAS_2015_I1377585);
76
77}
|