23 m_Tool_InformationStore(
"PanTau::Tool_InformationStore/Tool_InformationStore"),
24 m_Tool_TauConstituentGetter(
"PanTau::Tool_TauConstituentGetter/Tool_TauConstituentGetter", this),
25 m_Tool_TauConstituentSelector(
"PanTau::Tool_TauConstituentSelector/Tool_TauConstituentSelector", this),
26 m_Tool_FeatureExtractor(
"PanTau::Tool_FeatureExtractor/Tool_FeatureExtractor", this),
27 m_Tool_DecayModeDeterminator(
"PanTau::Tool_DecayModeDeterminator/Tool_DecayModeDeterminator", this),
28 m_Tool_DetailsArranger(
"PanTau::Tool_DetailsArranger/Tool_DetailsArranger", this)
65 ATH_CHECK( m_Tool_InformationStore.retrieve() );
66 ATH_CHECK( m_Tool_TauConstituentGetter.retrieve() );
67 ATH_CHECK( m_Tool_TauConstituentSelector.retrieve() );
68 ATH_CHECK( m_Tool_FeatureExtractor.retrieve() );
69 ATH_CHECK( m_Tool_DecayModeDeterminator.retrieve() );
70 ATH_CHECK( m_Tool_DetailsArranger.retrieve() );
72 ATH_CHECK( m_Tool_InformationStore->getInfo_VecDouble(
"ModeDiscriminator_BinEdges_Pt", m_Config_PtBins) );
73 m_Config_MinPt = m_Config_PtBins.front();
74 m_Config_MaxPt = m_Config_PtBins.back();
76 return StatusCode::SUCCESS;
81 return StatusCode::SUCCESS;
91 if(curTauJet ==
nullptr) {
93 return StatusCode::FAILURE;
96 fillDefaultValuesToTau(curTauJet);
102 int numTrack = curTauJet->
nTracks();
103 if(numTrack == 0 || numTrack > 5) {
104 ATH_MSG_DEBUG(
"Flagging tau for algorithm " << m_Name_InputAlg <<
" as invalid, because numTrack is " << numTrack);
110 std::vector<TauConstituent*> list_TauConstituents = std::vector<TauConstituent*>(0);
111 std::vector<TauConstituent*> list_SelectedTauConstituents = std::vector<TauConstituent*>(0);
115 ATH_CHECK( m_Tool_TauConstituentGetter->GetTauConstituents(curTauJet, list_TauConstituents, m_Name_InputAlg) );
116 if(list_TauConstituents.empty()) {
122 ATH_CHECK(m_Tool_TauConstituentSelector->SelectTauConstituents(list_TauConstituents, list_SelectedTauConstituents) );
123 if(list_SelectedTauConstituents.empty()) {
125 ATH_MSG_DEBUG(
"Seed has no associated constituents that pass selection!");
129 bool hasCoreConstituents =
false;
130 for(
unsigned int iConst=0; iConst<list_SelectedTauConstituents.size(); iConst++) {
137 if(!hasCoreConstituents) {
150 if(tauJet_pT < m_Config_MinPt || tauJet_pT > m_Config_MaxPt) {
157 list_SelectedTauConstituents,
158 list_TauConstituents,
159 pantauSeed_TechnicalQuality);
164 ATH_CHECK(m_Tool_FeatureExtractor->execute(curPanTauSeed) );
171 ATH_CHECK( m_Tool_DecayModeDeterminator->execute(curPanTauSeed) );
174 ATH_CHECK( m_Tool_DetailsArranger->execute(curPanTauSeed, pi0Container, neutralPFOContainer) );
176 delete curPanTauSeed;
177 return StatusCode::SUCCESS;
191 std::vector< ElementLink< xAOD::PFOContainer > > pi0PFOLinks = tauJet->
protoPi0PFOLinks();
195 std::vector< ElementLink< xAOD::PFOContainer > > neutralPFOLinks = tauJet->
protoNeutralPFOLinks();