13#include "GaudiKernel/ThreadLocalContext.h"
20 const IInterface* p ) :
39 return StatusCode::FAILURE;
51 return StatusCode::SUCCESS;
59 return StatusCode::SUCCESS;
65 const EventContext& ctx = Gaudi::Hive::currentContext();
71 unsigned int nObjects = particles->size();
72 if (nObjects==0)
return StatusCode::SUCCESS;
75 std::vector<bool> mask;
76 mask.assign(nObjects,
false);
81 std::vector<int>
entries = m_parser->evaluateAsVector();
82 unsigned int nEntries =
entries.size();
84 if (nObjects != nEntries ) {
85 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used the same collection as the input collection??");
86 return StatusCode::FAILURE;
89 for (
unsigned int i=0; i<nObjects; ++i)
if (
entries[i]==1) mask[i]=
true;
93 m_npass += std::count (mask.begin(), mask.end(),
true);
96 particles.keep (mask);
98 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
virtual StatusCode doThinning() const 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 initialize() override
Handle for requesting thinning for a data object.