File indexing completed on 2024-04-06 12:25:14
0001
0002
0003
0004
0005 #include <vector>
0006
0007 #include "FWCore/Framework/interface/ESHandle.h"
0008 #include "FWCore/Framework/interface/Event.h"
0009 #include "FWCore/Framework/interface/Frameworkfwd.h"
0010 #include "FWCore/Framework/interface/MakerMacros.h"
0011 #include "FWCore/Framework/interface/stream/EDProducer.h"
0012 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0013 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0014 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0015 #include "FWCore/ParameterSet/interface/PluginDescription.h"
0016 #include "FWCore/Framework/interface/ConsumesCollector.h"
0017 #include "RecoHGCal/TICL/plugins/SeedingRegionAlgoBase.h"
0018 #include "SeedingRegionAlgoFactory.h"
0019 #include "SeedingRegionByL1.h"
0020 #include "SeedingRegionByTracks.h"
0021 #include "SeedingRegionGlobal.h"
0022 #include "SeedingRegionByHF.h"
0023
0024 using namespace ticl;
0025
0026 class TICLSeedingRegionProducer : public edm::stream::EDProducer<> {
0027 public:
0028 TICLSeedingRegionProducer(const edm::ParameterSet&);
0029 ~TICLSeedingRegionProducer() override {}
0030 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0031
0032 void beginRun(edm::Run const& iEvent, edm::EventSetup const& es) override;
0033
0034 void produce(edm::Event&, const edm::EventSetup&) override;
0035
0036 private:
0037 std::unique_ptr<SeedingRegionAlgoBase> myAlgo_;
0038 };
0039
0040 DEFINE_FWK_MODULE(TICLSeedingRegionProducer);
0041
0042 TICLSeedingRegionProducer::TICLSeedingRegionProducer(const edm::ParameterSet& ps) {
0043 auto sumes = consumesCollector();
0044 auto seedingPSet = ps.getParameter<edm::ParameterSet>("seedingPSet");
0045 auto algoType = seedingPSet.getParameter<std::string>("type");
0046 myAlgo_ = SeedingRegionAlgoFactory::get()->create(algoType, seedingPSet, sumes);
0047 produces<std::vector<TICLSeedingRegion>>();
0048 }
0049
0050 void TICLSeedingRegionProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0051 edm::ParameterSetDescription desc;
0052
0053 edm::ParameterSetDescription seedingDesc;
0054 seedingDesc.addNode(edm::PluginDescription<SeedingRegionAlgoFactory>("type", "SeedingRegionGlobal", true));
0055 desc.add<edm::ParameterSetDescription>("seedingPSet", seedingDesc);
0056 descriptions.add("ticlSeedingRegionProducer", desc);
0057 }
0058
0059 void TICLSeedingRegionProducer::beginRun(edm::Run const& iEvent, edm::EventSetup const& es) { myAlgo_->initialize(es); }
0060
0061 void TICLSeedingRegionProducer::produce(edm::Event& evt, const edm::EventSetup& es) {
0062 auto result = std::make_unique<std::vector<TICLSeedingRegion>>();
0063 myAlgo_->makeRegions(evt, es, *result);
0064
0065 evt.put(std::move(result));
0066 }