Rivet analyses
3-jet cross section with 7 TeV data
Experiment: ATLAS (LHC)
Inspire ID: 1326641
Status: VALIDATED
Authors: - Aliaksei Hrynevich - Pavel Starovoitov
References: - Expt page: ATLAS-STDM-2013-09 - arXiv: 1411.1855 - DOI: 10.1140/epjc/s10052-015-3363-3 - Eur.Phys.J. C75 (2015) 228
Beams: p+ p+
Beam energies: (3500.0, 3500.0)GeV
Run details: - QCD jet production with at least three leading jets
Double-differential three-jet production cross-sections have been measured in proton-proton collisions at a centre-of-mass energy of $\sqrt{s} = 7\,$TeV using the ATLAS detector at the Large Hadron Collider. The measurements are presented as a function of the three-jet mass (mjjj), in bins of the sum of the absolute rapidity separations between the three leading jets (|Y*|). Invariant masses extending up to 5,TeV are reached for 8 < |Y*| < 10. These measurements use a sample of data recorded using the ATLAS detector in 2011, which corresponds to an integrated luminosity of 4.51 fb−1. Jets are identified using the anti-kt algorithm with two different jet radius parameters, R = 0.4 and R = 0.6.
Source
code:ATLAS_2014_I1326641.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/FastJets.hh"
namespace Rivet {
class ATLAS_2014_I1326641 : public Analysis {
public:
/// @name Constructors etc.
/// @{
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2014_I1326641);
/// @}
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
const FinalState fs;
FastJets fj04(fs, JetAlg::ANTIKT, 0.4);
fj04.useInvisibles();
declare(fj04, "AntiKT04");
FastJets fj06(fs, JetAlg::ANTIKT, 0.6);
fj06.useInvisibles();
declare(fj06, "AntiKT06");
const vector<double> ystarBins{ 0.0, 2.0, 4.0, 6.0, 8.0, 10.0 };
size_t massDsOffset(0);
for (size_t alg = 0; alg < 2; ++alg) {
book(h_trijet_Mass[alg], ystarBins);
for (auto& b : h_trijet_Mass[alg]->bins()) {
book(b, 1+massDsOffset, 1, 1);
++massDsOffset;
}
}
}
/// Perform the per-event analysis
void analyze(const Event& event) {
Jets jetAr[2];
jetAr[AKT4] = apply<FastJets>(event, "AntiKT04").jetsByPt(Cuts::pT > 50*GeV);
jetAr[AKT6] = apply<FastJets>(event, "AntiKT06").jetsByPt(Cuts::pT > 50*GeV);
const size_t nJets = 3;
double ptCut[nJets] = { 150., 100., 50.};
// Loop over jet "radii" used in analysis
for (size_t alg = 0; alg < 2; ++alg) {
// Identify 3jets
vector<FourMomentum> leadJets;
for (const Jet& jet : jetAr[alg]) {
if (jet.absrap() < 3.0 && leadJets.size() < nJets) {
int filledJets = leadJets.size();
if (jet.pT() < ptCut[filledJets]) continue;
leadJets.push_back(jet.momentum());
}
}
if (leadJets.size() < nJets) {
MSG_DEBUG("Could not find three suitable leading jets");
continue;
}
const double y1 = leadJets[0].rapidity();
const double y2 = leadJets[1].rapidity();
const double y3 = leadJets[2].rapidity();
const double yStar = fabs(y1-y2) + fabs(y2-y3) + fabs(y1-y3);
const double m = (leadJets[0] + leadJets[1] + leadJets[2]).mass();
h_trijet_Mass[alg]->fill(yStar, m);
}
}
/// Normalise histograms etc., after the run
void finalize() {
const double sf( 2.0 * crossSection()/picobarn / sumOfWeights());
scale(h_trijet_Mass, sf);
}
/// @}
private:
// Data members like post-cuts event weight counters go here
enum Alg { AKT4=0, AKT6=1 };
private:
// The 3 jets mass spectrum for anti-kt 4 and anti-kt 6 jets (array index is jet type from enum above)
Histo1DGroupPtr h_trijet_Mass[2];
};
RIVET_DECLARE_PLUGIN(ATLAS_2014_I1326641);
}