|
Rivet analyses reference
CMS_2021_I1963239
Measurement of inclusive and Mueller-Navelet dijet cross sections and their ratios at 2.76 TeV
Experiment: CMS (LHC)
Inspire ID: 1963239
Status: VALIDATED
Authors:
- cms-pag-conveners-smp@cern.ch
- Anatolii Egorov
- Victor Kim
- Victor Murzin
- Vadim Oreshkin
- Vladimir Gavrilov
- Grigory Pivovarov
- Grigory Safronov
References:
Beams: p+ p+
Beam energies: (1380.0, 1380.0) GeV
Run details:
- pp QCD interactions at $\sqrt{s} = 2.76$ TeV. Data collected by CMS during the year 2013.
This is a measurement of the differential cross sections of inclusive and Mueller-Navelet dijet production as a function of the absolute distance in rapidity, $\Delta y$, between jets. The ratios of inclusive to exclusive dijet production, the Mueller-Navelet to exclusive dijet production, as well as the ratios of inclusive to exclusive with veto and Mueller-Navelet to exclusive with veto is also measured. These measurements were performed with the CMS detector in proton-proton collisions at $\sqrt{s} = 2.76$ TeV for jets with $p_T > 35$ GeV and $|y| < 4.7$, with integrated luminosity of 5.4pb^-1. The measured observables are corrected for detector effects.
Source code:
CMS_2021_I1963239.cc
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 | // -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/FastJets.hh"
namespace Rivet {
/// @brief Measurement of inclusive and Mueller-Navelet dijet cross sections and their ratios at 2.76 TeV
class CMS_2021_I1963239 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2021_I1963239);
/// @name Analysis methods
///@{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
// The basic final-state projection:
// all final-state particles within
// the given eta acceptance
const FinalState fs(Cuts::abseta < 5.2);
// The final-state particles declared above are clustered using FastJet with
// the anti-kT algorithm and a jet-radius parameter 0.5
FastJets jetfs(fs, FastJets::ANTIKT, 0.5);
declare(jetfs, "jets");
// Book histograms
// specify custom binning
// take binning from reference data using HEPData ID (digits in "d01-x01-y01" etc.)
book(_h["inclusive"], 7, 1, 1);
book(_h["MN"], 8, 1, 1);
book(_s["R_incl"], 9, 1, 1);
book(_s["R_incl_veto"], 10, 1, 1);
book(_s["R_MN"], 11, 1, 1);
book(_s["R_MN_veto"], 12, 1, 1);
// Temporary histograms (directly instantiated)
book(_h["exclusive"], "_exclusive", refData(7, 1, 1));
book(_h["exclusive_veto"], "_exclusive_veto", refData(7, 1, 1));
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const double weight = 1.0;
// Retrieve clustered jets, sorted by pT, with a minimum pT cut
Jets jets20 = apply<FastJets>(event, "jets").jetsByPt(Cuts::pT > 20*GeV && Cuts::absrap < 4.7);
Jets jets35 = apply<FastJets>(event, "jets").jetsByPt(Cuts::pT > 35*GeV && Cuts::absrap < 4.7);
if (jets35.size() < 2) return;
// Loop over jet pairs
double deltaY_MN = 0.0;
for (size_t ij1 = 0; ij1 < jets35.size(); ++ij1) {
for (size_t ij2 = ij1 + 1; ij2 < jets35.size(); ++ij2) {
const double deltaY = fabs(jets35[ij1].rapidity() - jets35[ij2].rapidity());
// Exclusive dijet case:
if (jets35.size() == 2) {
_h["exclusive"]->fill(deltaY, weight);
//Exclusive with veto 20 GeV dijet case:
if (jets20.size() == 2) {
_h["exclusive_veto"]->fill(deltaY, weight);
}
}
// Inclusive jets case:
_h["inclusive"]->fill(deltaY, weight);
// Mueller-Navelet:
if (deltaY > deltaY_MN) deltaY_MN = deltaY;
}
}
// Fill histogram with MN dijets Delta y
_h["MN"]->fill(deltaY_MN, weight);
}
/// Normalise histograms etc., after the run
void finalize() {
// Calculate ratios
efficiency(_h["exclusive"], _h["inclusive"], _s["R_incl"]);
efficiency(_h["exclusive"], _h["MN"], _s["R_MN"]);
efficiency(_h["exclusive_veto"], _h["inclusive"], _s["R_incl_veto"]);
efficiency(_h["exclusive_veto"], _h["MN"], _s["R_MN_veto"]);
transformY(*_s["R_incl"], _invert);
transformY(*_s["R_MN"], _invert);
transformY(*_s["R_incl_veto"], _invert);
transformY(*_s["R_MN_veto"], _invert);
scale(_h["inclusive"], crossSection()/picobarn/sumOfWeights()); // norm to generated cross-section in pb
scale(_h["MN"], crossSection()/picobarn/sumOfWeights()); // norm to generated cross-section in pb
}
///@}
/// @name Histograms
///@{
map<string, Histo1DPtr> _h;
map<string, Scatter2DPtr>_s;
///@}
private:
/// Reciprocal function with div-by-zero protection, for inverting the efficiency measure
static double _invert(double x) { return (x > 0) ? 1/x : 0; }
};
RIVET_DECLARE_PLUGIN(CMS_2021_I1963239);
}
|
|