9 const std::string&
name,
10 const IInterface *
parent) :
13 declareInterface<DiTauToolBase > (
this);
21 return StatusCode::SUCCESS;
26 const EventContext& )
const {
35 return StatusCode::FAILURE;
41 return StatusCode::FAILURE;
44 std::vector<fastjet::PseudoJet> vSubjets =
data->subjets;
45 if (vSubjets.empty()) {
46 ATH_MSG_WARNING(
"No subjets given. Continue without cluster information.");
47 return StatusCode::SUCCESS;
50 std::vector<TLorentzVector> subjetConstituentsP4;
53 TLorentzVector tmp_const_p4;
57 if(seedConstCluster ==
nullptr)
continue;
58 tmp_const_p4.SetPtEtaPhiM(seedConstCluster->
pt(), seedConstCluster->
eta(), seedConstCluster->
phi(), seedConstCluster->
m());
60 tmp_const_p4.SetPtEtaPhiM(seedConst->pt(), seedConst->eta(), seedConst->phi(), seedConst->m());
62 for (
const auto&
subjet : vSubjets) {
63 TLorentzVector tmp_subjet_p4;
65 if (tmp_const_p4.DeltaR(tmp_subjet_p4) <
m_Rsubjet) {
66 subjetConstituentsP4.push_back(tmp_const_p4);
71 ATH_MSG_DEBUG(
"subjetConstituents.size()=" << subjetConstituentsP4.size());
73 std::vector<float> vec_f_core(vSubjets.size(), 0);
74 for (
unsigned int i = 0;
i < vSubjets.size();
i++) {
75 const fastjet::PseudoJet&
subjet = vSubjets.at(
i);
80 TLorentzVector temp_sub_p4;
83 for (TLorentzVector const_p4 : subjetConstituentsP4) {
85 if (const_p4.DeltaR(temp_sub_p4) <
data->Rsubjet) {
86 ptAll += const_p4.Pt();
89 if (const_p4.DeltaR(temp_sub_p4) <
data->Rcore) {
90 ptCore += const_p4.Pt();
95 f_core = ptCore/ptAll;
100 vec_f_core.at(
i) = f_core;
108 mDecor(*pDiTau) = std::move(vec_f_core);
109 return StatusCode::SUCCESS;