File indexing completed on 2023-10-25 09:38:04
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0024
0025 #include "CondTools/L1Trigger/plugins/L1CondDBPayloadWriter.h"
0026
0027 #include "CondFormats/L1TObjects/interface/L1TriggerKey.h"
0028 #include "CondFormats/DataRecord/interface/L1TriggerKeyRcd.h"
0029 #include "CondFormats/L1TObjects/interface/L1TriggerKeyList.h"
0030 #include "CondFormats/DataRecord/interface/L1TriggerKeyListRcd.h"
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043 L1CondDBPayloadWriter::L1CondDBPayloadWriter(const edm::ParameterSet& iConfig)
0044 : m_writeL1TriggerKey(iConfig.getParameter<bool>("writeL1TriggerKey")),
0045 m_writeConfigData(iConfig.getParameter<bool>("writeConfigData")),
0046 m_overwriteKeys(iConfig.getParameter<bool>("overwriteKeys")),
0047 m_logTransactions(iConfig.getParameter<bool>("logTransactions")),
0048 m_newL1TriggerKeyList(iConfig.getParameter<bool>("newL1TriggerKeyList")),
0049 l1TriggerKeyToken_(esConsumes()) {}
0050
0051 L1CondDBPayloadWriter::~L1CondDBPayloadWriter() {
0052
0053
0054 }
0055
0056
0057
0058
0059
0060
0061 void L1CondDBPayloadWriter::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0062 using namespace edm;
0063
0064
0065 L1TriggerKeyList oldKeyList;
0066
0067 if (!m_newL1TriggerKeyList) {
0068 if (!m_writer.fillLastTriggerKeyList(oldKeyList)) {
0069 edm::LogError("L1-O2O") << "Problem getting last L1TriggerKeyList";
0070 }
0071 }
0072
0073 L1TriggerKeyList* keyList = nullptr;
0074
0075
0076 std::string token;
0077 ESHandle<L1TriggerKey> key;
0078
0079
0080
0081
0082 bool triggerKeyOK = true;
0083 try {
0084
0085 key = iSetup.getHandle(l1TriggerKeyToken_);
0086
0087 if (!m_overwriteKeys) {
0088 triggerKeyOK = oldKeyList.token(key->tscKey()).empty();
0089 }
0090 } catch (l1t::DataAlreadyPresentException& ex) {
0091 triggerKeyOK = false;
0092 edm::LogVerbatim("L1-O2O") << ex.what();
0093 }
0094
0095 if (triggerKeyOK && m_writeL1TriggerKey) {
0096 edm::LogVerbatim("L1-O2O") << "Object key for L1TriggerKeyRcd@L1TriggerKey: " << key->tscKey();
0097 token = m_writer.writePayload(iSetup, "L1TriggerKeyRcd@L1TriggerKey");
0098 }
0099
0100
0101 bool throwException = false;
0102
0103 if (!token.empty() || !m_writeL1TriggerKey) {
0104
0105 if (m_writeL1TriggerKey) {
0106 keyList = new L1TriggerKeyList(oldKeyList);
0107 if (!(keyList->addKey(key->tscKey(), token, m_overwriteKeys))) {
0108 throw cond::Exception("L1CondDBPayloadWriter: TSC key " + key->tscKey() + " already in L1TriggerKeyList");
0109 }
0110 }
0111
0112 if (m_writeConfigData) {
0113
0114 L1TriggerKey::RecordToKey::const_iterator it = key->recordToKeyMap().begin();
0115 L1TriggerKey::RecordToKey::const_iterator end = key->recordToKeyMap().end();
0116
0117 for (; it != end; ++it) {
0118
0119 if (it->second == L1TriggerKey::kNullKey) {
0120 edm::LogVerbatim("L1-O2O") << "L1CondDBPayloadWriter: null object key for " << it->first
0121 << "; skipping this record.";
0122 } else {
0123
0124 if (oldKeyList.token(it->first, it->second).empty() || m_overwriteKeys) {
0125
0126 if (!oldKeyList.token(it->first, it->second).empty()) {
0127 edm::LogVerbatim("L1-O2O") << "*** Overwriting payload: object key for " << it->first << ": "
0128 << it->second;
0129 } else {
0130 edm::LogVerbatim("L1-O2O") << "object key for " << it->first << ": " << it->second;
0131 }
0132
0133 try {
0134 token = m_writer.writePayload(iSetup, it->first);
0135 } catch (l1t::DataInvalidException& ex) {
0136 edm::LogVerbatim("L1-O2O") << ex.what() << " Skipping to next record.";
0137
0138 throwException = true;
0139
0140 continue;
0141 }
0142
0143 if (!token.empty()) {
0144
0145 if (!keyList) {
0146 keyList = new L1TriggerKeyList(oldKeyList);
0147 }
0148
0149 if (!(keyList->addKey(it->first, it->second, token, m_overwriteKeys))) {
0150
0151
0152 throw cond::Exception("L1CondDBPayloadWriter: subsystem key " + it->second + " for " + it->first +
0153 " already in L1TriggerKeyList");
0154 }
0155 }
0156 } else {
0157 edm::LogVerbatim("L1-O2O") << "L1CondDBPayloadWriter: object key " << it->second << " for " << it->first
0158 << " already in L1TriggerKeyList";
0159 }
0160 }
0161 }
0162 }
0163 }
0164
0165 if (keyList) {
0166
0167 m_writer.writeKeyList(keyList, 0, m_logTransactions);
0168 }
0169
0170 if (throwException) {
0171 throw l1t::DataInvalidException("Payload problem found.");
0172 }
0173 }
0174
0175
0176 void L1CondDBPayloadWriter::beginJob() {}
0177
0178
0179 void L1CondDBPayloadWriter::endJob() {}
0180
0181
0182