25 {
26 TRG_MSG_INFO(
"Loading data for L1 master key " << ctpcTarget.lvl1MasterTableId()
27 << " L1 PSS key " << ctpcTarget.prescaleSetId()
28 << " L1 BGS key " << ctpcTarget.bunchGroupSetId() );
29
30 try {
31
34
36
37 long prescalesetid = ctpcTarget.prescaleSetId();
38 int menuid = 0;
39 long bunchgroupsetid = 0;
40 long prescaledclockid = 0;
41 long randomid = 0;
42 long deadtimeid = 0;
43
44 {
45 unique_ptr<coral::IQuery>
q(
m_session.nominalSchema().tableHandle(
"L1_MASTER_TABLE").newQuery() );
46 q->setRowCacheSize( 5 );
47
48
49 coral::AttributeList bindList;
50 bindList.extend<int>("mtId");
51 bindList[0].data<int>() = ctpcTarget.lvl1MasterTableId();
52 std::string cond = "L1MT_ID = :mtId";
53 q->setCondition( cond, bindList );
54
55
56 coral::AttributeList attList;
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" );
63 }
64 if(
isRun1() ) attList.extend<
long>(
"L1MT_DEAD_TIME_ID" );
65
67
68 coral::ICursor& cursor0 =
q->execute();
69
70 if ( ! cursor0.next() ) {
71 TRG_MSG_ERROR(
"No such Master_Table exists " << ctpcTarget.lvl1MasterTableId() );
72 throw std::runtime_error( "CTPConfigLoader: CTPConfig not available" );
73 }
74
75 const coral::AttributeList& row0 = cursor0.currentRow();
76
77 menuid = row0["L1MT_TRIGGER_MENU_ID"].data<int>();
78 bunchgroupsetid = ctpcTarget.bunchGroupSetId();
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>();
82
83 unsigned int ctpVersion;
84 unsigned int l1Version;
86 ctpVersion = 3;
87 l1Version = 0;
88 } else {
89 ctpVersion = row0["L1MT_CTPVERSION"].data<long>();
90 l1Version = row0["L1MT_L1VERSION"].data<long>();
91 }
92 ctpcTarget.setCTPVersion(ctpVersion);
93 ctpcTarget.setL1Version(l1Version);
94
97
99
100
101
102 }
103
104 if( ctpcTarget.loadCtpFiles() ) {
105
107
108
109 unique_ptr<coral::IQuery>
q(
m_session.nominalSchema().tableHandle(
"L1_TRIGGER_MENU").newQuery() );
110 q->setRowCacheSize( 1 );
111
112
113 coral::AttributeList bindList;
114 bindList.extend<int>("menuId");
115 std::string cond = "L1TM_ID = :menuId";
116 bindList[0].data<int>() = menuid;
117 q->setCondition( cond, bindList );
118
119
120 coral::AttributeList attList1;
121 attList1.extend<long>( "L1TM_CTP_FILES_ID" );
122 attList1.extend<long>( "L1TM_CTP_SMX_ID" );
124
125 coral::ICursor&
cursor =
q->execute();
126
130 throw std::runtime_error( "CTPConfigLoader >> CTPConfig not available" );
131 }
132
133 const coral::AttributeList&
row =
cursor.currentRow();
134 long filesid =
row[
"L1TM_CTP_FILES_ID"].data<
long>();
135 long smxid =
row[
"L1TM_CTP_SMX_ID"].data<
long>();
136
137 if(filesid > 0 && smxid > 0) {
138
139 CTPFiles*
files =
new CTPFiles();
140 files->setId( filesid );
141 files->setSmxId( smxid );
142 files->setLoadCtpcoreFiles( ctpcTarget.loadCtpcoreFiles() );
143 files->setLoadCtpinFiles( ctpcTarget.loadCtpinFiles() );
144 files->setLoadCtpmonFiles( ctpcTarget.loadCtpmonFiles() );
145 try {
146 CTPFilesLoader& ctpfilesldr =
147 dynamic_cast<CTPFilesLoader&
>(
m_storageMgr.ctpFilesLoader());
149 if ( !ctpfilesldr.load( *
files ) ) {
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" );
154 }
155 ctpcTarget.setCTPFiles(
files );
156 }
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" );
161 }
162 } else {
163 TRG_MSG_ERROR(
"Error loading CTP files, no files pointed to by the menu. CTP files id = " << filesid <<
", SMX files id = " << smxid);
164 }
165
166 CTPFiles *
files = ctpcTarget.ctpfiles();
167 if(
files !=
nullptr ) {
168 TRG_MSG_INFO(
"Loaded CTPfiles. CAM size=" <<
files->ctpcoreCAM().size() <<
", LUT size=" <<
files->ctpcoreCAM().size());
169 }
170
171
173 try {
174 PrioritySetLoader& prsldr =
dynamic_cast<PrioritySetLoader&
>(
m_storageMgr.prioritySetLoader());
175 PrioritySet prs;
176 prs.setLvl1MasterTableId(ctpcTarget.lvl1MasterTableId());
177 if ( !prsldr.load( prs ) ) {
178 TRG_MSG_ERROR(
"Can't load PrioritySet " << prs.lvl1MasterTableId());
180 throw std::runtime_error( "CTPConfigLoader: Error loading PrioritySet" );
181 }
182 ctpcTarget.setPrioritySet(prs);
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" );
187 }
188 }
189 } else {
191 }
192
193
194
195
196 {
197 MenuLoader& mldr =
dynamic_cast<MenuLoader&
>(
m_storageMgr.menuLoader());
199 Menu&
m = ctpcTarget.menu();
201 m.setSuperMasterTableId(ctpcTarget.superMasterTableId());
202 if ( !mldr.load( m ) ) {
204 throw std::runtime_error( "CTPConfigLoader: ERROR loading Menu" );
205 }
207 ctpcTarget.menu().thresholdConfig().attributeThresholdNumbers();
208 }
209 }
210
211
212 {
213 PrescaleSetLoader& psldr =
dynamic_cast<PrescaleSetLoader&
>(
m_storageMgr.prescaleSetLoader());
215 PrescaleSet pss = ctpcTarget.prescaleSet();
216 if( prescalesetid > 0 && (schema > 6 ||
isRun2()) ) {
218 pss.setId(prescalesetid);
219 if ( !psldr.load( ctpcTarget.ctpVersion(), pss ) ) {
220 TRG_MSG_ERROR(
"CTPConfigLoader: Error loading PrescaleSet " << pss.id());
221 throw std::runtime_error( "CTPConfigLoader: Error loading PrescaleSet" );
222 }
223 ctpcTarget.setPrescaleSet(pss);
224 } else {
225 TRG_MSG_INFO(
"Not loading LVL1 prescales. PSK = " << prescalesetid);
226 }
227 }
228
229
230 {
231 BunchGroupSetLoader& bgsldr =
dynamic_cast<BunchGroupSetLoader&
>(
m_storageMgr.bunchGroupSetLoader());
233 BunchGroupSet bgs = ctpcTarget.bunchGroupSet();
234 if( bunchgroupsetid > 0 && (schema > 6 ||
isRun2())) {
235 bgs.setId(bunchgroupsetid);
236 if ( !bgsldr.load( bgs ) ) {
238 throw std::runtime_error( "CTPConfigLoader: Error loading BunchGroupSet" );
239 }
240 ctpcTarget.setBunchGroupSet(bgs);
241 }
242 }
243
244
245 {
246 PrescaledClockLoader& pscldr =
dynamic_cast<PrescaledClockLoader&
>(
m_storageMgr.prescaledClockLoader());
248 PrescaledClock psc;
249 psc.setId(prescaledclockid);
250 if ( !pscldr.load( psc ) ) {
252 throw std::runtime_error( "CTPConfigLoader: Error loading PrescaledClock" );
253 }
254 ctpcTarget.setPrescaledClock(psc);
255 }
256
257
259 DeadTimeLoader& dtldr =
dynamic_cast<DeadTimeLoader&
>(
m_storageMgr.deadTimeLoader());
262 dt.setId(deadtimeid);
263 if ( !dtldr.load( dt ) ) {
265 throw std::runtime_error( "CTPConfigLoader: Error loading DeadTime" );
266 }
267 ctpcTarget.setDeadTime(dt);
268 }
269
270
271 {
272 RandomLoader& rldr =
dynamic_cast<RandomLoader&
>(
m_storageMgr.randomLoader());
276 if ( !rldr.load(
r ) ) {
278 throw std::runtime_error( "CTPConfigLoader: Error loading Random" );
279 }
280 ctpcTarget.setRandom(
r);
281 }
282
283 }
284 catch( const coral::Exception& e ) {
287 throw;
288 }
289 catch (std::bad_cast& ex) {
291 throw;
292 }
293
294 return true;
295}
StorageMgr & m_storageMgr
reference to the storage manager
virtual MSGTC::Level outputLevel() const override
void commitSession()
commit session if not already done
unsigned int triggerDBSchemaVersion()
void startSession()
start session if not already active
static void setMaxThresholdsFromL1Version(unsigned int l1version)
std::vector< std::string > files
file names and file pointers
row
Appending html table to final .html summary file.
void fillQuery(coral::IQuery *q, coral::AttributeList &attList)