26 const EventContext& )
const {
35 return StatusCode::FAILURE;
41 return StatusCode::FAILURE;
44 std::vector<fastjet::PseudoJet> vSubjets =
data->subjets;
45 if (vSubjets.empty()) {
46 ATH_MSG_WARNING(
"No subjets given. Continue without cluster information.");
47 return StatusCode::SUCCESS;
50 std::vector<TLorentzVector> subjetConstituentsP4;
53 TLorentzVector tmp_const_p4;
57 if(seedConstCluster ==
nullptr)
continue;
58 tmp_const_p4.SetPtEtaPhiM(seedConstCluster->
pt(), seedConstCluster->
eta(), seedConstCluster->
phi(), seedConstCluster->
m());
60 tmp_const_p4.SetPtEtaPhiM(seedConst->pt(), seedConst->eta(), seedConst->phi(), seedConst->m());
62 for (
const auto& subjet : vSubjets) {
63 TLorentzVector tmp_subjet_p4;
64 tmp_subjet_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
65 if (tmp_const_p4.DeltaR(tmp_subjet_p4) <
m_Rsubjet) {
66 subjetConstituentsP4.push_back(tmp_const_p4);
71 ATH_MSG_DEBUG(
"subjetConstituents.size()=" << subjetConstituentsP4.size());
73 std::vector<float> vec_f_core(vSubjets.size(), 0);
74 for (
unsigned int i = 0; i < vSubjets.size(); i++) {
75 const fastjet::PseudoJet& subjet = vSubjets.at(i);
80 TLorentzVector temp_sub_p4;
81 temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
83 for (TLorentzVector const_p4 : subjetConstituentsP4) {
85 if (const_p4.DeltaR(temp_sub_p4) <
data->Rsubjet) {
86 ptAll += const_p4.Pt();
89 if (const_p4.DeltaR(temp_sub_p4) <
data->Rcore) {
90 ptCore += const_p4.Pt();
95 f_core = ptCore/ptAll;
99 ATH_MSG_DEBUG(
"subjet "<< i <<
": f_cluster_core = " << f_core);
100 vec_f_core.at(i) = f_core;
108 mDecor(*pDiTau) = std::move(vec_f_core);
109 return StatusCode::SUCCESS;