CMS 3D CMS Logo

DigiCollectionFP420.cc
Go to the documentation of this file.
1 // File: DigiCollectionFP420.cc
3 // Date: 12.2006
4 // Description: DigiCollectionFP420 for FP420
5 // Modifications:
7 //#include "SimRomanPot/SimFP420/interface/DigiCollectionFP420.h"
8 //#include "SimRomanPot/DataFormats/interface/DigiCollectionFP420.h"
10 
11 #include <algorithm>
12 //#include <iostream>
13 //#define mydigidebug
14 
15 void DigiCollectionFP420::put(Range input, unsigned int detID) {
16  // put in Digis of detID
17 
18  // store size of vector before put
20 
21  // put in HDigiFP420s from input
22  bool first = true;
23 
24  // fill input in temporary vector for sorting
25  std::vector<HDigiFP420> temporary;
26  DigiCollectionFP420::ContainerIterator sort_begin = input.first;
27  DigiCollectionFP420::ContainerIterator sort_end = input.second;
28 #ifdef mydigidebug
29  std::cout <<" !!!!!!!!!!!!!!!! DigiCollectionFP420:: !!!! put !!!! start detID=" << detID << std::endl;
30 #endif
31  for ( ;sort_begin != sort_end; ++sort_begin ) {
32  temporary.push_back(*sort_begin);
33 #ifdef mydigidebug
34  std::cout <<"digi put: temporary.push_back " << std::endl;
35 #endif
36  } // for
37  std::sort(temporary.begin(),temporary.end());
38 
39  // iterators over input
42  for ( ;begin != end; ++begin ) {
43  container_.push_back(*begin);
44  if ( first ) {
45  inputRange.first = container_.size()-1;
46 #ifdef mydigidebug
47  std::cout <<"digi put:first container_.size() = " << container_.size() << std::endl;
48  std::cout <<"digi put:first inputRange.first = " << inputRange.first << std::endl;
49 #endif
50  first = false;
51  } // if
52  } //for
53 
54  // since we start from 0, then the last element will be size-1
55  if(!container_.empty()) {
56  inputRange.second = container_.size()-1;
57  }
58  else {
59  inputRange.first = container_.size();
60  inputRange.second = container_.size();
61  }
62 #ifdef mydigidebug
63  std::cout <<"digi put: container_.size() = " << container_.size() << std::endl;
64  std::cout <<"digi put: inputRange.first = " << inputRange.first << std::endl;
65  std::cout <<"digi put: inputRange.second = " << inputRange.second << std::endl;
66 #endif
67 
68  // fill map
69  map_[detID] = inputRange;
70 
71 }
72 
73 
75  container_.clear();
76 }
78 
80 
81  std::vector<HDigiFP420> temporary;
82  DigiCollectionFP420::ContainerIterator sort_begin = input.first;
83  DigiCollectionFP420::ContainerIterator sort_end = input.second;
84  for ( ;sort_begin != sort_end; ++sort_begin ) {
85  temporary.push_back(*sort_begin);
86  }
87  std::sort(temporary.begin(),temporary.end());
88 
89  // temporary.clear();
92  for ( ;begin != end; ++begin ) {
93  container_.push_back(*begin);
94  }
95  //container_.clear();
96  inputRange.first = container_.size()-container_.size();
97  inputRange.second = container_.size()-container_.size();
98 
99 #ifdef mydigidebug
100  std::cout <<"digi putclear: container_.size() = " << container_.size() << std::endl;
101  std::cout <<"digi putclear: inputRange.first = " << inputRange.first << std::endl;
102  std::cout <<"digi putclear: inputRange.second = " << inputRange.second << std::endl;
103 #endif
104 
105 
106  map_[detID] = inputRange;
107 }
108 
109 
110 
111 
112 
113 
114 const DigiCollectionFP420::Range DigiCollectionFP420::get(unsigned int detID) const {
115  // get Digis of detID
116 
117 #ifdef mydigidebug
118  std::cout <<"DigiCollectionFP420::get1:detID= " << detID << std::endl;
119 #endif
120  auto found = map_.find(detID);
121  if(found == map_.end()) {
122  return DigiCollectionFP420::Range{container_.begin(),container_.begin()};
123  }
124 
125  DigiCollectionFP420::IndexRange returnIndexRange = found->second;
126  //
127  DigiCollectionFP420::Range returnRange;
128  returnRange.first = container_.begin()+returnIndexRange.first;
129  if(returnIndexRange.second != 0 ) {
130  returnRange.second = container_.begin()+returnIndexRange.second+1;
131  }else{
132  returnRange.second = container_.begin()+returnIndexRange.second;
133  }
134 
135 #ifdef mydigidebug
136  std::cout <<"digi get1: container_.size() = " << container_.size() << std::endl;
137  std::cout <<"digi get1: returnIndexRange.first= " << returnIndexRange.first << std::endl;
138  std::cout <<"digi get1: returnIndexRange.second= " << returnIndexRange.second << std::endl;
139 #endif
140  return returnRange;
141 }
142 
143 
144 const DigiCollectionFP420::Range DigiCollectionFP420::get1(unsigned int detID) const {
145  // get Digis of detID
146 
147 #ifdef mydigidebug
148  std::cout <<"DigiCollectionFP420::get :detID= " << detID << std::endl;
149 #endif
150  DigiCollectionFP420::RegistryIterator returnIndex = map_.find(detID);
151  DigiCollectionFP420::IndexRange returnIndexRange = returnIndex->second;
152 #ifdef mydigidebug
153  std::cout <<"DigiCollectionFP420::get : returnIndexRange.first= " << returnIndexRange.first << std::endl;
154  std::cout <<"DigiCollectionFP420::get : returnIndexRange.second= " << returnIndexRange.second << std::endl;
155 #endif
156 
157  DigiCollectionFP420::Range returnRange;
158  returnRange.first = container_.begin()+returnIndexRange.first;
159  if(returnIndexRange.second != 0 ) {
160  returnRange.second = container_.begin()+returnIndexRange.second+1;
161  }else{
162  returnRange.second = container_.begin()+returnIndexRange.second;
163  }
164 #ifdef mydigidebug
165  std::cout <<"DigiCollectionFP420::get : container_.size() = " << container_.size() << std::endl;
166  std::cout <<"DigiCollectionFP420::get : returnIndexRange.first= " << returnIndexRange.first << std::endl;
167  std::cout <<"DigiCollectionFP420::get : returnIndexRange.second= " << returnIndexRange.second << std::endl;
168 #endif
169  return returnRange;
170 }
171 
172 
173 
174 
175 
176 
177 
178 const std::vector<unsigned int> DigiCollectionFP420::detIDs() const {
179  // returns vector of detIDs in map
180 
183 
184 #ifdef mydigidebug
185  std::cout <<"DigiCollectionFP420::detIDs:start " << std::endl;
186 #endif
187  std::vector<unsigned int> output;
188 
189  for (; begin != end; ++begin) {
190  output.push_back(begin->first);
191  }
192 
193  return output;
194 
195 }
196 
197 // -----------------------------------------------------------------------------
198 // Appends HDigiFP420s to the vector of the given DetId.
199 void DigiCollectionFP420::add( unsigned int& det_id,
200  std::vector<HDigiFP420>& digis ) {
201 
202 #ifdef mydigidebug
203  std::cout <<"DigiCollectionFP420::add: det_id= " << det_id << std::endl;
204 #endif
205  digiMap_[det_id].reserve( digiMap_[det_id].size() + digis.size() );
206  if ( digiMap_[det_id].empty() ) {
207  digiMap_[det_id] = digis;
208  } else {
209  copy( digis.begin(), digis.end(), back_inserter(digiMap_[det_id]) );
210  }
211 }
212 
213 // -----------------------------------------------------------------------------
214 // Returns (by reference) all Digis for a given DetId.
215 void DigiCollectionFP420::digis( unsigned int& det_id,
216  std::vector<HDigiFP420>& digis ) const {
217 #ifdef mydigidebug
218  std::cout <<"DigiCollectionFP420::digis:det_id= " << det_id << std::endl;
219 #endif
220  auto found = digiMap_.find( det_id );
221  if ( found != digiMap_.end() ) {
222  digis = found->second;
223  } else {
224  digis = std::vector<HDigiFP420>();
225  }
226 }
227 
228 // -----------------------------------------------------------------------------
229 // Returns (by reference) vector of DetIds with Digis.
230 void DigiCollectionFP420::detIDs( std::vector<unsigned int>& det_ids ) const {
231  det_ids.clear();
232  det_ids.reserve( static_cast<unsigned int>(digiMap_.size()) );
233 #ifdef mydigidebug
234  std::cout <<"DigiCollectionFP420:: detIDs: digiMap size= " << digiMap_.size() << std::endl;
235 #endif
236  HDigiFP420Container::const_iterator iter;
237  for (iter = digiMap_.begin(); iter != digiMap_.end(); iter++ ) {
238  det_ids.push_back( iter->first );
239  }
240 }
size
Write out results.
std::vector< HDigiFP420 >::const_iterator ContainerIterator
const Range get1(unsigned int detID) const
std::pair< unsigned int, unsigned int > IndexRange
void digis(unsigned int &det_id, std::vector< HDigiFP420 > &digis) const
static std::string const input
Definition: EdmProvDump.cc:44
std::map< unsigned int, IndexRange >::const_iterator RegistryIterator
void put(Range input, unsigned int detID)
void add(unsigned int &det_id, std::vector< HDigiFP420 > &digis)
void putclear(Range input, unsigned int detID)
#define end
Definition: vmac.h:39
HDigiFP420Container digiMap_
std::pair< ContainerIterator, ContainerIterator > Range
const std::vector< unsigned int > detIDs() const
std::vector< HDigiFP420 > container_
#define begin
Definition: vmac.h:32
inputRange
Get input source.
const Range get(unsigned int detID) const