Rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### ATLAS_2014_I1268975

High-mass dijet cross section
Experiment: ATLAS (LHC)
Inspire ID: 1268975
Status: VALIDATED
Authors:
• Christopher Meyer
References:
Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
• QCD jet production with a minimum leading jet pT of 100 GeV and minimum second jet pT of 50 GeV at 7 TeV.

Double-differential dijet cross sections measured in pp collisions at the LHC with a 7 TeV centre-of-mass energy are presented as functions of dijet mass and rapidity separation of the two highest-pT jets. These measurements are obtained using data corresponding to an integrated luminosity of 4.5/fb, recorded by the ATLAS detector in 2011. The data are corrected for detector effects so that cross sections are presented at the particle level. Cross sections are measured up to 5 TeV dijet mass using jets reconstructed with the anti-kt algorithm for values of the jet radius parameter of 0.4 and 0.6. The cross sections are compared with next-to-leading-order perturbative QCD calculations by NLOJET++ corrected to account for non-perturbative effects. Comparisons with POWHEG predictions, using a next-to-leading-order matrix element calculation interfaced to a parton-shower Monte Carlo simulation, are also shown. Electroweak effects are accounted for in both cases. The quantitative comparison of data and theoretical predictions obtained using various parameterizations of the parton distribution functions is performed using a frequentist method. An example setting a lower limit on the compositeness scale for a model of contact interactions is presented, showing that the unfolded results can be used to constrain contributions to dijet production beyond that predicted by the Standard Model.

Source code: ATLAS_2014_I1268975.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 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/FinalState.hh" #include "Rivet/Projections/FastJets.hh" #include "Rivet/Tools/BinnedHistogram.hh" namespace Rivet { /// Jet mass as a function of ystar class ATLAS_2014_I1268975 : public Analysis { public: /// Constructor ATLAS_2014_I1268975() : Analysis("ATLAS_2014_I1268975") { } /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { const FinalState fs; declare(fs,"FinalState"); FastJets fj04(fs, FastJets::ANTIKT, 0.4); fj04.useInvisibles(); declare(fj04, "AntiKT04"); FastJets fj06(fs, FastJets::ANTIKT, 0.6); fj06.useInvisibles(); declare(fj06, "AntiKT06"); double ystarbins[] = { 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0}; size_t massDsOffset(0); for (size_t alg = 0; alg < 2; ++alg) { for (size_t i = 0; i < 6; ++i) { _mass[alg].addHistogram(ystarbins[i], ystarbins[i+1], bookHisto1D(1 + massDsOffset, 1, i+1)); } massDsOffset += 1; } } /// Perform the per-event analysis void analyze(const Event& event) { Jets jetAr[2]; jetAr[AKT4] = apply(event, "AntiKT04").jetsByPt(50*GeV); jetAr[AKT6] = apply(event, "AntiKT06").jetsByPt(50*GeV); // Loop over jet "radii" used in analysis for (size_t alg = 0; alg < 2; ++alg) { // Identify dijets vector leadjets; foreach (const Jet& jet, jetAr[alg]) { if (jet.absrap() < 3.0 && leadjets.size() < 2) { if (leadjets.empty() && jet.pT() < 100*GeV) continue; leadjets.push_back(jet.momentum()); } } // Make sure we have a leading jet with pT > 100 GeV and a second to leading jet with pT > 50 GeV if (leadjets.size() < 2) { MSG_DEBUG("Could not find two suitable leading jets"); continue; } const double y1 = leadjets[0].rapidity(); const double y2 = leadjets[1].rapidity(); const double ystar = fabs(y1-y2) / 2.; const double m = (leadjets[0] + leadjets[1]).mass(); // Fill mass histogram _mass[alg].fill(ystar, m/TeV, event.weight()); } } /// Normalise histograms etc., after the run void finalize() { for (size_t alg = 0; alg < 2; ++alg) { _mass[alg].scale(crossSectionPerEvent()/picobarn, this); } } //@} private: // Data members like post-cuts event weight counters go here enum Alg { AKT4=0, AKT6=1 }; /// The di-jet mass spectrum binned in rapidity for akt6 and akt4 jets (array index is jet type from enum above) BinnedHistogram _mass[2]; }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(ATLAS_2014_I1268975); }