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 cell information.");
48 return StatusCode::SUCCESS;
53 std::bitset<200000> cellSeen;
54 std::vector<const CaloCell*> subjetCells;
62 for (
const auto *
const cc : *(cluster->
getCellLinks())) {
64 if (cc->pt() < 0)
continue;
65 if (cellSeen.test(cc->caloDDE()->calo_hash()))
continue;
67 cellSeen.set(cc->caloDDE()->calo_hash());
69 TLorentzVector temp_cc_p4;
70 temp_cc_p4.SetPtEtaPhiM(cc->pt(), cc->eta(), cc->phi(), cc->m());
73 for (
const auto& subjet : vSubjets) {
74 TLorentzVector temp_sub_p4;
75 temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
76 if (temp_cc_p4.DeltaR(temp_sub_p4) <
m_Rsubjet) {
77 subjetCells.push_back(cc);
84 data->subjetCells = subjetCells;
88 for (
unsigned int i = 0; i < vSubjets.size(); i++) {
89 const fastjet::PseudoJet& subjet = vSubjets.at(i);
93 TLorentzVector temp_sub_p4;
94 temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
96 for (
const auto& cc :
data->subjetCells) {
98 TLorentzVector temp_cc_p4;
99 temp_cc_p4.SetPtEtaPhiM(cc->pt(), cc->eta(), cc->phi(), cc->m());
101 if (temp_cc_p4.DeltaR(temp_sub_p4) <
data->Rsubjet) {
105 if (temp_cc_p4.DeltaR(temp_sub_p4) <
data->Rcore) {
111 f_core = ptCore/ptAll;
119 return StatusCode::SUCCESS;