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...
 
range get (ID id) const
 get a range of objects with specified identifier 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...
 
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

◆ const_iterator

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.

◆ mapType

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.

◆ pairType

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.

◆ pointer

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.

◆ range

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.

◆ reference

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.

◆ size_type

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.

◆ value_type

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

◆ RangeMap()

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

default constructor

Definition at line 66 of file RangeMap.h.

66 {}

Member Function Documentation

◆ begin()

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

126 { return collection_.begin(); }

Referenced by edm::RangeMap< det_id_type, edm::OwnVector< B > >::get(), and edm::RangeMap< det_id_type, edm::OwnVector< B > >::put().

◆ Class_Version()

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

203 :

◆ end()

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

◆ get() [1/3]

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

◆ get() [2/3]

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

75  {
76  std::pair<typename mapType::const_iterator, typename mapType::const_iterator> r =
77  std::equal_range(map_.begin(), map_.end(), id, comp<CMP>(comparator));
79  if ((r.first) == map_.end()) {
80  begin = end = collection_.end();
81  return std::make_pair(begin, end);
82  } else {
83  begin = collection_.begin() + (r.first)->second.first;
84  }
85  if ((r.second) == map_.end()) {
86  end = collection_.end();
87  } else {
88  end = collection_.begin() + (r.second)->second.first;
89  }
90  return std::make_pair(begin, end);
91  }

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), util.rrapi.RRApi::columns(), rrapi.RRApi::columns(), rrapi.RRApi::count(), util.rrapi.RRApi::count(), rrapi.RRApi::data(), util.rrapi.RRApi::data(), edm::RangeMap< det_id_type, edm::OwnVector< B > >::get(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), betterConfigParser.BetterConfigParser::getResultingSection(), edm::RangeMap< det_id_type, edm::OwnVector< B > >::post_insert(), util.rrapi.RRApi::report(), rrapi.RRApi::report(), rrapi.RRApi::reports(), util.rrapi.RRApi::reports(), rrapi.RRApi::tables(), util.rrapi.RRApi::tables(), util.rrapi.RRApi::tags(), rrapi.RRApi::tags(), util.rrapi.RRApi::templates(), rrapi.RRApi::templates(), util.rrapi.RRApi::workspaces(), and rrapi.RRApi::workspaces().

◆ get() [3/3]

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

◆ id_begin()

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

180 { return id_iterator(map_.begin()); }

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

◆ id_end()

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

182 { return id_iterator(map_.end()); }

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

◆ id_size()

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

184 { return map_.size(); }

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

◆ ids()

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

186  {
187  std::vector<ID> temp(id_size());
188  std::copy(id_begin(), id_end(), temp.begin());
189  return temp;
190  }

◆ operator=()

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

217  {
218  RangeMap<ID, C, P> temp(rhs);
219  this->swap(temp);
220  return *this;
221  }

◆ operator[]()

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

192 { return collection_[i]; }

◆ post_insert()

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

165  {
166  // sorts the container via ID
167  C tmp;
168  for (typename mapType::iterator it = map_.begin(), itEnd = map_.end(); it != itEnd; it++) {
169  range r = get((*it).first);
170  //do cast to acknowledge that we may be going from a larger type to a smaller type but we are OK
171  unsigned int begIt = static_cast<unsigned int>(tmp.size());
172  for (const_iterator i = r.first; i != r.second; ++i)
173  tmp.push_back(P::clone(*i));
174  unsigned int endIt = static_cast<unsigned int>(tmp.size());
175  it->second = pairType(begIt, endIt);
176  }
177  collection_ = tmp;
178  }

◆ put()

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

111  {
112  typename mapType::const_iterator i = map_.find(id);
113  if (i != map_.end()) {
114  throw Exception(errors::LogicError, "trying to insert duplicate entry");
115  }
116  assert(i == map_.end());
117  pairType& p = map_[id];
118  p.first = collection_.size();
119  for (CI ii = begin; ii != end; ++ii)
120  collection_.push_back(P::clone(*ii));
121  p.second = collection_.size();
122  }

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

◆ size()

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

124 { return collection_.size(); }

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

◆ swap()

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

211  {
212  collection_.swap(other.collection_);
213  map_.swap(other.map_);
214  }

Referenced by edm::RangeMap< det_id_type, edm::OwnVector< B > >::operator=().

Member Data Documentation

◆ collection_

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

◆ map_

template<typename ID, typename C, typename P = typename clonehelper::CloneTrait<C>::type>
mapType edm::RangeMap< ID, C, P >::map_
private
mps_fire.i
i
Definition: mps_fire.py:355
edm::RangeMap::id_end
id_iterator id_end() const
last identifier iterator
Definition: RangeMap.h:182
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
edm::errors::LogicError
Definition: EDMException.h:37
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::RangeMap::collection_
C collection_
stored collection
Definition: RangeMap.h:205
edm::RangeMap::id_size
size_t id_size() const
number of contained identifiers
Definition: RangeMap.h:184
cms::cuda::assert
assert(be >=bs)
edm::RangeMap::begin
C::const_iterator begin() const
first collection iterator
Definition: RangeMap.h:126
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:215
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
clone
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
edm::RangeMap::get
range get(ID id, CMP comparator) const
Definition: RangeMap.h:75
trackingPlots.other
other
Definition: trackingPlots.py:1465
edm::RangeMap::swap
void swap(RangeMap< ID, C, P > &other)
swap member function
Definition: RangeMap.h:211
edm::RangeMap::map_
mapType map_
identifier map
Definition: RangeMap.h:207
edm::RangeMap::end
C::const_iterator end() const
last collection iterator
Definition: RangeMap.h:128
edm::RangeMap::const_iterator
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:43
alignCSCRings.r
r
Definition: alignCSCRings.py:93
edm::RangeMap::range
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:50
edm::RangeMap::id_begin
id_iterator id_begin() const
first identifier iterator
Definition: RangeMap.h:180
gen::C
C
Definition: PomwigHadronizer.cc:76
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
Exception
Definition: hltDiff.cc:246
edm::RangeMap::pairType
std::pair< unsigned int, unsigned int > pairType
index range
Definition: RangeMap.h:46
cuy.ii
ii
Definition: cuy.py:590