Rivet analyses referenceCMS_2012_I1102908Measurement of inclusive and exclusive dijet production ratio at large rapidity intervals at center-of-mass energy 7 TeV.Experiment: CMS (LHC) Inspire ID: 1102908 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
This is a measurement of the ratio of inclusive to exclusive dijet production as a function of the absolute distance in rapidity, $\Delta y$, between jets. The ratio of the Mueller-Navelet to exclusive dijet production is also measured. These measurements were performed with the CMS detector in proton-proton collisions at $\sqrt{s} = 7$ TeV for jets with $p_T > 35$ GeV and $|y| < 4.7$ taken from a mixture of two data samples, one of which containing dijets with moderate rapidity separation and the other containing dijets with large rapidity separation, with integrated luminosity of 33/nb and 5/pb respectively. The measured observables are corrected for detector effects. Source code: CMS_2012_I1102908.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/FastJets.hh"
5#include <sstream>
6
7namespace Rivet {
8
9
10 /// @brief CMS inclusive and exclusive dijet production ratio at large rapidity intervals
11 class CMS_2012_I1102908 : public Analysis {
12 public:
13
14 CMS_2012_I1102908()
15 : Analysis("CMS_2012_I1102908")
16 { }
17
18
19 void init() {
20 // Projections
21 declare(FastJets(FinalState(), JetAlg::ANTIKT, 0.5), "antikT");
22
23 // Histograms
24 /// @todo Can we manage to only register these as they are "really" created in the finalize()?
25 book(_h_dijet_ratio , 1, 1, 1);
26 book(_h_MN_dijet_ratio, 2, 1, 1);
27
28 // Temporary histograms (directly instantiated)
29 book(_h_DeltaY_exclusive ,"TMP/excl",refData(1, 1, 1));
30 book(_h_DeltaY_inclusive ,"TMP/incl",refData(1, 1, 1));
31 book(_h_DeltaY_MN ,"TMP/YMN",refData(1, 1, 1));
32 }
33
34
35 void analyze(const Event & event) {
36
37 // Jets with pT > 35.0, -4.7 < y < 4.7
38 const JetFinder& jet_alg = apply<JetFinder>(event, "antikT");
39 const Jets& jets = jet_alg.jets(Cuts::pT > 35*GeV && Cuts::absrap < 4.7);
40
41 // Veto event if number of jets less than 2
42 if (jets.size() < 2) return;
43
44 // Loop over jet pairs
45 double deltaY_MN = 0.0;
46 for (size_t ij1 = 0; ij1 < jets.size(); ++ij1) {
47 for (size_t ij2 = ij1 + 1; ij2 < jets.size(); ++ij2) {
48 const double deltaY = fabs(jets[ij1].rapidity() - jets[ij2].rapidity());
49 // Exclusive dijet case:
50 if (jets.size() == 2) _h_DeltaY_exclusive->fill(deltaY);
51 // Inclusive jets case:
52 _h_DeltaY_inclusive->fill(deltaY);
53 // Mueller-Navelet:
54 if (deltaY > deltaY_MN) deltaY_MN = deltaY;
55 }
56 }
57 _h_DeltaY_MN->fill(deltaY_MN);
58 }
59
60
61 void finalize() {
62 efficiency(_h_DeltaY_exclusive, _h_DeltaY_inclusive, _h_dijet_ratio);
63 efficiency(_h_DeltaY_exclusive, _h_DeltaY_MN, _h_MN_dijet_ratio);
64 transform(*_h_dijet_ratio, _invert);
65 transform(*_h_MN_dijet_ratio, _invert);
66 }
67
68
69 private:
70
71 /// Reciprocal function with div-by-zero protection, for inverting the efficiency measure
72 static double _invert(double x) { return (x > 0) ? 1/x : 0; }
73
74 /// @name Histograms
75 /// @{
76 Estimate1DPtr _h_dijet_ratio, _h_MN_dijet_ratio;
77 Histo1DPtr _h_DeltaY_inclusive, _h_DeltaY_exclusive, _h_DeltaY_MN;
78 /// @}
79
80 };
81
82
83 RIVET_DECLARE_PLUGIN(CMS_2012_I1102908);
84
85}
|