45{
46
47
48 SG::ThinningHandle<xAOD::TauJetContainer>
taus(
m_taus, ctx);
50 size_t nTaus =
taus->size();
51
52 SG::ThinningHandle<xAOD::TauTrackContainer> tauTracks(
m_tauTracks, ctx);
53 tauTracks.thinAll();
54
55 SG::ThinningHandle<xAOD::TrackParticleContainer> trackParticles(
m_trackParticles, ctx);
56 trackParticles.thinAll();
57
58 SG::ThinningHandle<xAOD::PFOContainer> neutralPFOs(
m_neutralPFOs, ctx);
59 neutralPFOs.thinAll();
60
62 secondaryVertices.thinAll();
63
64
65 std::vector<const xAOD::TauJet*> tausToKeep;
66
67
69 std::vector<int>
entries = m_parser->evaluateAsVector();
71 if (nTaus != nEntries) {
72 ATH_MSG_ERROR(
"Incompatible sizes: " << nTaus <<
" vs " << nEntries <<
"! Please check your selection string uses the appropriate tau container.");
73 return StatusCode::FAILURE;
74 }
75
76 for (
size_t i=0;
i<nTaus; ++
i)
if (
entries[i]==1) tausToKeep.push_back(
taus->at(i));
77 }
78
79 else {
80 for (
size_t i=0;
i<nTaus; ++
i) tausToKeep.push_back(
taus->at(i));
81 }
82
83
84 if( tausToKeep.size() > 0){
85 for(
size_t i=0;
i < tausToKeep.size()-1;
i++){
86 const auto* aTau=tausToKeep[
i];
87 auto it =
std::remove_if(tausToKeep.begin()+i+1,tausToKeep.end(),[aTau](
const xAOD::TauJet* bTau) {return aTau->p4().DeltaR(bTau->p4()) < 0.01;});
88 tausToKeep.erase (it, tausToKeep.end());
89 }
90 }
91
92
93 for (const auto* tau : tausToKeep) {
94
95 taus.keep(tau->index());
96
97
99 tauTracks.keep(
track->index());
100
101
102 trackParticles.keep(
track->track()->index());
103 }
104
105
106 for (
size_t i=0;
i<tau->nNeutralPFOs();
i++) {
107 neutralPFOs.keep(tau->neutralPFO(i)->index());
108 }
109
110
111 if (tau->secondaryVertex() != nullptr) {
112 secondaryVertices.keep(tau->secondaryVertex()->index());
113 }
114 }
115
116
119
120 return StatusCode::SUCCESS;
121}
DataModel_detail::iterator< DVL > remove_if(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, Predicate pred)
Specialization of remove_if for DataVector/List.
TauTrack_v1 TauTrack
Definition of the current version.
TauJet_v3 TauJet
Definition of the current "tau version".