CMS 3D CMS Logo

RecoCollectionFP420.cc
Go to the documentation of this file.
1 // File: RecoCollectionFP420.cc
3 // Date: 11.2007
4 // Description: RecoCollectionFP420 for FP420
5 // Modifications:
8 #include <algorithm>
9 #include <iostream>
10 using namespace std;
11 //#define mydigidebug
12 
14  // put in RecHits of stationID
15 
16  // store size of vector before put
18 
19  // put in RecoFP420s from input
20  bool first = true;
21 
22  // fill input in temporary vector for sorting
23  std::vector<RecoFP420> temporary;
24  RecoCollectionFP420::ContainerIterator sort_begin = input.first;
25  RecoCollectionFP420::ContainerIterator sort_end = input.second;
26 #ifdef mydigidebug
27  std::cout <<" !!!!!!!!!!!!!!!! RecoCollectionFP420:: !!!! put !!!! start " << std::endl;
28 #endif
29  for ( ;sort_begin != sort_end; ++sort_begin ) {
30 #ifdef mydigidebug
31  std::cout <<"put: temporary.push_back " << std::endl;
32 #endif
33  temporary.push_back(*sort_begin);
34  }
35  std::sort(temporary.begin(),temporary.end());
36 
37  // iterators over input
40  for ( ;begin != end; ++begin ) {
41  container_.push_back(*begin);
42  if ( first ) {
43  inputRange.first = container_.size()-1;
44  // inputRange.first = container_.size();
45  first = false;
46  }
47  }
48 
49  // since we start from 0, then the last element will be size-1
50  if(!container_.empty()) {
51  inputRange.second = container_.size()-1;
52  }
53  else {
54  inputRange.first = container_.size();
55  inputRange.second = container_.size();
56  }
57 
58 // inputRange.second = container_.size()-1;
59 // //inputRange.second = container_.size();
60 
61 #ifdef mydigidebug
62  std::cout <<"put: container_.size() = " << container_.size() << std::endl;
63  std::cout <<"put: inputRange.first = " << inputRange.first << std::endl;
64  std::cout <<"put: inputRange.second = " << inputRange.second << std::endl;
65 #endif
66 
67  // fill map
68  map_[stationID] = inputRange;
69 
70 }
71 
72 const RecoCollectionFP420::Range RecoCollectionFP420::get(unsigned int stationID) const {
73  // get RecHits of stationID
74 
75 #ifdef mydigidebug
76 std::cout <<"RecoCollectionFP420::get:stationID= " << stationID << std::endl;
77 #endif
78  RecoCollectionFP420::RegistryIterator returnIndex = map_.find(stationID);
79  RecoCollectionFP420::IndexRange returnIndexRange = returnIndex->second;
80 #ifdef mydigidebug
81  std::cout <<"RecoCollectionFP420::get1: returnIndexRange.first= " << returnIndexRange.first << std::endl;
82  std::cout <<"RecoCollectionFP420::get1: returnIndexRange.second= " << returnIndexRange.second << std::endl;
83 #endif
84 
85  RecoCollectionFP420::Range returnRange;
86  returnRange.first = container_.begin()+returnIndexRange.first;
87  if(returnIndexRange.second != 0 ) {
88  returnRange.second = container_.begin()+returnIndexRange.second+1;
89  }else{
90  returnRange.second = container_.begin()+returnIndexRange.second;
91  }
92 #ifdef mydigidebug
93  std::cout <<"RecoCollectionFP420::get2: container_.size() = " << container_.size() << std::endl;
94  std::cout <<"RecoCollectionFP420::get2: returnIndexRange.first= " << returnIndexRange.first << std::endl;
95  std::cout <<"RecoCollectionFP420::get2: returnIndexRange.second= " << returnIndexRange.second << std::endl;
96 #endif
97  return returnRange;
98 }
99 
100 
101 
103 container_.clear();
104 }
106 
108 
109  std::vector<RecoFP420> temporary;
110  RecoCollectionFP420::ContainerIterator sort_begin = input.first;
111  RecoCollectionFP420::ContainerIterator sort_end = input.second;
112  for ( ;sort_begin != sort_end; ++sort_begin ) {
113  temporary.push_back(*sort_begin);
114  }
115  std::sort(temporary.begin(),temporary.end());
116 
117  // temporary.clear();
118  RecoCollectionFP420::ContainerIterator begin = temporary.begin();
120  for ( ;begin != end; ++begin ) {
121  container_.push_back(*begin);
122  }
123  //container_.clear();
124  inputRange.first = container_.size()-container_.size();
125  inputRange.second = container_.size()-container_.size();
126 
127 #ifdef mydigidebug
128  std::cout <<"putclear: container_.size() = " << container_.size() << std::endl;
129  std::cout <<"putclear: inputRange.first = " << inputRange.first << std::endl;
130  std::cout <<"putclear: inputRange.second = " << inputRange.second << std::endl;
131 #endif
132 
133 
134  map_[stationID] = inputRange;
135 }
136 
137 
138 
139 
140 
141 
142 const std::vector<unsigned int> RecoCollectionFP420::stationIDs() const {
143  // returns vector of stationIDs in map
144 
145 #ifdef mydigidebug
146 std::cout <<"RecoCollectionFP420::stationIDs:start " << std::endl;
147 #endif
150 
151  std::vector<unsigned int> output;
152 
153  for (; begin != end; ++begin) {
154  output.push_back(begin->first);
155  }
156 
157  return output;
158 
159 }
Map map_
std::pair< ContainerIterator, ContainerIterator > Range
static std::string const input
Definition: EdmProvDump.cc:44
std::vector< RecoFP420 >::const_iterator ContainerIterator
const Range get(unsigned int stationID) const
#define end
Definition: vmac.h:37
const std::vector< unsigned int > stationIDs() const
void putclear(Range input, unsigned int stationID)
void put(Range input, unsigned int stationID)
std::pair< unsigned int, unsigned int > IndexRange
#define begin
Definition: vmac.h:30
inputRange
Get input source.
std::map< unsigned int, IndexRange >::const_iterator RegistryIterator