19 const IInterface* p ) :
38 return StatusCode::FAILURE;
50 return StatusCode::SUCCESS;
58 return StatusCode::SUCCESS;
69 unsigned int nObjects = particles->size();
70 if (nObjects==0)
return StatusCode::SUCCESS;
73 std::vector<bool> mask;
74 mask.assign(nObjects,
false);
79 std::vector<int>
entries = m_parser->evaluateAsVector();
80 unsigned int nEntries =
entries.size();
82 if (nObjects != nEntries ) {
83 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used the same collection as the input collection??");
84 return StatusCode::FAILURE;
87 for (
unsigned int i=0; i<nObjects; ++i)
if (
entries[i]==1) mask[i]=
true;
91 m_npass += std::count (mask.begin(), mask.end(),
true);
94 particles.keep (mask);
96 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
Handle for requesting thinning for a data object.
SG::ThinningHandleKey< xAOD::IParticleContainer > m_SGKey
virtual StatusCode finalize() override
std::atomic< unsigned int > m_ntot
StringProperty m_streamName
std::atomic< unsigned int > m_npass
std::string m_selectionString
GenericObjectThinning(const std::string &t, const std::string &n, const IInterface *p)
virtual StatusCode doThinning(const EventContext &ctx) const override
virtual StatusCode initialize() override
Handle for requesting thinning for a data object.