1 #ifndef RecoJets_JetAlgorithms_interface_HEPTopTaggerV2_h 2 #define RecoJets_JetAlgorithms_interface_HEPTopTaggerV2_h 7 #include "fastjet/PseudoJet.hh" 8 #include "fastjet/ClusterSequence.hh" 9 #include "fastjet/tools/Pruner.hh" 10 #include "fastjet/tools/Filter.hh" 11 #include "fastjet/contrib/Njettiness.hh" 12 #include "fastjet/contrib/Nsubjettiness.hh" 14 #include "CLHEP/Random/RandomEngine.h" 44 double mtmass,
double mwmass);
66 void set_fw(
double fw) {_rmin = (1.-fw)*_mwmass/_mtmass; _rmax=(1.+fw)*_mwmass/_mtmass;}
68 void set_mass_ratio_cut(
double m23cut,
double m13cutmin,
double m13cutmax) {_m23cut = m23cut; _m13cutmin = m13cutmin; _m13cutmax = m13cutmax;}
75 void set_qjets(
double q_zcut,
double q_dcut_fctr,
double q_exp_min,
double q_exp_max,
double q_rigidity,
double q_truncation_fctr) {
76 _q_zcut = q_zcut; _q_dcut_fctr = q_dcut_fctr; _q_exp_min = q_exp_min; _q_exp_max = q_exp_max; _q_rigidity = q_rigidity; _q_truncation_fctr = q_truncation_fctr;
78 void set_qjets_rng(CLHEP::HepRandomEngine* engine){ _rnEngine = engine;}
84 bool is_tagged()
const {
return (_is_masscut_passed && _is_ptmincut_passed);}
87 double djsum()
const {
return _djsum;}
92 const PseudoJet &
t()
const {
return _top_candidate;}
93 const PseudoJet &
b()
const {
return _top_subjets[0];}
94 const PseudoJet &
W()
const {
return _W;}
95 const PseudoJet &
W1()
const {
return _top_subjets[1];}
96 const PseudoJet &
W2()
const {
return _top_subjets[2];}
97 const std::vector<PseudoJet> &
top_subjets()
const {
return _top_subjets;}
98 const PseudoJet &
j1()
const {
return _top_subs[0];}
99 const PseudoJet &
j2()
const {
return _top_subs[1];}
100 const PseudoJet &
j3()
const {
return _top_subs[2];}
101 const std::vector<PseudoJet> &
top_hadrons()
const {
return _top_hadrons;}
102 const std::vector<PseudoJet> &
hardparts()
const {
return _top_parts;}
105 void get_setting()
const;
108 double nsub(fastjet::PseudoJet
jet,
int order, fastjet::contrib::Njettiness::AxesMode axes = fastjet::contrib::Njettiness::kt_axes,
double beta = 1.,
double R0 = 1.);
137 double _q_zcut, _q_dcut_fctr, _q_exp_min, _q_exp_max, _q_rigidity, _q_truncation_fctr;
170 void FindHardSubst(
const PseudoJet& jet, std::vector<fastjet::PseudoJet>& t_parts);
171 std::vector<PseudoJet> Filtering(
const std::vector <PseudoJet> & top_constits,
const JetDefinition & filtering_def);
172 void store_topsubjets(
const std::vector<PseudoJet>& top_subs);
173 bool check_mass_criteria(
const std::vector<fastjet::PseudoJet> & top_subs)
const;
174 double perp(
const PseudoJet & vec,
const fastjet::PseudoJet & ref);
175 double djademod (
const fastjet::PseudoJet & subjet_i,
const fastjet::PseudoJet & subjet_j,
const fastjet::PseudoJet & ref);
189 double mtmass,
double mwmass
201 bool is_tagged()
const {
return _HEPTopTaggerV2_opt.is_tagged();}
203 double delta_top()
const {
return _HEPTopTaggerV2_opt.delta_top();}
204 double djsum()
const {
return _HEPTopTaggerV2_opt.djsum();}
205 double pruned_mass()
const {
return _HEPTopTaggerV2_opt.pruned_mass();}
208 double f_rec() {
return _HEPTopTaggerV2_opt.f_rec();}
209 const PseudoJet &
t()
const {
return _HEPTopTaggerV2_opt.t();}
210 const PseudoJet &
b()
const {
return _HEPTopTaggerV2_opt.b();}
211 const PseudoJet &
W()
const {
return _HEPTopTaggerV2_opt.W();}
212 const PseudoJet &
W1()
const {
return _HEPTopTaggerV2_opt.W1();}
213 const PseudoJet &
W2()
const {
return _HEPTopTaggerV2_opt.W2();}
214 const std::vector<PseudoJet> &
top_subjets()
const {
return _HEPTopTaggerV2_opt.top_subjets();}
215 const PseudoJet &
j1()
const {
return _HEPTopTaggerV2_opt.j1();}
216 const PseudoJet &
j2()
const {
return _HEPTopTaggerV2_opt.j2();}
217 const PseudoJet &
j3()
const {
return _HEPTopTaggerV2_opt.j3();}
218 const std::vector<PseudoJet> &
top_hadrons()
const {
return _HEPTopTaggerV2_opt.top_hadrons();}
219 const std::vector<PseudoJet> &
hardparts()
const {
return _HEPTopTaggerV2_opt.hardparts();}
221 const PseudoJet &
fat_Ropt() {
return _HEPTopTaggerV2_opt.fat_initial();}
225 double Ropt()
const {
return _Ropt/10.;}
230 double nsub_unfiltered(
int order, fastjet::contrib::Njettiness::AxesMode axes = fastjet::contrib::Njettiness::kt_axes,
double beta = 1.,
double R0 = 1.);
231 double nsub_filtered(
int order, fastjet::contrib::Njettiness::AxesMode axes = fastjet::contrib::Njettiness::kt_axes,
double beta = 1.,
double R0 = 1.);
233 void get_setting()
const {
return _HEPTopTaggerV2_opt.get_setting();};
234 void get_info()
const {
return _HEPTopTaggerV2_opt.get_info();};
255 void set_fw(
double fw) {_rmin = (1.-fw)*_mwmass/_mtmass; _rmax=(1.+fw)*_mwmass/_mtmass;}
257 void set_mass_ratio_cut(
double m23cut,
double m13cutmin,
double m13cutmax) {_m23cut = m23cut; _m13cutmin = m13cutmin; _m13cutmax = m13cutmax;}
285 void set_qjets(
double q_zcut,
double q_dcut_fctr,
double q_exp_min,
double q_exp_max,
double q_rigidity,
double q_truncation_fctr) {
286 _q_zcut = q_zcut; _q_dcut_fctr = q_dcut_fctr; _q_exp_min = q_exp_min; _q_exp_max = q_exp_max; _q_rigidity = q_rigidity; _q_truncation_fctr = q_truncation_fctr;
317 double _max_fatjet_R, _min_fatjet_R,
_step_R, _optimalR_threshold;
320 double (*_r_min_exp_function)(double);
322 double _optimalR_mmin, _optimalR_mmax, _optimalR_fw, _R_opt_calc, _pt_for_R_opt_calc,
_R_opt_diff;
326 double _q_zcut, _q_dcut_fctr, _q_exp_min, _q_exp_max, _q_rigidity, _q_truncation_fctr;
341 void UnclusterFatjets(
const vector<fastjet::PseudoJet> & big_fatjets, vector<fastjet::PseudoJet> & small_fatjets,
const ClusterSequence &
cs,
const double small_radius);
348 #endif // __HEPTOPTAGGERV2_HH__
const PseudoJet & W1() const
void set_top_mass_range(double xmin, double xmax)
void do_qjets(bool qjets)
const PseudoJet & j3() const
void set_pruning_rcut_factor(double rcut_factor)
std::vector< PseudoJet > _top_subs
const PseudoJet & j3() const
void set_top_mass_range(double xmin, double xmax)
void set_debug(bool debug)
const PseudoJet & b() const
void set_filtering_n(unsigned nfilt)
static void get_info(const dqmstorepb::ROOTFilePB::Histo &h, std::string &dirname, std::string &objname, TObject **obj)
void set_optimalR_type_max_diff(double x)
std::vector< PseudoJet > _top_subjets
const PseudoJet & j2() const
void set_optimalR_reject_minimum(bool x)
bool is_maybe_top() const
bool is_masscut_passed() const
fastjet::JetAlgorithm _jet_algorithm_filter
unique_ptr< ClusterSequence > cs
void set_mass_ratio_range(double rmin, double rmax)
const PseudoJet & t() const
void set_qjets_rng(CLHEP::HepRandomEngine *engine)
void set_filtering_minpt_subjet(double x)
const PseudoJet & W() const
fastjet::JetAlgorithm JetAlgorithm
bool is_maybe_top() const
void set_top_minpt(double x)
void set_filtering_jetalgorithm(JetAlgorithm jet_algorithm)
void set_filtering_optimalR_pass_R(double x)
void set_filtering_optimalR_calc_n(unsigned x)
void set_mass_ratio_range(double rmin, double rmax)
const std::vector< PseudoJet > & hardparts() const
void set_mode(enum Mode mode)
const std::vector< PseudoJet > & top_subjets() const
void set_optimalR_threshold(double x)
double _R_filt_optimalR_calc
bool is_minptcut_passed() const
CLHEP::HepRandomEngine * _rnEngine
std::vector< PseudoJet > _top_hadrons
void set_pruning_rcut_factor(double rcut_factor)
const PseudoJet & b() const
void do_optimalR(bool optimalR)
const PseudoJet & j1() const
void set_filtering_optimalR_fail_n(unsigned x)
void set_filtering_optimalR_calc_R(double x)
const std::vector< PseudoJet > & top_hadrons() const
HEPTopTaggerV2_fixed_R HEPTopTaggerV2agger(int i)
void set_optimalR_type_top_mass_range(double x, double y)
bool is_minptcut_passed() const
void set_filtering_optimalR_fail_R(double x)
void set_top_minpt(double x)
void set_optimalR_type_fw(double x)
const PseudoJet & W2() const
double pt_for_Ropt_calc() const
void set_filtering_minpt_subjet(double x)
void set_pruning_zcut(double zcut)
void set_qjets(double q_zcut, double q_dcut_fctr, double q_exp_min, double q_exp_max, double q_rigidity, double q_truncation_fctr)
double unfiltered_mass() const
map< int, int > _n_small_fatjets
void set_mass_drop_threshold(double x)
void set_filtering_R(double Rfilt)
double _mass_drop_threshold
double _R_filt_optimalR_pass
void set_pruning_zcut(double zcut)
const PseudoJet & fat_Ropt()
double _mass_drop_threshold
fastjet::PseudoJet PseudoJet
void set_filtering_n(unsigned nfilt)
void set_debug(bool debug)
void set_mode(enum Mode mode)
void set_max_subjet_mass(double x)
const std::vector< PseudoJet > & top_hadrons() const
double unfiltered_mass() const
const std::vector< PseudoJet > & top_subjets() const
void set_mass_ratio_cut(double m23cut, double m13cutmin, double m13cutmax)
void set_mass_drop_threshold(double x)
void set_max_subjet_mass(double x)
void set_filtering_optimalR_pass_n(unsigned x)
fastjet::ClusterSequence ClusterSequence
void set_filtering_jetalgorithm(JetAlgorithm jet_algorithm)
map< int, HEPTopTaggerV2_fixed_R > _HEPTopTaggerV2
const PseudoJet & W() const
fastjet::JetAlgorithm _jet_algorithm_recluster
std::vector< PseudoJet > _top_parts
void set_qjets_rng(CLHEP::HepRandomEngine *engine)
void set_optimalR_step(double x)
JetAlgorithm _jet_algorithm_filter
fastjet::JetDefinition JetDefinition
const std::vector< PseudoJet > & hardparts() const
double pruned_mass() const
T perp() const
Magnitude of transverse component.
bool is_masscut_passed() const
void do_qjets(bool qjets)
void set_qjets(double q_zcut, double q_dcut_fctr, double q_exp_min, double q_exp_max, double q_rigidity, double q_truncation_fctr)
const PseudoJet & t() const
const PseudoJet & fat_initial()
const PseudoJet & W1() const
JetAlgorithm _jet_algorithm_recluster
double pruned_mass() const
void set_mass_ratio_cut(double m23cut, double m13cutmin, double m13cutmax)
const PseudoJet & j1() const
const PseudoJet & fat_initial()
void set_optimalR_min(double x)
const PseudoJet & W2() const
const PseudoJet & j2() const
void set_reclustering_jetalgorithm(JetAlgorithm jet_algorithm)
void set_optimalR_max(double x)
HEPTopTaggerV2_fixed_R _HEPTopTaggerV2_opt
void set_filtering_R(double Rfilt)
CLHEP::HepRandomEngine * _rnEngine
void set_optimalR_calc_fun(double(*f)(double))
void set_reclustering_jetalgorithm(JetAlgorithm jet_algorithm)