7#include "GaudiKernel/ThreadLocalContext.h"
13 const IInterface* p) :
33 return StatusCode::SUCCESS;
41 return StatusCode::SUCCESS;
47 const EventContext& ctx = Gaudi::Hive::currentContext();
52 size_t nTaus =
taus->size();
61 trackLargeD0Particles.
thinAll();
70 std::vector<const xAOD::TauJet*> tausToKeep;
74 std::vector<int>
entries = m_parser->evaluateAsVector();
75 size_t nEntries =
entries.size();
76 if (nTaus != nEntries) {
77 ATH_MSG_ERROR(
"Incompatible sizes: " << nTaus <<
" vs " << nEntries <<
"! Please check your selection string uses the appropriate tau container.");
78 return StatusCode::FAILURE;
81 for (
size_t i=0; i<nTaus; ++i)
if (
entries[i]==1) tausToKeep.push_back(
taus->at(i));
85 for (
size_t i=0; i<nTaus; ++i) tausToKeep.push_back(
taus->at(i));
89 if( tausToKeep.size() > 0){
90 for(
size_t i=0; i < tausToKeep.size()-1; i++){
91 const auto* aTau=tausToKeep[i];
92 auto it =
std::remove_if(tausToKeep.begin()+i+1,tausToKeep.end(),[aTau](
const xAOD::TauJet* bTau) {return aTau->p4().DeltaR(bTau->p4()) < 0.01;});
93 tausToKeep.erase (it, tausToKeep.end());
98 for (
const auto* tau : tausToKeep) {
100 taus.keep(tau->index());
104 tauTracks.
keep(track->index());
109 trackParticles.
keep(track->track()->index());
111 trackLargeD0Particles.
keep(track->track()->index());
116 for (
size_t i=0; i<tau->nNeutralPFOs(); i++) {
117 neutralPFOs.
keep(tau->neutralPFO(i)->index());
121 if (tau->secondaryVertex() !=
nullptr) {
122 secondaryVertices.
keep(tau->secondaryVertex()->index());
130 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
Handle for requesting thinning for a data object.
void thinAll()
Mark that all elements should be thinned away.
void keep(size_t ndx)
Mark that index ndx in the container should be kept (not thinned away).
Handle for requesting thinning for a data object.
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".