87 const EventContext& ctx = Gaudi::Hive::currentContext();
96 unsigned int nParticles = importedTruthParticles->size();
97 unsigned int nVertices = importedTruthVertices->size();
98 std::vector<bool> partMask, vertMask;
99 partMask.assign(nParticles,
false);
105 std::vector<int>
entries = m_parser->evaluateAsVector();
109 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used TruthParticles?");
110 return StatusCode::FAILURE;
113 for (
unsigned int i=0;
i<nParticles; ++
i)
if (
entries[
i]==1) partMask[
i]=
true;
121 for (
unsigned int i=0;
i<nParticles; ++
i) {
125 std::vector<int> tauDecayProducts;
126 std::unordered_set<int> tauDecayEncounteredUniqueIDs;
128 for (
unsigned int tauDecIt=0; tauDecIt<tauDecayProducts.size(); ++tauDecIt) {
129 if (std::abs(tauDecayProducts[tauDecIt])==15) {
134 if (!last) partMask[
i]=
false;
146 std::unordered_set<int> encounteredUniqueIDs;
148 for (
unsigned int i=0;
i<nParticles; ++
i) {
149 bool toKeep = partMask[
i];
150 if (!toKeep)
continue;
152 encounteredUniqueIDs.clear();
154 encounteredUniqueIDs.clear();
156 encounteredUniqueIDs.clear();
158 encounteredUniqueIDs.clear();
173 importedTruthParticles.keep (partMask);
174 importedTruthVertices.keep (vertMask);
176 return StatusCode::SUCCESS;