Rivet analyses referenceCMS_2019_I1719955Azimuthal separation in nearly back-to-back jet topologies in inclusive 2- and 3-jet events in pp collisions at $\sqrt{s} = 13$ TeVExperiment: CMS (LHC) Status: VALIDATED Authors:
Beam energies: (6500.0, 6500.0) GeV Run details:
A measurement for inclusive 2- and 3-jet events of the azimuthal correlation between the two jets with the largest transverse momenta, $\Delta\phi_{12}$, is presented. The measurement considers events where the two leading jets are nearly collinear ("back-to-back") in the transverse plane and is performed for several ranges of the leading jet transverse momentum. Proton-proton collision data collected with the CMS experiment at a center-of-mass energy of 13 TeV and corresponding to an integrated luminosity of 35.9 $\text{fb}^{-1}$ are used. Source code: CMS_2019_I1719955.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 /// CMS azimuthal decorrelations in back-to-back dijet events at 13 TeV
9 class CMS_2019_I1719955 : public Analysis {
10 public:
11 /// Constructor
12 RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2019_I1719955);
13
14
15 /// Book projections and histograms
16 void init() {
17 const FinalState fs;
18 declare(FastJets(fs, JetAlg::ANTIKT, 0.4), "ANTIKT");
19
20 book(_h_deltaPhi_2J, {200., 300., 400., 500., 600., 700., 800., 1000., 1200., 4000.});
21 book(_h_deltaPhi_3J, {200., 300., 400., 500., 600., 700., 800., 1000., 1200., 4000.});
22 for (size_t i=1; i<_h_deltaPhi_2J->numBins()+1; ++i) {
23 book(_h_deltaPhi_2J->bin(i), i, 1, 1);
24 book(_h_deltaPhi_3J->bin(i), i+9, 1, 1);
25 }
26 }
27
28 /// Per-event analysis
29 void analyze(const Event& event) {
30 const Jets& jets = apply<JetFinder>(event, "ANTIKT").jetsByPt(Cuts::absrap < 5. && Cuts::pT > 100*GeV);
31 const Jets& lowjets = apply<JetFinder>(event, "ANTIKT").jetsByPt(Cuts::absrap < 2.5 && Cuts::pT > 30*GeV);
32 if (jets.size() < 2) vetoEvent;
33 if (jets[0].absrap() > 2.5 || jets[1].absrap() > 2.5) vetoEvent;
34
35 const double dphi = 180./M_PI*deltaPhi(jets[0].phi(), jets[1].phi());
36 _h_deltaPhi_2J->fill(jets[0].pT(), dphi);
37 if (lowjets.size() > 2) _h_deltaPhi_3J->fill(jets[0].pT(), dphi);
38 }
39
40 /// Scale histograms
41 void finalize() {
42 int region_ptmax_2J = 0;
43 double norm_finalize[9];
44 for (auto& histo_2J : _h_deltaPhi_2J->bins()) {
45 norm_finalize[region_ptmax_2J] = histo_2J->integral();
46 if (norm_finalize[region_ptmax_2J] != 0) scale(histo_2J, 1.0/norm_finalize[region_ptmax_2J]);
47 region_ptmax_2J++;
48 }
49 int region_ptmax_3J = 0;
50 for (auto& histo_3J : _h_deltaPhi_3J->bins()) {
51 if (norm_finalize[region_ptmax_3J] != 0) scale(histo_3J, 1.0/norm_finalize[region_ptmax_3J]);
52 region_ptmax_3J++;
53 }
54 }
55
56
57 private:
58
59 Histo1DGroupPtr _h_deltaPhi_2J, _h_deltaPhi_3J;
60
61 };
62
63
64 RIVET_DECLARE_PLUGIN(CMS_2019_I1719955);
65
66}
|