10 const std::string& name,
11 const IInterface* parent)
22 return StatusCode::SUCCESS;
34 for (
const std::string& sequencer : chain.sequencers() ) {
36 if (sequencer.empty())
continue;
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;
75 result.push_back(chain.name());
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;
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);
118 ATH_MSG_DEBUG(
"Caching the event store keys for event " << context.eventID().event_number());
125 for (
const auto& sequence : hltMenuHandle->sequencers()) {
130 return key.starts_with( filterName);
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;
152 ATH_MSG_DEBUG(
"Caching the event store keys for event " << context.eventID().event_number());
159 std::vector<std::string> keys;
161 SmartIF<SGImplSvc> eventStore (storeProxy);
171 const std::vector<std::string> keys =
readSGKeys(context);
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;
223 std::set<std::string> activeChains;
224 for (
const std::string& sequenceName : algSeqPair.second){
231 algToChain[algSeqPair.first] = std::move(activeChains);
234 return StatusCode::SUCCESS;
251 if(chain == hltMenuHandle->end()){
253 info.name =
id.name();
254 return StatusCode::SUCCESS;
257 info.name = (*chain).name();
258 info.groups = (*chain).groups();
262 SmartIF<SGImplSvc> eventStore (storeProxy);
268 info.isPassRaw = std::find(chainsID.begin(), chainsID.end(),
id) != chainsID.end();
270 return StatusCode::SUCCESS;
289 std::string filterName =
"HLTNav_F" + sequenceName +
"__";
291 if (filterName.find(
"Trig") != std::string::npos){
292 filterName.replace(filterName.find(
"Trig"), 4,
"");
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
uint32_t CLID
The Class ID type.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
xAOD::TrigComposite Decision
HLT::Identifier getIDFromLeg(const HLT::Identifier &legIdentifier)
Generate the HLT::Identifier which corresponds to the chain name from the leg name.
std::set< DecisionID > DecisionIDContainer
const Decision * getTerminusNode(SG::ReadHandle< DecisionContainer > &container)
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.