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 34 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 45 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 50 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 48 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 43 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 52 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 41 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 39 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 37 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 72 of file RangeMap.h.

72 { }

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 134 of file RangeMap.h.

Referenced by edm::RangeMap< det_id_type, edm::OwnVector< double_binary > >::get().

134 { return collection_.begin(); }
C collection_
stored collection
Definition: RangeMap.h:198
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 81 of file RangeMap.h.

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), betterConfigParser.BetterConfigParser::getResultingSection(), and FastElectronSeedGenerator::run().

81  {
82  using namespace __gnu_cxx;
83  std::pair<typename mapType::const_iterator,
84  typename mapType::const_iterator> r =
85  std::equal_range(map_.begin(), map_.end(), id, comp<CMP>(comparator));
87  if ((r.first) == map_.end()){
88  begin = end = collection_.end();
89  return std::make_pair(begin,end);
90  } else {
91  begin = collection_.begin() + (r.first)->second.first;
92  }
93  if ((r.second) == map_.end()){
94  end = collection_.end();
95  }else{
96  end = collection_.begin() + (r.second)->second.first;
97  }
98  return std::make_pair(begin,end);
99  }
C collection_
stored collection
Definition: RangeMap.h:198
mapType map_
identifier map
Definition: RangeMap.h:200
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:134
U second(std::pair< T, U > const &p)
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:45
C::const_iterator end() const
last collection iterator
Definition: RangeMap.h:136
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 106 of file RangeMap.h.

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), and betterConfigParser.BetterConfigParser::getResultingSection().

106  {
108  typename mapType::const_iterator i = map_.find(id);
109  if (i != map_.end()) {
110  begin = collection_.begin() + i->second.first;
111  end = collection_.begin() + i->second.second;
112  } else {
113  begin = end = collection_.end();
114  }
115  return std::make_pair(begin, end);
116  }
C collection_
stored collection
Definition: RangeMap.h:198
int i
Definition: DBlmapReader.cc:9
mapType map_
identifier map
Definition: RangeMap.h:200
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:134
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:45
C::const_iterator end() const
last collection iterator
Definition: RangeMap.h:136
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 173 of file RangeMap.h.

Referenced by edm::RangeMap< det_id_type, edm::OwnVector< double_binary > >::ids().

173 { return id_iterator(map_.begin()); }
mapType map_
identifier map
Definition: RangeMap.h:200
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 175 of file RangeMap.h.

Referenced by edm::RangeMap< det_id_type, edm::OwnVector< double_binary > >::ids().

175 { return id_iterator(map_.end()); }
mapType map_
identifier map
Definition: RangeMap.h:200
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 177 of file RangeMap.h.

Referenced by edm::RangeMap< det_id_type, edm::OwnVector< double_binary > >::ids().

177 { return map_.size(); }
mapType map_
identifier map
Definition: RangeMap.h:200
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 179 of file RangeMap.h.

Referenced by FastElectronSeedGenerator::run().

179  {
180  std::vector<ID> temp(id_size());
181  std::copy(id_begin(), id_end(), temp.begin());
182  return temp;
183  }
id_iterator id_begin() const
first identifier iterator
Definition: RangeMap.h:173
id_iterator id_end() const
last identifier iterator
Definition: RangeMap.h:175
size_t id_size() const
number of contained identifiers
Definition: RangeMap.h:177
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 214 of file RangeMap.h.

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

214  {
215  RangeMap<ID, C, P> temp(rhs);
216  this->swap(temp);
217  return *this;
218  }
void swap(RangeMap< ID, C, P > &other)
swap member function
Definition: RangeMap.h:206
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 185 of file RangeMap.h.

185 { return collection_[ i ]; }
C collection_
stored collection
Definition: RangeMap.h:198
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 158 of file RangeMap.h.

158  {
159  // sorts the container via ID
160  C tmp;
161  for (typename mapType::iterator it = map_.begin(), itEnd = map_.end(); it != itEnd; it ++) {
162  range r = get((*it).first);
163  //do cast to acknowledge that we may be going from a larger type to a smaller type but we are OK
164  unsigned int begIt = static_cast<unsigned int>(tmp.size());
165  for(const_iterator i = r.first; i != r.second; ++i)
166  tmp.push_back(P::clone(*i));
167  unsigned int endIt = static_cast<unsigned int>(tmp.size());
168  it->second = pairType(begIt, endIt);
169  }
170  collection_ = tmp;
171  }
C collection_
stored collection
Definition: RangeMap.h:198
int i
Definition: DBlmapReader.cc:9
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:52
mapType map_
identifier map
Definition: RangeMap.h:200
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:45
std::pair< unsigned int, unsigned int > pairType
index range
Definition: RangeMap.h:48
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 119 of file RangeMap.h.

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

119  {
120  typename mapType::const_iterator i = map_.find(id);
121  if(i != map_.end()) {
122  throw Exception(errors::LogicError, "trying to insert duplicate entry");
123  }
124  assert(i == map_.end());
125  pairType & p = map_[ id ];
126  p.first = collection_.size();
127  for(CI i = begin; i != end; ++i)
128  collection_.push_back(P::clone(*i));
129  p.second = collection_.size();
130  }
C collection_
stored collection
Definition: RangeMap.h:198
int i
Definition: DBlmapReader.cc:9
mapType map_
identifier map
Definition: RangeMap.h:200
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:134
std::pair< unsigned int, unsigned int > pairType
index range
Definition: RangeMap.h:48
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
C::const_iterator end() const
last collection iterator
Definition: RangeMap.h:136
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 132 of file RangeMap.h.

Referenced by FastElectronSeedGenerator::run().

132 { return collection_.size(); }
C collection_
stored collection
Definition: RangeMap.h:198
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 206 of file RangeMap.h.

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

206  {
207  collection_.swap(other.collection_);
208  map_.swap(other.map_);
209  }
C collection_
stored collection
Definition: RangeMap.h:198
mapType map_
identifier map
Definition: RangeMap.h:200

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