Example #1
0
// ==========================================================================
/// Main execution
// ==========================================================================
StatusCode MapAlg::execute()
{
  using namespace Gaudi::Utils ;

  Rndm::Numbers gauss   ( randSvc() , Rndm::Gauss       (   0.0 ,   1.0 ) ) ;
  Rndm::Numbers gauss2  ( randSvc() , Rndm::Gauss       (   0.0  , 10.0 ) ) ;

  const Key   key    = Key ( gauss2  () ) ;
  const Value value1 =  Value( int( 100 * gauss () ) ) / 100.0 ;

  always()
    << " Inserting key " << toString(key) << " 1st: "
    << " " << toString ( m_map1.insert ( std::make_pair ( key , value1 ) ).second )
    << " " << toString ( m_map2.insert ( std::make_pair ( key , value1 ) ).second )
    << " " << toString ( m_map3.insert ( std::make_pair ( key , value1 ) ).second )
    << " " << toString ( m_map4.insert ( std::make_pair ( key , value1 ) ).second )
    << endmsg ;

  always() << "1 Map1: " << toString ( m_map1 ) << endmsg ;
  always() << "1 Map2: " << toString ( m_map2 ) << endmsg ;
  always() << "1 Map3: " << toString ( m_map3 ) << endmsg ;
  always() << "1 Map4: " << toString ( m_map4 ) << endmsg ;

  print1 ( (Key) 1 ) ;

  always() << "2 Map1: " << toString ( m_map1 ) << endmsg ;
  always() << "2 Map2: " << toString ( m_map2 ) << endmsg ;
  always() << "2 Map3: " << toString ( m_map3 ) << endmsg ;
  always() << "2 Map4: " << toString ( m_map4 ) << endmsg ;

  print2 ( (Key) 7  ) ;

  always() << "3 Map1: " << toString ( m_map1 ) << endmsg ;
  always() << "3 Map2: " << toString ( m_map2 ) << endmsg ;
  always() << "3 Map3: " << toString ( m_map3 ) << endmsg ;
  always() << "3 Map4: " << toString ( m_map4 ) << endmsg ;

  const Value value2 =       gauss   () ;

  always()
    << " Inserting key " << toString(key) << " 2nd: "
    << " " << toString ( m_map1.insert ( std::make_pair ( key , value2 ) ).second )
    << " " << toString ( m_map2.insert ( std::make_pair ( key , value2 ) ).second )
    << " " << toString ( m_map3.insert ( std::make_pair ( key , value2 ) ).second )
    << " " << toString ( m_map4.insert ( std::make_pair ( key , value2 ) ).second )
    << endmsg ;

  always() << "4 Map1: " << toString ( m_map1 ) << endmsg ;
  always() << "4 Map2: " << toString ( m_map2 ) << endmsg ;
  always() << "4 Map3: " << toString ( m_map3 ) << endmsg ;
  always() << "4 Map4: " << toString ( m_map4 ) << endmsg ;

  if ( 0 == ::labs(key)%2 )
  {
    always()
      << " Erased : "
      << " " << toString ( 0 != m_map1.erase ( key ) )
      << " " << toString ( 0 != m_map2.erase ( key ) )
      << " " << toString ( 0 != m_map3.erase ( key ) )
      << " " << toString ( 0 != m_map4.erase ( key ) )
      << endmsg ;
  }

  always() << "5 Map1: " << toString ( m_map1 ) << endmsg ;
  always() << "5 Map2: " << toString ( m_map2 ) << endmsg ;
  always() << "5 Map3: " << toString ( m_map3 ) << endmsg ;
  always() << "5 Map4: " << toString ( m_map4 ) << endmsg ;

  always()
    << " Count key    0 : "
    << " " << m_map1.count ( 0 )
    << " " << m_map2.count ( 0 )
    << " " << m_map3.count ( 0 )
    << " " << m_map4.count ( 0 )
    << endmsg ;
  always()
    << " Count key    1 : "
    << " " << m_map1.count ( 1 )
    << " " << m_map2.count ( 1 )
    << " " << m_map3.count ( 1 )
    << " " << m_map4.count ( 1 )
    << endmsg ;
  always()
    << " Count key    7 : "
    << " " << m_map1.count ( 7 )
    << " " << m_map2.count ( 7 )
    << " " << m_map3.count ( 7 )
    << " " << m_map4.count ( 7 )
    << endmsg ;
  always()
    << " Count key -100 : "
    << " " << m_map1.count ( -100 )
    << " " << m_map2.count ( -100 )
    << " " << m_map3.count ( -100 )
    << " " << m_map4.count ( -100 )
    << endmsg ;


  return StatusCode::SUCCESS;
}