Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:16

0001 #ifndef RecoLocalTracker_SiPhase2Clusterizer_Phase2TrackerClusterizerSequentialAlgorithm_h
0002 #define RecoLocalTracker_SiPhase2Clusterizer_Phase2TrackerClusterizerSequentialAlgorithm_h
0003 
0004 #include "DataFormats/Common/interface/DetSetVector.h"
0005 #include "DataFormats/Common/interface/DetSetVectorNew.h"
0006 #include "DataFormats/Phase2TrackerDigi/interface/Phase2TrackerDigi.h"
0007 #include "DataFormats/Phase2TrackerCluster/interface/Phase2TrackerCluster1D.h"
0008 
0009 class Phase2TrackerClusterizerSequentialAlgorithm {
0010 public:
0011   inline void clusterizeDetUnit(const edm::DetSet<Phase2TrackerDigi>&,
0012                                 Phase2TrackerCluster1DCollectionNew::FastFiller&) const;
0013 };
0014 
0015 void Phase2TrackerClusterizerSequentialAlgorithm::clusterizeDetUnit(
0016     const edm::DetSet<Phase2TrackerDigi>& digis, Phase2TrackerCluster1DCollectionNew::FastFiller& clusters) const {
0017   if (digis.empty())
0018     return;
0019   auto di = digis.begin();
0020   unsigned int sizeCluster = 1;
0021   Phase2TrackerDigi firstDigi = *di;
0022   bool HIPbit = firstDigi.overThreshold();
0023   auto previous = firstDigi;
0024   ++di;
0025   for (; di != digis.end(); ++di) {
0026     auto digi = *di;
0027 #ifdef VERIFY_PH2_TK_CLUS
0028     if (!(previous < digi))
0029       std::cout << "not ordered " << previous << ' ' << digi << std::endl;
0030 #endif
0031     if (digi - previous == 1) {
0032       HIPbit |= digi.overThreshold();
0033       ++sizeCluster;
0034     } else {
0035       clusters.push_back(Phase2TrackerCluster1D(firstDigi, sizeCluster, HIPbit));
0036       firstDigi = digi;
0037       HIPbit = digi.overThreshold();
0038       sizeCluster = 1;
0039     }
0040     previous = digi;
0041   }
0042   clusters.push_back(Phase2TrackerCluster1D(firstDigi, sizeCluster, HIPbit));
0043 }
0044 
0045 #endif