File indexing completed on 2024-04-06 12:01:31
0001 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0002 #include "FWCore/Framework/interface/Event.h"
0003 #include "FWCore/Framework/interface/MakerMacros.h"
0004 #include "FWCore/ServiceRegistry/interface/Service.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 #include "FWCore/Framework/interface/Event.h"
0007 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0008 #include "CondCore/CondDB/interface/Exception.h"
0009 #include "CondFormats/Calibration/interface/Pedestals.h"
0010
0011 #include <string>
0012 #include <cstdlib>
0013 #include <iostream>
0014
0015 namespace edm {
0016 class ParameterSet;
0017 class Event;
0018 class EventSetup;
0019 }
0020
0021
0022 class MyDataAnalyzer : public edm::one::EDAnalyzer<> {
0023 public:
0024 explicit MyDataAnalyzer(const edm::ParameterSet& iConfig);
0025 virtual ~MyDataAnalyzer();
0026 virtual void analyze(const edm::Event& evt, const edm::EventSetup& evtSetup);
0027 virtual void beginJob();
0028 virtual void endJob();
0029
0030 private:
0031 std::string m_record;
0032 bool m_LoggingOn;
0033 };
0034
0035 MyDataAnalyzer::MyDataAnalyzer(const edm::ParameterSet& iConfig)
0036 : m_record(iConfig.getParameter<std::string>("record")), m_LoggingOn(false) {
0037 m_LoggingOn = iConfig.getUntrackedParameter<bool>("loggingOn");
0038 std::cout << "MyDataAnalyzer::MyDataAnalyzer" << std::endl;
0039 }
0040
0041 MyDataAnalyzer::~MyDataAnalyzer() { std::cout << "MyDataAnalyzer::~MyDataAnalyzer" << std::endl; }
0042
0043 void MyDataAnalyzer::beginJob() {
0044 edm::Service<cond::service::PoolDBOutputService> mydbservice;
0045 if (!mydbservice.isAvailable()) {
0046 return;
0047 }
0048 mydbservice->logger().start();
0049 ;
0050 }
0051
0052 void MyDataAnalyzer::analyze(const edm::Event& evt, const edm::EventSetup& evtSetup) {
0053 std::cout << "MyDataAnalyzer::analyze " << std::endl;
0054 edm::Service<cond::service::PoolDBOutputService> mydbservice;
0055 if (!mydbservice.isAvailable()) {
0056 std::cout << "Service is unavailable" << std::endl;
0057 return;
0058 }
0059 try {
0060 std::string tag = mydbservice->tag(m_record);
0061 Pedestals myped;
0062 for (int ichannel = 1; ichannel <= 5; ++ichannel) {
0063 Pedestals::Item item;
0064 item.m_mean = 1.11 * ichannel;
0065 item.m_variance = 1.12 * ichannel;
0066 myped.m_pedestals.push_back(item);
0067 }
0068 auto t = mydbservice->currentTime();
0069 mydbservice->logger().logDebug() << "Writing new payload";
0070 mydbservice->writeOneIOV(myped, t, m_record);
0071 mydbservice->logger().logDebug() << "Written iov with since: " << t;
0072 std::cout << "done" << std::endl;
0073 } catch (const cond::Exception& er) {
0074 throw cms::Exception("DBOutputServiceUnitTestFailure", "failed MyDataAnalyzer", er);
0075 } catch (const cms::Exception& er) {
0076 throw cms::Exception("DBOutputServiceUnitTestFailure", "failed MyDataAnalyzer", er);
0077 }
0078 }
0079
0080 void MyDataAnalyzer::endJob() {
0081 std::cout << "MyDataAnalyzer::endJob " << std::endl;
0082 edm::Service<cond::service::PoolDBOutputService> mydbservice;
0083 if (!mydbservice.isAvailable()) {
0084 std::cout << "Service is unavailable" << std::endl;
0085 return;
0086 }
0087 mydbservice->logger().end(0);
0088 mydbservice->logger().saveOnFile();
0089 }
0090
0091 DEFINE_FWK_MODULE(MyDataAnalyzer);