TopTagger2.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include "hep/TopTaggerFixedR.hh"
4 
5 namespace hep
6 {
7 
8 class TopTagger2
9 {
10 
11 public:
12 
13  TopTagger2();
14 
15  TopTagger2(fastjet::PseudoJet const& jet);
16 
17  TopTagger2(fastjet::PseudoJet const& jet, double mtmass, double mwmass);
18 
19  //run tagger
20  void run();
21 
22  //get information
23  bool is_maybe_top() const;
24  bool is_masscut_passed() const;
25  bool is_minptcut_passed() const;
26  bool is_tagged() const;
27 
28  double delta_top() const;
29  double djsum() const;
30  double pruned_mass() const;
31  double unfiltered_mass() const;
32 
33  double f_rec();
34  fastjet::PseudoJet const& t() const;
35  fastjet::PseudoJet const& b() const;
36  fastjet::PseudoJet const& W() const;
37  fastjet::PseudoJet const& W1() const;
38  fastjet::PseudoJet const& W2() const;
39  std::vector<fastjet::PseudoJet> const& top_subjets() const;
40  fastjet::PseudoJet const& j1() const;
41  fastjet::PseudoJet const& j2() const;
42  fastjet::PseudoJet const& j3() const;
43  std::vector<fastjet::PseudoJet> const& top_hadrons() const;
44  std::vector<fastjet::PseudoJet> const& hardparts() const;
45  fastjet::PseudoJet const& fat_initial();
46  fastjet::PseudoJet const& fat_Ropt();
48 
49  double Ropt() const;
50  double Ropt_calc() const;
51 
52  int optimalR_type();
53  double nsub_unfiltered(int order, fastjet::contrib::Njettiness::AxesMode axes = fastjet::contrib::Njettiness::kt_axes, double beta = 1., double R0 = 1.);
54  double nsub_filtered(int order, fastjet::contrib::Njettiness::AxesMode axes = fastjet::contrib::Njettiness::kt_axes, double beta = 1., double R0 = 1.);
55 
56  void get_setting() const;
57  void get_info() const;
58 
59  double q_weight();
60 
61  //settings
62  void do_optimalR(bool optimalR);
63 
64  void set_mass_drop_threshold(double x);
65  void set_max_subjet_mass(double x);
66 
67  void set_filtering_n(unsigned nfilt);
68  void set_filtering_R(double Rfilt);
69  void set_filtering_minpt_subjet(double x);
70  void set_filtering_jetalgorithm(fastjet::JetAlgorithm jet_algorithm);
71 
72  void set_reclustering_jetalgorithm(fastjet::JetAlgorithm jet_algorithm);
73 
74  void set_mode(enum Mode mode);
75  void set_mt(double x);
76  void set_mw(double x);
77  void set_top_mass_range(double xmin, double xmax);
78  void set_fw(double fw);
79  void set_mass_ratio_range(double rmin, double rmax);
80  void set_mass_ratio_cut(double m23cut, double m13cutmin, double m13cutmax);
81  void set_top_minpt(double x);
82 
83  void set_optimalR_max(double x);
84  void set_optimalR_min(double x);
85  void set_optimalR_step(double x);
86  void set_optimalR_threshold(double x);
87 
88  void set_filtering_optimalR_calc_R(double x);
89  void set_filtering_optimalR_calc_n(unsigned x);
90  void set_optimalR_calc_fun(double(*f)(double));
91 
92  void set_optimalR_type_top_mass_range(double x, double y);
93  void set_optimalR_type_fw(double x);
94  void set_optimalR_type_max_diff(double x);
95 
96  void set_filtering_optimalR_pass_R(double x);
97  void set_filtering_optimalR_pass_n(unsigned x);
98  void set_filtering_optimalR_fail_R(double x);
99  void set_filtering_optimalR_fail_n(unsigned x);
100 
101  void set_pruning_zcut(double zcut);
102  void set_pruning_rcut_factor(double rcut_factor);
103 
104  void set_debug(bool debug);
105  void do_qjets(bool qjets);
106  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);
107 
108 
109 private:
110  bool _do_optimalR, _do_qjets;
111 
112  fastjet::PseudoJet _jet;
113  fastjet::PseudoJet _initial_jet;
114 
115  double _mass_drop_threshold;
116  double _max_subjet_mass;
117 
118  Mode _mode;
119  double _mtmass, _mwmass;
120  double _mtmin, _mtmax;
121  double _rmin, _rmax;
122  double _m23cut, _m13cutmin, _m13cutmax;
123  double _minpt_tag;
124 
125  unsigned _nfilt;
126  double _Rfilt;
127  fastjet::JetAlgorithm _jet_algorithm_filter;
128  double _minpt_subjet;
129 
130  fastjet::JetAlgorithm _jet_algorithm_recluster;
131 
132  double _zcut;
133  double _rcut_factor;
134 
135  double _max_fatjet_R, _min_fatjet_R, _step_R, _optimalR_threshold;
136 
137  double _R_filt_optimalR_calc, _N_filt_optimalR_calc;
138  double(*_r_min_exp_function)(double);
139 
140  double _optimalR_mmin, _optimalR_mmax, _optimalR_fw, _R_opt_calc, _R_opt_diff;
141  double _R_filt_optimalR_pass, _N_filt_optimalR_pass, _R_filt_optimalR_fail, _N_filt_optimalR_fail;
142 
143  double _q_zcut, _q_dcut_fctr, _q_exp_min, _q_exp_max, _q_rigidity, _q_truncation_fctr;
144  fastjet::JetDefinition _qjet_def;
145 
146  fastjet::PseudoJet _fat, _filt_fat;
147  std::map<int, int> _n_small_fatjets;
148  std::map<int, TopTaggerFixedR> _TopTagger2;
149  TopTaggerFixedR _TopTagger2_opt;
150 
151  int _Ropt;
152 
153  bool _debug;
154  double _qweight;
155 
156  void UnclusterFatjets(std::vector<fastjet::PseudoJet> const& big_fatjets, std::vector<fastjet::PseudoJet>& small_fatjets, fastjet::ClusterSequence const& cs, const double small_radius);
157 
158 };
159 
160 }
161 
162 // int main(int argc, char* argv[])
163 // {
164 // std::vector<fastjet::PseudoJet> hadrons;
165 //
166 // // jet definition
167 // double conesize = 1.5;
168 // fastjet::JetDefinition jet_def(fastjet::cambridge_algorithm, conesize);
169 //
170 // // Read input and convert MeV->GeV
171 // std::ifstream fin("input.dat", std::ifstream::in);
172 // std::vector<fastjet::PseudoJet> input_clusters(0);
173 // while (!fin.eof()) {
174 // double x, y, z, e;
175 // fastjet::PseudoJet p;
176 // fin >> x >> y >> z >> e;
177 // if (!fin.eof()) {
178 // p.reset(x / 1000., y / 1000., z / 1000., e / 1000.);
179 // input_clusters.push_back(p);
180 // }
181 // }
182 // std::cout << "ReadEvent: " << input_clusters.size() << " particles are read" << '\n';
183 //
184 // // run the jet finding; find the hardest jet
185 // fastjet::ClusterSequence clust_seq(input_clusters, jet_def);
186 // double ptmin_jet = 200.;
187 // std::vector<fastjet::PseudoJet> jets = fastjet::sorted_by_pt(clust_seq.inclusive_jets(ptmin_jet));
188 //
189 //
190 // for (unsigned ijet = 0; ijet < jets.size(); ijet++) {
191 // hep::TopTagger2 tagger(jets[ijet]);
192 //
193 // // Unclustering, Filtering & Subjet Settings
194 // tagger.set_max_subjet_mass(30.);
195 // tagger.set_mass_drop_threshold(0.8);
196 // tagger.set_filtering_R(0.3);
197 // tagger.set_filtering_n(5);
198 // tagger.set_filtering_minpt_subjet(30.);
199 //
200 // // How to select among candidates
201 // tagger.set_mode(hep::TWO_STEP_FILTER);
202 //
203 // // Requirements to accept a candidate
204 // tagger.set_top_minpt(200);
205 // tagger.set_top_mass_range(150., 200.);
206 // tagger.set_fw(0.15);
207 //
208 // // Run the tagger
209 // tagger.run();
210 //
211 // // Look at output if we have a tag:
212 // if (tagger.is_tagged()) {
213 // std::cout << "Input fatjet: " << ijet << " pT = " << jets[ijet].perp() << '\n';
214 // std::cout << "Output: pT = " << tagger.t().perp() << " Mass = " << tagger.t().m() << " f_rec = " << tagger.f_rec() << '\n';
215 // }
216 // }
217 // }
218 
void set_pruning_zcut(double zcut)
Definition: TopTagger2.cpp:590
double delta_top() const
Definition: TopTagger2.cpp:368
void set_max_subjet_mass(double x)
Definition: TopTagger2.cpp:472
fastjet::PseudoJet const & fat_Ropt()
Definition: TopTagger2.cpp:436
void set_top_mass_range(double xmin, double xmax)
Definition: TopTagger2.cpp:508
bool is_tagged() const
Definition: TopTagger2.cpp:364
fastjet::PseudoJet const & fat_initial()
Definition: TopTagger2.cpp:432
void set_mode(enum Mode mode)
Definition: TopTagger2.cpp:496
void set_optimalR_calc_fun(double(*f)(double))
Definition: TopTagger2.cpp:557
double nsub_filtered(int order, fastjet::contrib::Njettiness::AxesMode axes=fastjet::contrib::Njettiness::kt_axes, double beta=1., double R0=1.)
Definition: TopTagger2.cpp:346
fastjet::PseudoJet const & j2() const
Definition: TopTagger2.cpp:416
bool is_maybe_top() const
Definition: TopTagger2.cpp:352
void set_top_minpt(double x)
Definition: TopTagger2.cpp:529
bool is_masscut_passed() const
Definition: TopTagger2.cpp:356
void set_filtering_optimalR_fail_n(unsigned x)
Definition: TopTagger2.cpp:586
Definition: TopTaggerFixedR.hh:16
void do_qjets(bool qjets)
Definition: TopTagger2.cpp:602
double f_rec()
Definition: TopTagger2.cpp:384
void set_mw(double x)
Definition: TopTagger2.cpp:504
void set_filtering_minpt_subjet(double x)
Definition: TopTagger2.cpp:484
void set_optimalR_type_fw(double x)
Definition: TopTagger2.cpp:566
void set_filtering_optimalR_calc_n(unsigned x)
Definition: TopTagger2.cpp:553
double djsum() const
Definition: TopTagger2.cpp:372
fastjet::PseudoJet const & W() const
Definition: TopTagger2.cpp:396
HEP Top Tagger is a top tagger for Standard Model processes or new physics searches at intermediate t...
Definition: FWM.hh:5
void set_pruning_rcut_factor(double rcut_factor)
Definition: TopTagger2.cpp:594
void set_filtering_R(double Rfilt)
Definition: TopTagger2.cpp:480
void do_optimalR(bool optimalR)
Definition: TopTagger2.cpp:464
double pruned_mass() const
Definition: TopTagger2.cpp:376
void set_debug(bool debug)
Definition: TopTagger2.cpp:598
Definition: TopTagger2.hh:8
fastjet::PseudoJet const & j1() const
Definition: TopTagger2.cpp:412
void set_filtering_optimalR_calc_R(double x)
Definition: TopTagger2.cpp:549
TopTaggerFixedR TopTagger2agger(int i)
Definition: TopTagger2.cpp:440
fastjet::PseudoJet const & j3() const
Definition: TopTagger2.cpp:420
void set_optimalR_type_max_diff(double x)
Definition: TopTagger2.cpp:570
void set_filtering_optimalR_pass_n(unsigned x)
Definition: TopTagger2.cpp:578
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)
Definition: TopTagger2.cpp:606
void set_mass_ratio_range(double rmin, double rmax)
Definition: TopTagger2.cpp:518
void set_mass_ratio_cut(double m23cut, double m13cutmin, double m13cutmax)
Definition: TopTagger2.cpp:523
std::vector< fastjet::PseudoJet > const & top_subjets() const
Definition: TopTagger2.cpp:408
double unfiltered_mass() const
Definition: TopTagger2.cpp:380
void set_filtering_optimalR_fail_R(double x)
Definition: TopTagger2.cpp:582
TopTagger2()
Definition: TopTagger2.cpp:47
void set_filtering_n(unsigned nfilt)
Definition: TopTagger2.cpp:476
fastjet::PseudoJet const & W1() const
Definition: TopTagger2.cpp:400
int optimalR_type()
Definition: TopTagger2.cpp:326
std::vector< fastjet::PseudoJet > const & top_hadrons() const
Definition: TopTagger2.cpp:424
void set_optimalR_type_top_mass_range(double x, double y)
Definition: TopTagger2.cpp:561
void set_fw(double fw)
Definition: TopTagger2.cpp:513
void set_optimalR_max(double x)
Definition: TopTagger2.cpp:533
double q_weight()
Definition: TopTagger2.cpp:460
void set_optimalR_min(double x)
Definition: TopTagger2.cpp:537
void get_setting() const
Definition: TopTagger2.cpp:452
fastjet::PseudoJet const & b() const
Definition: TopTagger2.cpp:392
fastjet::PseudoJet const & t() const
Definition: TopTagger2.cpp:388
double nsub_unfiltered(int order, fastjet::contrib::Njettiness::AxesMode axes=fastjet::contrib::Njettiness::kt_axes, double beta=1., double R0=1.)
Definition: TopTagger2.cpp:340
void set_mt(double x)
Definition: TopTagger2.cpp:500
void set_optimalR_step(double x)
Definition: TopTagger2.cpp:541
fastjet::PseudoJet const & W2() const
Definition: TopTagger2.cpp:404
void set_optimalR_threshold(double x)
Definition: TopTagger2.cpp:545
double Ropt() const
Definition: TopTagger2.cpp:444
void set_mass_drop_threshold(double x)
Definition: TopTagger2.cpp:468
Mode
Definition: TopTaggerFixedR.hh:8
void set_reclustering_jetalgorithm(fastjet::JetAlgorithm jet_algorithm)
Definition: TopTagger2.cpp:492
double Ropt_calc() const
Definition: TopTagger2.cpp:448
std::vector< fastjet::PseudoJet > const & hardparts() const
Definition: TopTagger2.cpp:428
void run()
Definition: TopTagger2.cpp:194
void get_info() const
Definition: TopTagger2.cpp:456
void set_filtering_jetalgorithm(fastjet::JetAlgorithm jet_algorithm)
Definition: TopTagger2.cpp:488
bool is_minptcut_passed() const
Definition: TopTagger2.cpp:360
void set_filtering_optimalR_pass_R(double x)
Definition: TopTagger2.cpp:574
Qjets: A Non-Deterministic Approach to Tree-Based Jet Substructure
Definition: QJets.hh:17