29 #include <fastjet/tools/RestFrameNSubjettinessTagger.hh>
30 #include <fastjet/tools/Boost.hh>
31 #include <fastjet/ClusterSequence.hh>
36 FASTJET_BEGIN_NAMESPACE
44 string RestFrameNSubjettinessTagger::description()
const{
46 oss <<
"RestFrameNSubjettiness tagger that performs clustering in the jet rest frame with "
47 << _subjet_def.description()
48 <<
", supplemented with cuts tau_2 < " << _t2cut
49 <<
" and cos(theta_s) < " << _costscut;
60 throw(
"The jet you try to tag needs to have accessible constituents");
64 for (
unsigned int i=0; i<rest_input.size(); i++)
65 rest_input[i].unboost(jet);
68 vector<PseudoJet> subjets = (_use_exclusive)
79 double ct0 = (j0.px()*jet.px() + j0.py()*jet.py() + j0.pz()*jet.pz())
81 double ct1 = (j1.px()*jet.px() + j1.py()*jet.py() + j1.pz()*jet.pz())
83 if ((ct0 > _costscut) || (ct1 > _costscut))
return PseudoJet();
87 for (
unsigned int i=0; i<rest_input.size(); i++)
88 tau2 += min(dot_product(rest_input[i], j0),
89 dot_product(rest_input[i], j1));
91 tau2 *= (2.0/jet.
m2());
104 PseudoJet subjet_lab1 = cs_structure->
jets()[cs_rest.
history()[subjets[0].cluster_hist_index()].jetp_index];
105 PseudoJet subjet_lab2 = cs_structure->
jets()[cs_rest.
history()[subjets[0].cluster_hist_index()].jetp_index];
107 PseudoJet result_local = join<StructureType>(subjet_lab1,subjet_lab2);
120 FASTJET_END_NAMESPACE