/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
RecoParticleFlow/PFClusterProducer/interface/PFRecHitNavigatorBase.h
59 строк
2 KB
Mark Saunders
Migrate PF modules to esConsumes
14 май 2021, 22:31
14 май 2021, 22:31
d2320ba
Код
Авторство
О чём код?
#ifndef RecoParticleFlow_PFClusterProducer_PFRecHitNavigatorBase_h #define RecoParticleFlow_PFClusterProducer_PFRecHitNavigatorBase_h #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Framework/interface/ConsumesCollector.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "DataFormats/ParticleFlowReco/interface/PFRecHit.h" #include "DataFormats/ParticleFlowReco/interface/PFRecHitFwd.h" #include "DataFormats/ParticleFlowReco/interface/PFRecHit.h" #include "DataFormats/ParticleFlowReco/interface/PFRecHitFwd.h" #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" #include "Geometry/CaloGeometry/interface/CaloGeometry.h" #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" #include "Geometry/CaloGeometry/interface/TruncatedPyramid.h" #include "Geometry/Records/interface/CaloGeometryRecord.h" #include <unordered_map> class PFRecHitNavigatorBase { public: typedef std::unordered_map<unsigned, unsigned> DetIdToHitIdx; PFRecHitNavigatorBase() = default; PFRecHitNavigatorBase(const edm::ParameterSet& iConfig, edm::ConsumesCollector& cc) {} virtual ~PFRecHitNavigatorBase() = default; virtual void init(const edm::EventSetup&) = 0; virtual void associateNeighbours(reco::PFRecHit&, std::unique_ptr<reco::PFRecHitCollection>&, edm::RefProd<reco::PFRecHitCollection>&) = 0; protected: 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) { auto found_hit = std::lower_bound( hits->begin(), hits->end(), id, [](const reco::PFRecHit& a, const DetId& id) { return a.detId() < id; }); if (found_hit != hits->end() && found_hit->detId() == id.rawId()) { hit.addNeighbour(eta, phi, depth, found_hit - hits->begin()); } } }; #include "FWCore/PluginManager/interface/PluginFactory.h" typedef edmplugin::PluginFactory<PFRecHitNavigatorBase*(const edm::ParameterSet&, edm::ConsumesCollector&)> PFRecHitNavigationFactory; #endif