46 std::memory_order_acq_rel);
48 mItemsById.exchange(other.
mItemsById.load(std::memory_order_acquire), std::memory_order_acq_rel),
49 std::memory_order_acq_rel);
125 return (*fIter)->mDcsId;
129 return (*fIter)->mId;
135 std::vector<const HcalDcsMap::Item*>::const_iterator item;
136 std::vector<const HcalDcsMap::Item *>
result;
141 auto ptr = (*
mItemsById.load(std::memory_order_acquire));
142 item = std::lower_bound (ptr.begin(), ptr.end(), &
target, lessById);
143 if (item == ptr.end() || (*item)->mId != fId){
148 if(item != ptr.end() && !lessById(&target, *item)){
149 result.push_back( *item );
158 std::vector<const HcalDcsMap::Item*>::const_iterator item;
159 std::vector<const HcalDcsMap::Item *>
result;
165 item = std::lower_bound (ptr.begin(), ptr.end(), &
target, lessByDcsId);
166 if (item == ptr.end() || (*item)->mDcsId != fDcsId) {
171 if(item != ptr.end() && !lessByDcsId(&target, *item)){
172 result.push_back( *item );
188 const std::vector<const Item *> items =
findByDcsId (fDcsId_notype.rawId ());
189 std::vector<HcalDetId> _ids;
190 for (std::vector<const Item *>::const_iterator item = items.begin();
193 _ids.push_back(
DetId(*item ? (*item)->mId : 0) );
199 const std::vector<const Item *> items =
findById (fId.
rawId ());
200 std::vector<HcalDcsDetId> _ids;
201 for (std::vector<const Item *>::const_iterator item = items.begin();
218 std::vector <HcalDcsDetId>
result;
219 for (std::vector<Item>::const_iterator item =
mItems.begin (); item !=
mItems.end (); item++)
220 if (item->mDcsId) result.push_back(
HcalDcsDetId(item->mDcsId));
226 std::vector <HcalGenericDetId>
result;
227 std::set <unsigned long> allIds;
228 for (std::vector<Item>::const_iterator item =
mItems.begin (); item !=
mItems.end (); item++)
229 if (item->mId) allIds.insert (item->mId);
230 for (std::set <unsigned long>::const_iterator channel = allIds.begin (); channel != allIds.end (); channel++) {
246 const std::vector<const Item *> items =
findByDcsId(fDcsId_notype);
247 for (std::vector<const Item *>::const_iterator item = items.begin();
250 if ((*item)->mId == fId){
251 edm::LogWarning(
"HCAL") <<
"HcalDcsMap::mapGeomId2DcsId-> Geom channel " << fId
252 <<
" already mapped to DCS channel " << fDcsId_notype;
256 Item _item(fId, fDcsId_notype);
267 if (!
mItemsById.load(std::memory_order_acquire)) {
268 auto ptr =
new std::vector<const Item*>;
270 if (
i->mDcsId) ptr->push_back(&(*
i));
275 std::vector<const Item*>* expect =
nullptr;
276 bool exchanged =
mItemsById.compare_exchange_strong(expect, ptr, std::memory_order_acq_rel);
285 auto ptr =
new std::vector<const Item*>;
287 if (
i->mDcsId) ptr->push_back(&(*
i));
292 std::vector<const Item*>* expect =
nullptr;
293 bool exchanged =
mItemsByDcsId.compare_exchange_strong(expect, ptr, std::memory_order_acq_rel);
std::vector< const Item * >::const_iterator fIter
bool mapGeomId2DcsId(HcalDetId fId, HcalDcsDetId fDcsId)
std::vector< HcalDcsDetId > allHcalDcsDetId() const
const_iterator operator++()
void swap(HcalDcsMap &other)
uint32_t rawId() const
get the raw id
const_iterator endById(void) const
const_iterator beginById(void) const
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
bool operator()(const HcalDcsMap::Item *a, const HcalDcsMap::Item *b)
std::atomic< std::vector< const Item * > * > mItemsById
const std::vector< HcalDetId > lookup(HcalDcsDetId fId) const
HcalDetId getHcalDetId(void)
const std::vector< const Item * > findByDcsId(unsigned long fDcsId) const
HcalDcsMap & operator=(const HcalDcsMap &rhs)
HcalDcsDetId getHcalDcsDetId(void)
std::atomic< std::vector< const Item * > * > mItemsByDcsId
const std::vector< const Item * > findById(unsigned long fId) const
HcalOtherSubdetector subdet() const
get the category
std::vector< HcalGenericDetId > allHcalDetId() const
bool operator()(const HcalDcsMap::Item *a, const HcalDcsMap::Item *b)
bool operator!=(const const_iterator &other)
const_iterator endByDcsId(void) const
std::vector< Item > mItems
const_iterator beginByDcsId(void) const