![]() |
![]() |
#include <EtaPhiContainer.h>
Public Types | |
typedef std::vector< T > ::const_iterator | const_iterator |
typedef std::vector< T >::iterator | iterator |
typedef T | value_type |
Public Member Functions | |
T & | at (const std::size_t &aIndex) |
const T & | at (const std::size_t &aIndex) const |
iterator | begin () |
const_iterator | begin () const |
iterator | end () |
const_iterator | end () const |
EtaPhiContainer (const EtaPhiContainer< T > &aEtaPhiContainer) | |
EtaPhiContainer () | |
const_iterator | find (const int &aEta, const int &aPhi) const |
iterator | find (const int &aEta, const int &aPhi) |
iterator | insert (const int &aEta, const int &aPhi, const T &aT) |
std::size_t | size () const |
void | sort () |
virtual | ~EtaPhiContainer () |
Private Member Functions | |
uint16_t | hash (const int &aEta, const int &aPhi) const |
Private Attributes | |
std::vector< T > | mContainer |
std::vector< uint16_t > | mHash |
Friends | |
std::ostream & | operator<< (std::ostream &aStream, const EtaPhiContainer< T > &aContainer) |
Definition at line 13 of file EtaPhiContainer.h.
typedef std::vector< T >::const_iterator EtaPhiContainer< T >::const_iterator |
Definition at line 26 of file EtaPhiContainer.h.
typedef std::vector< T >::iterator EtaPhiContainer< T >::iterator |
Definition at line 25 of file EtaPhiContainer.h.
typedef T EtaPhiContainer< T >::value_type |
Definition at line 28 of file EtaPhiContainer.h.
EtaPhiContainer< T >::EtaPhiContainer | ( | ) | [inline] |
Definition at line 31 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer.
: mHash( std::vector < uint16_t > ( 16384, uint16_t( -1 ) ) ) { mContainer.reserve( 16384 ); }
EtaPhiContainer< T >::EtaPhiContainer | ( | const EtaPhiContainer< T > & | aEtaPhiContainer | ) | [inline] |
Definition at line 38 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer.
: mContainer( aEtaPhiContainer.mContainer ), mHash( aEtaPhiContainer.mHash ) { mContainer.reserve( 16384 ); }
virtual EtaPhiContainer< T >::~EtaPhiContainer | ( | ) | [inline, virtual] |
Definition at line 46 of file EtaPhiContainer.h.
{ }
T& EtaPhiContainer< T >::at | ( | const std::size_t & | aIndex | ) | [inline] |
Definition at line 50 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer.
Referenced by EtaPhiContainerLookUp< T >::operator()().
{ return mContainer.at( aIndex ); }
const T& EtaPhiContainer< T >::at | ( | const std::size_t & | aIndex | ) | const [inline] |
Definition at line 55 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer.
{ return mContainer.at( aIndex ); }
iterator EtaPhiContainer< T >::begin | ( | void | ) | [inline] |
Definition at line 88 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer.
Referenced by L1ExtraTranslator::produce().
{ return mContainer.begin( ); }
const_iterator EtaPhiContainer< T >::begin | ( | void | ) | const [inline] |
Definition at line 93 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer.
{ return mContainer.begin( ); }
const_iterator EtaPhiContainer< T >::end | ( | void | ) | const [inline] |
Definition at line 103 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer.
{ return mContainer.end( ); }
iterator EtaPhiContainer< T >::end | ( | void | ) | [inline] |
Definition at line 98 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer.
Referenced by L1ExtraTranslator::produce().
{ return mContainer.end( ); }
const_iterator EtaPhiContainer< T >::find | ( | const int & | aEta, |
const int & | aPhi | ||
) | const [inline] |
Definition at line 72 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::hash(), EtaPhiContainer< T >::mContainer, and EtaPhiContainer< T >::mHash.
{ uint16_t lIndex = mHash.at( hash( aEta, aPhi ) ); if ( lIndex == uint16_t( -1 ) ){ return mContainer.end( ); } return mContainer.begin( ) + lIndex; }
iterator EtaPhiContainer< T >::find | ( | const int & | aEta, |
const int & | aPhi | ||
) | [inline] |
Definition at line 61 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::hash(), EtaPhiContainer< T >::mContainer, and EtaPhiContainer< T >::mHash.
{ uint16_t lIndex = mHash.at( hash( aEta, aPhi ) ); if ( lIndex == uint16_t( -1 ) ){ return mContainer.end( ); } return mContainer.begin( ) + lIndex; }
uint16_t EtaPhiContainer< T >::hash | ( | const int & | aEta, |
const int & | aPhi | ||
) | const [inline, private] |
Definition at line 141 of file EtaPhiContainer.h.
Referenced by EtaPhiContainer< T >::find(), and EtaPhiContainer< T >::insert().
{
return uint16_t( ( ( aEta & 0x7f ) << 7 ) | ( aPhi & 0x7f ) );
}
iterator EtaPhiContainer< T >::insert | ( | const int & | aEta, |
const int & | aPhi, | ||
const T & | aT | ||
) | [inline] |
Definition at line 108 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::hash(), EtaPhiContainer< T >::mContainer, and EtaPhiContainer< T >::mHash.
{ mHash.at( hash( aEta, aPhi ) ) = mContainer.size( ); mContainer.push_back( aT ); return ( --mContainer.end( ) ); }
std::size_t EtaPhiContainer< T >::size | ( | void | ) | const [inline] |
Definition at line 115 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer.
{ return mContainer.size( ); }
void EtaPhiContainer< T >::sort | ( | ) | [inline] |
Definition at line 121 of file EtaPhiContainer.h.
References EtaPhiContainer< T >::mContainer, and EtaPhiContainer< T >::mHash.
Referenced by L1ExtraTranslator::produce().
{ std::multimap < T , uint16_t > lMap; for( uint16_t lHash = 0 ; lHash != mHash.size( ) ; ++lHash ){ uint16_t lIndex = mHash.at( lHash ); if( lIndex != uint16_t( -1 ) ){ lMap.insert ( std::make_pair( *(mContainer.begin( ) + lIndex) , lHash ) ); mHash.at( lHash ) = uint16_t( -1 ); } } mContainer.clear(); for( typename std::multimap < T , uint16_t >::reverse_iterator lItr = lMap.rbegin(); lItr != lMap.rend(); ++lItr ){ mHash.at( lItr->second ) = mContainer.size(); mContainer.push_back( lItr->first ); } }
std::ostream& operator<< | ( | std::ostream & | aStream, |
const EtaPhiContainer< T > & | aContainer | ||
) | [friend] |
Definition at line 15 of file EtaPhiContainer.h.
{ int i(0); for( typename EtaPhiContainer<T>::const_iterator lIt=aContainer.begin() ; lIt!=aContainer.end() ; ++lIt ){ aStream << "Element " << (i++) << " :\n" << *lIt << "\n"; } return aStream; }
std::vector< T > EtaPhiContainer< T >::mContainer [private] |
Definition at line 148 of file EtaPhiContainer.h.
Referenced by EtaPhiContainer< T >::at(), EtaPhiContainer< T >::begin(), EtaPhiContainer< T >::end(), EtaPhiContainer< T >::EtaPhiContainer(), EtaPhiContainer< T >::find(), EtaPhiContainer< T >::insert(), EtaPhiContainer< T >::size(), and EtaPhiContainer< T >::sort().
std::vector< uint16_t > EtaPhiContainer< T >::mHash [private] |
Definition at line 149 of file EtaPhiContainer.h.
Referenced by EtaPhiContainer< T >::find(), EtaPhiContainer< T >::insert(), and EtaPhiContainer< T >::sort().