28 const EventContext& )
const {
37 return StatusCode::FAILURE;
43 return StatusCode::FAILURE;
46 std::vector<fastjet::PseudoJet> vSubjets = data->subjets;
47 if (vSubjets.empty()) {
48 ATH_MSG_WARNING(
"No subjets given. Continue without cell information.");
49 return StatusCode::SUCCESS;
54 std::bitset<200000> cellSeen;
55 std::vector<const CaloCell*> subjetCells;
63 for (
const auto *
const cc : *(cluster->
getCellLinks())) {
65 if (cc->pt() < 0)
continue;
66 if (cellSeen.test(cc->caloDDE()->calo_hash()))
continue;
68 cellSeen.set(cc->caloDDE()->calo_hash());
70 TLorentzVector temp_cc_p4;
71 temp_cc_p4.SetPtEtaPhiM(cc->pt(), cc->eta(), cc->phi(), cc->m());
74 for (
const auto& subjet : vSubjets) {
75 TLorentzVector temp_sub_p4;
76 temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
77 if (temp_cc_p4.DeltaR(temp_sub_p4) <
m_Rsubjet) {
78 subjetCells.push_back(cc);
85 data->subjetCells = subjetCells;
89 for (
unsigned int i = 0; i < vSubjets.size(); i++) {
90 const fastjet::PseudoJet& subjet = vSubjets.at(i);
94 TLorentzVector temp_sub_p4;
95 temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
97 for (
const auto& cc : data->subjetCells) {
99 TLorentzVector temp_cc_p4;
100 temp_cc_p4.SetPtEtaPhiM(cc->pt(), cc->eta(), cc->phi(), cc->m());
102 if (temp_cc_p4.DeltaR(temp_sub_p4) < data->Rsubjet) {
106 if (temp_cc_p4.DeltaR(temp_sub_p4) < data->Rcore) {
112 f_core = ptCore/ptAll;
120 return StatusCode::SUCCESS;