CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends

EtaPhiContainer< T > Class Template Reference

#include <EtaPhiContainer.h>

List of all members.

Public Types

typedef std::vector< T >
::const_iterator 
const_iterator
typedef std::vector< T >::iterator iterator
typedef T value_type

Public Member Functions

Tat (const std::size_t &aIndex)
const Tat (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< TmContainer
std::vector< uint16_t > mHash

Friends

std::ostream & operator<< (std::ostream &aStream, const EtaPhiContainer< T > &aContainer)

Detailed Description

template<typename T>
class EtaPhiContainer< T >

Definition at line 13 of file EtaPhiContainer.h.


Member Typedef Documentation

template<typename T>
typedef std::vector< T >::const_iterator EtaPhiContainer< T >::const_iterator

Definition at line 26 of file EtaPhiContainer.h.

template<typename T>
typedef std::vector< T >::iterator EtaPhiContainer< T >::iterator

Definition at line 25 of file EtaPhiContainer.h.

template<typename T>
typedef T EtaPhiContainer< T >::value_type

Definition at line 28 of file EtaPhiContainer.h.


Constructor & Destructor Documentation

template<typename T>
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 );
        }
template<typename T>
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 );
        }
template<typename T>
virtual EtaPhiContainer< T >::~EtaPhiContainer ( ) [inline, virtual]

Definition at line 46 of file EtaPhiContainer.h.

        {
        }

Member Function Documentation

template<typename T>
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 );
        }
template<typename T>
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 );
        }
template<typename T>
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(  );
        }
template<typename T>
const_iterator EtaPhiContainer< T >::begin ( void  ) const [inline]

Definition at line 93 of file EtaPhiContainer.h.

References EtaPhiContainer< T >::mContainer.

        {
                return mContainer.begin(  );
        }
template<typename T>
const_iterator EtaPhiContainer< T >::end ( void  ) const [inline]

Definition at line 103 of file EtaPhiContainer.h.

References EtaPhiContainer< T >::mContainer.

        {
                return mContainer.end(  );
        }
template<typename T>
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(  );
        }
template<typename T>
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;
        }
template<typename T>
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;
        }
template<typename T>
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 ) );
        }
template<typename T>
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(  ) );
        }
template<typename T>
std::size_t EtaPhiContainer< T >::size ( void  ) const [inline]

Definition at line 115 of file EtaPhiContainer.h.

References EtaPhiContainer< T >::mContainer.

        {
                return mContainer.size(  );
        }
template<typename T>
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 );
                }
        }

Friends And Related Function Documentation

template<typename T>
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;
        }

Member Data Documentation

template<typename T>
std::vector< T > EtaPhiContainer< T >::mContainer [private]
template<typename T>
std::vector< uint16_t > EtaPhiContainer< T >::mHash [private]