ATLAS Offline Software
LVL1ConfigSvc.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "GaudiKernel/ServiceHandle.h"
7 
12 
13 #include "LVL1ConfigSvc.h"
14 #include "TrigConfMD5.h"
15 
16 #include <memory>
17 
18 TrigConf::LVL1ConfigSvc::LVL1ConfigSvc(const std::string& name, ISvcLocator* pSvcLocator) :
19  AthService(name, pSvcLocator)
20 {}
21 
23 {
24  auto l1menu = std::make_unique<TrigConf::L1Menu>();
25 
26  if (m_inputType == "DB") {
27  // load l1menu
28  TrigConf::TrigDBMenuLoader dbmenuloader(m_dbConnection);
29  dbmenuloader.setLevel(TrigConf::MSGTC::WARNING);
30  ATH_CHECK( dbmenuloader.loadL1Menu(m_smk, *l1menu) );
31 
32  }
33  else if (m_inputType == "FILE") {
34  // json file menu loader
35  TrigConf::JsonFileLoader fileLoader;
37 
38  ATH_CHECK( fileLoader.loadFile(m_l1FileName, *l1menu) );
39 
40  uint32_t smk = m_smk.value();
41  if (!m_hltFileName.empty() && smk == 0u) {
42  auto hltmenu = std::make_unique<TrigConf::HLTMenu>();
43  const bool status = fileLoader.loadFile(m_hltFileName, *hltmenu);
44  if (status) {
45  smk = TrigConf::truncatedHash(*l1menu, *hltmenu);
46  } else {
47  ATH_MSG_DEBUG("No HLT menu created, cannot compute a MC-SMK in this job");
48  }
49  }
50  ATH_MSG_INFO("Setting file-loaded L1 Menu SMK to:" << smk);
51  l1menu->setSMK(smk); // allow assigning a specified or hashed SMK when running from FILE
52 
53 
54  }
55  else {
56  ATH_MSG_ERROR("Unknown input type '" << m_inputType
57  << "'. Allowed values: " << m_inputType.documentation());
58  return StatusCode::FAILURE;
59  }
60 
61  ServiceHandle<StoreGateSvc> detStore("StoreGateSvc/DetectorStore", name());
62  ATH_CHECK(detStore.retrieve());
63  if (detStore->record(std::move(l1menu), "L1TriggerMenu").isSuccess()) {
64  ATH_MSG_INFO("Recorded L1 menu as 'L1TriggerMenu' in detector store");
65  }
66 
67  return StatusCode::SUCCESS;
68 }
69 
71 {
72  // Handle to JobOptionsSvc to retrieve configuration keys
73  if (auto joSvc = serviceLocator()->service<TrigConf::IJobOptionsSvc>("JobOptionsSvc")) {
74  if (joSvc->superMasterKey() > 0) {
75  m_inputType = "DB";
76  m_smk = joSvc->superMasterKey();
77  m_dbConnection = joSvc->server();
78  }
79  }
80  else {
81  ATH_MSG_DEBUG("Did not locate TrigConf::JobOptionsSvc, not running athenaHLT");
82  }
83 
84  ATH_MSG_INFO("Loading L1 trigger menu from:");
85  ATH_MSG_INFO(m_inputType);
86  if (m_inputType == "FILE") {
87  ATH_MSG_INFO(m_l1FileName);
88  }
89  else if (m_inputType == "DB") {
90  ATH_MSG_INFO(m_dbConnection);
91  ATH_MSG_INFO(m_smk);
92  }
93 
94  ATH_CHECK(loadRun3StyleMenu());
95 
96  return StatusCode::SUCCESS;
97 }
TrigConfMD5.h
TrigDBL1BunchGroupSetLoader.h
Loader class for Trigger configuration (L1 prescales set) from the Trigger DB.
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TrigConf::JsonFileLoader::loadFile
bool loadFile(const std::string &filename, boost::property_tree::ptree &data, const std::string &pathToChild="") const
Load content of json file into a ptree.
Definition: JsonFileLoader.cxx:45
RunEBWeightsComputation.smk
smk
Definition: RunEBWeightsComputation.py:87
LVL1ConfigSvc.h
TrigConf::LVL1ConfigSvc::initialize
virtual StatusCode initialize() override
Definition: LVL1ConfigSvc.cxx:70
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
IJobOptionsSvc.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TrigConf::TrigDBMenuLoader::loadL1Menu
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)
Definition: TrigDBMenuLoader.cxx:93
AthService
Definition: AthService.h:32
TrigConf::LVL1ConfigSvc::loadRun3StyleMenu
StatusCode loadRun3StyleMenu()
Definition: LVL1ConfigSvc.cxx:22
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TrigConf::JsonFileLoader::setLevel
void setLevel(MSGTC::Level lvl)
Definition: JsonFileLoader.h:86
TrigConf::name
Definition: HLTChainList.h:35
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TrigConf::LVL1ConfigSvc::LVL1ConfigSvc
LVL1ConfigSvc(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LVL1ConfigSvc.cxx:18
TrigConf::truncatedHash
uint32_t truncatedHash(const DataStructure &dataStructure)
Function to compute a truncated MD5 hash for a JSON file.
Definition: TrigConfMD5.cxx:23
python.XMLReader.l1menu
l1menu
Definition: XMLReader.py:73
TrigConf::TrigDBLoader::setLevel
void setLevel(MSGTC::Level lvl)
Definition: TrigDBLoader.h:52
JsonFileLoader.h
Loader class for Trigger configuration from Json.
merge.status
status
Definition: merge.py:17
TrigConf::JsonFileLoader
Loader of trigger configurations from Json files.
Definition: JsonFileLoader.h:25
TrigConf::TrigDBMenuLoader
Loader of trigger menu configurations from the database.
Definition: TrigDBMenuLoader.h:30
StoreGateSvc.h
TrigDBMenuLoader.h
ServiceHandle< StoreGateSvc >
TrigConf::MSGTC::WARNING
@ WARNING
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:26