Rivet analyses referenceCDF_2001_I538041Two jet triply-differential cross-sectionExperiment: CDF (Tevatron Run 1) Inspire ID: 538041 Status: VALIDATED Authors:
Beam energies: (900.0, 900.0) GeV Run details:
A measurement of the two-jet differential cross section, $\mathrm{d}^3\sigma/\mathrm{d}E_T \, \mathrm{d}\eta_1 \, \mathrm{d}\eta_2$, based on an integrated luminosity of $86 \mathrm{pb}^{-1}$. The differential cross section is measured as a function of the transverse energy, $E_\perp$, of a jet in the pseudorapidity region $0.1 < |\eta_1| < 0.7$ for four different pseudorapidity bins of a second jet restricted to $0.1 < |\eta_2| < 3.0$. Source code: CDF_2001_I538041.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/FastJets.hh"
5
6namespace Rivet {
7
8
9 /// @brief CDF two-jet triply-differential cross-section
10 class CDF_2001_I538041 : public Analysis {
11 public:
12
13 RIVET_DEFAULT_ANALYSIS_CTOR(CDF_2001_I538041);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 FinalState fs(Cuts::abseta < 4.2);
22 declare(FastJets(fs, JetAlg::CDFJETCLU, 0.7), "Jets");
23
24 book(_h_ET, {0.1, 0.7, 1.4, 2.1, 3.0},
25 {"d01-x01-y01", "d02-x01-y01", "d03-x01-y01", "d04-x01-y01"});
26 _etaxes.resize(4);
27 _etaxes[0] = YODA::Axis<double>{41.0, 47.0, 54.45, 67.2, 84.9, 100.45, 113.05, 126.0, 141.65, 162.6, 191.9, 236.75, 291.15, 350.3, 414.5};
28 _etaxes[1] = YODA::Axis<double>{39.9, 46.3, 54.0, 66.85, 84.6, 100.1, 112.65, 125.55, 141.0, 161.6, 190.05, 233.7, 287.1, 343.8, 404.0};
29 _etaxes[2] = YODA::Axis<double>{38.7, 45.5, 53.45, 66.15, 83.65, 98.95, 111.2, 123.75, 138.7, 158.6, 185.3, 226.75, 278.65};
30 _etaxes[3] = YODA::Axis<double>{37.6, 44.2, 51.85, 63.95, 81.05, 96.1, 108.0, 120.1, 134.25, 153.1, 177.55, 205.25};
31 }
32
33
34 /// Perform the per-event analysis
35 void analyze(const Event& event) {
36
37 if (_edges.empty()) {
38 _edges.resize(_h_ET->numBins());
39 for (const auto& b : _h_ET->bins()) {
40 _edges[b.index()-1] = b->xEdges();
41 }
42 }
43
44 Jets jets = apply<FastJets>(event, "Jets").jets(Cuts::Et > 10*GeV, cmpMomByEt);
45 if (jets.size() < 2) vetoEvent;
46 FourMomentum jet1 = jets[0].momentum();
47 FourMomentum jet2 = jets[1].momentum();
48 double eta1 = jet1.abseta();
49 double eta2 = jet2.abseta();
50 double ET1 = jet1.Et();
51 double ET2 = jet2.Et();
52 if (!inRange(eta1, 0.1, 0.7) || ET1 < 40.0*GeV) vetoEvent;
53 if (!inRange(eta2, 0.1, 3.0)) vetoEvent;
54 discfill(eta2, ET1);
55 if (eta2<0.7 && ET2>40.0*GeV) discfill(eta1, ET2);
56 }
57
58
59 void discfill(const double eta, const double ET) {
60 string edge = "OTHER";
61 const size_t eta_idx = _h_ET->binAt(eta).index();
62 if (eta_idx && eta_idx <= _h_ET->numBins()) {
63 // eta bin is in visible range
64 const size_t et_idx = _etaxes[eta_idx-1].index(ET);
65 if (et_idx && et_idx <= _edges[eta_idx-1].size()) {
66 // ET bin along this eta bin is also in visible range
67 edge = _edges[eta_idx-1][et_idx-1];
68 }
69 }
70 _h_ET->fill(eta, edge);
71 }
72
73 /// Normalise histograms etc., after the run
74 void finalize() {
75 const double deta1 = 1.2;
76 scale(_h_ET, crossSection()/nanobarn/sumOfWeights()/deta1 / 2.0);
77 divByGroupWidth(_h_ET);
78 for (auto& h : _h_ET->bins()) {
79 for (auto& b : h->bins()) {
80 b.scaleW(1.0/_etaxes[h.index()-1].width(b.index()));
81 }
82 }
83 }
84
85 /// @}
86
87
88 private:
89
90 /// Histograms
91 HistoGroupPtr<double,string> _h_ET;
92 vector<YODA::Axis<double>> _etaxes;
93 vector<vector<string>> _edges;
94
95 };
96
97
98
99 RIVET_DECLARE_ALIASED_PLUGIN(CDF_2001_I538041, CDF_2001_S4517016);
100
101}
|