CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Private Attributes
edm::RangeMap< ID, C, P > Class Template Reference

#include <RangeMap.h>

Classes

struct  comp
 comparator helper class More...
 
struct  id_iterator
 identifier iterator More...
 

Public Types

typedef C::const_iterator const_iterator
 constant access iterator type More...
 
typedef std::map< ID, pairTypemapType
 map of identifier to index range More...
 
typedef std::pair< unsigned
int, unsigned int > 
pairType
 index range More...
 
typedef C::pointer pointer
 pointer type More...
 
typedef std::pair
< const_iterator,
const_iterator
range
 iterator range More...
 
typedef C::reference reference
 reference type More...
 
typedef C::size_type size_type
 collection size type More...
 
typedef C::value_type value_type
 contained object type More...
 

Public Member Functions

C::const_iterator begin () const
 first collection iterator More...
 
C::const_iterator end () const
 last collection iterator More...
 
template<typename CMP >
range get (ID id, CMP comparator) const
 
template<typename CMP >
range get (std::pair< ID, CMP > p) const
 get range of objects matching a specified identifier with a specified comparator. More...
 
range get (ID id) const
 get a range of objects with specified identifier More...
 
id_iterator id_begin () const
 first identifier iterator More...
 
id_iterator id_end () const
 last identifier iterator More...
 
size_t id_size () const
 number of contained identifiers More...
 
std::vector< ID > ids () const
 indentifier vector More...
 
RangeMapoperator= (RangeMap const &rhs)
 copy assignment More...
 
reference operator[] (size_type i)
 direct access to an object in the collection More...
 
void post_insert ()
 perfor post insert action More...
 
template<typename CI >
void put (ID id, CI begin, CI end)
 insert an object range with specified identifier More...
 
 RangeMap ()
 default constructor More...
 
size_t size () const
 return number of contained object More...
 
void swap (RangeMap< ID, C, P > &other)
 swap member function More...
 

Private Attributes

collection_
 stored collection More...
 
mapType map_
 identifier map More...
 

Detailed Description

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
class edm::RangeMap< ID, C, P >

Definition at line 32 of file RangeMap.h.

Member Typedef Documentation

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
typedef C::const_iterator edm::RangeMap< ID, C, P >::const_iterator

constant access iterator type

Definition at line 43 of file RangeMap.h.

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
typedef std::map<ID, pairType> edm::RangeMap< ID, C, P >::mapType

map of identifier to index range

Definition at line 48 of file RangeMap.h.

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
typedef std::pair<unsigned int, unsigned int> edm::RangeMap< ID, C, P >::pairType

index range

Definition at line 46 of file RangeMap.h.

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
typedef C::pointer edm::RangeMap< ID, C, P >::pointer

pointer type

Definition at line 41 of file RangeMap.h.

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
typedef std::pair<const_iterator, const_iterator> edm::RangeMap< ID, C, P >::range

iterator range

Definition at line 50 of file RangeMap.h.

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
typedef C::reference edm::RangeMap< ID, C, P >::reference

reference type

Definition at line 39 of file RangeMap.h.

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
typedef C::size_type edm::RangeMap< ID, C, P >::size_type

collection size type

Definition at line 37 of file RangeMap.h.

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
typedef C::value_type edm::RangeMap< ID, C, P >::value_type

contained object type

Definition at line 35 of file RangeMap.h.

Constructor & Destructor Documentation

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
edm::RangeMap< ID, C, P >::RangeMap ( )
inline

default constructor

Definition at line 70 of file RangeMap.h.

70 { }

Member Function Documentation

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
C::const_iterator edm::RangeMap< ID, C, P >::begin ( void  ) const
inline

first collection iterator

Definition at line 132 of file RangeMap.h.

Referenced by MuonDetRecHitMixer< T1, T2 >::addRecHits(), edm::RangeMap< int, std::vector< float >, edm::CopyPolicy< float > >::get(), and MuonDetRecHitMixer< T1, T2 >::printHitMapRH().

132 { return collection_.begin(); }
C collection_
stored collection
Definition: RangeMap.h:196
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
C::const_iterator edm::RangeMap< ID, C, P >::end ( void  ) const
inline
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
template<typename CMP >
range edm::RangeMap< ID, C, P >::get ( ID  id,
CMP  comparator 
) const
inline

get range of objects matching a specified identifier with a specified comparator. WARNING: the comparator has to be written in such a way that the std::equal_range function returns a meaningful range. Not properly written comparators may return an unpredictable range. It is recommended to use only comparators provided with CMSSW release.

Definition at line 79 of file RangeMap.h.

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), rrapi.RRApi::columns(), rrapi.RRApi::count(), rrapi.RRApi::data(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), betterConfigParser.BetterConfigParser::getResultingSection(), rrapi.RRApi::report(), rrapi.RRApi::reports(), FastElectronSeedGenerator::run(), rrapi.RRApi::tables(), rrapi.RRApi::tags(), rrapi.RRApi::templates(), and rrapi.RRApi::workspaces().

79  {
80  using namespace __gnu_cxx;
81  std::pair<typename mapType::const_iterator,
82  typename mapType::const_iterator> r =
83  std::equal_range(map_.begin(), map_.end(), id, comp<CMP>(comparator));
85  if ((r.first) == map_.end()){
86  begin = end = collection_.end();
87  return std::make_pair(begin,end);
88  } else {
89  begin = collection_.begin() + (r.first)->second.first;
90  }
91  if ((r.second) == map_.end()){
92  end = collection_.end();
93  }else{
94  end = collection_.begin() + (r.second)->second.first;
95  }
96  return std::make_pair(begin,end);
97  }
C collection_
stored collection
Definition: RangeMap.h:196
mapType map_
identifier map
Definition: RangeMap.h:198
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:132
U second(std::pair< T, U > const &p)
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:43
C::const_iterator end() const
last collection iterator
Definition: RangeMap.h:134
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
template<typename CMP >
range edm::RangeMap< ID, C, P >::get ( std::pair< ID, CMP >  p) const
inline
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
range edm::RangeMap< ID, C, P >::get ( ID  id) const
inline

get a range of objects with specified identifier

Definition at line 104 of file RangeMap.h.

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), rrapi.RRApi::columns(), rrapi.RRApi::count(), rrapi.RRApi::data(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), betterConfigParser.BetterConfigParser::getResultingSection(), rrapi.RRApi::report(), rrapi.RRApi::reports(), rrapi.RRApi::tables(), rrapi.RRApi::tags(), rrapi.RRApi::templates(), and rrapi.RRApi::workspaces().

104  {
106  typename mapType::const_iterator i = map_.find(id);
107  if (i != map_.end()) {
108  begin = collection_.begin() + i->second.first;
109  end = collection_.begin() + i->second.second;
110  } else {
111  begin = end = collection_.end();
112  }
113  return std::make_pair(begin, end);
114  }
C collection_
stored collection
Definition: RangeMap.h:196
int i
Definition: DBlmapReader.cc:9
mapType map_
identifier map
Definition: RangeMap.h:198
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:132
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:43
C::const_iterator end() const
last collection iterator
Definition: RangeMap.h:134
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
id_iterator edm::RangeMap< ID, C, P >::id_begin ( ) const
inline

first identifier iterator

Definition at line 171 of file RangeMap.h.

Referenced by edm::RangeMap< int, std::vector< float >, edm::CopyPolicy< float > >::ids().

171 { return id_iterator(map_.begin()); }
mapType map_
identifier map
Definition: RangeMap.h:198
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
id_iterator edm::RangeMap< ID, C, P >::id_end ( ) const
inline

last identifier iterator

Definition at line 173 of file RangeMap.h.

Referenced by edm::RangeMap< int, std::vector< float >, edm::CopyPolicy< float > >::ids().

173 { return id_iterator(map_.end()); }
mapType map_
identifier map
Definition: RangeMap.h:198
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
size_t edm::RangeMap< ID, C, P >::id_size ( ) const
inline

number of contained identifiers

Definition at line 175 of file RangeMap.h.

Referenced by edm::RangeMap< int, std::vector< float >, edm::CopyPolicy< float > >::ids().

175 { return map_.size(); }
mapType map_
identifier map
Definition: RangeMap.h:198
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
std::vector<ID> edm::RangeMap< ID, C, P >::ids ( ) const
inline

indentifier vector

Definition at line 177 of file RangeMap.h.

Referenced by FastElectronSeedGenerator::run().

177  {
178  std::vector<ID> temp(id_size());
179  std::copy(id_begin(), id_end(), temp.begin());
180  return temp;
181  }
id_iterator id_begin() const
first identifier iterator
Definition: RangeMap.h:171
id_iterator id_end() const
last identifier iterator
Definition: RangeMap.h:173
size_t id_size() const
number of contained identifiers
Definition: RangeMap.h:175
template<typename ID , typename C , typename P >
RangeMap< ID, C, P > & edm::RangeMap< ID, C, P >::operator= ( RangeMap< ID, C, P > const &  rhs)
inline

copy assignment

Definition at line 212 of file RangeMap.h.

References edm::RangeMap< ID, C, P >::swap(), and groupFilesInBlocks::temp.

212  {
213  RangeMap<ID, C, P> temp(rhs);
214  this->swap(temp);
215  return *this;
216  }
void swap(RangeMap< ID, C, P > &other)
swap member function
Definition: RangeMap.h:204
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
reference edm::RangeMap< ID, C, P >::operator[] ( size_type  i)
inline

direct access to an object in the collection

Definition at line 183 of file RangeMap.h.

183 { return collection_[ i ]; }
C collection_
stored collection
Definition: RangeMap.h:196
int i
Definition: DBlmapReader.cc:9
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
void edm::RangeMap< ID, C, P >::post_insert ( )
inline

perfor post insert action

Definition at line 156 of file RangeMap.h.

156  {
157  // sorts the container via ID
158  C tmp;
159  for (typename mapType::iterator it = map_.begin(), itEnd = map_.end(); it != itEnd; it ++) {
160  range r = get((*it).first);
161  //do cast to acknowledge that we may be going from a larger type to a smaller type but we are OK
162  unsigned int begIt = static_cast<unsigned int>(tmp.size());
163  for(const_iterator i = r.first; i != r.second; ++i)
164  tmp.push_back(P::clone(*i));
165  unsigned int endIt = static_cast<unsigned int>(tmp.size());
166  it->second = pairType(begIt, endIt);
167  }
168  collection_ = tmp;
169  }
C collection_
stored collection
Definition: RangeMap.h:196
int i
Definition: DBlmapReader.cc:9
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:50
mapType map_
identifier map
Definition: RangeMap.h:198
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:43
std::pair< unsigned int, unsigned int > pairType
index range
Definition: RangeMap.h:46
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
template<typename CI >
void edm::RangeMap< ID, C, P >::put ( ID  id,
CI  begin,
CI  end 
)
inline

insert an object range with specified identifier

Definition at line 117 of file RangeMap.h.

Referenced by SiTrackerGaussianSmearingRecHitConverter::loadClusters(), SiTrackerGaussianSmearingRecHitConverter::loadMatchedRecHits(), TrackingRecHitTranslator::loadRecHits(), and SiTrackerGaussianSmearingRecHitConverter::loadRecHits().

117  {
118  typename mapType::const_iterator i = map_.find(id);
119  if(i != map_.end()) {
120  throw Exception(errors::LogicError, "trying to insert duplicate entry");
121  }
122  assert(i == map_.end());
123  pairType & p = map_[ id ];
124  p.first = collection_.size();
125  for(CI i = begin; i != end; ++i)
126  collection_.push_back(P::clone(*i));
127  p.second = collection_.size();
128  }
C collection_
stored collection
Definition: RangeMap.h:196
int i
Definition: DBlmapReader.cc:9
mapType map_
identifier map
Definition: RangeMap.h:198
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:132
std::pair< unsigned int, unsigned int > pairType
index range
Definition: RangeMap.h:46
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
C::const_iterator end() const
last collection iterator
Definition: RangeMap.h:134
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
size_t edm::RangeMap< ID, C, P >::size ( void  ) const
inline

return number of contained object

Definition at line 130 of file RangeMap.h.

Referenced by FastElectronSeedGenerator::run().

130 { return collection_.size(); }
C collection_
stored collection
Definition: RangeMap.h:196
template<typename ID, typename C, typename P>
void edm::RangeMap< ID, C, P >::swap ( RangeMap< ID, C, P > &  other)
inline

swap member function

Definition at line 204 of file RangeMap.h.

Referenced by edm::RangeMap< ID, C, P >::operator=(), and edm::swap().

204  {
205  collection_.swap(other.collection_);
206  map_.swap(other.map_);
207  }
C collection_
stored collection
Definition: RangeMap.h:196
mapType map_
identifier map
Definition: RangeMap.h:198

Member Data Documentation

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
C edm::RangeMap< ID, C, P >::collection_
private
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
mapType edm::RangeMap< ID, C, P >::map_
private