32 unsigned int schema = triggerDBSchemaVersion();
39 long bunchgroupsetid = 0;
40 long prescaledclockid = 0;
45 unique_ptr<coral::IQuery>
q( m_session.nominalSchema().tableHandle(
"L1_MASTER_TABLE").newQuery() );
46 q->setRowCacheSize( 5 );
50 bindList.extend<
int>(
"mtId");
52 std::string cond =
"L1MT_ID = :mtId";
53 q->setCondition( cond, bindList );
57 attList.extend<
int>(
"L1MT_TRIGGER_MENU_ID" );
58 attList.extend<
long>(
"L1MT_PRESCALED_CLOCK_ID" );
59 attList.extend<
long>(
"L1MT_RANDOM_ID" );
61 attList.extend<
long>(
"L1MT_CTPVERSION" );
62 attList.extend<
long>(
"L1MT_L1VERSION" );
64 if( isRun1() ) attList.extend<
long>(
"L1MT_DEAD_TIME_ID" );
68 coral::ICursor& cursor0 =
q->execute();
70 if ( ! cursor0.next() ) {
72 throw std::runtime_error(
"CTPConfigLoader: CTPConfig not available" );
77 menuid = row0[
"L1MT_TRIGGER_MENU_ID"].data<
int>();
79 prescaledclockid = row0[
"L1MT_PRESCALED_CLOCK_ID"].data<
long>();
80 randomid = row0[
"L1MT_RANDOM_ID"].data<
long>();
81 if( isRun1() ) deadtimeid = row0[
"L1MT_DEAD_TIME_ID"].data<long>();
83 unsigned int ctpVersion;
84 unsigned int l1Version;
89 ctpVersion = row0[
"L1MT_CTPVERSION"].data<
long>();
90 l1Version = row0[
"L1MT_L1VERSION"].data<
long>();
98 L1DataDef::setMaxThresholdsFromL1Version( ctpcTarget.
l1Version() );
109 unique_ptr<coral::IQuery>
q( m_session.nominalSchema().tableHandle(
"L1_TRIGGER_MENU").newQuery() );
110 q->setRowCacheSize( 1 );
114 bindList.extend<
int>(
"menuId");
115 std::string cond =
"L1TM_ID = :menuId";
116 bindList[0].data<
int>() = menuid;
117 q->setCondition( cond, bindList );
121 attList1.extend<
long>(
"L1TM_CTP_FILES_ID" );
122 attList1.extend<
long>(
"L1TM_CTP_SMX_ID" );
125 coral::ICursor&
cursor =
q->execute();
130 throw std::runtime_error(
"CTPConfigLoader >> CTPConfig not available" );
134 long filesid =
row[
"L1TM_CTP_FILES_ID"].data<
long>();
135 long smxid =
row[
"L1TM_CTP_SMX_ID"].data<
long>();
137 if(filesid > 0 && smxid > 0) {
140 files->setId( filesid );
141 files->setSmxId( smxid );
150 TRG_MSG_ERROR(
"Error loading CTP files id " <<
files->id() <<
" and smx id " << smxid );
153 throw std::runtime_error(
"CTPConfigLoader: Error loading CTP files" );
157 catch (std::bad_cast& ex) {
158 TRG_MSG_ERROR(
"Caught exception in CTPConfigLoader : " << ex.what());
160 throw std::runtime_error(
"CTPConfigLoader: Error casting CTPFilesLoader" );
163 TRG_MSG_ERROR(
"Error loading CTP files, no files pointed to by the menu. CTP files id = " << filesid <<
", SMX files id = " << smxid);
167 if(
files !=
nullptr ) {
168 TRG_MSG_INFO(
"Loaded CTPfiles. CAM size=" <<
files->ctpcoreCAM().size() <<
", LUT size=" <<
files->ctpcoreCAM().size());
177 if ( !prsldr.
load( prs ) ) {
180 throw std::runtime_error(
"CTPConfigLoader: Error loading PrioritySet" );
183 }
catch (std::bad_cast& ex) {
184 TRG_MSG_ERROR(
"Caught exception in CTPConfigLoader : " << ex.what() );
186 throw std::runtime_error(
"CTPConfigLoader: Error casting PrioritySetLoader" );
202 if ( !mldr.
load(
m ) ) {
204 throw std::runtime_error(
"CTPConfigLoader: ERROR loading Menu" );
218 pss.
setId(prescalesetid);
220 TRG_MSG_ERROR(
"CTPConfigLoader: Error loading PrescaleSet " << pss.
id());
221 throw std::runtime_error(
"CTPConfigLoader: Error loading PrescaleSet" );
225 TRG_MSG_INFO(
"Not loading LVL1 prescales. PSK = " << prescalesetid);
235 bgs.
setId(bunchgroupsetid);
236 if ( !bgsldr.
load( bgs ) ) {
238 throw std::runtime_error(
"CTPConfigLoader: Error loading BunchGroupSet" );
249 psc.setId(prescaledclockid);
252 throw std::runtime_error(
"CTPConfigLoader: Error loading PrescaledClock" );
262 dt.setId(deadtimeid);
263 if ( !dtldr.
load(
dt ) ) {
265 throw std::runtime_error(
"CTPConfigLoader: Error loading DeadTime" );
276 if ( !rldr.
load(
r ) ) {
278 throw std::runtime_error(
"CTPConfigLoader: Error loading Random" );
284 catch(
const coral::Exception&
e ) {
286 m_session.transaction().rollback();
289 catch (std::bad_cast& ex) {