Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "Calibration/TkAlCaRecoProducers/plugins/PCLMetadataWriter.h"
00011
00012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00013
00014 #include "FWCore/ServiceRegistry/interface/Service.h"
00015 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
00016 #include "FWCore/MessageLogger/interface/JobReport.h"
00017 #include "FWCore/Framework/interface/ESHandle.h"
00018 #include "FWCore/Framework/interface/EventSetup.h"
00019 #include "CondFormats/DataRecord/interface/DropBoxMetadataRcd.h"
00020 #include "CondFormats/Common/interface/DropBoxMetadata.h"
00021
00022
00023 using namespace std;
00024 using namespace edm;
00025
00026 PCLMetadataWriter::PCLMetadataWriter(const edm::ParameterSet& pSet){
00027
00028 readFromDB = pSet.getParameter<bool>("readFromDB");
00029
00030
00031 vector<ParameterSet> recordsToMap = pSet.getParameter<vector<ParameterSet> >("recordsToMap");
00032 for(vector<ParameterSet>::const_iterator recordPset = recordsToMap.begin();
00033 recordPset != recordsToMap.end();
00034 ++recordPset) {
00035
00036 string record = (*recordPset).getUntrackedParameter<string>("record");
00037 map<string, string> jrInfo;
00038 if(!readFromDB) {
00039 vector<string> paramKeys = (*recordPset).getParameterNames();
00040 for(vector<string>::const_iterator key = paramKeys.begin();
00041 key != paramKeys.end();
00042 ++key) {
00043 jrInfo["Source"] = "AlcaHarvesting";
00044 jrInfo["FileClass"] = "ALCA";
00045 if(*key != "record") {
00046 jrInfo[*key] = (*recordPset).getUntrackedParameter<string>(*key);
00047 }
00048 }
00049 }
00050 recordMap[record] = jrInfo;
00051
00052 }
00053
00054 }
00055
00056 PCLMetadataWriter::~PCLMetadataWriter(){}
00057
00058
00059 void PCLMetadataWriter::analyze(const edm::Event& event, const edm::EventSetup& eSetup) {}
00060
00061
00062 void PCLMetadataWriter::beginRun(const edm::Run& run, const edm::EventSetup& eSetup) {}
00063
00064 void PCLMetadataWriter::endRun(const edm::Run& run, const edm::EventSetup& eSetup) {
00065
00066 const DropBoxMetadata *metadata = 0;
00067
00068 if(readFromDB) {
00069
00070 edm::ESHandle<DropBoxMetadata> mdPayload;
00071 eSetup.get<DropBoxMetadataRcd>().get(mdPayload);
00072
00073 metadata = mdPayload.product();
00074 }
00075
00076
00077 Service<cond::service::PoolDBOutputService> poolDbService;
00078 if(poolDbService.isAvailable() ) {
00079 edm::Service<edm::JobReport> jr;
00080 if (jr.isAvailable()) {
00081
00082 string filename = poolDbService->session().connectionString();
00083
00084
00085 for(map<string, map<string, string> >::const_iterator recordAndMap = recordMap.begin();
00086 recordAndMap != recordMap.end();
00087 ++recordAndMap) {
00088
00089 string record = (*recordAndMap).first;
00090
00091 map<string, string> jrInfo = (*recordAndMap).second;
00092 if(readFromDB) {
00093 if(metadata->knowsRecord(record)) {
00094 jrInfo = metadata->getRecordParameters(record).getParameterMap();
00095 }
00096 }
00097 jrInfo["inputtag"] = poolDbService->tag(record);
00098
00099
00100
00101 jr->reportAnalysisFile(filename, jrInfo);
00102 }
00103 }
00104 }
00105 }
00106
00107
00108 #include "FWCore/Framework/interface/MakerMacros.h"
00109 DEFINE_FWK_MODULE(PCLMetadataWriter);