14#include "GaudiKernel/ThreadLocalContext.h"
21 const IInterface* p ) :
34 ATH_MSG_FATAL(
"No inner detector track selection string provided!");
35 return StatusCode::FAILURE;
46 return StatusCode::SUCCESS;
53 return StatusCode::SUCCESS;
59 const EventContext& ctx = Gaudi::Hive::currentContext();
66 unsigned int nClusters = clusters->size();
67 if (nClusters==0)
return StatusCode::SUCCESS;
70 std::vector<bool> mask;
71 mask.assign(nClusters,
false);
76 std::vector<int>
entries = m_parser->evaluateAsVector();
77 unsigned int nEntries =
entries.size();
79 if (nClusters != nEntries ) {
80 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used the same collection as the input collection??");
81 return StatusCode::FAILURE;
84 for (
unsigned int i=0; i<nClusters; ++i)
if (
entries[i]==1) mask[i]=
true;
88 unsigned int n_pass=0;
89 for (
unsigned int i=0; i<nClusters; ++i) {
90 if (mask[i]) ++n_pass;
97 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.
std::atomic< unsigned int > m_ntot
virtual StatusCode initialize() override
virtual StatusCode finalize() override
std::atomic< unsigned int > m_npass
StringProperty m_streamName
SG::ThinningHandleKey< xAOD::TrackMeasurementValidationContainer > m_SGKey
virtual ~TrackMeasurementThinning()
Destructor.
Gaudi::Property< std::string > m_selectionString
TrackMeasurementThinning(const std::string &t, const std::string &n, const IInterface *p)
Constructor with parameters.
virtual StatusCode doThinning() const override
Check that the current event passes this filter.
Handle for requesting thinning for a data object.