7 #ifndef XAOD_STANDALONE
10 const std::string&
name,
22 return StatusCode::SUCCESS;
29 m_sequencerToChainMap.clear();
30 m_algToSequencersMap.clear();
34 for (
const std::string& sequencer :
chain.sequencers() ) {
36 if (sequencer.empty())
continue;
37 m_sequencerToChainMap[sequencer].push_back(
chain);
41 for (
const auto& sequencer : hltMenuHandle->sequencers() ) {
42 for (
const std::string&
algorithm : sequencer.second ) {
44 if (
algorithm.starts_with(
"PassFilter"))
continue;
48 .push_back(sequencer.first);
54 return StatusCode::SUCCESS;
62 chainNames.push_back(
chain);
64 return StatusCode::SUCCESS;
69 std::vector<std::string>
result;
72 for (
const std::string& sequencer : m_algToSequencersMap.at(algorithmName) ) {
78 catch (
const std::out_of_range & ex ) {
79 ATH_MSG_DEBUG (
"Sequence " << sequencer <<
" is not part of the menu!" );
82 }
catch (
const std::out_of_range & ex ) {
83 ATH_MSG_DEBUG (
"Algorithm " << algorithmName <<
" is not part of the menu!" );
92 std::set<std::string> allActiveChains;
94 for (
const std::string&
sequenceName : m_algToSequencersMap.at(algorithmName) ) {
96 std::string filterName = createCollectionName(
sequenceName);
97 std::set<TrigCompositeUtils::DecisionID> activeChainsInSequence = retrieveActiveChains(context, filterName);
104 }
catch (
const std::out_of_range & ex ) {
105 ATH_MSG_DEBUG (
"Algorithm " << algorithmName <<
" is not part of the menu!" );
108 return allActiveChains;
116 SmartIF<SGImplSvc> eventStore (storeProxy);
117 if (m_cachedEventID != context.eventID().event_number()){
118 ATH_MSG_INFO(
"Caching the event store keys for event " << context.eventID().event_number());
120 m_cachedEventID = context.eventID().event_number();
125 for (
const auto& sequence : hltMenuHandle->
sequencers()) {
126 std::string filterName = createCollectionName(sequence.first);
129 auto foundKey = std::find_if(m_cachedEventStoreKeys.begin(), m_cachedEventStoreKeys.end(), [&](
const std::string&
key) {
130 return key.starts_with( filterName);
133 if (foundKey != m_cachedEventStoreKeys.end() ){
136 if (!
d->decisions().empty()){
138 for (
const std::string&
alg : sequence.second) {
139 algToSeq[
alg.substr(
alg.find(
'/') + 1,
alg.size())] = sequence.first;
147 return StatusCode::SUCCESS;
151 if (m_cachedEventID != context.eventID().event_number()){
152 ATH_MSG_INFO(
"Caching the event store keys for event " << context.eventID().event_number());
153 m_cachedEventStoreKeys = readSGKeys(context);
154 m_cachedEventID = context.eventID().event_number();
159 std::vector<std::string>
keys;
161 SmartIF<SGImplSvc> eventStore (storeProxy);
168 if (m_cachedEventID == context.eventID().event_number()) {
169 return retrieveActiveChainsForKeys(context, collectionName, m_cachedEventStoreKeys);
171 const std::vector<std::string>
keys = readSGKeys(context);
172 return retrieveActiveChainsForKeys(context, collectionName,
keys);
178 std::set<TrigCompositeUtils::DecisionID> activeChainsID;
182 SmartIF<SGImplSvc> eventStore (storeProxy);
185 for (
const std::string&
key :
keys ) {
188 if ( !collectionName.empty() && (!
key.starts_with( collectionName)) ){
193 if( collectionName.empty() && (!
key.starts_with(
"HLTNav") ||
key ==
"HLTNav_Summary") ) {
208 return activeChainsID;
215 std::map<std::string, std::set<TrigCompositeUtils::DecisionID>> seqToActiveChains;
216 for (
const auto& sequence : m_sequencerToChainMap) {
218 std::string filterName = createCollectionName(sequence.first);
219 seqToActiveChains[sequence.first] = retrieveActiveChains(context, filterName);
222 for (
const auto& algSeqPair : m_algToSequencersMap){
223 std::set<std::string> activeChains;
224 for (
const std::string&
sequenceName : algSeqPair.second){
231 algToChain[algSeqPair.first] = activeChains;
234 return StatusCode::SUCCESS;
257 info.name =
id.name();
258 return StatusCode::SUCCESS;
261 info.name = (*chain).name();
262 info.groups = (*chain).groups();
266 SmartIF<SGImplSvc> eventStore (storeProxy);
272 info.isPassRaw =
std::find(chainsID.begin(), chainsID.end(),
id) != chainsID.end();
274 return StatusCode::SUCCESS;
293 std::string filterName =
"HLTNav_F" +
sequenceName +
"__";
295 if (filterName.find(
"Trig") != std::string::npos){
296 filterName.replace(filterName.find(
"Trig"), 4,
"");
302 #endif // XAOD_STANDALONE