Rivet analyses
Study of quark and gluon jet substructure in Z+jet and dijet events from pp collisions at 13 TeV
Experiment: CMS (LHC)
Inspire ID: 1920187
Status: VALIDATED
Authors: - cms-pag-conveners-smp@cern.ch - Andreas Hinzmann
References: - Expt page: CMS-SMP-20-010 - arXiv: 2109.03340
Beams: p+ p+
Beam energies: (6500.0, 6500.0)GeV
Run details: - QCD with pt>15 or Z -> mu mu
Measurements of jet substructure describing the composition of quark- and gluon-initiated jets are presented. Proton-proton (pp) collision data at sqrt(s)=13 TeV collected with the CMS detector are used, corresponding to an integrated luminosity of 35.9/fb. Generalized angularities are measured that characterize the jet substructure and distinguish quark- and gluon-initiated jets. These observables are sensitive to the distributions of transverse momenta and angular distances within a jet. The analysis is performed using a data sample of dijet events enriched in gluon-initiated jets, and, for the first time, a Z+jet event sample enriched in quark-initiated jets. The observables are measured in bins of jet transverse momentum, and as a function of the jet radius parameter. Each measurement is repeated applying a “soft drop” grooming procedure that removes soft and large angle radiation from the jet.
Source
code:CMS_2021_I1920187.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/DileptonFinder.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/IdentifiedFinalState.hh"
#include "Rivet/Projections/VetoedFinalState.hh"
#include "fastjet/ClusterSequence.hh"
#include "fastjet/JetDefinition.hh"
#include "fastjet/contrib/SoftDrop.hh"
#include "fastjet/tools/Recluster.hh"
#include <algorithm>
namespace Rivet {
// This analysis uses all the FJ stuff...
using namespace fastjet;
/// Routine for QG substructure analysis
class CMS_2021_I1920187 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2021_I1920187);
/// Book histograms and initialise projections before the run
void init() {
_mode = 0;
if (getOption("MODE") == "DIJET")
_mode = 1;
else if (getOption("MODE") == "ZJET")
_mode = 2;
else {
MSG_WARNING("Mode not specified in CMS_2021_I1920187, using DIJET");
_mode = 1;
}
// Initialise and register projections
FinalState fs(Cuts::abseta < 5);
// Z-jet
if (_mode == 2) {
// for the muons
double mu_pt = 26.;
double mz_min = (90 - 20);
double mz_max = (90 + 20);
double eta_max = 2.4;
DileptonFinder zfinder(fs, 91.2 * GeV, 0.1,
Cuts::pT > mu_pt * GeV && Cuts::abseta < eta_max && Cuts::abspid == PID::MUON,
Cuts::massIn(mz_min * GeV, mz_max * GeV));
declare(zfinder, "DileptonFinder");
eta_max = 2.4;
FinalState fs_muons(Cuts::abseta < eta_max);
IdentifiedFinalState muons_noCut(fs_muons, {PID::MUON, PID::ANTIMUON});
declare(muons_noCut, "MUONS_NOCUT");
// Particles for the jets
VetoedFinalState jet_input(fs);
jet_input.vetoNeutrinos();
jet_input.addVetoOnThisFinalState(getProjection<DileptonFinder>("DileptonFinder"));
declare(jet_input, "JET_INPUT");
_ptBinsGen = {50, 65, 88, 120, 150, 186, 254, 326, 408, 1500};
}
// dijet
else {
// Particles for the jets
VetoedFinalState jet_input(fs);
jet_input.vetoNeutrinos();
declare(jet_input, "JET_INPUT");
_ptBinsGen = {50, 65, 88, 120, 150, 186, 254, 326, 408, 481, 614, 800, 1000, 4000};
}
// Book histograms
// resize vectors appropriately
size_t nHistsRadii = _jetRadii.size();
size_t nHistsLambda = _lambdaVars.size();
size_t nHistsPt = _ptBinsGen.size() - 1;
// Z jet
if (_mode == 2) {
_h_zpj.resize(nHistsRadii, vector<vector<Histo1DPtr>>(nHistsLambda, vector<Histo1DPtr>(nHistsPt)));
_h_zpj_groomed.resize(nHistsRadii,
vector<vector<Histo1DPtr>>(nHistsLambda, vector<Histo1DPtr>(nHistsPt)));
// Now book histos
// remember 1-indexed
// yoda plot naming scheme
// --------------------------------------------------------------------------
// channel (ak4/8 radii [000, 100] + zjet / dijet cen / fwd [00, 10, 20] + groomed versions [0, 1])
// lambda variable; neutral+charged & charged-only are treated separately [0000,..,4000]
// pT bin [00000,..,120000]
for (size_t radiusInd = 0; radiusInd < _jetRadii.size(); radiusInd++) {
for (size_t lambdaInd = 0; lambdaInd < _lambdaVars.size(); lambdaInd++) {
for (size_t ptInd = 0; ptInd < _ptBinsGen.size() - 1; ptInd++) {
book(_h_zpj[radiusInd][lambdaInd][ptInd],
_hepdata_index.at(0 + 100 * radiusInd + 1000 * lambdaInd + 10000 * ptInd), 1, 1);
book(_h_zpj_groomed[radiusInd][lambdaInd][ptInd],
_hepdata_index.at(10 + 100 * radiusInd + 1000 * lambdaInd + 10000 * ptInd), 1, 1);
}
}
}
}
// di jet
else {
_h_dijet_cen.resize(nHistsRadii,
vector<vector<Histo1DPtr>>(nHistsLambda, vector<Histo1DPtr>(nHistsPt)));
_h_dijet_cen_groomed.resize(nHistsRadii,
vector<vector<Histo1DPtr>>(nHistsLambda, vector<Histo1DPtr>(nHistsPt)));
_h_dijet_fwd.resize(nHistsRadii,
vector<vector<Histo1DPtr>>(nHistsLambda, vector<Histo1DPtr>(nHistsPt)));
_h_dijet_fwd_groomed.resize(nHistsRadii,
vector<vector<Histo1DPtr>>(nHistsLambda, vector<Histo1DPtr>(nHistsPt)));
// Now book histos
// remember 1-indexed
// yoda plot naming scheme
// --------------------------------------------------------------------------
// channel (ak4/8 radii [000, 100] + zjet / dijet cen / fwd [00, 10, 20] + groomed versions [0, 1])
// lambda variable; neutral+charged & charged-only are treated separately [0000,..,4000]
// pT bin [00000,..,120000]
for (size_t radiusInd = 0; radiusInd < _jetRadii.size(); radiusInd++) {
for (size_t lambdaInd = 0; lambdaInd < _lambdaVars.size(); lambdaInd++) {
for (size_t ptInd = 0; ptInd < _ptBinsGen.size() - 1; ptInd++) {
book(_h_dijet_cen[radiusInd][lambdaInd][ptInd],
_hepdata_index.at(1 + 100 * radiusInd + 1000 * lambdaInd + 10000 * ptInd), 1, 1);
book(_h_dijet_cen_groomed[radiusInd][lambdaInd][ptInd],
_hepdata_index.at(11 + 100 * radiusInd + 1000 * lambdaInd + 10000 * ptInd), 1, 1);
book(_h_dijet_fwd[radiusInd][lambdaInd][ptInd],
_hepdata_index.at(2 + 100 * radiusInd + 1000 * lambdaInd + 10000 * ptInd), 1, 1);
book(_h_dijet_fwd_groomed[radiusInd][lambdaInd][ptInd],
_hepdata_index.at(12 + 100 * radiusInd + 1000 * lambdaInd + 10000 * ptInd), 1, 1);
}
}
}
}
}
// Get index of largest bin smaller than value in vector
// e.g. what you'd need when binning a continuous variable
size_t getBinIndex(float value, const vector<float>& bins) {
auto itr = std::lower_bound(bins.begin(), bins.end(), value);
return itr - bins.begin() - 1;
}
/// Perform the per-event analysis
void analyze(const Event& event) {
// Convert Particles into PseudoJets for clustering
const VetoedFinalState& fs = apply<VetoedFinalState>(event, "JET_INPUT");
const Particles& fsParticles = fs.particles();
vector<PseudoJet> particles;
particles.reserve(fsParticles.size());
for (size_t iFS = 0; iFS < fsParticles.size(); iFS++) {
PseudoJet p = fsParticles[iFS].pseudojet();
p.set_user_index(fsParticles[iFS].isCharged()); // for later reference to charge
particles.push_back(p);
}
// z jet
if (_mode == 2) {
for (size_t radiusInd = 0; radiusInd < _jetRadii.size(); radiusInd++) {
float jetRadius = _jetRadii.at(radiusInd);
JetDefinition jet_def(antikt_algorithm, jetRadius);
vector<PseudoJet> jets = (SelectorPtMin(15))(jet_def(particles));
const FinalState& muons = apply<IdentifiedFinalState>(event, "MUONS_NOCUT");
if (muons.size() >= 2) {
Particle muon1 = muons.particlesByPt()[0];
Particle muon2 = muons.particlesByPt()[1];
FourMomentum z = muon1.momentum() + muon2.momentum();
if (jets.size() > 0) {
PseudoJet jet1 = jets[0];
}
}
// Reconstruct Z
const DileptonFinder& zfinder = apply<DileptonFinder>(event, "DileptonFinder");
if (zfinder.bosons().size() < 1) continue;
const Particle& z = zfinder.bosons()[0];
double zpt = z.pt();
// Now do selection criteria
bool passZpJ = false;
if (jets.size() < 1) continue;
PseudoJet jet1 = jets[0];
float jet1pt = jet1.pt();
float asym = fabs((jet1pt - zpt) / (jet1pt + zpt));
float dphi = Rivet::deltaPhi(jet1.phi(), z.phi());
passZpJ = ((fabs(jet1.rapidity()) < 1.7) && (zpt > 30) && (asym < 0.3) && (dphi > 2.0));
if (!passZpJ) continue;
// Now calculate lambda variables and fill hists
// Simplify life - ignore this jet if it is below 1st hist pt range
// Note that we don't apply it to the original jet pt cut - since
// we have phase space where one jet is > 50, and one < 50
if (jet1pt < _ptBinsGen[0]) continue;
// ignore jet if beyond the last bin
if (jet1pt > _ptBinsGen.back()) continue;
// Need to use original, ungroomed jet pT to bin
size_t ptBinInd = getBinIndex(jet1pt, _ptBinsGen);
// UNGROOMED VERSION
// -------------------------------------------------------------------
vector<PseudoJet> chargedParticles;
for (size_t iC = 0; iC < jet1.constituents().size(); iC++)
if (jet1.constituents()[iC].user_index()) chargedParticles.push_back(jet1.constituents()[iC]);
vector<PseudoJet> chargedJets = jet_def(chargedParticles);
// Fill hists for each lambda variable
for (size_t lambdaInd = 0; lambdaInd < _lambdaVars.size(); lambdaInd++) {
const LambdaVar& thisLambdaVar = _lambdaVars[lambdaInd];
Angularity angularity(thisLambdaVar.beta, jetRadius, thisLambdaVar.kappa,
thisLambdaVar.constitCut);
float val = -1;
if (thisLambdaVar.isCharged)
val = (chargedJets.size() > 0) ? angularity(chargedJets[0]) : -1;
else
val = angularity(jet1);
if (val < 0) continue;
_h_zpj[radiusInd][lambdaInd][ptBinInd]->fill(val);
}
// GROOMED VERSION
// -------------------------------------------------------------------
// Get groomed jet
fastjet::contrib::SoftDrop sd(0, 0.1, jetRadius);
PseudoJet groomedJet = sd(jet1);
PseudoJet groomedJetCharged;
if (chargedJets.size() > 0) groomedJetCharged = sd(chargedJets[0]);
// Fill hists for each lambda variable
for (size_t lambdaInd = 0; lambdaInd < _lambdaVars.size(); lambdaInd++) {
const LambdaVar& thisLambdaVar = _lambdaVars[lambdaInd];
Angularity angularity(thisLambdaVar.beta, jetRadius, thisLambdaVar.kappa,
thisLambdaVar.constitCut);
float val = -1;
if (thisLambdaVar.isCharged)
val = (chargedJets.size() > 0) ? angularity(groomedJetCharged) : -1;
else
val = angularity(groomedJet);
if (val < 0) continue;
_h_zpj_groomed[radiusInd][lambdaInd][ptBinInd]->fill(val);
}
} // end loop over jet radii
}
// di jet
else {
for (size_t radiusInd = 0; radiusInd < _jetRadii.size(); radiusInd++) {
float jetRadius = _jetRadii.at(radiusInd);
JetDefinition jet_def(antikt_algorithm, jetRadius);
vector<PseudoJet> jets = (SelectorNHardest(2) * SelectorPtMin(15))(jet_def(particles));
bool passDijet = false;
if (jets.size() < 2) continue;
const auto& jet1 = jets.at(0);
const auto& jet2 = jets.at(1);
float jet1pt = jet1.pt();
float jet2pt = jet2.pt();
float asym = (jet1pt - jet2pt) / (jet1pt + jet2pt);
float dphi = Rivet::deltaPhi(jet1.phi(), jet2.phi());
passDijet = ((fabs(jet1.rapidity()) < 1.7) && (fabs(jet2.rapidity()) < 1.7) && (asym < 0.3)
&& (dphi > 2.0));
if (!passDijet) continue;
// Sort by increasing absolute rapidity
vector<PseudoJet> dijets = {jet1, jet2};
std::sort(dijets.begin(), dijets.end(), [](const PseudoJet& A, const PseudoJet& B) {
return fabs(A.rapidity()) < fabs(B.rapidity());
});
for (size_t iJ = 0; iJ < dijets.size(); iJ++) {
bool isCentral = (iJ == 0);
PseudoJet& jetItr = dijets[iJ];
// Simplify life - ignore this jet if it is below 1st hist pt range
// Note that we don't apply it to the original jet pt cut - since
// we have phase space where one jet is > 50, and one < 50
if (jetItr.pt() < _ptBinsGen[0]) continue;
// ignore jet if beyond the last bin
if (jetItr.pt() > _ptBinsGen.back()) continue;
// Need to use original, ungroomed jet pT to bin
size_t ptBinInd = getBinIndex(jetItr.pt(), _ptBinsGen);
// UNGROOMED VERSION
// -------------------------------------------------------------------
vector<PseudoJet> chargedParticles;
for (size_t iC = 0; iC < jetItr.constituents().size(); iC++)
if (jetItr.constituents()[iC].user_index())
chargedParticles.push_back(jetItr.constituents()[iC]);
vector<PseudoJet> chargedJets = jet_def(chargedParticles);
// Fill hists for each lambda variable
for (size_t lambdaInd = 0; lambdaInd < _lambdaVars.size(); lambdaInd++) {
const LambdaVar& thisLambdaVar = _lambdaVars[lambdaInd];
Angularity angularity(thisLambdaVar.beta, jetRadius, thisLambdaVar.kappa,
thisLambdaVar.constitCut);
float val = -1;
if (thisLambdaVar.isCharged)
val = (chargedJets.size() > 0) ? angularity(chargedJets[0]) : -1;
else
val = angularity(jetItr);
if (val < 0) continue;
if (isCentral) {
_h_dijet_cen[radiusInd][lambdaInd][ptBinInd]->fill(val);
}
else {
_h_dijet_fwd[radiusInd][lambdaInd][ptBinInd]->fill(val);
}
}
// GROOMED VERSION
// -------------------------------------------------------------------
// Get groomed jet
fastjet::contrib::SoftDrop sd(0, 0.1, jetRadius);
PseudoJet groomedJet = sd(jetItr);
PseudoJet groomedJetCharged;
if (chargedJets.size() > 0) groomedJetCharged = sd(chargedJets[0]);
// Fill hists for each lambda variable
for (size_t lambdaInd = 0; lambdaInd < _lambdaVars.size(); lambdaInd++) {
const LambdaVar& thisLambdaVar = _lambdaVars[lambdaInd];
Angularity angularity(thisLambdaVar.beta, jetRadius, thisLambdaVar.kappa,
thisLambdaVar.constitCut);
float val = -1;
if (thisLambdaVar.isCharged)
val = (chargedJets.size() > 0) ? angularity(groomedJetCharged) : -1;
else
val = angularity(groomedJet);
if (val < 0) continue;
if (isCentral) {
_h_dijet_cen_groomed[radiusInd][lambdaInd][ptBinInd]->fill(val);
}
else {
_h_dijet_fwd_groomed[radiusInd][lambdaInd][ptBinInd]->fill(val);
}
}
} // end loop over dijets
} // end loop over jet radii
}
} // end analyze() function
void finalize() {
for (auto& hvec3 :
{_h_dijet_cen, _h_dijet_cen_groomed, _h_dijet_fwd, _h_dijet_fwd_groomed, _h_zpj, _h_zpj_groomed}) {
for (auto& hvec2 : hvec3) {
for (auto& hvec : hvec2) {
normalize(hvec, 1.0, false);
}
}
}
}
/// @class Angularity
/// Definition of angularity
///
class Angularity : public fastjet::FunctionOfPseudoJet<double> {
public:
/// ctor
Angularity(double alpha, double jet_radius, double kappa = 1.0, Selector constitCut = SelectorPtMin(0.))
: _alpha(alpha), _radius(jet_radius), _kappa(kappa), _constitCut(constitCut) { }
/// computation of the angularity itself
double result(const PseudoJet& jet) const {
// get the jet constituents
vector<PseudoJet> constits = jet.constituents();
// get the reference axis
PseudoJet reference_axis = _get_reference_axis(jet);
// do the actual coputation
double numerator = 0.0, denominator = 0.0;
for (const auto& c : constits) {
if (!_constitCut.pass(c)) continue;
double pt = c.pt();
// Note: better compute (dist^2)^(alpha/2) to avoid an extra square root
numerator += pow(pt, _kappa) * pow(c.squared_distance(reference_axis), 0.5 * _alpha);
denominator += pt;
}
if (denominator == 0) return -1;
// the formula is only correct for the typical angularities which satisfy either kappa==1 or alpha==0.
else
return numerator / (pow(denominator, _kappa) * pow(_radius, _alpha));
}
protected:
PseudoJet _get_reference_axis(const PseudoJet& jet) const {
if (_alpha > 1) return jet;
Recluster recluster(JetDefinition(antikt_algorithm, JetDefinition::max_allowable_R, WTA_pt_scheme));
return recluster(jet);
}
double _alpha, _radius, _kappa;
Selector _constitCut;
};
/// Lightweight class to hold info about Lambda variable
class LambdaVar {
public:
LambdaVar(const std::string& name_, float kappa_, float beta_, bool isCharged_, Selector constitCut_)
: name(name_), kappa(kappa_), beta(beta_), isCharged(isCharged_), constitCut(constitCut_) { }
string name;
float kappa;
float beta;
bool isCharged;
Selector constitCut;
};
// Order matters here
const vector<float> _jetRadii = {0.4, 0.8};
// This order is important! index in vector used to create YODA plot name
// Must match that in extracRivetPlotsDijet.py
const vector<LambdaVar> _lambdaVars = {
LambdaVar("jet_multiplicity", 0, 0, false, SelectorPtMin(1.)),
LambdaVar("jet_pTD", 2, 0, false, SelectorPtMin(0.)),
LambdaVar("jet_LHA", 1, 0.5, false, SelectorPtMin(0.)),
LambdaVar("jet_width", 1, 1, false, SelectorPtMin(0.)),
LambdaVar("jet_thrust", 1, 2, false, SelectorPtMin(0.)),
LambdaVar("jet_multiplicity_charged", 0, 0, true, SelectorPtMin(1.)),
LambdaVar("jet_pTD_charged", 2, 0, true, SelectorPtMin(0.)),
LambdaVar("jet_LHA_charged", 1, 0.5, true, SelectorPtMin(0.)),
LambdaVar("jet_width_charged", 1, 1, true, SelectorPtMin(0.)),
LambdaVar("jet_thrust_charged", 1, 2, true, SelectorPtMin(0.)),
};
vector<float> _ptBinsGen;
const map<size_t, size_t> _hepdata_index{
{30000, 1}, {30001, 2}, {31000, 3}, {31001, 4}, {34000, 5}, {34001, 6},
{33000, 7}, {33001, 8}, {32000, 9}, {32001, 10}, {82000, 11}, {122001, 12},
{32100, 13}, {32101, 14}, {37000, 15}, {37001, 16}, {32010, 17}, {32011, 18},
{2000, 139}, {12000, 140}, {22000, 141}, {42000, 142}, {52000, 143}, {62000, 144},
{72000, 145}, {2001, 155}, {12001, 156}, {22001, 157}, {42001, 158}, {52001, 159},
{62001, 160}, {72001, 161}, {82001, 162}, {92001, 163}, {102001, 164}, {112001, 165},
{2002, 179}, {12002, 180}, {22002, 181}, {32002, 182}, {42002, 183}, {52002, 184},
{62002, 185}, {72002, 186}, {82002, 187}, {92002, 188}, {102002, 189}, {112002, 190},
{122002, 191}, {7000, 192}, {17000, 193}, {27000, 194}, {47000, 195}, {57000, 196},
{67000, 197}, {77000, 198}, {87000, 199}, {7001, 209}, {17001, 210}, {27001, 211},
{47001, 212}, {57001, 213}, {67001, 214}, {77001, 215}, {87001, 216}, {97001, 217},
{107001, 218}, {117001, 219}, {127001, 220}, {7002, 234}, {17002, 235}, {27002, 236},
{37002, 237}, {47002, 238}, {57002, 239}, {67002, 240}, {77002, 241}, {87002, 242},
{97002, 243}, {107002, 244}, {117002, 245}, {127002, 246}, {5000, 247}, {15000, 248},
{25000, 249}, {35000, 250}, {45000, 251}, {55000, 252}, {65000, 253}, {75000, 254},
{85000, 255}, {5001, 265}, {15001, 266}, {25001, 267}, {35001, 268}, {45001, 269},
{55001, 270}, {65001, 271}, {75001, 272}, {85001, 273}, {95001, 274}, {105001, 275},
{115001, 276}, {125001, 277}, {5002, 291}, {15002, 292}, {25002, 293}, {35002, 294},
{45002, 295}, {55002, 296}, {65002, 297}, {75002, 298}, {85002, 299}, {95002, 300},
{105002, 301}, {115002, 302}, {125002, 303}, {6000, 304}, {16000, 305}, {26000, 306},
{36000, 307}, {46000, 308}, {56000, 309}, {66000, 310}, {76000, 311}, {86000, 312},
{6001, 322}, {16001, 323}, {26001, 324}, {36001, 325}, {46001, 326}, {56001, 327},
{66001, 328}, {76001, 329}, {86001, 330}, {96001, 331}, {106001, 332}, {116001, 333},
{126001, 334}, {6002, 348}, {16002, 349}, {26002, 350}, {36002, 351}, {46002, 352},
{56002, 353}, {66002, 354}, {76002, 355}, {86002, 356}, {96002, 357}, {106002, 358},
{116002, 359}, {126002, 360}, {9000, 361}, {19000, 362}, {29000, 363}, {39000, 364},
{49000, 365}, {59000, 366}, {69000, 367}, {79000, 368}, {89000, 369}, {9001, 379},
{19001, 380}, {29001, 381}, {39001, 382}, {49001, 383}, {59001, 384}, {69001, 385},
{79001, 386}, {89001, 387}, {99001, 388}, {109001, 389}, {119001, 390}, {129001, 391},
{9002, 405}, {19002, 406}, {29002, 407}, {39002, 408}, {49002, 409}, {59002, 410},
{69002, 411}, {79002, 412}, {89002, 413}, {99002, 414}, {109002, 415}, {119002, 416},
{129002, 417}, {8000, 418}, {18000, 419}, {28000, 420}, {38000, 421}, {48000, 422},
{58000, 423}, {68000, 424}, {78000, 425}, {88000, 426}, {8001, 436}, {18001, 437},
{28001, 438}, {38001, 439}, {48001, 440}, {58001, 441}, {68001, 442}, {78001, 443},
{88001, 444}, {98001, 445}, {108001, 446}, {118001, 447}, {128001, 448}, {8002, 462},
{18002, 463}, {28002, 464}, {38002, 465}, {48002, 466}, {58002, 467}, {68002, 468},
{78002, 469}, {88002, 470}, {98002, 471}, {108002, 472}, {118002, 473}, {128002, 474},
{0, 475}, {10000, 476}, {20000, 477}, {40000, 478}, {50000, 479}, {60000, 480},
{70000, 481}, {80000, 482}, {1, 492}, {10001, 493}, {20001, 494}, {40001, 495},
{50001, 496}, {60001, 497}, {70001, 498}, {80001, 499}, {90001, 500}, {100001, 501},
{110001, 502}, {120001, 503}, {2, 517}, {10002, 518}, {20002, 519}, {30002, 520},
{40002, 521}, {50002, 522}, {60002, 523}, {70002, 524}, {80002, 525}, {90002, 526},
{100002, 527}, {110002, 528}, {120002, 529}, {1000, 530}, {11000, 531}, {21000, 532},
{41000, 533}, {51000, 534}, {61000, 535}, {71000, 536}, {81000, 537}, {1001, 547},
{11001, 548}, {21001, 549}, {41001, 550}, {51001, 551}, {61001, 552}, {71001, 553},
{81001, 554}, {91001, 555}, {101001, 556}, {111001, 557}, {121001, 558}, {1002, 572},
{11002, 573}, {21002, 574}, {31002, 575}, {41002, 576}, {51002, 577}, {61002, 578},
{71002, 579}, {81002, 580}, {91002, 581}, {101002, 582}, {111002, 583}, {121002, 584},
{4000, 585}, {14000, 586}, {24000, 587}, {44000, 588}, {54000, 589}, {64000, 590},
{74000, 591}, {84000, 592}, {4001, 602}, {14001, 603}, {24001, 604}, {44001, 605},
{54001, 606}, {64001, 607}, {74001, 608}, {84001, 609}, {94001, 610}, {104001, 611},
{114001, 612}, {124001, 613}, {4002, 627}, {14002, 628}, {24002, 629}, {34002, 630},
{44002, 631}, {54002, 632}, {64002, 633}, {74002, 634}, {84002, 635}, {94002, 636},
{104002, 637}, {114002, 638}, {124002, 639}, {3000, 640}, {13000, 641}, {23000, 642},
{43000, 643}, {53000, 644}, {63000, 645}, {73000, 646}, {83000, 647}, {3001, 657},
{13001, 658}, {23001, 659}, {43001, 660}, {53001, 661}, {63001, 662}, {73001, 663},
{83001, 664}, {93001, 665}, {103001, 666}, {113001, 667}, {123001, 668}, {3002, 682},
{13002, 683}, {23002, 684}, {33002, 685}, {43002, 686}, {53002, 687}, {63002, 688},
{73002, 689}, {83002, 690}, {93002, 691}, {103002, 692}, {113002, 693}, {123002, 694},
{2010, 695}, {12010, 696}, {22010, 697}, {42010, 698}, {52010, 699}, {62010, 700},
{72010, 701}, {82010, 702}, {2011, 712}, {12011, 713}, {22011, 714}, {42011, 715},
{52011, 716}, {62011, 717}, {72011, 718}, {82011, 719}, {92011, 720}, {102011, 721},
{112011, 722}, {122011, 723}, {2012, 737}, {12012, 738}, {22012, 739}, {32012, 740},
{42012, 741}, {52012, 742}, {62012, 743}, {72012, 744}, {82012, 745}, {92012, 746},
{102012, 747}, {112012, 748}, {122012, 749}, {7010, 750}, {17010, 751}, {27010, 752},
{37010, 753}, {47010, 754}, {57010, 755}, {67010, 756}, {77010, 757}, {87010, 758},
{7011, 768}, {17011, 769}, {27011, 770}, {37011, 771}, {47011, 772}, {57011, 773},
{67011, 774}, {77011, 775}, {87011, 776}, {97011, 777}, {107011, 778}, {117011, 779},
{127011, 780}, {7012, 794}, {17012, 795}, {27012, 796}, {37012, 797}, {47012, 798},
{57012, 799}, {67012, 800}, {77012, 801}, {87012, 802}, {97012, 803}, {107012, 804},
{117012, 805}, {127012, 806}, {5010, 807}, {15010, 808}, {25010, 809}, {35010, 810},
{45010, 811}, {55010, 812}, {65010, 813}, {75010, 814}, {85010, 815}, {5011, 825},
{15011, 826}, {25011, 827}, {35011, 828}, {45011, 829}, {55011, 830}, {65011, 831},
{75011, 832}, {85011, 833}, {95011, 834}, {105011, 835}, {115011, 836}, {125011, 837},
{5012, 851}, {15012, 852}, {25012, 853}, {35012, 854}, {45012, 855}, {55012, 856},
{65012, 857}, {75012, 858}, {85012, 859}, {95012, 860}, {105012, 861}, {115012, 862},
{125012, 863}, {6010, 864}, {16010, 865}, {26010, 866}, {36010, 867}, {46010, 868},
{56010, 869}, {66010, 870}, {76010, 871}, {86010, 872}, {6011, 882}, {16011, 883},
{26011, 884}, {36011, 885}, {46011, 886}, {56011, 887}, {66011, 888}, {76011, 889},
{86011, 890}, {96011, 891}, {106011, 892}, {116011, 893}, {126011, 894}, {6012, 908},
{16012, 909}, {26012, 910}, {36012, 911}, {46012, 912}, {56012, 913}, {66012, 914},
{76012, 915}, {86012, 916}, {96012, 917}, {106012, 918}, {116012, 919}, {126012, 920},
{9010, 921}, {19010, 922}, {29010, 923}, {39010, 924}, {49010, 925}, {59010, 926},
{69010, 927}, {79010, 928}, {89010, 929}, {9011, 939}, {19011, 940}, {29011, 941},
{39011, 942}, {49011, 943}, {59011, 944}, {69011, 945}, {79011, 946}, {89011, 947},
{99011, 948}, {109011, 949}, {119011, 950}, {129011, 951}, {9012, 965}, {19012, 966},
{29012, 967}, {39012, 968}, {49012, 969}, {59012, 970}, {69012, 971}, {79012, 972},
{89012, 973}, {99012, 974}, {109012, 975}, {119012, 976}, {129012, 977}, {8010, 978},
{18010, 979}, {28010, 980}, {38010, 981}, {48010, 982}, {58010, 983}, {68010, 984},
{78010, 985}, {88010, 986}, {8011, 996}, {18011, 997}, {28011, 998}, {38011, 999},
{48011, 1000}, {58011, 1001}, {68011, 1002}, {78011, 1003}, {88011, 1004}, {98011, 1005},
{108011, 1006}, {118011, 1007}, {128011, 1008}, {8012, 1022}, {18012, 1023}, {28012, 1024},
{38012, 1025}, {48012, 1026}, {58012, 1027}, {68012, 1028}, {78012, 1029}, {88012, 1030},
{98012, 1031}, {108012, 1032}, {118012, 1033}, {128012, 1034}, {10, 1035}, {10010, 1036},
{20010, 1037}, {30010, 1038}, {40010, 1039}, {50010, 1040}, {60010, 1041}, {70010, 1042},
{80010, 1043}, {11, 1053}, {10011, 1054}, {20011, 1055}, {30011, 1056}, {40011, 1057},
{50011, 1058}, {60011, 1059}, {70011, 1060}, {80011, 1061}, {90011, 1062}, {100011, 1063},
{110011, 1064}, {120011, 1065}, {12, 1079}, {10012, 1080}, {20012, 1081}, {30012, 1082},
{40012, 1083}, {50012, 1084}, {60012, 1085}, {70012, 1086}, {80012, 1087}, {90012, 1088},
{100012, 1089}, {110012, 1090}, {120012, 1091}, {1010, 1092}, {11010, 1093}, {21010, 1094},
{31010, 1095}, {41010, 1096}, {51010, 1097}, {61010, 1098}, {71010, 1099}, {81010, 1100},
{1011, 1110}, {11011, 1111}, {21011, 1112}, {31011, 1113}, {41011, 1114}, {51011, 1115},
{61011, 1116}, {71011, 1117}, {81011, 1118}, {91011, 1119}, {101011, 1120}, {111011, 1121},
{121011, 1122}, {1012, 1136}, {11012, 1137}, {21012, 1138}, {31012, 1139}, {41012, 1140},
{51012, 1141}, {61012, 1142}, {71012, 1143}, {81012, 1144}, {91012, 1145}, {101012, 1146},
{111012, 1147}, {121012, 1148}, {4010, 1149}, {14010, 1150}, {24010, 1151}, {34010, 1152},
{44010, 1153}, {54010, 1154}, {64010, 1155}, {74010, 1156}, {84010, 1157}, {4011, 1167},
{14011, 1168}, {24011, 1169}, {34011, 1170}, {44011, 1171}, {54011, 1172}, {64011, 1173},
{74011, 1174}, {84011, 1175}, {94011, 1176}, {104011, 1177}, {114011, 1178}, {124011, 1179},
{4012, 1193}, {14012, 1194}, {24012, 1195}, {34012, 1196}, {44012, 1197}, {54012, 1198},
{64012, 1199}, {74012, 1200}, {84012, 1201}, {94012, 1202}, {104012, 1203}, {114012, 1204},
{124012, 1205}, {3010, 1206}, {13010, 1207}, {23010, 1208}, {33010, 1209}, {43010, 1210},
{53010, 1211}, {63010, 1212}, {73010, 1213}, {83010, 1214}, {3011, 1224}, {13011, 1225},
{23011, 1226}, {33011, 1227}, {43011, 1228}, {53011, 1229}, {63011, 1230}, {73011, 1231},
{83011, 1232}, {93011, 1233}, {103011, 1234}, {113011, 1235}, {123011, 1236}, {3012, 1250},
{13012, 1251}, {23012, 1252}, {33012, 1253}, {43012, 1254}, {53012, 1255}, {63012, 1256},
{73012, 1257}, {83012, 1258}, {93012, 1259}, {103012, 1260}, {113012, 1261}, {123012, 1262},
{2100, 1263}, {12100, 1264}, {22100, 1265}, {42100, 1266}, {52100, 1267}, {62100, 1268},
{72100, 1269}, {82100, 1270}, {2101, 1271}, {12101, 1272}, {22101, 1273}, {42101, 1274},
{52101, 1275}, {62101, 1276}, {72101, 1277}, {82101, 1278}, {92101, 1279}, {102101, 1280},
{112101, 1281}, {122101, 1282}, {2102, 1283}, {12102, 1284}, {22102, 1285}, {32102, 1286},
{42102, 1287}, {52102, 1288}, {62102, 1289}, {72102, 1290}, {82102, 1291}, {92102, 1292},
{102102, 1293}, {112102, 1294}, {122102, 1295}, {7100, 1296}, {17100, 1297}, {27100, 1298},
{37100, 1299}, {47100, 1300}, {57100, 1301}, {67100, 1302}, {77100, 1303}, {87100, 1304},
{7101, 1314}, {17101, 1315}, {27101, 1316}, {37101, 1317}, {47101, 1318}, {57101, 1319},
{67101, 1320}, {77101, 1321}, {87101, 1322}, {97101, 1323}, {107101, 1324}, {117101, 1325},
{127101, 1326}, {7102, 1327}, {17102, 1328}, {27102, 1329}, {37102, 1330}, {47102, 1331},
{57102, 1332}, {67102, 1333}, {77102, 1334}, {87102, 1335}, {97102, 1336}, {107102, 1337},
{117102, 1338}, {127102, 1339}, {5100, 1340}, {15100, 1341}, {25100, 1342}, {35100, 1343},
{45100, 1344}, {55100, 1345}, {65100, 1346}, {75100, 1347}, {85100, 1348}, {5101, 1358},
{15101, 1359}, {25101, 1360}, {35101, 1361}, {45101, 1362}, {55101, 1363}, {65101, 1364},
{75101, 1365}, {85101, 1366}, {95101, 1367}, {105101, 1368}, {115101, 1369}, {125101, 1370},
{5102, 1371}, {15102, 1372}, {25102, 1373}, {35102, 1374}, {45102, 1375}, {55102, 1376},
{65102, 1377}, {75102, 1378}, {85102, 1379}, {95102, 1380}, {105102, 1381}, {115102, 1382},
{125102, 1383}, {6100, 1384}, {16100, 1385}, {26100, 1386}, {36100, 1387}, {46100, 1388},
{56100, 1389}, {66100, 1390}, {76100, 1391}, {86100, 1392}, {6101, 1402}, {16101, 1403},
{26101, 1404}, {36101, 1405}, {46101, 1406}, {56101, 1407}, {66101, 1408}, {76101, 1409},
{86101, 1410}, {96101, 1411}, {106101, 1412}, {116101, 1413}, {126101, 1414}, {6102, 1415},
{16102, 1416}, {26102, 1417}, {36102, 1418}, {46102, 1419}, {56102, 1420}, {66102, 1421},
{76102, 1422}, {86102, 1423}, {96102, 1424}, {106102, 1425}, {116102, 1426}, {126102, 1427},
{9100, 1428}, {19100, 1429}, {29100, 1430}, {39100, 1431}, {49100, 1432}, {59100, 1433},
{69100, 1434}, {79100, 1435}, {89100, 1436}, {9101, 1446}, {19101, 1447}, {29101, 1448},
{39101, 1449}, {49101, 1450}, {59101, 1451}, {69101, 1452}, {79101, 1453}, {89101, 1454},
{99101, 1455}, {109101, 1456}, {119101, 1457}, {129101, 1458}, {9102, 1459}, {19102, 1460},
{29102, 1461}, {39102, 1462}, {49102, 1463}, {59102, 1464}, {69102, 1465}, {79102, 1466},
{89102, 1467}, {99102, 1468}, {109102, 1469}, {119102, 1470}, {129102, 1471}, {8100, 1472},
{18100, 1473}, {28100, 1474}, {38100, 1475}, {48100, 1476}, {58100, 1477}, {68100, 1478},
{78100, 1479}, {88100, 1480}, {8101, 1490}, {18101, 1491}, {28101, 1492}, {38101, 1493},
{48101, 1494}, {58101, 1495}, {68101, 1496}, {78101, 1497}, {88101, 1498}, {98101, 1499},
{108101, 1500}, {118101, 1501}, {128101, 1502}, {8102, 1503}, {18102, 1504}, {28102, 1505},
{38102, 1506}, {48102, 1507}, {58102, 1508}, {68102, 1509}, {78102, 1510}, {88102, 1511},
{98102, 1512}, {108102, 1513}, {118102, 1514}, {128102, 1515}, {100, 1516}, {10100, 1517},
{20100, 1518}, {30100, 1519}, {40100, 1520}, {50100, 1521}, {60100, 1522}, {70100, 1523},
{80100, 1524}, {101, 1525}, {10101, 1526}, {20101, 1527}, {30101, 1528}, {40101, 1529},
{50101, 1530}, {60101, 1531}, {70101, 1532}, {80101, 1533}, {90101, 1534}, {100101, 1535},
{110101, 1536}, {120101, 1537}, {102, 1538}, {10102, 1539}, {20102, 1540}, {30102, 1541},
{40102, 1542}, {50102, 1543}, {60102, 1544}, {70102, 1545}, {80102, 1546}, {90102, 1547},
{100102, 1548}, {110102, 1549}, {120102, 1550}, {1100, 1551}, {11100, 1552}, {21100, 1553},
{31100, 1554}, {41100, 1555}, {51100, 1556}, {61100, 1557}, {71100, 1558}, {81100, 1559},
{1101, 1560}, {11101, 1561}, {21101, 1562}, {31101, 1563}, {41101, 1564}, {51101, 1565},
{61101, 1566}, {71101, 1567}, {81101, 1568}, {91101, 1569}, {101101, 1570}, {111101, 1571},
{121101, 1572}, {1102, 1573}, {11102, 1574}, {21102, 1575}, {31102, 1576}, {41102, 1577},
{51102, 1578}, {61102, 1579}, {71102, 1580}, {81102, 1581}, {91102, 1582}, {101102, 1583},
{111102, 1584}, {121102, 1585}, {4100, 1586}, {14100, 1587}, {24100, 1588}, {34100, 1589},
{44100, 1590}, {54100, 1591}, {64100, 1592}, {74100, 1593}, {84100, 1594}, {4101, 1595},
{14101, 1596}, {24101, 1597}, {34101, 1598}, {44101, 1599}, {54101, 1600}, {64101, 1601},
{74101, 1602}, {84101, 1603}, {94101, 1604}, {104101, 1605}, {114101, 1606}, {124101, 1607},
{4102, 1608}, {14102, 1609}, {24102, 1610}, {34102, 1611}, {44102, 1612}, {54102, 1613},
{64102, 1614}, {74102, 1615}, {84102, 1616}, {94102, 1617}, {104102, 1618}, {114102, 1619},
{124102, 1620}, {3100, 1621}, {13100, 1622}, {23100, 1623}, {33100, 1624}, {43100, 1625},
{53100, 1626}, {63100, 1627}, {73100, 1628}, {83100, 1629}, {3101, 1630}, {13101, 1631},
{23101, 1632}, {33101, 1633}, {43101, 1634}, {53101, 1635}, {63101, 1636}, {73101, 1637},
{83101, 1638}, {93101, 1639}, {103101, 1640}, {113101, 1641}, {123101, 1642}, {3102, 1643},
{13102, 1644}, {23102, 1645}, {33102, 1646}, {43102, 1647}, {53102, 1648}, {63102, 1649},
{73102, 1650}, {83102, 1651}, {93102, 1652}, {103102, 1653}, {113102, 1654}, {123102, 1655},
{2110, 1656}, {12110, 1657}, {22110, 1658}, {32110, 1659}, {42110, 1660}, {52110, 1661},
{62110, 1662}, {72110, 1663}, {82110, 1664}, {2111, 1674}, {12111, 1675}, {22111, 1676},
{32111, 1677}, {42111, 1678}, {52111, 1679}, {62111, 1680}, {72111, 1681}, {82111, 1682},
{92111, 1683}, {102111, 1684}, {112111, 1685}, {122111, 1686}, {2112, 1687}, {12112, 1688},
{22112, 1689}, {32112, 1690}, {42112, 1691}, {52112, 1692}, {62112, 1693}, {72112, 1694},
{82112, 1695}, {92112, 1696}, {102112, 1697}, {112112, 1698}, {122112, 1699}, {7110, 1700},
{17110, 1701}, {27110, 1702}, {37110, 1703}, {47110, 1704}, {57110, 1705}, {67110, 1706},
{77110, 1707}, {87110, 1708}, {7111, 1718}, {17111, 1719}, {27111, 1720}, {37111, 1721},
{47111, 1722}, {57111, 1723}, {67111, 1724}, {77111, 1725}, {87111, 1726}, {97111, 1727},
{107111, 1728}, {117111, 1729}, {127111, 1730}, {7112, 1731}, {17112, 1732}, {27112, 1733},
{37112, 1734}, {47112, 1735}, {57112, 1736}, {67112, 1737}, {77112, 1738}, {87112, 1739},
{97112, 1740}, {107112, 1741}, {117112, 1742}, {127112, 1743}, {5110, 1744}, {15110, 1745},
{25110, 1746}, {35110, 1747}, {45110, 1748}, {55110, 1749}, {65110, 1750}, {75110, 1751},
{85110, 1752}, {5111, 1762}, {15111, 1763}, {25111, 1764}, {35111, 1765}, {45111, 1766},
{55111, 1767}, {65111, 1768}, {75111, 1769}, {85111, 1770}, {95111, 1771}, {105111, 1772},
{115111, 1773}, {125111, 1774}, {5112, 1775}, {15112, 1776}, {25112, 1777}, {35112, 1778},
{45112, 1779}, {55112, 1780}, {65112, 1781}, {75112, 1782}, {85112, 1783}, {95112, 1784},
{105112, 1785}, {115112, 1786}, {125112, 1787}, {6110, 1788}, {16110, 1789}, {26110, 1790},
{36110, 1791}, {46110, 1792}, {56110, 1793}, {66110, 1794}, {76110, 1795}, {86110, 1796},
{6111, 1806}, {16111, 1807}, {26111, 1808}, {36111, 1809}, {46111, 1810}, {56111, 1811},
{66111, 1812}, {76111, 1813}, {86111, 1814}, {96111, 1815}, {106111, 1816}, {116111, 1817},
{126111, 1818}, {6112, 1819}, {16112, 1820}, {26112, 1821}, {36112, 1822}, {46112, 1823},
{56112, 1824}, {66112, 1825}, {76112, 1826}, {86112, 1827}, {96112, 1828}, {106112, 1829},
{116112, 1830}, {126112, 1831}, {9110, 1832}, {19110, 1833}, {29110, 1834}, {39110, 1835},
{49110, 1836}, {59110, 1837}, {69110, 1838}, {79110, 1839}, {89110, 1840}, {9111, 1850},
{19111, 1851}, {29111, 1852}, {39111, 1853}, {49111, 1854}, {59111, 1855}, {69111, 1856},
{79111, 1857}, {89111, 1858}, {99111, 1859}, {109111, 1860}, {119111, 1861}, {129111, 1862},
{9112, 1863}, {19112, 1864}, {29112, 1865}, {39112, 1866}, {49112, 1867}, {59112, 1868},
{69112, 1869}, {79112, 1870}, {89112, 1871}, {99112, 1872}, {109112, 1873}, {119112, 1874},
{129112, 1875}, {8110, 1876}, {18110, 1877}, {28110, 1878}, {38110, 1879}, {48110, 1880},
{58110, 1881}, {68110, 1882}, {78110, 1883}, {88110, 1884}, {8111, 1894}, {18111, 1895},
{28111, 1896}, {38111, 1897}, {48111, 1898}, {58111, 1899}, {68111, 1900}, {78111, 1901},
{88111, 1902}, {98111, 1903}, {108111, 1904}, {118111, 1905}, {128111, 1906}, {8112, 1907},
{18112, 1908}, {28112, 1909}, {38112, 1910}, {48112, 1911}, {58112, 1912}, {68112, 1913},
{78112, 1914}, {88112, 1915}, {98112, 1916}, {108112, 1917}, {118112, 1918}, {128112, 1919},
{110, 1920}, {10110, 1921}, {20110, 1922}, {30110, 1923}, {40110, 1924}, {50110, 1925},
{60110, 1926}, {70110, 1927}, {80110, 1928}, {111, 1938}, {10111, 1939}, {20111, 1940},
{30111, 1941}, {40111, 1942}, {50111, 1943}, {60111, 1944}, {70111, 1945}, {80111, 1946},
{90111, 1947}, {100111, 1948}, {110111, 1949}, {120111, 1950}, {112, 1951}, {10112, 1952},
{20112, 1953}, {30112, 1954}, {40112, 1955}, {50112, 1956}, {60112, 1957}, {70112, 1958},
{80112, 1959}, {90112, 1960}, {100112, 1961}, {110112, 1962}, {120112, 1963}, {1110, 1964},
{11110, 1965}, {21110, 1966}, {31110, 1967}, {41110, 1968}, {51110, 1969}, {61110, 1970},
{71110, 1971}, {81110, 1972}, {1111, 1982}, {11111, 1983}, {21111, 1984}, {31111, 1985},
{41111, 1986}, {51111, 1987}, {61111, 1988}, {71111, 1989}, {81111, 1990}, {91111, 1991},
{101111, 1992}, {111111, 1993}, {121111, 1994}, {1112, 1995}, {11112, 1996}, {21112, 1997},
{31112, 1998}, {41112, 1999}, {51112, 2000}, {61112, 2001}, {71112, 2002}, {81112, 2003},
{91112, 2004}, {101112, 2005}, {111112, 2006}, {121112, 2007}, {4110, 2008}, {14110, 2009},
{24110, 2010}, {34110, 2011}, {44110, 2012}, {54110, 2013}, {64110, 2014}, {74110, 2015},
{84110, 2016}, {4111, 2026}, {14111, 2027}, {24111, 2028}, {34111, 2029}, {44111, 2030},
{54111, 2031}, {64111, 2032}, {74111, 2033}, {84111, 2034}, {94111, 2035}, {104111, 2036},
{114111, 2037}, {124111, 2038}, {4112, 2039}, {14112, 2040}, {24112, 2041}, {34112, 2042},
{44112, 2043}, {54112, 2044}, {64112, 2045}, {74112, 2046}, {84112, 2047}, {94112, 2048},
{104112, 2049}, {114112, 2050}, {124112, 2051}, {3110, 2052}, {13110, 2053}, {23110, 2054},
{33110, 2055}, {43110, 2056}, {53110, 2057}, {63110, 2058}, {73110, 2059}, {83110, 2060},
{3111, 2070}, {13111, 2071}, {23111, 2072}, {33111, 2073}, {43111, 2074}, {53111, 2075},
{63111, 2076}, {73111, 2077}, {83111, 2078}, {93111, 2079}, {103111, 2080}, {113111, 2081},
{123111, 2082}, {3112, 2083}, {13112, 2084}, {23112, 2085}, {33112, 2086}, {43112, 2087},
{53112, 2088}, {63112, 2089}, {73112, 2090}, {83112, 2091}, {93112, 2092}, {103112, 2093},
{113112, 2094}, {123112, 2095}};
// mode for the analysis
unsigned int _mode;
// 3D vector: [jet radius][lambda variable][pt bin]
// since each pt bin has its own normalised distribution
vector<vector<vector<Histo1DPtr>>> _h_dijet_cen, _h_dijet_cen_groomed, _h_dijet_fwd, _h_dijet_fwd_groomed;
// 3D vector: [jet radius][lambda variable][pt bin]
// since each pt bin has its own normalised distribution
vector<vector<vector<Histo1DPtr>>> _h_zpj, _h_zpj_groomed;
};
RIVET_DECLARE_PLUGIN(CMS_2021_I1920187);
}