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 35 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 46 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 51 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 49 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 44 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 53 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 42 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 40 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 38 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 73 of file RangeMap.h.

73 { }

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

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

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

Referenced by Options.Options::__getitem__(), and FastElectronSeedGenerator::run().

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

get range of objects matching a specified identifier with a specified comparator.

Definition at line 103 of file RangeMap.h.

Referenced by Options.Options::__getitem__().

103  {
104  return get(p.first, p.second);
105  }
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 107 of file RangeMap.h.

Referenced by Options.Options::__getitem__().

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

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

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

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

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

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

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

Referenced by FastElectronSeedGenerator::run().

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

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

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

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

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

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

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

Referenced by CSCOfflineMonitor::doRecHits(), CSCValidation::doRecHits(), CSCValidation::findNonAssociatedRecHits(), and FastElectronSeedGenerator::run().

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

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

208  {
209  collection_.swap(other.collection_);
210  map_.swap(other.map_);
211  }
C collection_
stored collection
Definition: RangeMap.h:200
mapType map_
identifier map
Definition: RangeMap.h:202

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