CMS 3D CMS Logo

GEMMaskReClusterizer.cc
Go to the documentation of this file.
1 
6 
8  GEMClusterContainer& initClusters,
9  const EtaPartitionMask& mask) const {
10  GEMClusterContainer finClusters;
11  if (initClusters.empty())
12  return finClusters;
13 
14  GEMCluster prev = *initClusters.begin();
15  for (auto cl = std::next(initClusters.begin()); cl != initClusters.end(); ++cl) {
16  // Merge this cluster if it is adjacent by 1 masked strip
17  // Note that the GEMClusterContainer collection is sorted in DECREASING ORDER of strip #
18  // So the prev. cluster is placed after the current cluster (check the < operator of GEMCluster carefully)
19  if ((prev.firstStrip() - cl->lastStrip()) == 2 and this->get(mask, cl->lastStrip() + 1) and prev.bx() == cl->bx()) {
20  prev = GEMCluster(cl->firstStrip(), prev.lastStrip(), cl->bx());
21  } else {
22  finClusters.insert(prev);
23  prev = *cl;
24  }
25  }
26 
27  // Finalize by putting the last cluster to the collection
28  finClusters.insert(prev);
29 
30  return finClusters;
31 }
32 
33 bool GEMMaskReClusterizer::get(const EtaPartitionMask& mask, int strip) const { return mask.test(strip); }
int lastStrip() const
Definition: GEMCluster.cc:15
std::set< GEMCluster > GEMClusterContainer
constexpr uint32_t mask
Definition: gpuClustering.h:24
int bx() const
Definition: GEMCluster.cc:19
std::bitset< maskSIZE > EtaPartitionMask
GEMClusterContainer doAction(const GEMDetId &id, GEMClusterContainer &initClusters, const EtaPartitionMask &mask) const
bool get(const EtaPartitionMask &mask, int strip) const
int firstStrip() const
Definition: GEMCluster.cc:13