9 const std::string&
name,
10 const IInterface *
parent) :
13 declareInterface<DiTauToolBase > (
this);
22 return StatusCode::SUCCESS;
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;
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;
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;
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;