9 #include "fastjet/PseudoJet.hh"
10 #include "fastjet/tools/MassDropTagger.hh"
11 #include "fastjet/tools/Filter.hh"
18 using fastjet::PseudoJet;
19 using fastjet::MassDropTagger;
22 using fastjet::JetDefinition;
23 using fastjet::SelectorNHardest;
31 : AsgTool(
name), m_bld(
"",this),
50 if ( m_mumax < 0.0 || m_mumax > 1.0 ) {
52 return StatusCode::FAILURE;
54 if ( m_mumax < 0.0 || m_mumax > 1.0 ) {
56 return StatusCode::FAILURE;
58 if (
m_bld.empty() ) {
60 return StatusCode::FAILURE;
62 return StatusCode::SUCCESS;
76 if ( ppjin ==
nullptr ) {
82 int nconin = ppjin->constituents().size();
83 PseudoJet pjfilt = mdtagger(*ppjin);
89 PseudoJet parent1 = pjfilt.pieces()[0];
90 PseudoJet parent2 = pjfilt.pieces()[1];
91 int npfilt = pjfilt.pieces().size();
92 double drfilt = parent1.delta_R(parent2);
93 double mufilt = pjfilt.structure_of<MassDropTagger>().
mu();
94 double yfilt = pjfilt.structure_of<MassDropTagger>().
y();
98 ATH_MSG_DEBUG(
" ncon: " << pjfilt.constituents().size() <<
"/" << nconin);
104 std::vector<PseudoJet> cons = pjfilt.constituents();
111 double rbdrs = 0.5*drfilt;
112 if ( rbdrs < rclus ) rclus = rbdrs;
116 PseudoJet pjclus =
filter(pjfilt);
120 ATH_MSG_VERBOSE(
" Input cluster sequence: " << ppjin->associated_cluster_sequence());
121 ATH_MSG_VERBOSE(
" Filtered cluster sequence: " << pjfilt.associated_cluster_sequence());
122 ATH_MSG_VERBOSE(
" Reclustered cluster sequence: " << pjclus.associated_cluster_sequence());
123 int npclus = pjclus.pieces().size();
128 PseudoJet parent1 = pjclus.pieces()[0];
129 PseudoJet parent2 = pjclus.pieces()[1];
130 drclus= parent1.delta_R(parent2);
133 ATH_MSG_DEBUG(
" ncon: " << pjclus.constituents().size() <<
"/"
134 << pjfilt.constituents().size() <<
"/" << nconin);
142 if ( pjet ==
nullptr ) {