File indexing completed on 2024-04-06 12:26:12
0001 #include "RecoLocalMuon/GEMRecHit/interface/GEMClusterizer.h"
0002
0003 GEMClusterContainer GEMClusterizer::doAction(const GEMDigiCollection::Range& digiRange, const EtaPartitionMask& mask) {
0004 GEMClusterContainer initialCluster, finalCluster;
0005
0006 if (std::distance(digiRange.second, digiRange.first) == 0)
0007 return finalCluster;
0008
0009
0010 for (auto digi = digiRange.first; digi != digiRange.second; ++digi) {
0011 if (mask.test(digi->strip()))
0012 continue;
0013 GEMCluster cl(digi->strip(), digi->strip(), digi->bx());
0014 initialCluster.insert(cl);
0015 }
0016 if (initialCluster.empty())
0017 return finalCluster;
0018
0019
0020 GEMCluster prev = *initialCluster.begin();
0021
0022
0023
0024 for (auto cl = std::next(initialCluster.begin()); cl != initialCluster.end(); ++cl) {
0025 if (prev.isAdjacent(*cl)) {
0026
0027 prev.merge(*cl);
0028 } else {
0029
0030 finalCluster.insert(prev);
0031 prev = *cl;
0032 }
0033 }
0034
0035
0036 finalCluster.insert(prev);
0037
0038 return finalCluster;
0039 }