9 #include "CaloEvent/CaloClusterContainer.h"
10 #include "fastjet/PseudoJet.hh"
13 const std::string&
name,
14 const IInterface *
parent) :
16 m_ClusterContainerName(
"CaloCalTopoClusters"),
19 declareInterface<DiTauToolBase > (
this);
30 return StatusCode::SUCCESS;
35 const EventContext& )
const {
44 return StatusCode::FAILURE;
50 return StatusCode::FAILURE;
53 std::vector<fastjet::PseudoJet> vSubjets =
data->subjets;
54 if (vSubjets.empty()) {
55 ATH_MSG_WARNING(
"No subjets given. Continue without cluster information.");
56 return StatusCode::SUCCESS;
59 std::vector<const xAOD::CaloCluster*> subjetClusters;
65 if(cluster == NULL)
continue;
67 for (
const auto&
subjet : vSubjets) {
68 TLorentzVector temp_sub_p4;
70 if (cluster->
p4().DeltaR(temp_sub_p4) <
m_Rsubjet) {
71 subjetClusters.push_back(cluster);
76 ATH_MSG_DEBUG(
"subjetCluster.size()=" << subjetClusters.size());
78 std::vector<float> vec_f_core(vSubjets.size(), 0);
79 for (
unsigned int i = 0;
i < vSubjets.size();
i++) {
80 const fastjet::PseudoJet&
subjet = vSubjets.at(
i);
85 TLorentzVector temp_sub_p4;
88 for (
const auto&
cc : subjetClusters) {
90 if (
cc->p4().DeltaR(temp_sub_p4) <
data->Rsubjet) {
94 if (
cc->p4().DeltaR(temp_sub_p4) <
data->Rcore) {
100 f_core = ptCore/ptAll;
105 vec_f_core.at(
i) = f_core;
109 mDecor(*pDiTau) = std::move(vec_f_core);
111 return StatusCode::SUCCESS;