CMS 3D CMS Logo

PCLMetadataWriter.cc
Go to the documentation of this file.
1 
2 /*
3  * See header file for a description of this class.
4  *
5  * \author G. Cerminara - CERN
6  */
7 
9 
11 
19 
20 #include <iostream>
21 
22 using namespace std;
23 using namespace edm;
24 
26  readFromDB = pSet.getParameter<bool>("readFromDB");
27 
28  vector<ParameterSet> recordsToMap = pSet.getParameter<vector<ParameterSet>>("recordsToMap");
29  for (vector<ParameterSet>::const_iterator recordPset = recordsToMap.begin(); recordPset != recordsToMap.end();
30  ++recordPset) {
31  // record is the key which identifies one set of metadata in
32  // DropBoxMetadataRcd (not necessarily a record in the strict framework
33  // sense)
34  string record = (*recordPset).getUntrackedParameter<string>("record");
35 
36  map<string, string> jrInfo;
37  if (!readFromDB) {
38  vector<string> paramKeys = (*recordPset).getParameterNames();
39  for (vector<string>::const_iterator key = paramKeys.begin(); key != paramKeys.end(); ++key) {
40  jrInfo["Source"] = "AlcaHarvesting";
41  jrInfo["FileClass"] = "ALCA";
42  if (*key != "record") {
43  jrInfo[*key] = (*recordPset).getUntrackedParameter<string>(*key);
44  }
45  }
46  }
47  recordMap[record] = jrInfo;
48  }
49 }
50 
52 
54 
56 
58  const DropBoxMetadata *metadata = nullptr;
59 
60  if (readFromDB) {
61  // Read the objects
63  eSetup.get<DropBoxMetadataRcd>().get(mdPayload);
64 
65  metadata = mdPayload.product();
66  }
67 
68  // get the PoolDBOutputService
70  if (poolDbService.isAvailable()) {
72  if (jr.isAvailable()) {
73  // the filename is unique for all records
74  string filename = poolDbService->session().connectionString();
75 
76  // loop over all records
77  for (map<string, map<string, string>>::const_iterator recordAndMap = recordMap.begin();
78  recordAndMap != recordMap.end();
79  ++recordAndMap) {
80  string record = (*recordAndMap).first;
81 
82  // this is the map of metadata that we write in the JR
83  map<string, string> jrInfo = (*recordAndMap).second;
84  if (readFromDB) {
85  if (metadata->knowsRecord(record)) {
86  jrInfo = metadata->getRecordParameters(record).getParameterMap();
87  }
88  }
89 
90  // name of the the input tag in the metadata for the condUploader
91  // metadata needs to be the same as the tag written out by the
92  // harvesting step
93  jrInfo["inputtag"] = poolDbService->tag(record);
94 
95  // actually write in the job report
96  jr->reportAnalysisFile(filename, jrInfo);
97  }
98  }
99  }
100 }
101 
T getParameter(std::string const &) const
PCLMetadataWriter(const edm::ParameterSet &)
Constructor.
JetCorrectorParameters::Record record
Definition: classes.h:7
bool knowsRecord(const std::string &record) const
cond::persistency::Session session() const
void analyze(const edm::Event &, const edm::EventSetup &) override
std::string tag(const std::string &recordName)
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
const std::map< std::string, std::string > & getParameterMap() const
bool isAvailable() const
Definition: Service.h:40
std::string connectionString()
Definition: Session.cc:232
void endRun(const edm::Run &, const edm::EventSetup &) override
HLT enums.
void reportAnalysisFile(std::string const &fileName, std::map< std::string, std::string > const &fileData)
Definition: JobReport.cc:473
~PCLMetadataWriter() override
Destructor.
T get() const
Definition: EventSetup.h:71
void beginRun(const edm::Run &, const edm::EventSetup &) override
const Parameters & getRecordParameters(const std::string &record) const
T const * product() const
Definition: ESHandle.h:86
Definition: event.py:1
Definition: Run.h:45