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/FinalState.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/IdentifiedFinalState.hh"
#include "Rivet/Projections/VetoedFinalState.hh"
#include "Rivet/Projections/DileptonFinder.hh"
#include "fastjet/JetDefinition.hh"
#include "fastjet/ClusterSequence.hh"
#include "fastjet/tools/Recluster.hh"
#include "fastjet/contrib/SoftDrop.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);
}