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::unique_ptr<const L1TUtmTriggerMenu> newObject(const std::string& objectKey, const L1TUtmTriggerMenuO2ORcd& record) override ;
24 
27 };
28 
30 
31 std::unique_ptr<const L1TUtmTriggerMenu> L1TUtmTriggerMenuOnlineProd::newObject(const std::string& objectKey, const L1TUtmTriggerMenuO2ORcd& record) {
32 
33  std::string stage2Schema = "CMS_TRG_L1_CONF" ;
34  edm::LogInfo( "L1-O2O: L1TUtmTriggerMenuOnlineProd" ) << "Producing L1TUtmTriggerMenu with key =" << objectKey ;
35 
36  if( objectKey.empty() ){
37  edm::LogError( "L1-O2O: L1TUtmTriggerMenuOnlineProd" ) << "Key is empty, returning empty L1TUtmTriggerMenu object";
38  throw std::runtime_error("Empty objectKey");
39  }
40 
41  std::vector< std::string > queryColumns;
42  queryColumns.push_back( "CONF" ) ;
43 
44  l1t::OMDSReader::QueryResults queryResult =
45  m_omdsReader.basicQuery( queryColumns,
46  stage2Schema,
47  "UGT_L1_MENU",
48  "UGT_L1_MENU.ID",
49  m_omdsReader.singleAttribute(objectKey)
50  ) ;
51 
52  if( queryResult.queryFailed() || queryResult.numberRows() != 1 ){
53  edm::LogError( "L1-O2O: L1TUtmTriggerMenuOnlineProd" ) << "Cannot get UGT_L1_MENU.CONF for ID = " << objectKey ;
54  throw std::runtime_error("Broken key");
55  }
56 
57  std::string l1Menu;
58  queryResult.fillVariable( "CONF", l1Menu );
59 
60  std::istringstream iss(l1Menu);
61 
62  const L1TUtmTriggerMenu * cmenu = reinterpret_cast<const L1TUtmTriggerMenu *>(tmeventsetup::getTriggerMenu(iss));
63  return std::unique_ptr<const L1TUtmTriggerMenu>(cmenu);
64 }
65 
66 //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
#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