CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
L1TUtmTriggerMenuOnlineProd.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <fstream>
3 #include <stdexcept>
4 
5 #include "tmEventSetup/tmEventSetup.hh"
6 
7 #include "tmEventSetup/esTriggerMenu.hh"
8 #include "tmEventSetup/esAlgorithm.hh"
9 #include "tmEventSetup/esCondition.hh"
10 #include "tmEventSetup/esObject.hh"
11 #include "tmEventSetup/esCut.hh"
12 #include "tmEventSetup/esScale.hh"
13 #include "tmGrammar/Algorithm.hh"
14 
19 
20 class L1TUtmTriggerMenuOnlineProd : public L1ConfigOnlineProdBaseExt<L1TUtmTriggerMenuO2ORcd, L1TUtmTriggerMenu> {
21 private:
22 public:
23  std::unique_ptr<const L1TUtmTriggerMenu> newObject(const std::string& objectKey,
24  const L1TUtmTriggerMenuO2ORcd& record) override;
25 
27  ~L1TUtmTriggerMenuOnlineProd(void) override {}
28 };
29 
32  wrappedSetWhatProduced(iConfig);
33 }
34 
35 std::unique_ptr<const L1TUtmTriggerMenu> L1TUtmTriggerMenuOnlineProd::newObject(const std::string& objectKey,
37  std::string stage2Schema = "CMS_TRG_L1_CONF";
38  edm::LogInfo("L1-O2O: L1TUtmTriggerMenuOnlineProd") << "Producing L1TUtmTriggerMenu with key =" << objectKey;
39 
40  if (objectKey.empty()) {
41  edm::LogError("L1-O2O: L1TUtmTriggerMenuOnlineProd") << "Key is empty, returning empty L1TUtmTriggerMenu object";
42  throw std::runtime_error("Empty objectKey");
43  }
44 
45  std::vector<std::string> queryColumns;
46  queryColumns.push_back("CONF");
47 
49  queryColumns, stage2Schema, "UGT_L1_MENU", "UGT_L1_MENU.ID", m_omdsReader.singleAttribute(objectKey));
50 
51  if (queryResult.queryFailed() || queryResult.numberRows() != 1) {
52  edm::LogError("L1-O2O: L1TUtmTriggerMenuOnlineProd") << "Cannot get UGT_L1_MENU.CONF for ID = " << objectKey;
53  throw std::runtime_error("Broken key");
54  }
55 
56  std::string l1Menu;
57  queryResult.fillVariable("CONF", l1Menu);
58 
59  std::istringstream iss(l1Menu);
60 
61  const L1TUtmTriggerMenu* cmenu = reinterpret_cast<const L1TUtmTriggerMenu*>(tmeventsetup::getTriggerMenu(iss));
62  return std::unique_ptr<const L1TUtmTriggerMenu>(cmenu);
63 }
64 
65 //define this as a plug-in
bool fillVariable(const std::string &columnName, T &outputVariable) const
Definition: OMDSReader.h:274
const QueryResults singleAttribute(const T &data) const
Definition: OMDSReader.h:259
Log< level::Error, false > LogError
const QueryResults basicQuery(const std::vector< std::string > &columnNames, const std::string &schemaName, const std::string &tableName, const std::string &conditionLHS="", const QueryResults conditionRHS=QueryResults(), const std::string &conditionRHSName="")
Definition: OMDSReader.cc:75
edm::ESConsumesCollectorT< L1TUtmTriggerMenuO2ORcd > wrappedSetWhatProduced(const edm::ParameterSet &)
Log< level::Info, false > LogInfo
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
Definition: ModuleFactory.h:60
L1TUtmTriggerMenuOnlineProd(const edm::ParameterSet &)
std::unique_ptr< const L1TUtmTriggerMenu > newObject(const std::string &objectKey, const L1TUtmTriggerMenuO2ORcd &record) override