Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:21:03

0001 
0002 #include <memory>
0003 #include <string>
0004 
0005 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0006 #include "CondFormats/DataRecord/interface/L1TMuonOverlapParamsRcd.h"
0007 #include "CondFormats/L1TObjects/interface/L1TMuonOverlapParams.h"
0008 #include "FWCore/Framework/interface/Frameworkfwd.h"
0009 #include "FWCore/Framework/interface/EventSetup.h"
0010 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0011 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0012 #include "FWCore/ServiceRegistry/interface/Service.h"
0013 #include "FWCore/Utilities/interface/ESGetToken.h"
0014 #include "FWCore/Utilities/interface/ESInputTag.h"
0015 #include "FWCore/Utilities/interface/Transition.h"
0016 
0017 class L1MuonOverlapParamsDBProducer : public edm::one::EDAnalyzer<edm::one::WatchRuns> {
0018 public:
0019   L1MuonOverlapParamsDBProducer(const edm::ParameterSet&);
0020   void beginRun(const edm::Run&, const edm::EventSetup&) override;
0021   void endRun(const edm::Run&, const edm::EventSetup&) override;
0022   void analyze(const edm::Event&, const edm::EventSetup&) override;
0023 
0024 private:
0025   edm::ESGetToken<L1TMuonOverlapParams, L1TMuonOverlapParamsRcd> esTokenParams_;
0026   std::unique_ptr<L1TMuonOverlapParams> omtfParams;
0027 };
0028 
0029 L1MuonOverlapParamsDBProducer::L1MuonOverlapParamsDBProducer(const edm::ParameterSet&)
0030     : esTokenParams_(esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", "params"))) {}
0031 ///////////////////////////////////////////////////////////////
0032 ///////////////////////////////////////////////////////////////
0033 void L1MuonOverlapParamsDBProducer::beginRun(edm::Run const&, edm::EventSetup const& iSetup) {
0034   omtfParams = std::make_unique<L1TMuonOverlapParams>(iSetup.getData(esTokenParams_));
0035   if (!omtfParams) {
0036     edm::LogError("L1TMuonOverlapTrackProducer") << "Could not retrieve parameters from Event Setup" << std::endl;
0037   }
0038 }
0039 void L1MuonOverlapParamsDBProducer::endRun(const edm::Run&, const edm::EventSetup&) {}
0040 
0041 ///////////////////////////////////////////////////////////////
0042 ///////////////////////////////////////////////////////////////
0043 void L1MuonOverlapParamsDBProducer::analyze(const edm::Event&, const edm::EventSetup&) {
0044   std::string recordName = "L1TMuonOverlapParamsRcd";
0045   edm::Service<cond::service::PoolDBOutputService> poolDbService;
0046   if (poolDbService.isAvailable()) {
0047     poolDbService->writeOneIOV(*omtfParams, poolDbService->currentTime(), recordName);
0048   }
0049 }
0050 ///////////////////////////////////////////////////////////////
0051 ///////////////////////////////////////////////////////////////
0052 #include "FWCore/Framework/interface/MakerMacros.h"
0053 DEFINE_FWK_MODULE(L1MuonOverlapParamsDBProducer);