File indexing completed on 2024-04-06 12:27:22
0001 #ifndef RecoParticleFlow_PFClusterProducer_PFRecHitCreatorBase_h
0002 #define RecoParticleFlow_PFClusterProducer_PFRecHitCreatorBase_h
0003
0004 #include "FWCore/Framework/interface/Frameworkfwd.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 #include "FWCore/Framework/interface/Event.h"
0007 #include "FWCore/Framework/interface/EventSetup.h"
0008 #include "FWCore/Framework/interface/ESHandle.h"
0009
0010 #include "FWCore/Framework/interface/ConsumesCollector.h"
0011 #include "DataFormats/ParticleFlowReco/interface/PFLayer.h"
0012 #include "DataFormats/Math/interface/Vector3D.h"
0013 #include "DataFormats/DetId/interface/DetId.h"
0014 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0015 #include "FWCore/Framework/interface/ESHandle.h"
0016 #include "FWCore/Framework/interface/EventSetup.h"
0017 #include "DataFormats/ParticleFlowReco/interface/PFRecHit.h"
0018 #include "DataFormats/ParticleFlowReco/interface/PFRecHitFwd.h"
0019
0020 #include "RecoParticleFlow/PFClusterProducer/interface/PFRecHitQTestBase.h"
0021 #include <memory>
0022
0023 class PFRecHitCreatorBase {
0024 public:
0025 PFRecHitCreatorBase() {}
0026 PFRecHitCreatorBase(const edm::ParameterSet& iConfig, edm::ConsumesCollector& cc) {
0027 std::vector<edm::ParameterSet> qTests = iConfig.getParameter<std::vector<edm::ParameterSet> >("qualityTests");
0028 for (auto& qTest : qTests) {
0029 std::string name = qTest.getParameter<std::string>("name");
0030 qualityTests_.emplace_back(PFRecHitQTestFactory::get()->create(name, qTest, cc));
0031 }
0032 }
0033 virtual ~PFRecHitCreatorBase() = default;
0034
0035 virtual void init(const edm::EventSetup& es) {}
0036
0037 virtual void importRecHits(std::unique_ptr<reco::PFRecHitCollection>&,
0038 std::unique_ptr<reco::PFRecHitCollection>&,
0039 const edm::Event&,
0040 const edm::EventSetup&) = 0;
0041
0042 protected:
0043 void beginEvent(const edm::Event& event, const edm::EventSetup& setup) {
0044 for (auto& qualityTest : qualityTests_)
0045 qualityTest->beginEvent(event, setup);
0046 }
0047
0048 std::vector<std::unique_ptr<PFRecHitQTestBase> > qualityTests_;
0049 };
0050
0051 #include "FWCore/PluginManager/interface/PluginFactory.h"
0052 typedef edmplugin::PluginFactory<PFRecHitCreatorBase*(const edm::ParameterSet&, edm::ConsumesCollector&)>
0053 PFRecHitFactory;
0054 #endif