File indexing completed on 2024-04-06 12:22:19
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtTriggerMaskTechTrigConfigOnlineProd.h"
0017
0018
0019 #include <vector>
0020
0021
0022 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0023
0024
0025 L1GtTriggerMaskTechTrigConfigOnlineProd::L1GtTriggerMaskTechTrigConfigOnlineProd(const edm::ParameterSet& parSet)
0026 : L1ConfigOnlineProdBase<L1GtTriggerMaskTechTrigRcd, L1GtTriggerMask>(parSet),
0027 m_partitionNumber(parSet.getParameter<int>("PartitionNumber")) {
0028
0029 }
0030
0031
0032 L1GtTriggerMaskTechTrigConfigOnlineProd::~L1GtTriggerMaskTechTrigConfigOnlineProd() {
0033
0034 }
0035
0036
0037
0038 std::unique_ptr<L1GtTriggerMask> L1GtTriggerMaskTechTrigConfigOnlineProd::newObject(const std::string& objectKey) {
0039 auto pL1GtTriggerMask = std::make_unique<L1GtTriggerMask>();
0040
0041
0042
0043 const std::string gtSchema = "CMS_GT";
0044
0045
0046
0047
0048
0049 const std::vector<std::string>& columns = m_omdsReader.columnNames(gtSchema, "GT_PARTITION_FINOR_TT");
0050
0051 if (edm::isDebugEnabled()) {
0052 for (std::vector<std::string>::const_iterator iter = columns.begin(); iter != columns.end(); iter++) {
0053 LogTrace("L1GtTriggerMaskTechTrigConfigOnlineProd") << (*iter) << std::endl;
0054 }
0055 }
0056
0057 l1t::OMDSReader::QueryResults results = m_omdsReader.basicQuery(
0058 columns, gtSchema, "GT_PARTITION_FINOR_TT", "GT_PARTITION_FINOR_TT.ID", m_omdsReader.singleAttribute(objectKey));
0059
0060
0061 if (results.queryFailed()) {
0062 edm::LogError("L1-O2O") << "Problem with L1GtTriggerMaskTechTrigRcd key:" << objectKey;
0063 return pL1GtTriggerMask;
0064 }
0065
0066
0067 int maskSize = columns.size() - 1;
0068 std::vector<bool> trigMaskBool(maskSize, false);
0069 std::vector<unsigned int> trigMask(maskSize, 0);
0070
0071 for (int i = 0; i < maskSize; i++) {
0072 bool tMask = trigMaskBool[i];
0073 results.fillVariable(columns[i + 1], tMask);
0074 trigMask[i] = 0xFF & (~(static_cast<unsigned int>(tMask) << m_partitionNumber));
0075 }
0076
0077
0078 pL1GtTriggerMask->setGtTriggerMask(trigMask);
0079
0080 if (edm::isDebugEnabled()) {
0081 std::ostringstream myCoutStream;
0082 pL1GtTriggerMask->print(myCoutStream);
0083 LogTrace("L1GtTriggerMaskTechTrigConfigOnlineProd")
0084 << "\nThe following L1GtTriggerMaskTechTrigRcd record was read from OMDS: \n"
0085 << myCoutStream.str() << "\n"
0086 << std::endl;
0087 }
0088
0089 return pL1GtTriggerMask;
0090 }
0091
0092 DEFINE_FWK_EVENTSETUP_MODULE(L1GtTriggerMaskTechTrigConfigOnlineProd);