runs the tagger on the given jet and returns the tagged PseudoJet if successful, or a PseudoJet==0 otherwise (standard access is through operator()).
70 if (!
jet.has_valid_cluster_sequence()){
71 throw Error(
"HEPTopTagger can only be applied on jets having an associated (and valid) ClusterSequence");
80 double mw_over_mt = 80.4/172.3;
86 tagger.set_mass_drop_threshold(
muCut_);
87 tagger.set_filtering_R(
filtR_);
88 tagger.set_filtering_n(
filtN_);
102 tagger.set_mass_ratio_range(ratio_min, ratio_max);
109 double qepsilon = -1;
116 double q_dcut_fctr(0.5);
117 double q_exp_min(0.);
118 double q_exp_max(0.);
119 double q_rigidity(0.1);
120 double q_truncation_fctr(0.0);
122 double weight_q1 = -1.;
127 tagger.set_qjets(q_zcut,
134 tagger.do_qjets(
true);
137 for (
int iq = 0; iq < niter; iq++) {
139 if (tagger.is_tagged()) {
141 m_sum += tagger.t().m();
142 m2_sum += tagger.t().m() * tagger.t().m();
143 if (tagger.q_weight() > weight_q1) {
144 best_tagger = tagger;
150 tagger = best_tagger;
156 double mean_m = m_sum / qtags;
157 double mean_m2 = m2_sum / qtags;
158 qsigmaM =
sqrt(mean_m2 - mean_m*mean_m);
170 if (!tagger.is_tagged())
174 const JetDefinition::Recombiner *rec
175 =
jet.associated_cluster_sequence()->jet_def().recombiner();
177 const vector<PseudoJet>& subjets = tagger.top_subjets();
178 assert(subjets.size() == 3);
180 PseudoJet non_W = subjets[0];
181 PseudoJet W1 = subjets[1];
182 PseudoJet W2 = subjets[2];
183 PseudoJet W =
join(subjets[1], subjets[2], *rec);
185 PseudoJet
result = join<HEPTopTaggerV2Structure>( W1, W2, non_W, *rec);
188 s->_fj_mass =
jet.m();
189 s->_fj_pt =
jet.perp();
190 s->_fj_eta =
jet.eta();
191 s->_fj_phi =
jet.phi();
193 s->_top_mass = tagger.t().m();
194 s->_pruned_mass = tagger.pruned_mass();
195 s->_unfiltered_mass = tagger.unfiltered_mass();
196 s->_fRec = tagger.f_rec();
197 s->_mass_ratio_passed = tagger.is_masscut_passed();
200 s->_tau1Unfiltered = tagger.nsub_unfiltered(1);
201 s->_tau2Unfiltered = tagger.nsub_unfiltered(2);
202 s->_tau3Unfiltered = tagger.nsub_unfiltered(3);
203 s->_tau1Filtered = tagger.nsub_filtered(1);
204 s->_tau2Filtered = tagger.nsub_filtered(2);
205 s->_tau3Filtered = tagger.nsub_filtered(3);
208 s->_qweight = qweight;
209 s->_qepsilon = qepsilon;
210 s->_qsigmaM = qsigmaM;
214 s->_ropt = tagger.Ropt();
215 s->_roptCalc = tagger.Ropt_calc();
216 s->_ptForRoptCalc = tagger.pt_for_Ropt_calc();
221 s->_ptForRoptCalc = -1;
CLHEP::HepRandomEngine * engine_
edm::ErrorSummaryEntry Error
PseudoJet result(const PseudoJet &jet) const override
void set_max_subjet_mass(double x)
static std::string join(char **cmd)
FASTJET_BEGIN_NAMESPACE double R_min_expected_function(double x)