File indexing completed on 2024-04-06 12:21:03
0001 #include "sstream"
0002
0003
0004 #include "FWCore/Framework/interface/ModuleFactory.h"
0005 #include "FWCore/Framework/interface/ESProducer.h"
0006 #include "FWCore/Framework/interface/ESHandle.h"
0007 #include "FWCore/Framework/interface/ESProducts.h"
0008
0009 #include "CondFormats/L1TObjects/interface/L1TMuonOverlapParams.h"
0010 #include "CondFormats/DataRecord/interface/L1TMuonOverlapParamsRcd.h"
0011
0012 #include "L1Trigger/L1TMuonOverlap/interface/XMLConfigReader.h"
0013 #include "L1Trigger/L1TMuonOverlap/plugins/L1TMuonOverlapParamsESProducer.h"
0014
0015
0016
0017 L1TMuonOverlapParamsESProducer::L1TMuonOverlapParamsESProducer(const edm::ParameterSet& theConfig) {
0018
0019
0020 setWhatProduced(this, &L1TMuonOverlapParamsESProducer::produceParams);
0021
0022 if (!theConfig.exists("configXMLFile"))
0023 return;
0024 std::string fName = theConfig.getParameter<edm::FileInPath>("configXMLFile").fullPath();
0025
0026
0027 if (!theConfig.exists("patternsXMLFiles"))
0028 return;
0029 std::vector<std::string> fileNames;
0030 for (const auto& it : theConfig.getParameter<std::vector<edm::ParameterSet> >("patternsXMLFiles")) {
0031 fileNames.push_back(it.getParameter<edm::FileInPath>("patternsXMLFile").fullPath());
0032 }
0033
0034 XMLConfigReader myReader;
0035 myReader.setConfigFile(fName);
0036 readConnectionsXML(myReader);
0037
0038 for (const auto& it : fileNames) {
0039 myReader.setPatternsFile(it);
0040 readPatternsXML(myReader);
0041 }
0042
0043 unsigned int patternsVersion = myReader.getPatternsVersion();
0044 unsigned int fwVersion = params.fwVersion();
0045
0046 params.setFwVersion((fwVersion << 16) + patternsVersion);
0047 }
0048
0049
0050 L1TMuonOverlapParamsESProducer::~L1TMuonOverlapParamsESProducer() {}
0051
0052
0053 bool L1TMuonOverlapParamsESProducer::readConnectionsXML(const XMLConfigReader& aReader) {
0054 aReader.readConfig(¶ms);
0055
0056 return true;
0057 }
0058
0059
0060 bool L1TMuonOverlapParamsESProducer::readPatternsXML(XMLConfigReader& aReader) {
0061 l1t::LUT chargeLUT;
0062 l1t::LUT etaLUT;
0063 l1t::LUT ptLUT;
0064 l1t::LUT meanDistPhiLUT;
0065 l1t::LUT pdfLUT;
0066
0067 std::vector<l1t::LUT*> luts = {&chargeLUT, &etaLUT, &ptLUT, &meanDistPhiLUT, &pdfLUT};
0068 std::vector<std::string> types = {"iCharge", "iEta", "iPt", "meanDistPhi", "pdf"};
0069 aReader.readLUTs(luts, params, types);
0070
0071 params.setChargeLUT(chargeLUT);
0072 params.setEtaLUT(etaLUT);
0073 params.setPtLUT(ptLUT);
0074 params.setMeanDistPhiLUT(meanDistPhiLUT);
0075 params.setPdfLUT(pdfLUT);
0076
0077 return true;
0078 }
0079
0080
0081 L1TMuonOverlapParamsESProducer::ReturnType L1TMuonOverlapParamsESProducer::produceParams(
0082 const L1TMuonOverlapParamsRcd& iRecord) {
0083 return std::make_unique<L1TMuonOverlapParams>(params);
0084 }
0085
0086
0087 #include "FWCore/Framework/interface/MakerMacros.h"
0088 DEFINE_FWK_EVENTSETUP_MODULE(L1TMuonOverlapParamsESProducer);