CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Attributes
HEPTopTaggerV2 Class Reference

#include <HEPTopTaggerWrapperV2.h>

Inheritance diagram for HEPTopTaggerV2:

Public Types

typedef HEPTopTaggerV2Structure StructureType
 

Public Member Functions

std::string description () const override
 returns a textual description of the tagger More...
 
 HEPTopTaggerV2 (bool DoOptimalR, bool DoQjets, double minSubjetPt, double minCandPt, double subjetMass, double muCut, double filtR, int filtN, int mode, double minCandMass, double maxCandMass, double massRatioWidth, double minM23Cut, double minM13Cut, double maxM13Cut, bool optRrejectMin)
 
PseudoJet result (const PseudoJet &jet) const override
 
void set_rng (CLHEP::HepRandomEngine *engine)
 

Private Attributes

bool DoOptimalR_
 
bool DoQjets_
 
CLHEP::HepRandomEngine * engine_
 
int filtN_
 
double filtR_
 
double massRatioWidth_
 
double maxCandMass_
 
double maxM13Cut_
 
double minCandMass_
 
double minCandPt_
 
double minM13Cut_
 
double minM23Cut_
 
double minSubjetPt_
 
int mode_
 
double muCut_
 
bool optRrejectMin_
 
double subjetMass_
 

Detailed Description

Definition at line 49 of file HEPTopTaggerWrapperV2.h.

Member Typedef Documentation

Definition at line 97 of file HEPTopTaggerWrapperV2.h.

Constructor & Destructor Documentation

HEPTopTaggerV2::HEPTopTaggerV2 ( bool  DoOptimalR,
bool  DoQjets,
double  minSubjetPt,
double  minCandPt,
double  subjetMass,
double  muCut,
double  filtR,
int  filtN,
int  mode,
double  minCandMass,
double  maxCandMass,
double  massRatioWidth,
double  minM23Cut,
double  minM13Cut,
double  maxM13Cut,
bool  optRrejectMin 
)
inline

Definition at line 51 of file HEPTopTaggerWrapperV2.h.

References description(), metsig::jet, result(), and AlCaHLTBitMon_QueryRunRegistry::string.

66  : DoOptimalR_(DoOptimalR),
67  DoQjets_(DoQjets),
71  muCut_(muCut),
72  filtR_(filtR),
73  filtN_(filtN),
74  mode_(mode),
81  optRrejectMin_(optRrejectMin),
82  engine_(nullptr)
83  {}
CLHEP::HepRandomEngine * engine_

Member Function Documentation

std::string HEPTopTaggerV2::description ( ) const
inlineoverride

returns a textual description of the tagger

Definition at line 277 of file HEPTopTaggerWrapperV2.h.

References filtN_, filtR_, massRatioWidth_, maxCandMass_, maxM13Cut_, minCandMass_, minCandPt_, minM13Cut_, minM23Cut_, minSubjetPt_, mode_, muCut_, and subjetMass_.

Referenced by HEPTopTaggerV2().

277  {
278 
279  std::ostringstream oss;
280  oss << "HEPTopTaggerV2 with: "
281  << "minSubjetPt = " << minSubjetPt_
282  << "minCandPt = " << minCandPt_
283  << "subjetMass = " << subjetMass_
284  << "muCut = " << muCut_
285  << "filtR = " << filtR_
286  << "filtN = " << filtN_
287  << "mode = " << mode_
288  << "minCandMass = " << minCandMass_
289  << "maxCandMass = " << maxCandMass_
290  << "massRatioWidth = " << massRatioWidth_
291  << "minM23Cut = " << minM23Cut_
292  << "minM13Cut = " << minM13Cut_
293  << "maxM13Cut = " << maxM13Cut_ << std::endl;
294  return oss.str();
295 }
PseudoJet HEPTopTaggerV2::result ( const PseudoJet &  jet) const
override

runs the tagger on the given jet and returns the tagged PseudoJet if successful, or a PseudoJet==0 otherwise (standard access is through operator()).

Parameters
jetthe PseudoJet to tag

Definition at line 65 of file HEPTopTaggerWrapperV2.cc.

References external::HEPTopTaggerV2::do_optimalR(), external::HEPTopTaggerV2::do_qjets(), external::HEPTopTaggerV2::f_rec(), objects.autophobj::float, external::HEPTopTaggerV2::is_masscut_passed(), external::HEPTopTaggerV2::is_tagged(), join(), external::HEPTopTaggerV2::nsub_filtered(), external::HEPTopTaggerV2::nsub_unfiltered(), external::HEPTopTaggerV2::pruned_mass(), external::HEPTopTaggerV2::pt_for_Ropt_calc(), external::HEPTopTaggerV2::q_weight(), R_min_expected_function(), mps_fire::result, external::HEPTopTaggerV2::Ropt(), external::HEPTopTaggerV2::Ropt_calc(), external::HEPTopTaggerV2::run(), alignCSCRings::s, external::HEPTopTaggerV2::set_filtering_minpt_subjet(), external::HEPTopTaggerV2::set_filtering_n(), external::HEPTopTaggerV2::set_filtering_R(), external::HEPTopTaggerV2::set_mass_drop_threshold(), external::HEPTopTaggerV2::set_mass_ratio_cut(), external::HEPTopTaggerV2::set_mass_ratio_range(), external::HEPTopTaggerV2::set_max_subjet_mass(), external::HEPTopTaggerV2::set_mode(), external::HEPTopTaggerV2::set_optimalR_calc_fun(), external::HEPTopTaggerV2::set_optimalR_reject_minimum(), external::HEPTopTaggerV2::set_qjets(), external::HEPTopTaggerV2::set_qjets_rng(), external::HEPTopTaggerV2::set_top_mass_range(), external::HEPTopTaggerV2::set_top_minpt(), mathSSE::sqrt(), external::HEPTopTaggerV2::t(), external::HEPTopTaggerV2::top_subjets(), and external::HEPTopTaggerV2::unfiltered_mass().

Referenced by HEPTopTaggerV2().

65  {
66 
67  // make sure that there is a "regular" cluster sequence associated
68  // with the jet. Note that we also check it is valid (to avoid a
69  // more criptic error later on)
70  if (!jet.has_valid_cluster_sequence()){
71  throw Error("HEPTopTagger can only be applied on jets having an associated (and valid) ClusterSequence");
72  }
73 
75 
76  external::HEPTopTaggerV2 best_tagger;
77 
78  // translate the massRatioWidth (which should be the half-width given in %)
79  // to values useful for the A-shape cuts
80  double mw_over_mt = 80.4/172.3;
81  double ratio_min = mw_over_mt * (100.-massRatioWidth_)/100.;
82  double ratio_max = mw_over_mt * (100.+massRatioWidth_)/100.;
83 
84  // Unclustering, Filtering & Subjet Settings
86  tagger.set_mass_drop_threshold(muCut_);
87  tagger.set_filtering_R(filtR_);
88  tagger.set_filtering_n(filtN_);
89  tagger.set_filtering_minpt_subjet(minSubjetPt_);
90 
91  // Optimal R
92  tagger.do_optimalR(DoOptimalR_);
93  tagger.set_optimalR_reject_minimum(optRrejectMin_);
94 
95  // How to select among candidates
96  tagger.set_mode((external::Mode)mode_);
97 
98  // Requirements to accept a candidate
99  tagger.set_top_minpt(minCandPt_);
100  tagger.set_top_mass_range(minCandMass_, maxCandMass_);
101  tagger.set_mass_ratio_cut(minM23Cut_, minM13Cut_, maxM13Cut_);
102  tagger.set_mass_ratio_range(ratio_min, ratio_max);
103 
104  // Set function to calculate R_min_expected
105  tagger.set_optimalR_calc_fun(R_min_expected_function);
106 
107 
108  double qweight = -1;
109  double qepsilon = -1;
110  double qsigmaM = -1;
111 
112  if (DoQjets_){
113 
114  int niter(100);
115  double q_zcut(0.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);
121 
122  double weight_q1 = -1.;
123  double m_sum = 0.;
124  double m2_sum = 0.;
125  int qtags = 0;
126 
127  tagger.set_qjets(q_zcut,
128  q_dcut_fctr,
129  q_exp_min,
130  q_exp_max,
131  q_rigidity,
132  q_truncation_fctr);
133  tagger.set_qjets_rng(engine_);
134  tagger.do_qjets(true);
135  tagger.run();
136 
137  for (int iq = 0; iq < niter; iq++) {
138  tagger.run();
139  if (tagger.is_tagged()) {
140  qtags++;
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;
145  weight_q1=tagger.q_weight();
146  }
147  }
148  }
149 
150  tagger = best_tagger;
151  qweight = weight_q1;
152  qepsilon = float(qtags)/float(niter);
153 
154  // calculate width of tagged mass distribution if we have at least one candidate
155  if (qtags > 0){
156  double mean_m = m_sum / qtags;
157  double mean_m2 = m2_sum / qtags;
158  qsigmaM = sqrt(mean_m2 - mean_m*mean_m);
159  }
160  }
161  else{
162  tagger.run();
163  }
164 
165  // Requires:
166  // - top mass window
167  // - mass ratio cuts
168  // - minimal candidate pT
169  // If this is not intended: use loose top mass and ratio windows
170  if (!tagger.is_tagged())
171  return PseudoJet();
172 
173  // create the result and its structure
174  const JetDefinition::Recombiner *rec
175  = jet.associated_cluster_sequence()->jet_def().recombiner();
176 
177  const vector<PseudoJet>& subjets = tagger.top_subjets();
178  assert(subjets.size() == 3);
179 
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);
184 
185  PseudoJet result = join<HEPTopTaggerV2Structure>( W1, W2, non_W, *rec);
186  HEPTopTaggerV2Structure *s = (HEPTopTaggerV2Structure*) result.structure_non_const_ptr();
187 
188  s->_fj_mass = jet.m();
189  s->_fj_pt = jet.perp();
190  s->_fj_eta = jet.eta();
191  s->_fj_phi = jet.phi();
192 
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();
198 
199  if (DoOptimalR_){
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);
206  }
207 
208  s->_qweight = qweight;
209  s->_qepsilon = qepsilon;
210  s->_qsigmaM = qsigmaM;
211 
212 
213  if (DoOptimalR_){
214  s->_ropt = tagger.Ropt();
215  s->_roptCalc = tagger.Ropt_calc();
216  s->_ptForRoptCalc = tagger.pt_for_Ropt_calc();
217  }
218  else {
219  s->_ropt = -1;
220  s->_roptCalc = -1;
221  s->_ptForRoptCalc = -1;
222  }
223 
224  // Removed selectors as all cuts are applied in HTT
225 
226  return result;
227 }
CLHEP::HepRandomEngine * engine_
edm::ErrorSummaryEntry Error
T sqrt(T t)
Definition: SSEVec.h:18
PseudoJet result(const PseudoJet &jet) const override
void set_max_subjet_mass(double x)
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
FASTJET_BEGIN_NAMESPACE double R_min_expected_function(double x)
void HEPTopTaggerV2::set_rng ( CLHEP::HepRandomEngine *  engine)
inline

Definition at line 94 of file HEPTopTaggerWrapperV2.h.

References engine_.

94 { engine_ = engine;}
CLHEP::HepRandomEngine * engine_

Member Data Documentation

bool HEPTopTaggerV2::DoOptimalR_
private

Definition at line 100 of file HEPTopTaggerWrapperV2.h.

bool HEPTopTaggerV2::DoQjets_
private

Definition at line 101 of file HEPTopTaggerWrapperV2.h.

CLHEP::HepRandomEngine* HEPTopTaggerV2::engine_
private

Definition at line 134 of file HEPTopTaggerWrapperV2.h.

Referenced by set_rng().

int HEPTopTaggerV2::filtN_
private

Definition at line 110 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::filtR_
private

Definition at line 109 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::massRatioWidth_
private

Definition at line 125 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::maxCandMass_
private

Definition at line 123 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::maxM13Cut_
private

Definition at line 128 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::minCandMass_
private

Definition at line 122 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::minCandPt_
private

Definition at line 104 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::minM13Cut_
private

Definition at line 127 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::minM23Cut_
private

Definition at line 126 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::minSubjetPt_
private

Definition at line 103 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

int HEPTopTaggerV2::mode_
private

Definition at line 119 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

double HEPTopTaggerV2::muCut_
private

Definition at line 107 of file HEPTopTaggerWrapperV2.h.

Referenced by description().

bool HEPTopTaggerV2::optRrejectMin_
private

Definition at line 130 of file HEPTopTaggerWrapperV2.h.

double HEPTopTaggerV2::subjetMass_
private

Definition at line 106 of file HEPTopTaggerWrapperV2.h.

Referenced by description().