File indexing completed on 2023-10-25 09:36:36
0001
0002
0003
0004
0005
0006
0007
0008 #include <stdexcept>
0009 #include <string>
0010 #include <iostream>
0011
0012 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0013 #include "FWCore/Framework/interface/Event.h"
0014 #include "FWCore/Framework/interface/ESHandle.h"
0015 #include "FWCore/Framework/interface/MakerMacros.h"
0016
0017 #include "FWCore/Framework/interface/EventSetup.h"
0018 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0019 #include "CondFormats/DataRecord/interface/BeamSpotObjectsRcd.h"
0020 #include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h"
0021 #include "CondCore/CondDB/interface/Time.h"
0022 #include "CondCore/CondDB/interface/ConnectionPool.h"
0023 #include <fstream>
0024
0025 using namespace std;
0026
0027 namespace edmtest {
0028 class LumiTestWriteAnalyzer : public edm::one::EDAnalyzer<> {
0029 public:
0030 explicit LumiTestWriteAnalyzer(edm::ParameterSet const& p)
0031 : m_connectionString(p.getUntrackedParameter<std::string>("connectionString")),
0032 m_tagName(p.getUntrackedParameter<std::string>("tagName")),
0033 m_run(p.getUntrackedParameter<unsigned int>("runNumber")),
0034 m_NLumi(p.getUntrackedParameter<unsigned int>("numberOfLumis")),
0035 m_iovSize(p.getUntrackedParameter<unsigned int>("iovSize")) {}
0036 explicit LumiTestWriteAnalyzer(int i) {}
0037 virtual ~LumiTestWriteAnalyzer() {}
0038 virtual void beginJob() override;
0039 virtual void analyze(edm::Event const&, edm::EventSetup const&) override {}
0040
0041 private:
0042 std::string m_connectionString;
0043 std::string m_tagName;
0044 unsigned int m_run;
0045 unsigned int m_NLumi;
0046 unsigned int m_iovSize;
0047 };
0048
0049 void LumiTestWriteAnalyzer::beginJob() {
0050 cond::persistency::ConnectionPool pool;
0051 pool.setMessageVerbosity(coral::Debug);
0052 auto session = pool.createSession(m_connectionString, true);
0053 session.transaction().start(false);
0054 cond::persistency::IOVEditor editor;
0055 if (!session.existsDatabase() || !session.existsIov(m_tagName)) {
0056 editor = session.createIov<BeamSpotObjects>(m_tagName, cond::lumiid);
0057 editor.setDescription("Read/Write Test");
0058 } else {
0059 editor = session.editIov(m_tagName);
0060 }
0061 size_t i = 0;
0062 for (size_t lumiId = 1; lumiId < m_NLumi; lumiId += m_iovSize) {
0063 BeamSpotObjects mybeamspot;
0064 mybeamspot.setPosition(0.053, 0.1, 0.13);
0065 mybeamspot.setSigmaZ(3.8 + i);
0066 mybeamspot.setType(int(lumiId));
0067 auto payloadId = session.storePayload(mybeamspot);
0068 auto since = cond::time::lumiTime(m_run, lumiId);
0069 editor.insert(since, payloadId);
0070 i++;
0071 }
0072 editor.flush();
0073 session.transaction().commit();
0074 }
0075
0076 DEFINE_FWK_MODULE(LumiTestWriteAnalyzer);
0077 }