File indexing completed on 2023-03-17 11:12:47
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);