File indexing completed on 2024-04-06 12:03:12
0001
0002 #include <memory>
0003 #include <string>
0004 #include <fstream>
0005 #include <iostream>
0006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0007 #include "FWCore/Framework/interface/Frameworkfwd.h"
0008 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0009 #include "FWCore/Framework/interface/Event.h"
0010 #include "FWCore/Framework/interface/MakerMacros.h"
0011 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0012 #include "FWCore/ServiceRegistry/interface/Service.h"
0013 #include "FWCore/Utilities/interface/EDMException.h"
0014 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0015 #include "CondFormats/JetMETObjects/interface/MEtXYcorrectParameters.h"
0016
0017 namespace {
0018 class METCorrectorDBWriter : public edm::one::EDAnalyzer<> {
0019 public:
0020 METCorrectorDBWriter(const edm::ParameterSet&);
0021 void beginJob() override;
0022 void analyze(const edm::Event&, const edm::EventSetup&) override {}
0023 void endJob() override {}
0024 ~METCorrectorDBWriter() override {}
0025
0026 private:
0027 std::string era;
0028 std::string algo;
0029 std::string path;
0030 std::string inputTxtFile;
0031 std::string payloadTag;
0032 };
0033 }
0034
0035 METCorrectorDBWriter::METCorrectorDBWriter(const edm::ParameterSet& pSet) {
0036 era = pSet.getUntrackedParameter<std::string>("era");
0037 algo = pSet.getUntrackedParameter<std::string>("algo");
0038 path = pSet.getUntrackedParameter<std::string>("path");
0039 payloadTag = algo;
0040 }
0041
0042 void METCorrectorDBWriter::beginJob() {
0043 LogDebug("default") << "beginJob===========";
0044
0045 MEtXYcorrectParametersCollection payload;
0046 std::cout << "Starting to import payload " << payloadTag << " from text files." << std::endl;
0047 for (int ilev(0); ilev < MEtXYcorrectParametersCollection::N_LEVELS; ++ilev) {
0048 std::string append("_");
0049 std::string levelName = payload.findLabel(static_cast<MEtXYcorrectParametersCollection::Level_t>(ilev));
0050
0051 append += levelName;
0052 append += "_";
0053 append += algo;
0054 append += ".txt";
0055 inputTxtFile = path + era + append;
0056 try {
0057 edm::FileInPath fip(inputTxtFile);
0058 std::cout << "Opened file " << inputTxtFile << std::endl;
0059
0060 std::vector<std::string> sections;
0061 payload.getSections(fip.fullPath(), sections);
0062
0063 if (sections.empty()) {
0064 payload.push_back(ilev, MEtXYcorrectParameters(fip.fullPath(), ""));
0065 } else {
0066 for (std::vector<std::string>::const_iterator isectbegin = sections.begin(),
0067 isectend = sections.end(),
0068 isect = isectbegin;
0069 isect != isectend;
0070 ++isect) {
0071 payload.push_back(ilev, MEtXYcorrectParameters(fip.fullPath(), *isect), *isect);
0072 std::cout << "Added level " << levelName + "_" + *isect << " to record " << ilev << std::endl;
0073 }
0074 }
0075 std::cout << "Added record " << ilev << std::endl;
0076 } catch (edm::Exception const&) {
0077 std::cout << "Have not found METC file: " << inputTxtFile << std::endl;
0078 }
0079 }
0080
0081 std::cout << "Opening PoolDBOutputService" << std::endl;
0082
0083 edm::Service<cond::service::PoolDBOutputService> s;
0084 if (s.isAvailable()) {
0085 std::cout << "Setting up payload tag " << payloadTag << std::endl;
0086 s->writeOneIOV(payload, s->beginOfTime(), payloadTag);
0087 }
0088 std::cout << "Wrote in CondDB payload label: " << payloadTag << std::endl;
0089 }
0090
0091 DEFINE_FWK_MODULE(METCorrectorDBWriter);