1 #ifndef DataFormats_MuonDigiCollection_h 2 #define DataFormats_MuonDigiCollection_h 30 template <
typename IndexType,
typename DigiType>
37 typedef std::pair<IndexType, std::pair<DigiRangeIterator, DigiRangeIterator> >
value_type;
61 return std::make_pair(
base_->first, std::make_pair(
base_->second.begin(),
base_->second.end()));
87 template <
typename IndexType,
typename DigiType>
96 typedef typename std::pair<const_iterator, const_iterator>
Range;
100 std::vector<DigiType>& digis = data_[
index];
101 digis.push_back(digi);
106 std::vector<DigiType>& digis = data_[
index];
107 digis.reserve(digis.size() + (range.second - range.first));
108 std::copy(range.first, range.second, std::back_inserter(digis));
112 template <
typename IRange>
115 std::vector<DigiType>& digis = data_[
index];
116 digis.reserve(digis.size() + (range.second - range.first));
117 digis.insert(digis.end(), std::make_move_iterator(range.first), std::make_move_iterator(range.second));
122 Range
get(
const IndexType&
index)
const {
123 typename container::const_iterator it = data_.find(index);
124 if (it == data_.end()) {
126 static const std::vector<DigiType>
empty;
127 return std::make_pair(empty.end(), empty.end());
129 const std::vector<DigiType>& digis = (*it).second;
130 return std::make_pair(digis.begin(), digis.end());
135 DigiRangeIterator
begin()
const {
return data_.begin(); }
137 DigiRangeIterator
end()
const {
return data_.end(); }
140 typedef std::map<IndexType, std::vector<DigiType> >
container;
145 template <
typename IndexType,
typename DigiType>
std::vector< DigiType >::const_iterator DigiRangeIterator
void swap(MuonDigiCollection &rh)
DigiContainerIterator< IndexType, DigiType > DigiRangeIterator
void swap(MuonDigiCollection< IndexType, DigiType > &rh, MuonDigiCollection< IndexType, DigiType > &lh)
std::map< IndexType, std::vector< DigiType > > BaseContainer
DigiContainerIterator(void)
void insertDigi(const IndexType &index, const DigiType &digi)
insert a digi for a given DetUnit
value_type operator*(void) const
DigiRangeIterator::iterator_category iterator_category
DigiRangeIterator::difference_type difference_type
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
std::map< IndexType, std::vector< DigiType > > container
bool operator==(const DigiContainerIterator &x) const
bool operator!=(const DigiContainerIterator &x) const
std::pair< IndexType, std::pair< DigiRangeIterator, DigiRangeIterator > > value_type
std::pair< const_iterator, const_iterator > Range
std::vector< DigiType >::const_iterator const_iterator
DigiContainerIterator operator++(int)
DigiContainerIterator(BaseIterator i)
DigiRangeIterator end() const
BaseContainer::const_iterator BaseIterator
void put(Range range, const IndexType &index)
insert a range of digis for a given DetUnit
DigiContainerIterator & operator++(void)
DigiRangeIterator begin() const
A container for a generic type of digis indexed by some index, implemented with a map<IndexType...