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;
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
40  DigiCollectionFP420::ContainerIterator begin = temporary.begin();
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  } else {
58  inputRange.first = container_.size();
59  inputRange.second = container_.size();
60  }
61 #ifdef mydigidebug
62  std::cout << "digi put: container_.size() = " << container_.size() << std::endl;
63  std::cout << "digi put: inputRange.first = " << inputRange.first << std::endl;
64  std::cout << "digi put: inputRange.second = " << inputRange.second << std::endl;
65 #endif
66 
67  // fill map
68  map_[detID] = inputRange;
69 }
70 
74 
75  std::vector<HDigiFP420> temporary;
78  for (; sort_begin != sort_end; ++sort_begin) {
79  temporary.push_back(*sort_begin);
80  }
81  std::sort(temporary.begin(), temporary.end());
82 
83  // temporary.clear();
84  DigiCollectionFP420::ContainerIterator begin = temporary.begin();
86  for (; begin != end; ++begin) {
87  container_.push_back(*begin);
88  }
89  //container_.clear();
90  inputRange.first = container_.size() - container_.size();
91  inputRange.second = container_.size() - container_.size();
92 
93 #ifdef mydigidebug
94  std::cout << "digi putclear: container_.size() = " << container_.size() << std::endl;
95  std::cout << "digi putclear: inputRange.first = " << inputRange.first << std::endl;
96  std::cout << "digi putclear: inputRange.second = " << inputRange.second << std::endl;
97 #endif
98 
99  map_[detID] = inputRange;
100 }
101 
102 const DigiCollectionFP420::Range DigiCollectionFP420::get(unsigned int detID) const {
103  // get Digis of detID
104 
105 #ifdef mydigidebug
106  std::cout << "DigiCollectionFP420::get1:detID= " << detID << std::endl;
107 #endif
108  auto found = map_.find(detID);
109  if (found == map_.end()) {
110  return DigiCollectionFP420::Range{container_.begin(), container_.begin()};
111  }
112 
113  DigiCollectionFP420::IndexRange returnIndexRange = found->second;
114  //
115  DigiCollectionFP420::Range returnRange;
116  returnRange.first = container_.begin() + returnIndexRange.first;
117  if (returnIndexRange.second != 0) {
118  returnRange.second = container_.begin() + returnIndexRange.second + 1;
119  } else {
120  returnRange.second = container_.begin() + returnIndexRange.second;
121  }
122 
123 #ifdef mydigidebug
124  std::cout << "digi get1: container_.size() = " << container_.size() << std::endl;
125  std::cout << "digi get1: returnIndexRange.first= " << returnIndexRange.first << std::endl;
126  std::cout << "digi get1: returnIndexRange.second= " << returnIndexRange.second << std::endl;
127 #endif
128  return returnRange;
129 }
130 
131 const DigiCollectionFP420::Range DigiCollectionFP420::get1(unsigned int detID) const {
132  // get Digis of detID
133 
134 #ifdef mydigidebug
135  std::cout << "DigiCollectionFP420::get :detID= " << detID << std::endl;
136 #endif
137  DigiCollectionFP420::RegistryIterator returnIndex = map_.find(detID);
138  DigiCollectionFP420::IndexRange returnIndexRange = returnIndex->second;
139 #ifdef mydigidebug
140  std::cout << "DigiCollectionFP420::get : returnIndexRange.first= " << returnIndexRange.first << std::endl;
141  std::cout << "DigiCollectionFP420::get : returnIndexRange.second= " << returnIndexRange.second << std::endl;
142 #endif
143 
144  DigiCollectionFP420::Range returnRange;
145  returnRange.first = container_.begin() + returnIndexRange.first;
146  if (returnIndexRange.second != 0) {
147  returnRange.second = container_.begin() + returnIndexRange.second + 1;
148  } else {
149  returnRange.second = container_.begin() + returnIndexRange.second;
150  }
151 #ifdef mydigidebug
152  std::cout << "DigiCollectionFP420::get : container_.size() = " << container_.size() << std::endl;
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  return returnRange;
157 }
158 
159 const std::vector<unsigned int> DigiCollectionFP420::detIDs() const {
160  // returns vector of detIDs in map
161 
164 
165 #ifdef mydigidebug
166  std::cout << "DigiCollectionFP420::detIDs:start " << std::endl;
167 #endif
168  std::vector<unsigned int> output;
169 
170  for (; begin != end; ++begin) {
171  output.push_back(begin->first);
172  }
173 
174  return output;
175 }
176 
177 // -----------------------------------------------------------------------------
178 // Appends HDigiFP420s to the vector of the given DetId.
179 void DigiCollectionFP420::add(unsigned int& det_id, std::vector<HDigiFP420>& digis) {
180 #ifdef mydigidebug
181  std::cout << "DigiCollectionFP420::add: det_id= " << det_id << std::endl;
182 #endif
183  digiMap_[det_id].reserve(digiMap_[det_id].size() + digis.size());
184  if (digiMap_[det_id].empty()) {
185  digiMap_[det_id] = digis;
186  } else {
187  copy(digis.begin(), digis.end(), back_inserter(digiMap_[det_id]));
188  }
189 }
190 
191 // -----------------------------------------------------------------------------
192 // Returns (by reference) all Digis for a given DetId.
193 void DigiCollectionFP420::digis(unsigned int& det_id, std::vector<HDigiFP420>& digis) const {
194 #ifdef mydigidebug
195  std::cout << "DigiCollectionFP420::digis:det_id= " << det_id << std::endl;
196 #endif
197  auto found = digiMap_.find(det_id);
198  if (found != digiMap_.end()) {
199  digis = found->second;
200  } else {
201  digis = std::vector<HDigiFP420>();
202  }
203 }
204 
205 // -----------------------------------------------------------------------------
206 // Returns (by reference) vector of DetIds with Digis.
207 void DigiCollectionFP420::detIDs(std::vector<unsigned int>& det_ids) const {
208  det_ids.clear();
209  det_ids.reserve(static_cast<unsigned int>(digiMap_.size()));
210 #ifdef mydigidebug
211  std::cout << "DigiCollectionFP420:: detIDs: digiMap size= " << digiMap_.size() << std::endl;
212 #endif
213  HDigiFP420Container::const_iterator iter;
214  for (iter = digiMap_.begin(); iter != digiMap_.end(); iter++) {
215  det_ids.push_back(iter->first);
216  }
217 }
const Range get(unsigned int detID) const
size
Write out results.
void digis(unsigned int &det_id, std::vector< HDigiFP420 > &digis) const
std::vector< HDigiFP420 >::const_iterator ContainerIterator
const std::vector< unsigned int > detIDs() const
std::pair< unsigned int, unsigned int > IndexRange
static std::string const input
Definition: EdmProvDump.cc:47
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)
HDigiFP420Container digiMap_
std::pair< ContainerIterator, ContainerIterator > Range
std::vector< HDigiFP420 > container_
const Range get1(unsigned int detID) const