32   declareProperty(
"IgnoreFlags"               , 
m_noFlags);
 
   45   ATH_CHECK(m_vertexContainerNames.initialize(m_streamName));
 
   48   if (m_passFlags.empty()) {
 
   50     return StatusCode::FAILURE;
 
   52     for(
auto itr = m_passFlags.cbegin(); itr!=m_passFlags.cend(); ++itr) {
 
   53       ATH_MSG_INFO(
"Vertices must pass the \"" << itr->key() << 
"\" selection");
 
   57   for(
auto &
key : m_passFlags){
 
   58         key = m_vertexContainerNames.key() + 
'.' + 
key.key();
 
   61   return StatusCode::SUCCESS;
 
   67   ATH_MSG_INFO(
"Processed "<< m_nVtxTot <<
" vertices, "<< m_nVtxPass<< 
" were retained ");
 
   69   return StatusCode::SUCCESS;
 
   76     const EventContext& ctx = Gaudi::Hive::currentContext();
 
   78     std::vector<bool> vtxMask(vertexContainer->size(), 
true); 
 
   83     std::vector<SG::ReadDecorHandle<xAOD::VertexContainer, Char_t>> handles;
 
   84     handles.reserve(m_passFlags.size());
 
   85     for(
const auto &
key : m_passFlags){
 
   86         handles.emplace_back(
key, ctx);
 
   87         if(!handles.back().isPresent()) 
return StatusCode::FAILURE;
 
   89     for(
auto vtxItr = vertexContainer->cbegin(); vtxItr!=vertexContainer->cend(); ++vtxItr, ++
k) {
 
   93       if(m_noFlags){
passed = 
true; vtxTot++; }
 
   95         for(
auto &flagAcc : handles) {
 
   96           if(flagAcc(*vtx) != 0) {
 
  105       if(vtxMask[
k] == 
false)
continue;  
 
  114           std::vector<const xAOD::TrackParticle*> presentVertex, compareVertex;
 
  117               presentVertex.clear();
 
  121           sort( presentVertex.begin(), presentVertex.end() );  
 
  125           for(
auto vtxLoopItr = vtxItr+1; vtxLoopItr!=vertexContainer->cend(); vtxLoopItr++, loop_k++){
 
  135                     compareVertex.clear();
 
  140                   std::sort( compareVertex.begin(), compareVertex.end());
 
  142                   vtxMask[loop_k] = 
false;
 
  145                   ATH_MSG_DEBUG(std::setw(14)<<compareVertex[0]<<std::setw(14) << compareVertex[1]<<std::setw(14)<<compareVertex[2]);
 
  146                   ATH_MSG_DEBUG(std::setw(14)<<presentVertex[0]<<std::setw(14) << presentVertex[1]<<std::setw(14)<<presentVertex[2]);
 
  149                     if( compareVertex[j] != presentVertex[j] ){vtxMask[loop_k] = 
true;  
break;}
 
  151                   ATH_MSG_DEBUG(
"Verdict:"<<(vtxMask[loop_k]? 
"keep": 
"erase") );
 
  160     vertexContainer.
keep(vtxMask);
 
  162     m_nVtxTot.fetch_add( vtxTot, std::memory_order_relaxed);
 
  163     m_nVtxPass.fetch_add( nVtxPass, std::memory_order_relaxed);
 
  167   return StatusCode::SUCCESS;