13 #include "RelationalAccess/ICursor.h" 14 #include "RelationalAccess/IQuery.h" 15 #include "RelationalAccess/IQueryDefinition.h" 16 #include "RelationalAccess/ISchema.h" 17 #include "RelationalAccess/ISessionProxy.h" 18 #include "RelationalAccess/ITransaction.h" 20 #include "CoralBase/Attribute.h" 21 #include "CoralBase/AttributeList.h" 26 : id_(_config.getParameter<
std::
string>(
"identifier"))
27 , data_tag_(_config.getParameter<
std::
string>(
"dataTag"))
28 , since_run_(_config.getParameter<unsigned long long>(
"sinceRun"))
29 , txt_file_(_config.getUntrackedParameter<
std::
string>(
"txtFile",
""))
30 , connect_(_config.getParameter<
std::
string>(
"connect"))
32 edm::LogInfo(
"RPCDCCLinkMapHandler") <<
"Configuring Input Connection";
46 <<
", older than most recent tag" << _tag_info.
lastInterval.first;
48 edm::LogInfo(
"RPCDCCLinkMapHandler") <<
"Opening read-only Input Session";
50 edm::LogInfo(
"RPCDCCLinkMapHandler") <<
"Started Input Transaction";
51 _input_session->transaction().start(
true);
53 std::auto_ptr<coral::IQuery> _query(_input_session->schema(
"CMS_RPC_CONF").newQuery());
54 _query->addToTableList(
"DCCBOARD");
55 _query->addToTableList(
"TRIGGERBOARD");
56 _query->addToTableList(
"BOARDBOARDCONN");
57 _query->addToTableList(
"BOARD");
59 _query->addToOutputList(
"DCCBOARD.FEDNUMBER",
"DCC");
60 _query->addToOutputList(
"TRIGGERBOARD.DCCINPUTCHANNELNUM",
"DCC_INPUT");
61 _query->addToOutputList(
"BOARDBOARDCONN.COLLECTORBOARDINPUTNUM",
"TB_INPUT");
62 _query->addToOutputList(
"BOARD.NAME",
"LB_NAME");
64 coral::AttributeList _query_condition_data;
65 _query->setCondition(
"TRIGGERBOARD.DCCBOARD_DCCBOARDID=DCCBOARD.DCCBOARDID" 66 " AND BOARDBOARDCONN.BOARD_COLLECTORBOARDID=TRIGGERBOARD.TRIGGERBOARDID" 67 " AND BOARD.BOARDID=BOARDBOARDCONN.BOARD_BOARDID" 68 , _query_condition_data);
70 int _dcc(0), _dcc_input(0), _tb_input(0);
75 = _dcc_link_map_object->
getMap();
79 coral::ICursor & _cursor(_query->execute());
80 while (_cursor.next()) {
81 coral::AttributeList
const & _row(_cursor.currentRow());
86 if (_lb_name != _lb_link.
getName())
87 edm::LogWarning(
"RPCDCCLinkMapHandler") <<
"Mismatch LinkBoard Name: " << _lb_name <<
" vs " << _lb_link;
90 _dcc = _row[
"DCC"].data<
long long>();
91 _dcc_input = _row[
"DCC_INPUT"].data<
long long>();
92 _tb_input = _row[
"TB_INPUT"].data<
long long>();
94 _dcc_link_map.insert(std::pair<RPCDCCLink, RPCLBLink>(
RPCDCCLink(_dcc, _dcc_input, _tb_input)
99 _input_session->transaction().commit();
104 for (RPCDCCLinkMap::map_type::const_iterator _link = _dcc_link_map.begin()
105 ; _link != _dcc_link_map.end() ; ++_link) {
106 _ofstream << _link->first <<
": " << _link->second << std::endl;
110 edm::LogInfo(
"RPCDCCLinkMapHandler") <<
"Add to transfer list";
std::map< RPCDCCLink, RPCLBLink > map_type
cond::persistency::ConnectionPool connection_
T getParameter(std::string const &) const
OldContainer m_to_transfer
void setParameters(const edm::ParameterSet &connectionPset)
cond::ValidityInterval lastInterval
std::string getName() const
RPCLBLink & setLinkBoard(int _linkboard=wildcard_)
static void parse(std::string const &_name, RPCLBLink &_lb_link)
RPCLBLink & setConnector(int _connector=wildcard_)
RPCDCCLinkMapHandler(edm::ParameterSet const &_config)
std::shared_ptr< coral::ISessionProxy > createCoralSession(const std::string &connectionString, bool writeCapable=false)
cond::TagInfo_t const & tagInfo() const