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/Tools/BinnedHistogram.hh"
4#include "Rivet/Projections/FinalState.hh"
5#include "Rivet/Projections/FastJets.hh"
6
7namespace Rivet {
8
9 /// CMS azimuthal decorrelations in back-to-back dijet events at 13 TeV
10 class CMS_2019_I1719955 : public Analysis {
11 public:
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2019_I1719955);
14
15
16 /// Book projections and histograms
17 void init() {
18 const FinalState fs;
19 declare(FastJets(fs, FastJets::ANTIKT, 0.4), "ANTIKT");
20 Histo1DPtr dummy;
21
22 _h_deltaPhi_2J.add( 200., 300., book(dummy,1,1,1));
23 _h_deltaPhi_2J.add( 300., 400., book(dummy,2,1,1));
24 _h_deltaPhi_2J.add( 400., 500., book(dummy,3,1,1));
25 _h_deltaPhi_2J.add( 500., 600., book(dummy,4,1,1));
26 _h_deltaPhi_2J.add( 600., 700., book(dummy,5,1,1));
27 _h_deltaPhi_2J.add( 700., 800., book(dummy,6,1,1));
28 _h_deltaPhi_2J.add( 800., 1000., book(dummy,7,1,1));
29 _h_deltaPhi_2J.add( 1000.,1200., book(dummy,8,1,1));
30 _h_deltaPhi_2J.add( 1200.,4000., book(dummy,9,1,1));
31
32 _h_deltaPhi_3J.add( 200., 300., book(dummy,10,1,1));
33 _h_deltaPhi_3J.add( 300., 400., book(dummy,11,1,1));
34 _h_deltaPhi_3J.add( 400., 500., book(dummy,12,1,1));
35 _h_deltaPhi_3J.add( 500., 600., book(dummy,13,1,1));
36 _h_deltaPhi_3J.add( 600., 700., book(dummy,14,1,1));
37 _h_deltaPhi_3J.add( 700., 800., book(dummy,15,1,1));
38 _h_deltaPhi_3J.add( 800., 1000., book(dummy,16,1,1));
39 _h_deltaPhi_3J.add( 1000.,1200., book(dummy,17,1,1));
40 _h_deltaPhi_3J.add( 1200.,4000., book(dummy,18,1,1));
41 }
42
43 /// Per-event analysis
44 void analyze(const Event& event) {
45 const Jets& jets = applyProjection<JetAlg>(event, "ANTIKT").jetsByPt(Cuts::absrap < 5. && Cuts::pT > 100*GeV);
46 const Jets& lowjets = applyProjection<JetAlg>(event, "ANTIKT").jetsByPt(Cuts::absrap < 2.5 && Cuts::pT > 30*GeV);
47 if (jets.size() < 2) vetoEvent;
48 if (jets[0].absrap() > 2.5 || jets[1].absrap() > 2.5) vetoEvent;
49
50 const double dphi = 180./M_PI*deltaPhi(jets[0].phi(), jets[1].phi());
51 _h_deltaPhi_2J.fill(jets[0].pT(), dphi);
52 if (lowjets.size() > 2) _h_deltaPhi_3J.fill(jets[0].pT(), dphi);
53 }
54
55 /// Scale histograms
56 void finalize() {
57 int region_ptmax_2J = 0;
58 double norm_finalize[9];
59 for (Histo1DPtr histo_2J : _h_deltaPhi_2J.histos()) {
60 norm_finalize[region_ptmax_2J] = histo_2J->integral();
61 if (norm_finalize[region_ptmax_2J] != 0) scale(histo_2J, 1.0/norm_finalize[region_ptmax_2J]);
62 region_ptmax_2J++;
63 }
64 int region_ptmax_3J = 0;
65 for (Histo1DPtr histo_3J : _h_deltaPhi_3J.histos()) {
66 if (norm_finalize[region_ptmax_3J] != 0) scale(histo_3J, 1.0/norm_finalize[region_ptmax_3J]);
67 region_ptmax_3J++;
68 }
69 }
70
71
72 private:
73
74 BinnedHistogram _h_deltaPhi_2J;
75 BinnedHistogram _h_deltaPhi_3J;
76
77 };
78
79
80 // The hook for the plugin system
81 RIVET_DECLARE_PLUGIN(CMS_2019_I1719955);
82
83}
|