rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### CMS_2013_I1273574

Studies of 4-jet production in proton-proton collisions at $\sqrt{s} = 7$ TeV
Experiment: CMS (LHC)
Inspire ID: 1273574
Status: VALIDATED
Authors:
• P. Gunnellini
• A. Buckley
References:
• CMS-FSQ-12-013
• CERN-PH-EP-2013-229
• arXiv: 1312.6440
• Submitted to Phys. Rev. D
Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
• Hard QCD events with p_\perp cut at generator level of 45 GeV

Measurements are presented of exclusive 4-jet production cross sections as a function of the transverse momentum $p_T$, pseudorapidity $\eta$, as well as of correlations in azimuthal angle and $p_T$ balance among the jets. The data sample was collected at a centre-of-mass energy of 7 TeV with the CMS detector at the LHC, corresponding to an integrated luminosity of 36 pb$^{-1}$. The jets are reconstructed with the anti-$k_T$ jet algorithm in a range of $|\eta|<4.7$.

Source code: CMS_2013_I1273574.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 { /// CMS 4-jet production at 7 TeV class CMS_2013_I1273574 : public Analysis { public: /// Constructor CMS_2013_I1273574() : Analysis("CMS_2013_I1273574") { } /// Book histograms and initialise projections before the run void init() { const FinalState cnfs((Cuts::etaIn(-4.7, 4.7))); declare(FastJets(cnfs, FastJets::ANTIKT, 0.5), "Jets"); // Modified to match the HEPDATA record. // eta of highest pT jet //book(_h_jetetas[0] ,1,1,1); book(_h_jetetas[0] ,6,1,1); // pt of the highest pT jet book(_h_jetpts[0] ,2,1,1); //book(_h_DeltaS ,3,1,1); book(_h_DeltaS ,12,1,1); //book(_h_DeltaPhiSoft ,4,1,1); book(_h_DeltaPhiSoft ,10,1,1); //book(_h_DeltaPtRelSoft ,5,1,1); book(_h_DeltaPtRelSoft ,11,1,1); // eta and pT of 3rd highest pT jet //book(_h_jetetas[2] ,6,1,1); //book(_h_jetpts[2] ,7,1,1); book(_h_jetetas[2] ,8,1,1); book(_h_jetpts[2] ,4,1,1); // eta and pT of 4th highest pT jet //book(_h_jetetas[3] ,8,1,1); //book(_h_jetpts[3] ,9,1,1); book(_h_jetetas[3] ,9,1,1); book(_h_jetpts[3] ,5,1,1); // eta and pT of 2nd highest pT jet //book(_h_jetetas[1] ,10,1,1); //book(_h_jetpts[1] ,11,1,1); book(_h_jetetas[1] ,7,1,1); book(_h_jetpts[1] ,3,1,1); } /// Perform the per-event analysis void analyze(const Event& event) { /// @todo Use jetsByPt(ptGtr(20*GeV) & absetaIn(4.7)), then no need for the lower loop; const Jets jets = apply(event, "Jets").jetsByPt(20*GeV); if (jets.size() < 4) vetoEvent; // Ensure that there are exactly 4 jets > 20 GeV, with two above 50 GeV Jets hardjets, alljets; for (const Jet& j : jets) { if (j.abseta() > 4.7) continue; if (j.pT() > 50*GeV) hardjets.push_back(j); if (j.pT() > 20*GeV) alljets.push_back(j); } if (hardjets.size() < 2 || alljets.size() != 4) vetoEvent; const double weight = 1.0; // Histogram pT and eta of all 4 jets for (size_t i = 0; i < 4; ++i) { _h_jetpts[i]->fill(alljets[i].pT()/GeV, weight); _h_jetetas[i]->fill(alljets[i].eta(), weight); } // Create vector sums of the hard and soft pairs of jets const FourMomentum p12 = alljets[0].momentum() + alljets[1].momentum(); const FourMomentum p34 = alljets[2].momentum() + alljets[3].momentum(); // Fill the delta(phi) between the soft jets const double dphisoft = deltaPhi(alljets[2], alljets[3]); _h_DeltaPhiSoft->fill(dphisoft, weight); // Fill the pT balance between the soft jets const double ptbalanceSoft = p34.pT() / (alljets[2].pT() + alljets[3].pT()); _h_DeltaPtRelSoft->fill(ptbalanceSoft, weight); // Fill the azimuthal angle difference between the two jet pairs const double p12p34_trans = p12.px()*p34.px() + p12.py()*p34.py(); const double DeltaS = acos( p12p34_trans / p12.pT() / p34.pT() ); _h_DeltaS->fill(DeltaS, weight); } /// Normalise histograms (mostly to cross-section) void finalize() { const double invlumi = crossSection()/picobarn/sumOfWeights(); for (size_t i = 0; i < 4; ++i) { scale(_h_jetpts[i], invlumi); scale(_h_jetetas[i], invlumi); } normalize(_h_DeltaPtRelSoft); normalize(_h_DeltaPhiSoft); normalize(_h_DeltaS); } private: Histo1DPtr _h_jetpts[4], _h_jetetas[4]; Histo1DPtr _h_DeltaS, _h_DeltaPhiSoft, _h_DeltaPtRelSoft; }; DECLARE_RIVET_PLUGIN(CMS_2013_I1273574); }