14 #include "GaudiKernel/ThreadLocalContext.h" 
   21                                                         const IInterface* 
p ) : 
 
   33     if (m_selectionString.empty()) {
 
   34         ATH_MSG_FATAL(
"No inner detector track selection string provided!");
 
   35         return StatusCode::FAILURE;
 
   36     } 
else {
ATH_MSG_INFO(
"Track thinning selection string: " << m_selectionString);}
 
   39     ATH_CHECK( m_SGKey.initialize (m_streamName) );
 
   40     ATH_MSG_INFO(
"Using " << m_SGKey << 
"as the source collection for thinning.");
 
   43     if (!m_selectionString.empty()) {
 
   44        ATH_CHECK( initializeParser(m_selectionString) );
 
   46     return StatusCode::SUCCESS;
 
   51     ATH_MSG_INFO(
"Processed "<< m_ntot <<
" measurements, "<< m_npass<< 
" were retained ");
 
   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();
 
   80             ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used the same collection as the input collection??");
 
   81             return StatusCode::FAILURE;
 
   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;