1 #ifndef RecoParticleFlow_PFClusterProducer_PFRecHitNavigatorBase_h
2 #define RecoParticleFlow_PFClusterProducer_PFRecHitNavigatorBase_h
23 #include <unordered_map>
36 std::unique_ptr<reco::PFRecHitCollection>&,
42 std::unique_ptr<reco::PFRecHitCollection>& hits,
49 if (found_hit != hits->end() && found_hit->detId() ==
id.rawId()) {
50 hit.
addNeighbour(eta, phi, depth, found_hit - hits->begin());
void associateNeighbour(const DetId &id, reco::PFRecHit &hit, std::unique_ptr< reco::PFRecHitCollection > &hits, edm::RefProd< reco::PFRecHitCollection > &refProd, short eta, short phi, short depth)
uint16_t *__restrict__ id
void addNeighbour(short x, short y, short z, unsigned int)
virtual void associateNeighbours(reco::PFRecHit &, std::unique_ptr< reco::PFRecHitCollection > &, edm::RefProd< reco::PFRecHitCollection > &)=0
virtual void init(const edm::EventSetup &)=0
PFRecHitNavigatorBase(const edm::ParameterSet &iConfig, edm::ConsumesCollector &cc)
Particle flow rechit (rechit + geometry and topology information). See clustering algorithm in PFClus...
PFRecHitNavigatorBase()=default
virtual ~PFRecHitNavigatorBase()=default
std::unordered_map< unsigned, unsigned > DetIdToHitIdx
__host__ __device__ constexpr RandomIt lower_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
edmplugin::PluginFactory< PFRecHitNavigatorBase *(const edm::ParameterSet &, edm::ConsumesCollector &)> PFRecHitNavigationFactory