CMS 3D CMS Logo

LayerTriplets.cc
Go to the documentation of this file.
2 
3 namespace LayerTriplets {
4 std::vector<LayerSetAndLayers> layers(const SeedingLayerSetsHits& sets) {
5  std::vector<LayerSetAndLayers> result;
6  if(sets.numberOfLayersInSet() < 3)
7  return result;
8 
9  for(LayerSet set: sets) {
10  bool added = false;
11 
12  for(auto ir = result.begin(); ir < result.end(); ++ir) {
13  const LayerSet & resSet = ir->first;
14  if (resSet[0].index() == set[0].index() && resSet[1].index() == set[1].index()) {
15  std::vector<Layer>& thirds = ir->second;
16  // 3rd layer can already be there if we are dealing with quadruplet layer sets
17  auto found = std::find_if(thirds.begin(), thirds.end(), [&](const Layer& l) { return l.index() == set[2].index(); });
18  if(found == thirds.end())
19  thirds.push_back( set[2] );
20  added = true;
21  break;
22  }
23  }
24  if (!added) {
25  LayerSetAndLayers lpl = std::make_pair(set, std::vector<Layer>(1, set[2]) );
26  result.push_back(lpl);
27  }
28  }
29  return result;
30 }
31 }
unsigned short numberOfLayersInSet() const
Get number of layers in each SeedingLayerSets.
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
Definition: LayerTriplets.cc:4
std::pair< LayerSet, std::vector< Layer > > LayerSetAndLayers
Definition: LayerTriplets.h:16