2#ifndef RIVET_RIVETHTT_HH
3#define RIVET_RIVETHTT_HH
6#include "HEPTopTagger/HEPTopTagger.hh"
17 enum Algo { KT=0, AKT=1, ANTIKT=1, CA=2, CAMBRIDGE=2, CAMBRIDGE_AACHEN=2 };
22 EARLY_MASSRATIO_SORT_MASS,
23 LATE_MASSRATIO_SORT_MASS,
24 EARLY_MASSRATIO_SORT_MODDJADE,
25 LATE_MASSRATIO_SORT_MODDJADE,
38 bool do_optimalR =
true;
39 double optimalR_min = 0.5;
40 double optimalR_step = 0.1;
41 double optimalR_threshold = 0.2;
46 double mass_drop = 0.8;
47 double max_subjet_mass = 30*GeV;
52 unsigned int filt_N = 5;
53 double filtering_R = 0.3;
54 double filtering_minpt = 0.;
66 double top_mass = 172.3*GeV;
69 double Mtop_min = 150*GeV;
70 double Mtop_max = 200*GeV;
76 double mass_ratio_range_min = (1.-fw)*
W_mass/top_mass;
77 double mass_ratio_range_max = (1.+fw)*
W_mass/top_mass;
83 double m13cutmin = 0.2;
84 double m13cutmax = 1.3;
89 double prune_zcut = 0.1;
90 double prune_rcut = 0.5;
148 double unfilteredMass()
const;
165 fastjet::HEPTopTagger::HEPTopTagger _tagger;
173 _tagger = fastjet::HEPTopTagger::HEPTopTagger();
176 _tagger.do_optimalR(params.do_optimalR);
177 _tagger.set_optimalR_min(params.optimalR_min);
178 _tagger.set_optimalR_step(params.optimalR_step);
179 _tagger.set_optimalR_threshold(params.optimalR_threshold);
182 fastjet::HEPTopTagger::Mode mode;
183 if (params.
mode == HTT::EARLY_MASSRATIO_SORT_MASS) {
184 mode = fastjet::HEPTopTagger::EARLY_MASSRATIO_SORT_MASS;
185 }
else if (params.
mode == HTT::LATE_MASSRATIO_SORT_MASS) {
186 mode = fastjet::HEPTopTagger::LATE_MASSRATIO_SORT_MASS;
187 }
else if (params.
mode == HTT::EARLY_MASSRATIO_SORT_MODDJADE) {
188 mode = fastjet::HEPTopTagger::EARLY_MASSRATIO_SORT_MODDJADE;
189 }
else if (params.
mode == HTT::LATE_MASSRATIO_SORT_MODDJADE) {
190 mode = fastjet::HEPTopTagger::LATE_MASSRATIO_SORT_MODDJADE;
192 mode = fastjet::HEPTopTagger::TWO_STEP_FILTER;
194 _tagger.set_mode(mode);
195 _tagger.set_mt(params.top_mass);
196 _tagger.set_mw(params.
W_mass);
197 _tagger.set_top_mass_range(params.Mtop_min, params.Mtop_max);
198 _tagger.set_fw(params.fw);
199 _tagger.set_mass_ratio_range(params.mass_ratio_range_min, params.mass_ratio_range_max);
200 _tagger.set_mass_ratio_cut(params.m23cut, params.m13cutmin, params.m13cutmax);
203 _tagger.set_filtering_n(params.filt_N);
204 _tagger.set_filtering_R(params.filtering_R);
205 _tagger.set_filtering_minpt_subjet(params.filtering_minpt);
207 fastjet::JetAlgorithm algo = fastjet::antikt_algorithm;
210 _tagger.set_filtering_jetalgorithm(algo);
213 algo = fastjet::antikt_algorithm;
216 _tagger.set_reclustering_jetalgorithm(algo);
219 _tagger.set_mass_drop_threshold(params.mass_drop);
220 _tagger.set_mass_drop_threshold(params.mass_drop);
223 _tagger.set_pruning_rcut_factor(params.prune_rcut);
224 _tagger.set_pruning_zcut(params.prune_zcut);
240 const PseudoJet& HTT::topPjet()
const {
return _tagger.t(); }
241 const PseudoJet& HTT::bPjet()
const {
return _tagger.b(); }
242 const PseudoJet& HTT::wPjet()
const {
return _tagger.W(); }
243 const PseudoJet& HTT::w1Pjet()
const {
return _tagger.W1(); }
244 const PseudoJet& HTT::w2Pjet()
const {
return _tagger.W2(); }
250 rtn.emplace_back(_tagger.j1());
251 rtn.emplace_back(_tagger.j2());
252 rtn.emplace_back(_tagger.j3());
262 double HTT::unfilteredMass()
const {
return _tagger.unfiltered_mass(); }
Definition RivetHTT.hh:11
void calc(Jet &jet)
Run the top tagger on a given jet.
Definition RivetHTT.hh:228
bool passedMassCut2D() const
2D mass plane requirements passed?
Definition RivetHTT.hh:270
const PseudoJet & topJet() const
Top jet, as a pseudojet.
HTT(HTT::InputParameters ¶ms)
Constructor with arguments.
Definition RivetHTT.hh:101
const Jet bJet() const
The bottom jet inside the top.
Definition RivetHTT.hh:234
const PseudoJet & w1Jet() const
Leading subjet from W, as a pseudojet.
const Jet w2Jet() const
Second leading subjet from W.
Definition RivetHTT.hh:237
const Jet wJet() const
The W jet inside the top.
Definition RivetHTT.hh:235
Algo
Definition RivetHTT.hh:17
bool isTopTagged() const
Is the jet tagged?
Definition RivetHTT.hh:266
double deltaTopMass() const
Difference between the reco top mass and the true top mass.
Definition RivetHTT.hh:264
const PseudoJet & bJet() const
The bottom jet inside the top, as a pseudojet.
const Jet topJet() const
Top jet.
Definition RivetHTT.hh:233
bool passedMassCutTop() const
Was the top-mass window requirement passed?
Definition RivetHTT.hh:268
const Jets & subjets() const
pT-ordered subjets
Definition RivetHTT.hh:247
const PseudoJet & w2Jet() const
Second leading subjet from W, as a pseudojet.
HTT()
Constructor without arguments.
Definition RivetHTT.hh:98
const PseudoJet & wJet() const
The W jet inside the top, as a pseudojet.
Mode
HTT operating mode.
Definition RivetHTT.hh:21
const Jet w1Jet() const
Leading subjet from W.
Definition RivetHTT.hh:236
void setParams(HTT::InputParameters ¶ms)
Set the tagging parameters.
Definition RivetHTT.hh:172
double prunedMass() const
The pruned mass.
Definition RivetHTT.hh:260
Representation of a clustered jet of particles.
Definition Jet.hh:48
const fastjet::PseudoJet & pseudojet() const
Access the internal FastJet3 PseudoJet (as a const reference)
Definition Jet.hh:200
Specialised vector of Jet objects.
Definition Jet.hh:23
Definition MC_Cent_pPb.hh:10