14{
15 vector<fastjet::PseudoJet> constit_pseudojets = jet.constituents();
16 if(constit_pseudojets.empty()) return -1;
17
18 fastjet::JetDefinition jet_def = fastjet::JetDefinition(fastjet::kt_algorithm, 1.5,
19 fastjet::E_scheme, fastjet::Best);
20 fastjet::ClusterSequence kt_clust_seq(constit_pseudojets, jet_def);
21
23
24 return 0.0;
25 }
26 vector<fastjet::PseudoJet> subjets = kt_clust_seq.exclusive_jets((
int)
m_nSubJets);
27
28
29 fastjet::PseudoJet *lastSplitSubjet = nullptr;
30 int max_cluster_hist_index = -1;
31 for(size_t iSubjet=0; iSubjet < subjets.size(); iSubjet++) {
32 fastjet::PseudoJet parent1, parent2;
33 if(kt_clust_seq.has_parents(subjets[iSubjet], parent1, parent2) &&
34 subjets[iSubjet].cluster_hist_index() > max_cluster_hist_index) {
35 max_cluster_hist_index = subjets[iSubjet].cluster_hist_index();
36 lastSplitSubjet = &subjets[iSubjet];
37 }
38 }
39
40 if(lastSplitSubjet == nullptr) {
41
42 return 0.0;
43 }
44
46 double dmin =
pow(
split.result(jet), 2.0);
47
48 double zcut = -1;
49 if(dmin == 0)
50 zcut = 0;
51 else
52 zcut = dmin / (dmin + lastSplitSubjet->m2());
53
54 return zcut;
55}
constexpr int pow(int base, int exp) noexcept
std::vector< std::string > split(const std::string &s, const std::string &t=":")