File indexing completed on 2023-10-25 09:37:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #include <memory>
0018
0019
0020 #include "FWCore/Framework/interface/MakerMacros.h"
0021 #include "FWCore/Framework/interface/Frameworkfwd.h"
0022 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0023 #include "FWCore/Framework/interface/ESHandle.h"
0024 #include "FWCore/Framework/interface/EventSetup.h"
0025 #include "FWCore/Framework/interface/Event.h"
0026
0027 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0028 #include "FWCore/ServiceRegistry/interface/Service.h"
0029 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0030
0031 #include "CondFormats/PPSObjects/interface/CTPPSBeamParameters.h"
0032 #include "CondFormats/DataRecord/interface/CTPPSBeamParametersRcd.h"
0033
0034 #include <cstdint>
0035
0036 class WriteCTPPSBeamParameters : public edm::one::EDAnalyzer<> {
0037 public:
0038 WriteCTPPSBeamParameters(const edm::ParameterSet&)
0039 : tokenBeamParameters_(esConsumes<CTPPSBeamParameters, CTPPSBeamParametersRcd>()) {}
0040
0041 ~WriteCTPPSBeamParameters() override = default;
0042
0043 private:
0044 void analyze(const edm::Event&, const edm::EventSetup&) override;
0045
0046 edm::ESGetToken<CTPPSBeamParameters, CTPPSBeamParametersRcd> tokenBeamParameters_;
0047 };
0048
0049
0050
0051 void WriteCTPPSBeamParameters::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0052 const auto& beamParam = iSetup.getData(tokenBeamParameters_);
0053
0054 const edm::LuminosityBlock& iLBlock = iEvent.getLuminosityBlock();
0055 edm::LuminosityBlockID lu(iLBlock.run(), iLBlock.id().luminosityBlock());
0056 cond::Time_t ilumi = (cond::Time_t)(lu.value());
0057
0058
0059 edm::LogInfo("WriteCTPPSBeamParameters::analyze")
0060 << "cond::Time_t ilumi = " << ilumi << " = "
0061 << boost::posix_time::to_iso_extended_string(cond::time::to_boost(ilumi)) << "\n";
0062
0063
0064 edm::Service<cond::service::PoolDBOutputService> poolDbService;
0065 if (poolDbService.isAvailable())
0066 poolDbService->writeOneIOV(beamParam, ilumi, "CTPPSBeamParametersRcd");
0067 else
0068 throw std::runtime_error("PoolDBService required.");
0069 }
0070
0071
0072 DEFINE_FWK_MODULE(WriteCTPPSBeamParameters);