Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:25:14

0001 // Authors: Felice Pantaleo, Marco Rovere
0002 // Emails: felice.pantaleo@cern.ch, marco.rovere@cern.ch
0003 // Date: 06/2019
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 }