Rivet analyses referenceATLAS_2011_I928289_WW inclusive cross sections at 7 TeVExperiment: ATLAS (LHC) Inspire ID: 928289 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
The production cross sections of the inclusive Drell-Yan process $W^\pm \rightarrow \ell\nu$ ($\ell = e, \mu$) are measured in proton-proton collisions at $\sqrt{s} = 7$ TeV with the ATLAS detector. The cross sections are evaluated differentially as a function of the $W$ boson rapidity based on an integrated luminosity of about 35 $\text{pb}^{-1}$ collected in 2010. The cross sections are measured separately for $W^+$ and $W^-$ production, and then used to construct the $W$ charge asymmetry as well. Source code: ATLAS_2011_I928289_W.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/WFinder.hh"
5
6namespace Rivet {
7
8
9 class ATLAS_2011_I928289_W : public Analysis {
10 public:
11
12 /// Constructor
13 ATLAS_2011_I928289_W()
14 : Analysis("ATLAS_2011_I928289_W")
15 {
16
17 }
18
19
20 /// @name Analysis methods
21 //@{
22
23 /// Book histograms and initialise projections before the run
24 void init() {
25
26 ///Initialise and register projections here
27 FinalState fs;
28
29 Cut cut = (Cuts::pT >= 20*GeV);
30
31 WFinder wfinder_el_bare( fs, cut, PID::ELECTRON, 40.0*GeV, 7000.0*GeV, 25.0*GeV, 0.0, WFinder::ChargedLeptons::PROMPT, WFinder::ClusterPhotons::NODECAY, WFinder::AddPhotons::NO, WFinder::MassWindow::MT);
32 WFinder wfinder_el_dressed(fs, cut, PID::ELECTRON, 40.0*GeV, 7000.0*GeV, 25.0*GeV, 0.1, WFinder::ChargedLeptons::PROMPT, WFinder::ClusterPhotons::NODECAY, WFinder::AddPhotons::NO, WFinder::MassWindow::MT);
33 WFinder wfinder_mu_bare (fs, cut, PID::MUON , 40.0*GeV, 7000.0*GeV, 25.0*GeV, 0.0, WFinder::ChargedLeptons::PROMPT, WFinder::ClusterPhotons::NODECAY, WFinder::AddPhotons::NO, WFinder::MassWindow::MT);
34 WFinder wfinder_mu_dressed(fs, cut, PID::MUON , 40.0*GeV, 7000.0*GeV, 25.0*GeV, 0.1, WFinder::ChargedLeptons::PROMPT, WFinder::ClusterPhotons::NODECAY, WFinder::AddPhotons::NO, WFinder::MassWindow::MT);
35
36 declare(wfinder_el_bare , "WFinder_el_bare");
37 declare(wfinder_el_dressed, "WFinder_el_dressed");
38 declare(wfinder_mu_bare , "WFinder_mu_bare");
39 declare(wfinder_mu_dressed, "WFinder_mu_dressed");
40
41 /// Book histograms here
42 book(_h_Wminus_lepton_eta_el_bare ,3, 1, 1);
43 book(_h_Wminus_lepton_eta_el_dressed ,3, 1, 2);
44 book(_h_Wminus_lepton_eta_mu_bare ,3, 1, 3);
45 book(_h_Wminus_lepton_eta_mu_dressed ,3, 1, 4);
46 book(_h_Wplus_lepton_eta_el_bare ,5, 1, 1);
47 book(_h_Wplus_lepton_eta_el_dressed ,5, 1, 2);
48 book(_h_Wplus_lepton_eta_mu_bare ,5, 1, 3);
49 book(_h_Wplus_lepton_eta_mu_dressed ,5, 1, 4);
50 book(_h_W_asym_eta_el_bare ,7, 1, 1);
51 book(_h_W_asym_eta_el_dressed ,7, 1, 2);
52 book(_h_W_asym_eta_mu_bare ,7, 1, 3);
53 book(_h_W_asym_eta_mu_dressed ,7, 1, 4);
54
55 }
56
57
58 /// Perform the per-event analysis
59 void analyze(const Event& event) {
60
61 const WFinder& wfinder_el_bare = apply<WFinder>(event, "WFinder_el_bare");
62 const WFinder& wfinder_el_dressed = apply<WFinder>(event, "WFinder_el_dressed");
63 const WFinder& wfinder_mu_bare = apply<WFinder>(event, "WFinder_mu_bare");
64 const WFinder& wfinder_mu_dressed = apply<WFinder>(event, "WFinder_mu_dressed");
65
66 fillPlots1D(wfinder_el_bare , _h_Wplus_lepton_eta_el_bare , _h_Wminus_lepton_eta_el_bare);
67 fillPlots1D(wfinder_el_dressed, _h_Wplus_lepton_eta_el_dressed, _h_Wminus_lepton_eta_el_dressed);
68 fillPlots1D(wfinder_mu_bare , _h_Wplus_lepton_eta_mu_bare , _h_Wminus_lepton_eta_mu_bare);
69 fillPlots1D(wfinder_mu_dressed, _h_Wplus_lepton_eta_mu_dressed, _h_Wminus_lepton_eta_mu_dressed);
70 }
71
72
73 void fillPlots1D(const WFinder& wfinder, Histo1DPtr hist_plus, Histo1DPtr hist_minus) {
74 if (wfinder.bosons().size() != 1) return;
75 const Particle l = wfinder.constituentLeptons()[0];
76 const FourMomentum miss = wfinder.constituentNeutrinos()[0];
77 if (l.pT() > 20*GeV && miss.Et() > 25*GeV && wfinder.mT() > 40*GeV)
78 (l.charge3() > 0 ? hist_plus : hist_minus)->fill(l.abseta());
79 }
80
81
82 /// Normalise histograms etc., after the run
83 void finalize() {
84
85 // Construct asymmetry: (dsig+/deta - dsig-/deta) / (dsig+/deta + dsig-/deta)
86 divide(*_h_Wplus_lepton_eta_el_bare - *_h_Wminus_lepton_eta_el_bare,
87 *_h_Wplus_lepton_eta_el_bare + *_h_Wminus_lepton_eta_el_bare,
88 _h_W_asym_eta_el_bare);
89 divide(*_h_Wplus_lepton_eta_el_dressed - *_h_Wminus_lepton_eta_el_dressed,
90 *_h_Wplus_lepton_eta_el_dressed + *_h_Wminus_lepton_eta_el_dressed,
91 _h_W_asym_eta_el_dressed);
92 divide(*_h_Wplus_lepton_eta_mu_bare - *_h_Wminus_lepton_eta_mu_bare,
93 *_h_Wplus_lepton_eta_mu_bare + *_h_Wminus_lepton_eta_mu_bare,
94 _h_W_asym_eta_mu_bare);
95 divide(*_h_Wplus_lepton_eta_mu_dressed - *_h_Wminus_lepton_eta_mu_dressed,
96 *_h_Wplus_lepton_eta_mu_dressed + *_h_Wminus_lepton_eta_mu_dressed,
97 _h_W_asym_eta_mu_dressed);
98
99 // Print summary info
100 const double xs_pb(crossSection() / picobarn);
101 const double sumw(sumOfWeights());
102
103 /// Normalise, scale and otherwise manipulate histograms here
104 const double sf = 0.5 * xs_pb / sumw; // 0.5 accounts for rapidity bin width
105 scale(_h_Wminus_lepton_eta_el_bare , sf);
106 scale(_h_Wminus_lepton_eta_el_dressed, sf);
107 scale(_h_Wminus_lepton_eta_mu_bare , sf);
108 scale(_h_Wminus_lepton_eta_mu_dressed, sf);
109 scale(_h_Wplus_lepton_eta_el_bare , sf);
110 scale(_h_Wplus_lepton_eta_el_dressed , sf);
111 scale(_h_Wplus_lepton_eta_mu_bare , sf);
112 scale(_h_Wplus_lepton_eta_mu_dressed , sf);
113
114 }
115
116 //@}
117
118
119 private:
120
121 /// @name Histograms
122 //@{
123 Histo1DPtr _h_Wminus_lepton_eta_el_bare;
124 Histo1DPtr _h_Wminus_lepton_eta_el_dressed;
125 Histo1DPtr _h_Wminus_lepton_eta_mu_bare;
126 Histo1DPtr _h_Wminus_lepton_eta_mu_dressed;
127 Histo1DPtr _h_Wplus_lepton_eta_el_bare;
128 Histo1DPtr _h_Wplus_lepton_eta_el_dressed;
129 Histo1DPtr _h_Wplus_lepton_eta_mu_bare;
130 Histo1DPtr _h_Wplus_lepton_eta_mu_dressed;
131 Scatter2DPtr _h_W_asym_eta_el_bare;
132 Scatter2DPtr _h_W_asym_eta_el_dressed;
133 Scatter2DPtr _h_W_asym_eta_mu_bare;
134 Scatter2DPtr _h_W_asym_eta_mu_dressed;
135
136 //@}
137
138 };
139
140
141 // The hook for the plugin system
142 RIVET_DECLARE_PLUGIN(ATLAS_2011_I928289_W);
143
144}
|