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;
55 std::bitset<200000> cellSeen;
56 std::vector<const CaloCell*> subjetCells;
64 for (
const auto *
const cc : *(cluster->
getCellLinks())) {
66 if (cc->pt() < 0)
continue;
67 if (cellSeen.test(cc->caloDDE()->calo_hash()))
continue;
69 cellSeen.set(cc->caloDDE()->calo_hash());
71 TLorentzVector temp_cc_p4;
72 temp_cc_p4.SetPtEtaPhiM(cc->pt(), cc->eta(), cc->phi(), cc->m());
75 for (
const auto& subjet : vSubjets) {
76 TLorentzVector temp_sub_p4;
77 temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
78 if (temp_cc_p4.DeltaR(temp_sub_p4) <
m_Rsubjet) {
79 subjetCells.push_back(cc);
86 data->subjetCells = std::move(subjetCells);
90 for (
unsigned int i = 0; i < vSubjets.size(); i++) {
91 const fastjet::PseudoJet& subjet = vSubjets.at(i);
95 TLorentzVector temp_sub_p4;
96 temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
98 for (
const auto& cc : data->subjetCells) {
100 TLorentzVector temp_cc_p4;
101 temp_cc_p4.SetPtEtaPhiM(cc->pt(), cc->eta(), cc->phi(), cc->m());
103 if (temp_cc_p4.DeltaR(temp_sub_p4) < data->Rsubjet) {
107 if (temp_cc_p4.DeltaR(temp_sub_p4) < data->Rcore) {
113 f_core = ptCore/ptAll;
121 return StatusCode::SUCCESS;