Rivet analyses referenceATLAS_2011_I954993$WZ$ fiducial cross-section at 7 TeV in ATLASExperiment: ATLAS (LHC 7TeV) Inspire ID: 954993 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
This is a measurement of $WZ$ production in 1.02 fb$^{-1}$ of $pp$ collision data at $\sqrt{s} = $7 TeV collected by the ATLAS experiment in 2011. Doubly leptonic decay events are selected with electrons, muons and missing transverse momentum in the final state. The measurement of the combined fiducial cross section for the $WZ$ bosons decaying directly into electrons and muons is performed. Source code: ATLAS_2011_I954993.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/DileptonFinder.hh"
4#include "Rivet/Projections/MissingMomentum.hh"
5#include "Rivet/Projections/LeptonFinder.hh"
6#include "Rivet/Projections/VetoedFinalState.hh"
7#include "Rivet/Projections/PromptFinalState.hh"
8
9namespace Rivet {
10
11
12 /// @brief WZ fiducial cross-section measurement
13 class ATLAS_2011_I954993 : public Analysis {
14 public:
15
16 /// Constructor
17 RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2011_I954993);
18
19
20 /// @name Analysis methods
21 /// @{
22
23 /// Projection and histogram setup
24 void init() {
25 Cut cuts = Cuts::abseta < 2.5 && Cuts::pT > 15*GeV;
26 DileptonFinder zfinder_e(91.2*GeV, 0.1, cuts && Cuts::abspid == PID::ELECTRON,
27 Cuts::massIn(81.1876*GeV, 101.1876*GeV));
28 declare(zfinder_e, "DileptonFinder_e");
29 DileptonFinder zfinder_mu(91.2*GeV, 0.1, cuts && Cuts::abspid == PID::MUON,
30 Cuts::massIn(81.1876*GeV, 101.1876*GeV));
31 declare(zfinder_mu, "DileptonFinder_mu");
32
33 declare("MET", MissingMomentum());
34 VetoedFinalState weinput;
35 weinput.addVetoOnThisFinalState(zfinder_e);
36 LeptonFinder ef(weinput, 0.1, cuts && Cuts::abspid == PID::ELECTRON);
37 declare(ef, "Elecs");
38 VetoedFinalState wminput;
39 wminput.addVetoOnThisFinalState(zfinder_mu);
40 LeptonFinder mf(wminput, 0.1, cuts && Cuts::abspid == PID::MUON);
41 declare(mf, "Muons");
42
43 // Histograms
44 book(_h_fiducial ,1,1,1);
45 }
46
47
48 /// Do the analysis
49 void analyze(const Event& event) {
50
51 // Looking for a Z, exit if not found
52 const DileptonFinder& zfinder_e = apply<DileptonFinder>(event, "DileptonFinder_e");
53 const DileptonFinder& zfinder_mu = apply<DileptonFinder>(event, "DileptonFinder_mu");
54 if (zfinder_e.bosons().size() != 1 && zfinder_mu.bosons().size() != 1) {
55 MSG_DEBUG("No Z boson found, vetoing event");
56 vetoEvent;
57 }
58
59 // Looking for a W, exit if not found
60 const P4& pmiss = apply<MissingMom>(event, "MET").missingMom();
61 if (pmiss.Et() < 25*GeV) vetoEvent;
62 const Particles& es = apply<LeptonFinder>(event, "Elecs").particles();
63 const int iefound = closestMatchIndex(es, pmiss, Kin::mass, 80.4*GeV, 0*GeV, 1000*GeV);
64 const Particles& mus = apply<LeptonFinder>(event, "Muons").particles();
65 const int imfound = closestMatchIndex(mus, pmiss, Kin::mass, 80.4*GeV, 0*GeV, 1000*GeV);
66 if (iefound < 0 && imfound < 0) {
67 MSG_DEBUG("No W boson found, vetoing event");
68 vetoEvent;
69 }
70
71 // If we find a W, make fiducial acceptance cuts and exit if not found
72 if (iefound >= 0) {
73 const Particle& e = es[iefound];
74 const double mt = mT(pmiss, e);
75 if (e.pT() < 20*GeV || mt < 20*GeV) vetoEvent;
76 } else if (imfound >= 0) {
77 const Particle& m = mus[imfound];
78 const double mt = mT(pmiss, m);
79 if (m.pT() < 20*GeV || mt < 20*GeV) vetoEvent;
80 }
81
82 // Update the fiducial cross-section histogram
83 /// @todo Would be better as a counter
84 _h_fiducial->fill(7000);
85 }
86
87
88 /// Finalize
89 void finalize() {
90 scale(_h_fiducial, crossSection()/femtobarn/sumOfWeights());
91 }
92
93 /// @}
94
95
96 private:
97
98 /// Histogram
99 Histo1DPtr _h_fiducial;
100
101 };
102
103
104 RIVET_DECLARE_PLUGIN(ATLAS_2011_I954993);
105
106}
|