CMS 3D CMS Logo

HcalObjectAddons.h
Go to the documentation of this file.
1 #ifndef CondFormats_HcalObjects_HcalObjectAddons
2 #define CondFormats_HcalObjects_HcalObjectAddons
3 
4 #include <vector>
5 #include <algorithm>
6 
7 // functions with common forms
8 namespace HcalObjectAddons {
9  template <class Item, class Less>
10  const Item * findByT (const Item* target, const std::vector<const Item*>& itemsByT){
11  Less less;
12  auto item = std::lower_bound (itemsByT.begin(), itemsByT.end(), target, less);
13  if (item == itemsByT.end() || !less.equal(*item,target)){
14  return nullptr;
15  }
16  return *item;
17  }
18 
19  //sorting
20  template <class Item, class Less>
21  static void sortByT(const std::vector<Item>& items, std::vector<const Item*>& itemsByT){
22  itemsByT.clear();
23  itemsByT.reserve(items.size());
24  Less less;
25  for(const auto& i : items){
26  if (less.good(i)) itemsByT.push_back(&i);
27  }
28  std::sort (itemsByT.begin(), itemsByT.end(), less);
29  }
30 
31 }
32 
33 #endif
const Item * findByT(const Item *target, const std::vector< const Item * > &itemsByT)
static void sortByT(const std::vector< Item > &items, std::vector< const Item * > &itemsByT)