2#ifndef RIVET_RIVETHTT_HH
3#define RIVET_RIVETHTT_HH
6#include "HEPTopTagger/HEPTopTagger.hh"
13 EARLY_MASSRATIO_SORT_MASS,
14 LATE_MASSRATIO_SORT_MASS,
15 EARLY_MASSRATIO_SORT_MODDJADE,
16 LATE_MASSRATIO_SORT_MODDJADE,
28 Mode
mode = HTTMode::EARLY_MASSRATIO_SORT_MASS;
33 bool do_optimalR =
true;
34 double optimalR_min = 0.5;
35 double optimalR_step = 0.1;
36 double optimalR_threshold = 0.2;
41 double mass_drop = 0.8;
42 double max_subjet_mass = 30*GeV;
47 unsigned int filt_N = 5;
48 double filtering_R = 0.3;
49 double filtering_minpt = 0.;
61 double top_mass = 172.3*GeV;
64 double Mtop_min = 150*GeV;
65 double Mtop_max = 200*GeV;
71 double mass_ratio_range_min = (1.-fw)*
W_mass/top_mass;
72 double mass_ratio_range_max = (1.+fw)*
W_mass/top_mass;
78 double m13cutmin = 0.2;
79 double m13cutmax = 1.3;
84 double prune_zcut = 0.1;
85 double prune_rcut = 0.5;
143 double unfilteredMass()
const;
160 fastjet::HEPTopTagger::HEPTopTagger _tagger;
168 _tagger = fastjet::HEPTopTagger::HEPTopTagger();
171 _tagger.do_optimalR(params.do_optimalR);
172 _tagger.set_optimalR_min(params.optimalR_min);
173 _tagger.set_optimalR_step(params.optimalR_step);
174 _tagger.set_optimalR_threshold(params.optimalR_threshold);
177 fastjet::HEPTopTagger::Mode mode;
178 if (params.
mode == HTTMode::EARLY_MASSRATIO_SORT_MASS) {
179 mode = fastjet::HEPTopTagger::EARLY_MASSRATIO_SORT_MASS;
180 }
else if (params.
mode == HTTMode::LATE_MASSRATIO_SORT_MASS) {
181 mode = fastjet::HEPTopTagger::LATE_MASSRATIO_SORT_MASS;
182 }
else if (params.
mode == HTTMode::EARLY_MASSRATIO_SORT_MODDJADE) {
183 mode = fastjet::HEPTopTagger::EARLY_MASSRATIO_SORT_MODDJADE;
184 }
else if (params.
mode == HTTMode::LATE_MASSRATIO_SORT_MODDJADE) {
185 mode = fastjet::HEPTopTagger::LATE_MASSRATIO_SORT_MODDJADE;
187 mode = fastjet::HEPTopTagger::TWO_STEP_FILTER;
189 _tagger.set_mode(mode);
190 _tagger.set_mt(params.top_mass);
191 _tagger.set_mw(params.
W_mass);
192 _tagger.set_top_mass_range(params.Mtop_min, params.Mtop_max);
193 _tagger.set_fw(params.fw);
194 _tagger.set_mass_ratio_range(params.mass_ratio_range_min, params.mass_ratio_range_max);
195 _tagger.set_mass_ratio_cut(params.m23cut, params.m13cutmin, params.m13cutmax);
198 _tagger.set_filtering_n(params.filt_N);
199 _tagger.set_filtering_R(params.filtering_R);
200 _tagger.set_filtering_minpt_subjet(params.filtering_minpt);
202 fastjet::JetAlgorithm algo = fastjet::antikt_algorithm;
205 _tagger.set_filtering_jetalgorithm(algo);
208 algo = fastjet::antikt_algorithm;
211 _tagger.set_reclustering_jetalgorithm(algo);
214 _tagger.set_mass_drop_threshold(params.mass_drop);
215 _tagger.set_mass_drop_threshold(params.mass_drop);
218 _tagger.set_pruning_rcut_factor(params.prune_rcut);
219 _tagger.set_pruning_zcut(params.prune_zcut);
235 const PseudoJet& HTT::topPjet()
const {
return _tagger.t(); }
236 const PseudoJet& HTT::bPjet()
const {
return _tagger.b(); }
237 const PseudoJet& HTT::wPjet()
const {
return _tagger.W(); }
238 const PseudoJet& HTT::w1Pjet()
const {
return _tagger.W1(); }
239 const PseudoJet& HTT::w2Pjet()
const {
return _tagger.W2(); }
245 rtn.emplace_back(_tagger.j1());
246 rtn.emplace_back(_tagger.j2());
247 rtn.emplace_back(_tagger.j3());
257 double HTT::unfilteredMass()
const {
return _tagger.unfiltered_mass(); }
Wrapper class for configuring use of HEPTopTagger.
Definition RivetHTT.hh:22
void calc(Jet &jet)
Run the top tagger on a given jet.
Definition RivetHTT.hh:223
bool passedMassCut2D() const
2D mass plane requirements passed?
Definition RivetHTT.hh:265
const PseudoJet & topJet() const
Top jet, as a pseudojet.
HTT(HTT::InputParameters ¶ms)
Constructor with arguments.
Definition RivetHTT.hh:96
const Jet bJet() const
The bottom jet inside the top.
Definition RivetHTT.hh:229
const PseudoJet & w1Jet() const
Leading subjet from W, as a pseudojet.
const Jet w2Jet() const
Second leading subjet from W.
Definition RivetHTT.hh:232
const Jet wJet() const
The W jet inside the top.
Definition RivetHTT.hh:230
bool isTopTagged() const
Is the jet tagged?
Definition RivetHTT.hh:261
double deltaTopMass() const
Difference between the reco top mass and the true top mass.
Definition RivetHTT.hh:259
const PseudoJet & bJet() const
The bottom jet inside the top, as a pseudojet.
const Jet topJet() const
Top jet.
Definition RivetHTT.hh:228
bool passedMassCutTop() const
Was the top-mass window requirement passed?
Definition RivetHTT.hh:263
const Jets & subjets() const
pT-ordered subjets
Definition RivetHTT.hh:242
const PseudoJet & w2Jet() const
Second leading subjet from W, as a pseudojet.
HTT()
Constructor without arguments.
Definition RivetHTT.hh:93
const PseudoJet & wJet() const
The W jet inside the top, as a pseudojet.
const Jet w1Jet() const
Leading subjet from W.
Definition RivetHTT.hh:231
void setParams(HTT::InputParameters ¶ms)
Set the tagging parameters.
Definition RivetHTT.hh:167
double prunedMass() const
The pruned mass.
Definition RivetHTT.hh:255
Representation of a clustered jet of particles.
Definition Jet.hh:42
const fastjet::PseudoJet & pseudojet() const
Access the internal FastJet3 PseudoJet (as a const reference)
Definition Jet.hh:194
Specialised vector of Jet objects.
Definition Jet.hh:21
Definition MC_CENT_PPB_Projections.hh:10
HTTMode
HTT operating mode.
Definition RivetHTT.hh:12