1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
| // -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/ZFinder.hh"
#include "Rivet/Tools/BinnedHistogram.hh"
/// @todo Include more projections as required, e.g. ChargedFinalState, FastJets, ZFinder...
namespace Rivet {
class ATLAS_2014_I1300647 : public Analysis {
public:
/// Constructor
ATLAS_2014_I1300647()
: Analysis("ATLAS_2014_I1300647")
{ }
public:
/// @name Analysis methods
//@{
/// Book histograms and initialise projections before the run
void init() {
FinalState fs;
ZFinder zfinder_dressed_el(fs, Cuts::abseta<2.4 && Cuts::pT>20.0*GeV, PID::ELECTRON, 66.0*GeV, 116.0*GeV, 0.1);
declare(zfinder_dressed_el, "ZFinder_dressed_el");
ZFinder zfinder_bare_el(fs, Cuts::abseta<2.4 && Cuts::pT>20.0*GeV, PID::ELECTRON, 66.0*GeV, 116.0*GeV, 0.0);
declare(zfinder_bare_el, "ZFinder_bare_el");
ZFinder zfinder_dressed_mu(fs, Cuts::abseta<2.4 && Cuts::pT>20.0*GeV, PID::MUON, 66.0*GeV, 116.0*GeV, 0.1);
declare(zfinder_dressed_mu, "ZFinder_dressed_mu");
ZFinder zfinder_bare_mu(fs, Cuts::abseta<2.4 && Cuts::pT>20.0*GeV, PID::MUON, 66.0*GeV, 116.0*GeV, 0.0);
declare(zfinder_bare_mu, "ZFinder_bare_mu");
// Book histograms
book(_hist_zpt_el_dressed ,1, 1, 1); // electron "dressed"
book(_hist_zpt_mu_dressed ,1, 1, 2); // muon "dressed"
book(_hist_zpt_el_bare ,1, 2, 1); // electron "bare"
book(_hist_zpt_mu_bare ,1, 2, 2); // muon "bare"
//double-differential plots
{Histo1DPtr tmp; _h_zpt_el_mu_dressed.add(0.0, 1.0, book(tmp, 3, 1, 2));}
{Histo1DPtr tmp; _h_zpt_el_mu_dressed.add(1.0, 2.0, book(tmp, 3, 1, 4));}
{Histo1DPtr tmp; _h_zpt_el_mu_dressed.add(2.0, 2.4, book(tmp, 3, 1, 6));}
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const ZFinder& zfinder_dressed_el = apply<ZFinder>(event, "ZFinder_dressed_el");
const ZFinder& zfinder_bare_el = apply<ZFinder>(event, "ZFinder_bare_el");
const ZFinder& zfinder_dressed_mu = apply<ZFinder>(event, "ZFinder_dressed_mu");
const ZFinder& zfinder_bare_mu = apply<ZFinder>(event, "ZFinder_bare_mu");
FillPlots1d(zfinder_dressed_el, _hist_zpt_el_dressed);
FillPlots1d(zfinder_bare_el, _hist_zpt_el_bare);
FillPlots1d(zfinder_dressed_mu, _hist_zpt_mu_dressed);
FillPlots1d(zfinder_bare_mu, _hist_zpt_mu_bare);
FillPlots3d(zfinder_dressed_el, _h_zpt_el_mu_dressed);
FillPlots3d(zfinder_dressed_mu, _h_zpt_el_mu_dressed);
}
void FillPlots1d(const ZFinder& zfinder, Histo1DPtr hist) {
if(zfinder.bosons().size() != 1) return;
const FourMomentum pZ = zfinder.bosons()[0].momentum();
hist->fill(pZ.pT()/GeV);
return;
}
void FillPlots3d(const ZFinder& zfinder, BinnedHistogram& binnedHist) {
if(zfinder.bosons().size() != 1) return;
const FourMomentum pZ = zfinder.bosons()[0].momentum();
binnedHist.fill(pZ.rapidity(), pZ.pT()/GeV);
return;
}
/// Normalise histograms etc., after the run
void finalize() {
normalize(_hist_zpt_el_dressed);
normalize(_hist_zpt_el_bare);
normalize(_hist_zpt_mu_dressed);
normalize(_hist_zpt_mu_bare);
for (Histo1DPtr hist : _h_zpt_el_mu_dressed.histos()) { normalize(hist); }
}
//@}
private:
// Data members like post-cuts event weight counters go here
private:
/// @name Histograms
//@{
BinnedHistogram _h_zpt_el_mu_dressed;
Histo1DPtr _hist_zpt_el_dressed;
Histo1DPtr _hist_zpt_el_bare;
Histo1DPtr _hist_zpt_mu_dressed;
Histo1DPtr _hist_zpt_mu_bare;
//@}
};
// The hook for the plugin system
RIVET_DECLARE_PLUGIN(ATLAS_2014_I1300647);
}
|