CMS 3D CMS Logo

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::shared_ptr<L1TUtmTriggerMenu> newObject(const std::string& objectKey, const L1TUtmTriggerMenuO2ORcd& record) override ;
24 
27 };
28 
30 
31 std::shared_ptr<L1TUtmTriggerMenu> L1TUtmTriggerMenuOnlineProd::newObject(const std::string& objectKey, const L1TUtmTriggerMenuO2ORcd& record) {
32  using namespace edm::es;
33 
34  std::string stage2Schema = "CMS_TRG_L1_CONF" ;
35  edm::LogInfo( "L1-O2O: L1TUtmTriggerMenuOnlineProd" ) << "Producing L1TUtmTriggerMenu with key =" << objectKey ;
36 
37  if( objectKey.empty() ){
38  edm::LogError( "L1-O2O: L1TUtmTriggerMenuOnlineProd" ) << "Key is empty, returning empty L1TUtmTriggerMenu object";
39  throw std::runtime_error("Empty objectKey");
41  }
42 
43  std::vector< std::string > queryColumns;
44  queryColumns.push_back( "CONF" ) ;
45 
46  l1t::OMDSReader::QueryResults queryResult =
47  m_omdsReader.basicQuery( queryColumns,
48  stage2Schema,
49  "UGT_L1_MENU",
50  "UGT_L1_MENU.ID",
51  m_omdsReader.singleAttribute(objectKey)
52  ) ;
53 
54  if( queryResult.queryFailed() || queryResult.numberRows() != 1 ){
55  edm::LogError( "L1-O2O: L1TUtmTriggerMenuOnlineProd" ) << "Cannot get UGT_L1_MENU.CONF for ID = " << objectKey ;
56  throw std::runtime_error("Broken key");
58  }
59 
60  std::string l1Menu;
61  queryResult.fillVariable( "CONF", l1Menu );
63  std::istringstream iss(l1Menu);
64 
65  const L1TUtmTriggerMenu * cmenu = reinterpret_cast<const L1TUtmTriggerMenu *>(tmeventsetup::getTriggerMenu(iss));
66  L1TUtmTriggerMenu * menu = const_cast<L1TUtmTriggerMenu *>(cmenu);
67 
68  using namespace edm::es;
69  std::shared_ptr<L1TUtmTriggerMenu> pMenu(menu);
70  return pMenu;
71 }
72 
73 //define this as a plug-in
bool fillVariable(const std::string &columnName, T &outputVariable) const
Definition: OMDSReader.h:311
const QueryResults singleAttribute(const T &data) const
Definition: OMDSReader.h:295
JetCorrectorParameters::Record record
Definition: classes.h:7
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:86
std::shared_ptr< L1TUtmTriggerMenu > newObject(const std::string &objectKey, const L1TUtmTriggerMenuO2ORcd &record) override
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
Definition: ModuleFactory.h:60
L1TUtmTriggerMenuOnlineProd(const edm::ParameterSet &)