2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5 #include "LArRecConditions/LArRoIMap.h"
6 #include "LArRawUtils/LArTT_Sampling.h"
8 // Implementation of const_iterator
12 template <class CONTAINER >
13 LArTT_Selector<CONTAINER>::const_iterator::const_iterator
17 m_pair_it = v->begin() ;
18 if(m_pair_it != v->end()){
19 m_obj_it = (*m_pair_it).first ;
20 m_obj_it_end = (*m_pair_it).second ;
26 // constructor for end iterator
27 template <class CONTAINER >
28 LArTT_Selector<CONTAINER>::const_iterator::const_iterator
29 (const VEC_ITPAIR* v, const ITPAIR_IT& it)
37 template <class CONTAINER >
38 LArTT_Selector<CONTAINER>::const_iterator::const_iterator
47 template <class CONTAINER >
48 typename LArTT_Selector<CONTAINER>::const_iterator&
49 LArTT_Selector<CONTAINER>::const_iterator:: operator ++ ()
52 if(m_obj_it == m_obj_it_end) {
53 // end of this RoI, get next RoI
55 if(m_pair_it != m_vec_itpair->end() )
57 m_obj_it = (*m_pair_it).first;
58 m_obj_it_end = (*m_pair_it).second;
67 template <class CONTAINER >
68 typename LArTT_Selector<CONTAINER>::const_iterator
69 LArTT_Selector<CONTAINER>::const_iterator:: operator ++ (int )
71 const_iterator tmp = *this;
78 template <class CONTAINER >
80 LArTT_Selector<CONTAINER>::const_iterator:: operator !=
81 ( const LArTT_Selector<CONTAINER>::const_iterator & it ) const
83 // compare m_pair_it first because for end, m_pair_it is end.
84 if(it.m_pair_it == it.m_vec_itpair->end() )
85 { return m_pair_it != it.m_pair_it ;
88 m_pair_it != it.m_pair_it ||
89 m_obj_it != it.m_obj_it ||
90 m_obj_it_end != it.m_obj_it_end ||
91 m_vec_itpair != it.m_vec_itpair ;
96 template <class CONTAINER >
98 LArTT_Selector<CONTAINER>::const_iterator:: operator ==
99 ( const LArTT_Selector<CONTAINER>::const_iterator & it ) const
101 // compare m_map_it first because for end, m_map_it is end.
103 // if m_pair_it is end, only compare the pair iterator
104 if(m_pair_it == m_vec_itpair->end() )
105 return m_pair_it == it.m_pair_it ;
108 m_pair_it == it.m_pair_it &&
109 m_obj_it == it.m_obj_it &&
110 m_obj_it_end == it.m_obj_it_end &&
111 m_vec_itpair == it.m_vec_itpair ;
116 template <class CONTAINER >
117 const typename LArTT_Selector<CONTAINER>::OBJECT *
118 LArTT_Selector<CONTAINER>::const_iterator:: operator * ()
122 /*************** Implementation of LArTT_Selector<CONTAINER>
127 template <class CONTAINER >
128 LArTT_Selector<CONTAINER> ::LArTT_Selector ( const LArRoIMap* m,
129 const CONTAINER* c ):
138 template <class CONTAINER >
139 void LArTT_Selector<CONTAINER> :: setMap(const LArRoIMap* m) {
144 template <class CONTAINER >
145 void LArTT_Selector<CONTAINER>::setContainer(const CONTAINER* c) {
150 template <class CONTAINER >
151 //void LArTT_Selector<CONTAINER> :: setRoIs( const VEC_TT_ID& ids,
153 void LArTT_Selector<CONTAINER> :: setRoIs ( const VEC_TT_ID& ids)
157 if(m_vecItPair.size() > 0 ) {
158 m_vecItPair.erase(m_vecItPair.begin(), m_vecItPair.end());
161 TT_ID_IT it = ids.begin();
162 TT_ID_IT it_end = ids.end() ;
164 // cout <<" Number of TTs "<<ids.size()<<endl;
166 for(; it!=it_end; ++it){
168 const TT_ID& rId = (*it);
169 // LArTT_Sampling ttSam(rId,sam);
170 // unsigned int combId = ttSam.combinedId();
171 // std::vector<COLL_ID> cIDs =
172 // m_roiMap->collectionID( combId );
174 unsigned int combId= (unsigned int) rId ;
175 const std::vector<COLL_ID>& cIDs =
176 m_roiMap->collectionID( combId );
177 COLL_ID_IT cId_it = cIDs.begin();
178 COLL_ID_IT cId_it_end = cIDs.end();
179 // cout<< " Number of Collections for this RoI"<<cIDs.size()<<endl;
180 for(; cId_it!=cId_it_end;++cId_it){
181 const COLL_ID& cId = (*cId_it);
182 // cout<< " Collections id "<<cId.id()<<endl;
183 COLL_IT coll_it = m_container->find(cId);
184 if(coll_it!=m_container->end()){
186 const COLLECTION* coll = (*coll_it);
189 coll->getTT(combId,b,e);
191 m_vecItPair.push_back(ITPAIR(b,e) ) ;
194 // cout <<" Nothing in this Collections "<<endl;
204 template <class CONTAINER >
205 void LArTT_Selector<CONTAINER> :: setRoIs( const VEC_TT_SAM_ID& ids )
209 if(m_vecItPair.size() > 0 ) {
210 m_vecItPair.erase(m_vecItPair.begin(), m_vecItPair.end());
213 TT_SAM_ID_IT it = ids.begin();
214 TT_SAM_ID_IT it_end = ids.end() ;
216 // cout <<" Number of TTs "<<ids.size()<<endl;
218 for(; it!=it_end; ++it){
220 const TT_SAM_ID& rId = (*it);
222 std::vector<COLL_ID> cIDs =
223 m_roiMap->collectionID( rId );
224 COLL_ID_IT cId_it = cIDs.begin();
225 COLL_ID_IT cId_it_end = cIDs.end();
226 // cout<< " Number of Collections for this RoI"<<cIDs.size()<<endl;
227 for(; cId_it!=cId_it_end;++cId_it){
228 const COLL_ID& cId = (*cId_it);
229 // cout<< " Collections id "<<cId.id()<<endl;
230 COLL_IT coll_it = m_container->find(cId);
231 if(coll_it!=m_container->end()){
233 const COLLECTION* coll = (*coll_it);
236 coll->getTT(rId,b,e);
238 m_vecItPair.push_back(ITPAIR(b,e) ) ;
241 // cout <<" Nothing in this Collections "<<endl;
252 template <class CONTAINER >
253 typename LArTT_Selector<CONTAINER>::const_iterator
254 LArTT_Selector<CONTAINER> ::begin() const
256 return const_iterator(&m_vecItPair);
259 template <class CONTAINER >
260 typename LArTT_Selector<CONTAINER>::const_iterator
261 LArTT_Selector<CONTAINER> ::end() const
263 return const_iterator(&m_vecItPair, m_vecItPair.end() );