20 #include <CoralBase/Attribute.h>
21 #include <CoralBase/AttributeList.h>
23 #include "RelationalAccess/SchemaException.h"
24 #include "RelationalAccess/ITransaction.h"
25 #include "RelationalAccess/ITable.h"
26 #include "RelationalAccess/ISchema.h"
27 #include "RelationalAccess/ICursor.h"
28 #include "RelationalAccess/IQuery.h"
37 std::vector<TrigConf::MuonThresholdSet>
40 std::vector<TrigConf::MuonThresholdSet> vSets;
46 std::vector<int> sm_keys;
47 std::vector<std::string>
alias;
48 std::vector<bool> def;
50 msg() <<
"Load all sm keys from trigger_alias table." << std::endl;
51 coral::ITable&
table =
m_session.nominalSchema().tableHandle(
"TRIGGER_ALIAS");
53 query->setRowCacheSize( 5 );
57 attList.extend<
int>(
"TAL_SUPER_MASTER_TABLE_ID" );
58 attList.extend<std::string>(
"TAL_TRIGGER_ALIAS" );
59 attList.extend<
int>(
"TAL_DEFAULT" );
60 query->defineOutput(attList);
62 query->addToOutputList(
"TAL_SUPER_MASTER_TABLE_ID" );
63 query->addToOutputList(
"TAL_TRIGGER_ALIAS" );
64 query->addToOutputList(
"TAL_DEFAULT" );
69 sm_keys.push_back(
row[
"TAL_SUPER_MASTER_TABLE_ID"].data<int>());
70 alias.push_back(
row[
"TAL_TRIGGER_ALIAS"].data<std::string>());
71 def.push_back(
static_cast<bool>(
row[
"TAL_DEFAULT"].data<int>()));
74 for(
size_t i = 0;
i<sm_keys.size(); ++
i) {
76 msg() <<
"Found sm_key " << sm_keys[
i] <<
" alias '" <<
alias[
i]
77 <<
"' default " << def[
i] << std::endl;
82 if ( !this->
load( muons ) ) {
83 msg() <<
"Muon threshold set for sm key "
84 << sm_keys[
i] <<
" not available" << std::endl;
86 }
catch(std::bad_cast& ex) {
87 msg() <<
" Failed casting : " << ex.what();
89 vSets.push_back(muons);
94 }
catch(
const coral::SchemaException&
e ) {
95 msg() <<
"MuonThresholdSetLoader >> SchemaException: "
96 <<
e.what() << std::endl;
99 msg() <<
"MuonThresholdSetLoader >> Standard C++ exception: " <<
e.what() << std::endl;
102 msg() <<
"MuonThresholdSetLoader >> unknown C++ exception" << std::endl;
110 msg() <<
"MuonThresholdSetLoader start loading data" << std::endl;
112 unsigned int schema = triggerDBSchemaVersion();
122 int Lvl1MasterKey = 0;
127 coral::ITable&
table = m_session.nominalSchema().tableHandle(
"SUPER_MASTER_TABLE");
129 query->setRowCacheSize( 5 );
132 conditionData.extend<
int>(
"smtid");
133 query->setCondition(
"SMT_ID = :smtid" , conditionData );
134 conditionData[0].data<
int>() =
target.superMasterTableId();
137 attList.extend<
int>(
"SMT_L1_MASTER_TABLE_ID" );
138 query->defineOutput(attList);
139 query->addToOutputList(
"SMT_L1_MASTER_TABLE_ID" );
143 msg() <<
"MuonThresholdSetLoader >> No such SuperMaster key exists "
144 <<
target.superMasterTableId() << std::endl;
147 throw std::runtime_error(
"MuonThresholdSetLoader >> SuperMasterKey not available" );
150 Lvl1MasterKey =
row[
"SMT_L1_MASTER_TABLE_ID"].data<
int>();
159 coral::ITable&
table = m_session.nominalSchema().tableHandle(
"L1_MASTER_TABLE");
161 query->setRowCacheSize( 5 );
164 conditionData.extend<
int>(
"l1mtid");
165 query->setCondition(
"L1MT_ID = :l1mtid" , conditionData );
166 conditionData[0].data<
int>() = Lvl1MasterKey;
169 attList.extend<
int>(
"L1MT_MUON_THRESHOLD_SET_ID" );
170 query->defineOutput(attList);
172 query->addToOutputList(
"L1MT_MUON_THRESHOLD_SET_ID" );
175 msg() <<
"MuonThresholdSetLoader >> No such L1 master key exists "
176 << Lvl1MasterKey << std::endl;
179 throw std::runtime_error(
"MuonThresholdSetLoader >> L1MasterKey not available" );
182 setId =
row[
"L1MT_MUON_THRESHOLD_SET_ID"].data<
int>();
187 }
catch(
const coral::SchemaException&
e ) {
188 msg() <<
"MuonThresholdSetLoader >> SchemaException: "
189 <<
e.what() << std::endl;
190 m_session.transaction().rollback();
193 msg() <<
"MuonThresholdSetLoader >> Standard C++ exception: " <<
e.what() << std::endl;
194 m_session.transaction().rollback();
197 msg() <<
"MuonThresholdSetLoader >> unknown C++ exception" << std::endl;
198 m_session.transaction().rollback();
204 msg() <<
"Super master key " <<
target.superMasterTableId()
205 <<
" MuonThresholdSet id " <<
target.id() << std::endl;
207 coral::ITable&
table = m_session.nominalSchema().tableHandle(
"L1_MUON_THRESHOLD_SET");
209 query->setRowCacheSize( 5 );
211 std::string cond =
"L1MTS_ID = :threshId";
213 alist.extend<
int>(
"threshId");
218 attList.extend<std::string>(
"L1MTS_NAME" );
219 attList.extend<
int>(
"L1MTS_VERSION" );
220 attList.extend<
int>(
"L1MTS_RPC_AVAILABLE" );
221 attList.extend<
int>(
"L1MTS_RPC_AVAILABLE_ONLINE" );
222 attList.extend<
int>(
"L1MTS_TGC_AVAILABLE" );
223 attList.extend<
int>(
"L1MTS_TGC_AVAILABLE_ONLINE" );
224 attList.extend<
int>(
"L1MTS_RPC_SET_EXT_ID");
225 attList.extend<std::string>(
"L1MTS_RPC_SET_NAME" );
226 attList.extend<
int>(
"L1MTS_TGC_SET_EXT_ID");
227 attList.extend<std::string>(
"L1MTS_TGC_SET_NAME" );
228 attList.extend<
int>(
"L1MTS_RPC_PT1_EXT_ID" );
229 attList.extend<
int>(
"L1MTS_RPC_PT2_EXT_ID" );
230 attList.extend<
int>(
"L1MTS_RPC_PT3_EXT_ID" );
231 attList.extend<
int>(
"L1MTS_RPC_PT4_EXT_ID" );
232 attList.extend<
int>(
"L1MTS_RPC_PT5_EXT_ID" );
233 attList.extend<
int>(
"L1MTS_RPC_PT6_EXT_ID" );
234 query->defineOutput(attList);
236 query->addToOutputList(
"L1MTS_NAME" );
237 query->addToOutputList(
"L1MTS_VERSION" );
238 query->addToOutputList(
"L1MTS_RPC_AVAILABLE" );
239 query->addToOutputList(
"L1MTS_RPC_AVAILABLE_ONLINE" );
240 query->addToOutputList(
"L1MTS_TGC_AVAILABLE" );
241 query->addToOutputList(
"L1MTS_TGC_AVAILABLE_ONLINE" );
242 query->addToOutputList(
"L1MTS_RPC_SET_EXT_ID" );
243 query->addToOutputList(
"L1MTS_RPC_SET_NAME" );
244 query->addToOutputList(
"L1MTS_TGC_SET_EXT_ID" );
245 query->addToOutputList(
"L1MTS_TGC_SET_NAME" );
246 query->addToOutputList(
"L1MTS_RPC_PT1_EXT_ID" );
247 query->addToOutputList(
"L1MTS_RPC_PT2_EXT_ID" );
248 query->addToOutputList(
"L1MTS_RPC_PT3_EXT_ID" );
249 query->addToOutputList(
"L1MTS_RPC_PT4_EXT_ID" );
250 query->addToOutputList(
"L1MTS_RPC_PT5_EXT_ID" );
251 query->addToOutputList(
"L1MTS_RPC_PT6_EXT_ID" );
255 msg() <<
"MuonThresholdSetLoader >> No such threshold set exists : "
256 <<
target.id() << std::endl;
259 throw std::runtime_error(
"MuonThresholdSetLoader >> ThresholdSet not available" );
264 target.setName(
row[
"L1MTS_NAME"].data<std::string>() );
265 target.setVersion(
row[
"L1MTS_VERSION"].data<int>() );
267 target.setRpcAvailable(
static_cast<bool>(
row[
"L1MTS_RPC_AVAILABLE"].data<int>()) );
268 target.setRpcAvailableOnline(
static_cast<bool>(
row[
"L1MTS_RPC_AVAILABLE_ONLINE"].data<int>()) );
269 target.setTgcAvailable(
static_cast<bool>(
row[
"L1MTS_TGC_AVAILABLE"].data<int>()) );
270 target.setTgcAvailableOnline(
static_cast<bool>(
row[
"L1MTS_TGC_AVAILABLE_ONLINE"].data<int>()) );
272 target.setRpcSetId(
row[
"L1MTS_RPC_SET_EXT_ID"].data<int>() );
273 target.setTgcSetId(
row[
"L1MTS_TGC_SET_EXT_ID"].data<int>() );
275 target.setRpcSetName(
row[
"L1MTS_RPC_SET_NAME"].data<std::string>() );
276 target.setTgcSetName(
row[
"L1MTS_TGC_SET_NAME"].data<std::string>() );
278 target.setRpcPt1Id(
row[
"L1MTS_RPC_PT1_EXT_ID"].data<int>() );
279 target.setRpcPt2Id(
row[
"L1MTS_RPC_PT2_EXT_ID"].data<int>() );
280 target.setRpcPt3Id(
row[
"L1MTS_RPC_PT3_EXT_ID"].data<int>() );
281 target.setRpcPt4Id(
row[
"L1MTS_RPC_PT4_EXT_ID"].data<int>() );
282 target.setRpcPt5Id(
row[
"L1MTS_RPC_PT5_EXT_ID"].data<int>() );
283 target.setRpcPt6Id(
row[
"L1MTS_RPC_PT6_EXT_ID"].data<int>() );
288 }
catch(
const coral::SchemaException&
e ) {
289 msg() <<
"MuonThresholdSetLoader >> SchemaException: "
290 <<
e.what() << std::endl;
291 m_session.transaction().rollback();
294 msg() <<
"MuonThresholdSetLoader >> Standard C++ exception: " <<
e.what() << std::endl;
295 m_session.transaction().rollback();
298 msg() <<
"MuonThresholdSetLoader >> unknown C++ exception" << std::endl;
299 m_session.transaction().rollback();
303 msg() <<
"Schema version " <<
schema <<
" too old, don't load MuonThresholdSet" << std::endl;