CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Static 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_iteratorrange
 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...
 

Static Public Member Functions

static short Class_Version ()
 

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

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

131 { return collection_.begin(); }
C collection_
stored collection
Definition: RangeMap.h:195
template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
static short edm::RangeMap< ID, C, P >::Class_Version ( )
inlinestatic

Definition at line 191 of file RangeMap.h.

193 :
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(), util.rrapi.RRApi::columns(), rrapi.RRApi::columns(), util.rrapi.RRApi::count(), rrapi.RRApi::count(), rrapi.RRApi::data(), util.rrapi.RRApi::data(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), betterConfigParser.BetterConfigParser::getResultingSection(), rrapi.RRApi::report(), util.rrapi.RRApi::report(), rrapi.RRApi::reports(), util.rrapi.RRApi::reports(), util.rrapi.RRApi::tables(), rrapi.RRApi::tables(), rrapi.RRApi::tags(), util.rrapi.RRApi::tags(), rrapi.RRApi::templates(), util.rrapi.RRApi::templates(), util.rrapi.RRApi::workspaces(), and rrapi.RRApi::workspaces().

79  {
80  std::pair<typename mapType::const_iterator,
81  typename mapType::const_iterator> r =
82  std::equal_range(map_.begin(), map_.end(), id, comp<CMP>(comparator));
84  if ((r.first) == map_.end()){
85  begin = end = collection_.end();
86  return std::make_pair(begin,end);
87  } else {
88  begin = collection_.begin() + (r.first)->second.first;
89  }
90  if ((r.second) == map_.end()){
91  end = collection_.end();
92  }else{
93  end = collection_.begin() + (r.second)->second.first;
94  }
95  return std::make_pair(begin,end);
96  }
C collection_
stored collection
Definition: RangeMap.h:195
mapType map_
identifier map
Definition: RangeMap.h:197
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:131
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:133
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 103 of file RangeMap.h.

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

103  {
105  typename mapType::const_iterator i = map_.find(id);
106  if (i != map_.end()) {
107  begin = collection_.begin() + i->second.first;
108  end = collection_.begin() + i->second.second;
109  } else {
110  begin = end = collection_.end();
111  }
112  return std::make_pair(begin, end);
113  }
C collection_
stored collection
Definition: RangeMap.h:195
mapType map_
identifier map
Definition: RangeMap.h:197
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:131
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:43
C::const_iterator end() const
last collection iterator
Definition: RangeMap.h:133
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 170 of file RangeMap.h.

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

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

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

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

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

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

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

copy assignment

Definition at line 211 of file RangeMap.h.

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

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

211  {
212  RangeMap<ID, C, P> temp(rhs);
213  this->swap(temp);
214  return *this;
215  }
void swap(RangeMap< ID, C, P > &other)
swap member function
Definition: RangeMap.h:203
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 182 of file RangeMap.h.

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

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

Referenced by CSCMake2DRecHit::hitFromStripAndWire(), and edmNew::dstvdetails::ToRM< B >::operator()().

116  {
117  typename mapType::const_iterator i = map_.find(id);
118  if(i != map_.end()) {
119  throw Exception(errors::LogicError, "trying to insert duplicate entry");
120  }
121  assert(i == map_.end());
122  pairType & p = map_[ id ];
123  p.first = collection_.size();
124  for(CI i = begin; i != end; ++i)
125  collection_.push_back(P::clone(*i));
126  p.second = collection_.size();
127  }
C collection_
stored collection
Definition: RangeMap.h:195
mapType map_
identifier map
Definition: RangeMap.h:197
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:131
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:133
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 129 of file RangeMap.h.

Referenced by ntupleDataFormat._Collection::__iter__(), ntupleDataFormat._Collection::__len__(), CSCRecHit2D::CSCRecHit2D(), and CSCMake2DRecHit::hitFromStripAndWire().

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

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

Referenced by edm::RangeMap< ID, C, P >::operator=(), edm::RangeMap< int, std::vector< float >, edm::CopyPolicy< float > >::operator[](), edm::RangeMap< ID, C, P >::swap(), and edm::swap().

203  {
204  collection_.swap(other.collection_);
205  map_.swap(other.map_);
206  }
C collection_
stored collection
Definition: RangeMap.h:195
mapType map_
identifier map
Definition: RangeMap.h:197

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