237 {
238
240 cfg.parseProgramOptions(argc, argv);
243 return 0;
244 }
245
246 if(
cfg.error.size()!=0) {
247 for(
const string & e:
cfg.error)
250 return 1;
251 }
252
253 if(
cfg.inputFiles.size()>0 ) {
254
256 for (
const std::string & fn :
cfg.inputFiles) {
257
258 std::string filetype = fileLoader.
getFileType( fn );
259 if(filetype == "l1menu") {
262 cout <<
"Loaded L1 menu " <<
l1menu.name() <<
" with " <<
l1menu.size() <<
" items from " <<
fn << endl;
264 writeJsonFile(l1menu, "L1Menu", cfg);
265 } else if(filetype == "hltmenu" ) {
268 cout <<
"Loaded HLT menu " << hltmenu.
name() <<
" with " << hltmenu.
size() <<
" chains from " <<
fn << endl;
270 writeJsonFile(hltmenu, "HLTMenu", cfg);
271 } else if(filetype == "l1prescale" ) {
274 cout <<
"Loaded L1 prescales set file " <<
fn <<
" with " << l1pss.
size() <<
" prescales from " <<
fn << endl;
275 writeJsonFile(l1pss, "L1PrescalesSet", cfg);
276 } else if(filetype == "hltprescale" ) {
279 cout <<
"Loaded HLT prescales set file " <<
fn <<
" with " << hltpss.
size() <<
" prescales from " <<
fn << endl;
281 writeJsonFile(hltpss, "HLTPrescalesSet", cfg);
282 } else if(filetype == "bunchgroupset" ) {
285 cout <<
"Loaded L1 BunchGroup set file " <<
fn <<
" with " << bgs.
sizeNonEmpty() <<
" non-empty bunchgroups from " <<
fn << endl;
287 writeJsonFile(bgs, "BunchGroupSet", cfg);
288 } else if(filetype == "joboptions" ) {
291 cout <<
"Loaded job options with " << jo.
getObject(
"properties").
getKeys().size() <<
" properties from " <<
fn << endl;
294 for(
const auto& alg :
ds.data()) {
295 std::cout <<
alg.first << std::endl;
296 for(
const auto& prop :
alg.second ) {
297 std::cout << " " << prop.first << " -> " << prop.second.data() << std::endl;
298 }
299 }
300 }
301 writeJsonFile(jo, "HLTJobOptions", cfg);
302 } else if(filetype == "hltmonitoringsummary" ) {
305 cout <<
"Loaded HLT monnitoring with " <<
mon.size() <<
" signatures from " <<
fn << endl;
306 mon.printMonConfig(
cfg.detail);
307 writeJsonFile(mon, "HLTMonitoring", cfg);
308 } else {
309 cerr <<
"File " <<
fn <<
" not recognized as being an L1 or HLT menu or prescale set or bunchgroup set" << endl;
310 }
311 }
312 }
313
314 if(
cfg.smk != 0 && !
cfg.doCtp ) {
315
316 {
317
319 if(!
cfg.crestDb.empty()) {
320 dbloader.setCrestTrigDB(
cfg.crestDb);
321 dbloader.setCrestConnection(
cfg.crestServer,
cfg.crestApi);
322 }
323
324
325 {
327 try {
329 }
331 cout <<
"Could not load L1 menu. An exception occurred: " << ex.
what() << endl;
332 }
333 if(l1menu) {
334 cout <<
"Loaded L1 menu " <<
l1menu.name() <<
" with " <<
l1menu.size() <<
" items from " <<
cfg.dbalias <<
" with SMK " <<
cfg.smk << endl;
337 }
338 }
339 cout << endl;
340 }
341
342
343 {
345 try {
347 }
349 cout <<
"Could not load HLT menu. An exception occurred: " << ex.
what() << endl;
350 }
351 if (hltmenu) {
352 cout <<
"Loaded HLT menu " << hltmenu.
name() <<
" with " << hltmenu.
size() <<
" chains from " <<
cfg.dbalias <<
" with SMK " <<
cfg.smk << endl;
355 }
356 }
357 cout << endl;
358 }
359 }
360
361
362 {
364 if(!
cfg.crestDb.empty()) {
365 dbloader.setCrestTrigDB(
cfg.crestDb);
366 dbloader.setCrestConnection(
cfg.crestServer,
cfg.crestApi);
367 }
369 try {
371 }
373 cout <<
"Could not load HLT job options. An exception occurred: " << ex.
what() << endl;
374 }
375 if (jo) {
376 cout <<
"Loaded job options with " << jo.
getObject(
"properties").
getKeys().size() <<
" entries from " <<
cfg.dbalias <<
" with SMK " <<
cfg.smk << endl;
379 for(
const auto& alg :
ds.data()) {
380 std::cout <<
alg.first << std::endl;
381 for(
const auto& prop :
alg.second ) {
382 std::cout << " " << prop.first << " -> " << prop.second.data() << std::endl;
383 }
384 }
385 }
386 }
387 cout << endl;
388 }
389
390
391 {
393 if(!
cfg.crestDb.empty()) {
394 dbloader.setCrestTrigDB(
cfg.crestDb);
395 dbloader.setCrestConnection(
cfg.crestServer,
cfg.crestApi);
396 }
398 try {
399 dbloader.loadHLTMonitoring(
cfg.smk, hltmon,
outputFileName(
"HLTMonitoring", cfg));
400 }
402 cout <<
"Could not load HLT monitoring. An exception occurred: " << ex.
what() << endl;
403 }
404 if (hltmon) {
405 cout <<
"Loaded HLT monitoring with " << hltmon.
size() <<
" signatures rom " <<
cfg.dbalias <<
" with SMK " <<
cfg.smk << endl;
408 }
409 }
410 cout << endl;
411 }
412
413 }
414
415 if(
cfg.smk != 0 &&
cfg.doCtp ) {
418 try{
419 dbloader.loadHardwareFiles(
cfg.smk, ctpfiles, 0x0F,
outputFileName(
"CTPFiles", cfg));
420 } catch (std::format_error & e){
421 cout <<
" format_error "<<
e.what()<<
" thrown in TriggerMenuRW.\n";
422 return 1;
423 }
425 }
426
427 if(
cfg.l1psk != 0 ) {
428
430 if(!
cfg.crestDb.empty()) {
431 dbloader.setCrestTrigDB(
cfg.crestDb);
432 dbloader.setCrestConnection(
cfg.crestServer,
cfg.crestApi);
433 }
435 try {
436 dbloader.loadL1Prescales(
cfg.l1psk, l1pss,
outputFileName(
"L1PrescalesSet", cfg) );
437 }
439 cout <<
"Could not load L1 prescales. An exception occurred: " << ex.
what() << endl;
440 }
441 if (l1pss) {
442 cout <<
"Loaded L1 prescales set " << l1pss.
name() <<
" with " << l1pss.
size() <<
" prescales from " <<
cfg.dbalias <<
" with L1 PSK " <<
cfg.l1psk << endl;
443 }
444 }
445
446 if(
cfg.hltpsk != 0 ) {
447
449 if(!
cfg.crestDb.empty()) {
450 dbloader.setCrestTrigDB(
cfg.crestDb);
451 dbloader.setCrestConnection(
cfg.crestServer,
cfg.crestApi);
452 }
454 try {
455 dbloader.loadHLTPrescales(
cfg.hltpsk, hltpss,
outputFileName(
"HLTPrescalesSet", cfg) );
456 }
458 cout <<
"Could not load HLT prescales. An exception occurred: " << ex.
what() << endl;
459 }
460 if (hltpss) {
461 cout <<
"Loaded HLT prescales set " << hltpss.
name() <<
" with " << hltpss.
size() <<
" prescales from " <<
cfg.dbalias <<
" with HLT PSK " <<
cfg.hltpsk << endl;
462 }
463 }
464
465 if(
cfg.bgsk != 0 ) {
466
468 if(!
cfg.crestDb.empty()) {
469 dbloader.setCrestTrigDB(
cfg.crestDb);
470 dbloader.setCrestConnection(
cfg.crestServer,
cfg.crestApi);
471 }
473 try {
474 dbloader.loadBunchGroupSet(
cfg.bgsk, bgs,
outputFileName(
"BunchGroupSet", cfg) );
475 }
477 cout <<
"Could not load bunchgroup set. An exception occurred: " << ex.
what() << endl;
478 }
479 if (bgs) {
480 cout <<
"Loaded L1 bunchgroup set " << bgs.
name() <<
" with " << bgs.
size() <<
" bunchgroups from " <<
cfg.dbalias <<
" with BGSK " <<
cfg.bgsk << endl;
483 }
484 }
485 }
486
487 return 0;
488}
static const std::string outputFileName
Base class for Trigger configuration data and wrapper around underlying representation.
virtual const std::string & name() const final
std::vector< std::string > getKeys() const
Access to the keys of an DataStructure which presents a dictionary.
DataStructure getObject(const std::string &pathToChild, bool ignoreIfMissing=false) const
Access to configuration object.
HLT monitoring configuration.
std::size_t size() const
Accessor to the number of HLT monitoring chains.
void printMonConfig(bool full=false) const
print overview of L1 Menu
std::size_t size() const
number of HLT prescales
void printPrescaleSet(bool full) const
virtual const char * what() const noexcept
Loader of trigger configurations from Json files.
std::string getFileType(const std::string &filename) const
Checks the trigger level of a given json file.
bool loadFile(const std::string &filename, boost::property_tree::ptree &data, const std::string &pathToChild="") const
Load content of json file into a ptree.
std::size_t size() const
Accessor to the number of defined bunchgroups.
std::size_t sizeNonEmpty() const
Accessor to the number of non-empty bunchgroups.
void printSummary(bool detailed=false) const
print a more or less detailed summary
std::size_t size() const
number of L1 prescales
Loader of trigger configurations from Json files.
Loader of trigger configurations from Json files.
Loader of trigger configurations from Json files.
Loader of trigger configurations from Json files.
Loader of trigger configurations from Json files.
Loader of trigger menu configurations from the database.