27 const EventContext& )
const {
36 return StatusCode::FAILURE;
42 return StatusCode::FAILURE;
45 std::vector<fastjet::PseudoJet> vSubjets = data->subjets;
46 if (vSubjets.empty()) {
47 ATH_MSG_WARNING(
"No subjets given. Continue without cluster information.");
48 return StatusCode::SUCCESS;
51 std::vector<TLorentzVector> subjetConstituentsP4;
54 TLorentzVector tmp_const_p4;
58 if(seedConstCluster ==
nullptr)
continue;
59 tmp_const_p4.SetPtEtaPhiM(seedConstCluster->
pt(), seedConstCluster->
eta(), seedConstCluster->
phi(), seedConstCluster->
m());
61 tmp_const_p4.SetPtEtaPhiM(seedConst->pt(), seedConst->eta(), seedConst->phi(), seedConst->m());
63 for (
const auto& subjet : vSubjets) {
64 TLorentzVector tmp_subjet_p4;
65 tmp_subjet_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
66 if (tmp_const_p4.DeltaR(tmp_subjet_p4) <
m_Rsubjet) {
67 subjetConstituentsP4.push_back(tmp_const_p4);
72 ATH_MSG_DEBUG(
"subjetConstituents.size()=" << subjetConstituentsP4.size());
74 std::vector<float> vec_f_core(vSubjets.size(), 0);
75 for (
unsigned int i = 0; i < vSubjets.size(); i++) {
76 const fastjet::PseudoJet& subjet = vSubjets.at(i);
81 TLorentzVector temp_sub_p4;
82 temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
84 for (TLorentzVector const_p4 : subjetConstituentsP4) {
86 if (const_p4.DeltaR(temp_sub_p4) < data->Rsubjet) {
87 ptAll += const_p4.Pt();
90 if (const_p4.DeltaR(temp_sub_p4) < data->Rcore) {
91 ptCore += const_p4.Pt();
96 f_core = ptCore/ptAll;
100 ATH_MSG_DEBUG(
"subjet "<< i <<
": f_cluster_core = " << f_core);
101 vec_f_core.at(i) = f_core;
109 mDecor(*pDiTau) = std::move(vec_f_core);
110 return StatusCode::SUCCESS;