9 const std::string&
name,
10 const IInterface *
parent) :
14 declareInterface<DiTauToolBase > (
this);
24 return StatusCode::SUCCESS;
29 const EventContext& )
const {
38 return StatusCode::FAILURE;
44 return StatusCode::FAILURE;
47 std::vector<fastjet::PseudoJet> vSubjets =
data->subjets;
48 if (vSubjets.empty()) {
49 ATH_MSG_WARNING(
"No subjets given. Continue without cell information.");
50 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;
78 if (temp_cc_p4.DeltaR(temp_sub_p4) <
m_Rsubjet) {
79 subjetCells.push_back(
cc);
86 data->subjetCells = subjetCells;
88 return StatusCode::SUCCESS;