ATLAS Offline Software
Loading...
Searching...
No Matches
LVL1ConfigSvc.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "LVL1ConfigSvc.h"
6#include "TrigConfMD5.h"
7#include "TrigConfSvcHelper.h"
8
9#include "GaudiKernel/ServiceHandle.h"
11
16
17#include <memory>
18
19TrigConf::LVL1ConfigSvc::LVL1ConfigSvc(const std::string& name, ISvcLocator* pSvcLocator) :
20 AthService(name, pSvcLocator)
21{}
22
24{
25 auto l1menu = std::make_unique<TrigConf::L1Menu>();
26
27 if (m_inputType == "DB") {
28 // load l1menu
30 std::string crest_server("");
31 std::string crest_api("");
32 std::string dbname("");
33 if(isCrestConnection(m_dbConnection, crest_server, crest_api, dbname)) {
34 dbmenuloader.setCrestTrigDB(dbname);
35 dbmenuloader.setCrestConnection(crest_server, crest_api);
36 }
38 ATH_CHECK( dbmenuloader.loadL1Menu(m_smk, *l1menu) );
39
40 }
41 else if (m_inputType == "FILE") {
42 // json file menu loader
43 TrigConf::JsonFileLoader fileLoader;
45
46 ATH_CHECK( fileLoader.loadFile(m_l1FileName, *l1menu) );
47
48 uint32_t smk = m_smk.value();
49 if (!m_hltFileName.empty() && smk == 0u) {
50 auto hltmenu = std::make_unique<TrigConf::HLTMenu>();
51 const bool status = fileLoader.loadFile(m_hltFileName, *hltmenu);
52 if (status) {
53 smk = TrigConf::truncatedHash(*l1menu, *hltmenu);
54 } else {
55 ATH_MSG_DEBUG("No HLT menu created, cannot compute a MC-SMK in this job");
56 }
57 }
58 ATH_MSG_INFO("Setting file-loaded L1 Menu SMK to:" << smk);
59 l1menu->setSMK(smk); // allow assigning a specified or hashed SMK when running from FILE
60
61
62 }
63 else {
64 ATH_MSG_ERROR("Unknown input type '" << m_inputType
65 << "'. Allowed values: " << m_inputType.documentation());
66 return StatusCode::FAILURE;
67 }
68
69 ServiceHandle<StoreGateSvc> detStore("StoreGateSvc/DetectorStore", name());
70 ATH_CHECK(detStore.retrieve());
71 if (detStore->record(std::move(l1menu), "L1TriggerMenu").isSuccess()) {
72 ATH_MSG_INFO("Recorded L1 menu as 'L1TriggerMenu' in detector store");
73 }
74
75 return StatusCode::SUCCESS;
76}
77
79{
80 // Handle to JobOptionsSvc to retrieve configuration keys
81 if (auto joSvc = serviceLocator()->service<TrigConf::IJobOptionsSvc>("JobOptionsSvc")) {
82 if (joSvc->superMasterKey() > 0) {
83 m_inputType = "DB";
84 m_smk = joSvc->superMasterKey();
85 m_dbConnection = joSvc->server();
86 }
87 }
88 else {
89 ATH_MSG_DEBUG("Did not locate TrigConf::JobOptionsSvc, not running athenaHLT");
90 }
91
92 ATH_MSG_INFO("Loading L1 trigger menu from:");
94 if (m_inputType == "FILE") {
96 }
97 else if (m_inputType == "DB") {
100 }
101
103
104 return StatusCode::SUCCESS;
105}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
Loader class for Trigger configuration from Json.
Loader class for Trigger configuration (L1 prescales set) from the Trigger DB.
Loader of trigger configurations from Json files.
void setLevel(MSGTC::Level lvl)
bool loadFile(const std::string &filename, boost::property_tree::ptree &data, const std::string &pathToChild="") const
Load content of json file into a ptree.
Gaudi::Property< std::string > m_inputType
Gaudi::Property< unsigned int > m_smk
Gaudi::Property< std::string > m_hltFileName
Gaudi::Property< std::string > m_dbConnection
virtual StatusCode initialize() override
Gaudi::Property< std::string > m_l1FileName
LVL1ConfigSvc(const std::string &name, ISvcLocator *pSvcLocator)
void setLevel(MSGTC::Level lvl)
void setCrestTrigDB(const std::string &crestTrigDB)
set trigger db for the crest connection
void setCrestConnection(const std::string &server, const std::string &version="")
declare CREST as the source of the configuration An empty crest server makes it use Oracle
Loader of trigger menu configurations from the database.
bool loadL1Menu(unsigned int smk, boost::property_tree::ptree &l1menu, const std::string &outFileName="") const
Load L1 menu content from the Trigger DB into a ptree for a given SuperMasterKey (SMK)
uint32_t truncatedHash(const DataStructure &dataStructure)
Function to compute a truncated MD5 hash for a JSON file.
bool isCrestConnection(const std::string &db_connection_string, std::string &crest_server, std::string &crest_api, std::string &dbname)
Function to interpret the trigger connection string for CREST connections Format of the connections s...