63 unsigned int nTracks = importedTrackParticles->size();
64 if (nTracks==0)
return StatusCode::SUCCESS;
67 std::vector<bool> mask;
68 mask.assign(nTracks,
false);
74 if (!importedDiTaus.
isValid()) {
76 return StatusCode::FAILURE;
78 unsigned int nDiTaus(importedDiTaus->size());
79 std::vector<const xAOD::DiTauJet*> ditauToCheck; ditauToCheck.clear();
83 std::vector<int>
entries = m_parser->evaluateAsVector();
84 unsigned int nEntries =
entries.size();
86 if (nDiTaus != nEntries ) {
87 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used ditaus??");
88 return StatusCode::FAILURE;
91 for (
unsigned int i=0; i<nDiTaus; ++i)
if (
entries[i]==1) ditauToCheck.push_back((*importedDiTaus)[i]);
98 for (
const auto *ditauIt : *importedDiTaus) {
99 for (
unsigned int i=0; i<ditauIt->nTracks(); ++i) {
100 int index = ditauIt->trackLinks().at(i).index();
103 for (
unsigned int i=0; i<ditauIt->nIsoTracks(); ++i) {
104 int index = ditauIt->isoTrackLinks().at(i).index();
109 for (
auto & ditauIt : ditauToCheck) {
110 for (
unsigned int i=0; i<ditauIt->nTracks(); ++i) {
111 int index = ditauIt->trackLinks().at(i).index();
114 for (
unsigned int i=0; i<ditauIt->nIsoTracks(); ++i) {
115 int index = ditauIt->isoTrackLinks().at(i).index();
122 unsigned int n_pass=0;
123 for (
unsigned int i=0; i<nTracks; ++i) {
124 if (mask[i]) ++n_pass;
129 importedTrackParticles.
keep (mask);
131 return StatusCode::SUCCESS;
std::atomic< unsigned int > m_npass
virtual StatusCode finalize() override
Gaudi::Property< std::string > m_selectionString
virtual StatusCode initialize() override
SG::ReadHandleKey< xAOD::DiTauJetContainer > m_ditauKey
virtual ~DiTauTrackParticleThinning()
DiTauTrackParticleThinning(const std::string &t, const std::string &n, const IInterface *p)
SG::ThinningHandleKey< xAOD::TrackParticleContainer > m_inDetSGKey
virtual StatusCode doThinning(const EventContext &ctx) const override
std::atomic< unsigned int > m_ntot