|  | ATLAS Offline Software
    | 
 
 
 
The TrigNavigationThinningSvc is an athena tool used to slim the trigger Navigation structure in various ways.  
 More...
#include <TrigNavigationThinningSvc.h>
|  | 
| StatusCode | lateFillConfiguration (State &state) const | 
|  | configures at the first event  More... 
 | 
|  | 
| StatusCode | drop (State &state) const | 
|  | clear the result of the slimming in the doSliming argument (vector<uint32_t>) Makes no sense to combine with other options  More... 
 | 
|  | 
| StatusCode | reload (State &state) const | 
|  | Reload the slimmed navigation in TDT so that all clients of current job see the chage.  More... 
 | 
|  | 
| StatusCode | restore (State &state) const | 
|  | Restore the original navigation structure.  More... 
 | 
|  | 
| StatusCode | save (State &state) const | 
|  | Save the result of the slimming in the doSlimming argument (vector<uint32_t>)  More... 
 | 
|  | 
| StatusCode | print (State &state) const | 
|  | 
| StatusCode | squeeze (State &state) const | 
|  | Remove intermediate TEs leaving very flat structure with event node, rois and terminals.  More... 
 | 
|  | 
| StatusCode | dropFeatures (State &state) const | 
|  | Removes references to features from the navigation structure.  More... 
 | 
|  | 
| StatusCode | dropRoIs (State &state) const | 
|  | Removes RoI nodes, rather aggressive option, should be use as one of last actions as it makes impossible to traverse the tree.  More... 
 | 
|  | 
| StatusCode | dropEmptyRoIs (State &state) const | 
|  | Removes RoI nodes, which do not seed anything.  More... 
 | 
|  | 
| StatusCode | dropFeatureless (State &state) const | 
|  | Removes TEs which have no features (combine wiht squeeze)  More... 
 | 
|  | 
| StatusCode | dropInactive () | 
|  | Removes TEs which are inactive (rejected by hypothesis)  More... 
 | 
|  | 
| StatusCode | syncThinning (State &state) const | 
|  | reset indexes in the after the thinning  More... 
 | 
|  | 
| StatusCode | dropChains (State &state) const | 
|  | remove info not related to the specified chains  More... 
 | 
|  | 
| StatusCode | removeTriggerElement (State &state, HLT::TriggerElement *te, bool propagateFeatures=true) const | 
|  | Removes the passed trigger element from the navigation structure by removing all references to it in seeded and seeding TEs,.  More... 
 | 
|  | 
| StatusCode | removeGhostTriggerElements (HLT::TriggerElement *te=0) | 
|  | Removes all trigger elements with the flag ghost set to true from the navigation structure.  More... 
 | 
|  | 
| StatusCode | removeFeaturelessTriggerElements (State &state, HLT::TriggerElement *te=0) | 
|  | Removes all trigger elements with no features from the navigation structure.  More... 
 | 
|  | 
| StatusCode | recursivelyRemoveNodesFromNavigation (HLT::TriggerElement *te) | 
|  | Removes the passed te and all children from the navigation structure.  More... 
 | 
|  | 
| StatusCode | removeFeatures (State &state, const std::set< std::pair< CLID, uint16_t > > &doDelete) const | 
|  | This is a helper function for removeFeatures(HLT::NavigationCore*, ...).  More... 
 | 
|  | 
| StatusCode | retainFeatures (State &state, const std::set< std::pair< CLID, uint16_t > > &toRetain) const | 
|  | This is a helper function for removeFeatures(HLT::NavigationCore*, ...).  More... 
 | 
|  | 
| StatusCode | removeTriggerElementFromVector (HLT::TriggerElement *te, std::vector< HLT::TriggerElement * > &v) const | 
|  | Removes all instances of the supplied TriggerElement from the supplied vector.  More... 
 | 
|  | 
| bool | toBeIncluded (State &state, HLT::TriggerElement *te, std::vector< std::string > *inclusionList, std::vector< std::string > *exclusionList) | 
|  | Returns true if the TriggerElement should be included in the navigation tree and false if it should not be.  More... 
 | 
|  | 
| bool | toBeIncluded (State &state, HLT::TriggerElement *te, std::vector< HLT::TriggerElement * > *inclusionList, std::vector< HLT::TriggerElement * > *exclusionList) | 
|  | 
| StatusCode | propagateFeaturesToChildren (const HLT::TriggerElement *te) const | 
|  | Propagates the features on given TE to its children.  More... 
 | 
|  | 
The TrigNavigationThinningSvc is an athena tool used to slim the trigger Navigation structure in various ways. 
- Author
- Ben Smith bcsmi.nosp@m.th@f.nosp@m.as.ha.nosp@m.rvar.nosp@m.d.edu - Harvard University major rework Tomasz Bold
This tool allows users to slim the trigger Navigation structure, which is important when creating derived datasets, as the structure can grow very large (> 30k per event). 
There are three main slimming operations that are implemented via this tool:
(a) TriggerElement squeezing: this removes all intermediate trigger elements (those which are not the initial node, an RoI node, or a terminal node)
(b) Feature Removal: this removes all links to the specified features from the trigger elements in the structure. Note that it does not remove the holder from the navigation structure.
(c) Remove the TEs related to certain chains
(d) Complete removal
and few other actions
All operations on the navigation are configured via the Actions property which specifies set of operations (and the order) with which they are executed in the slimming process. The main method to execute is doSlimming - the vector given as an argument is filled whti serialized and slimmed content of the navigation. !!! go back !!! we need to remove holders from slimmed navigation as they are becoming now the biggest 
Definition at line 53 of file TrigNavigationThinningSvc.h.
◆ Action
  
  | 
        
          | typedef StatusCode(TrigNavigationThinningSvc::* TrigNavigationThinningSvc::Action) (State &state) const |  | private | 
 
 
◆ TrigNavigationThinningSvc()
      
        
          | TrigNavigationThinningSvc::TrigNavigationThinningSvc | ( | const std::string & | name, | 
        
          |  |  | ISvcLocator * | pSvcLocator | 
        
          |  | ) |  |  | 
      
 
Definition at line 31 of file TrigNavigationThinningSvc.cxx.
   33   : base_class(
name, pSvcLocator), 
 
   37   declareProperty(
"TrigDecisionTool", 
m_trigDecisionTool, 
"Tool handle to TDT/Navigation.");
 
   38   declareProperty(
"ChainsRegex", 
m_chainsRegex=
"", 
"Keep only information related to this chains");
 
   39   declareProperty(
"FeatureInclusionList", 
m_featureInclusionList, 
"This features will be kept. This setting overrules the FeatureExclusionList. Only list of types or type#key pairs are supported.");
 
   40   declareProperty(
"FeatureExclusionList", 
m_featureExclusionList, 
"This features will be dropeed. It can be specified as * meaning all, or as a list of typenames, or typename#key pairs.");
 
   41   declareProperty(
"ReportOperations", 
m_report=
false, 
"Additional verbosity flag, when enabled the operations on trigger elements are reported (VERBOSE logging level)");
 
   57   std::string possibleActions;
 
   59     possibleActions += 
a.first +
" ";
 
   60   declareProperty(
"Actions", 
m_actions, 
"Operations which need to be done on the navigation"+possibleActions);
 
 
 
◆ doSlimming()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::doSlimming | ( | const EventContext & | ctx, |  
          |  |  | std::vector< uint32_t > & | slimmed_and_serialized |  
          |  | ) |  | const |  | overridevirtual | 
 
Definition at line 287 of file TrigNavigationThinningSvc.cxx.
  290   ATH_MSG_DEBUG(
name() << 
" is obtaining the TrigNavigationThinningSvc lock in slot " << ctx.slot() << 
" for event " << ctx.eventID().event_number() );
 
  299     ATH_MSG_WARNING ( 
"Could not get navigation from Trigger Decision Tool" );
 
  302     return StatusCode::SUCCESS;
 
  305   State state (ctx, *cnav, slimmed_and_serialized);
 
  308     state.originalNavigation.clear();
 
  309     std::vector<uint32_t> 
cuts;
 
  310     cnav->serialize(state.originalNavigation, 
cuts);
 
  317       auto function = ifunc->second;
 
  318       CHECK( (this->*
function)(state) );
 
  322   return StatusCode::SUCCESS;
 
 
 
 
◆ drop()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::drop | ( | State & | state | ) | const |  | private | 
 
clear the result of the slimming in the doSliming argument (vector<uint32_t>) Makes no sense to combine with other options 
Definition at line 123 of file TrigNavigationThinningSvc.cxx.
  125   state.destinationNavigation.clear();
 
  127   return StatusCode::SUCCESS;
 
 
 
 
◆ dropChains()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::dropChains | ( | State & | state | ) | const |  | private | 
 
remove info not related to the specified chains 
Definition at line 267 of file TrigNavigationThinningSvc.cxx.
  269     return StatusCode::SUCCESS;
 
  272   for ( 
auto te: state.navigation.getAllTEs() ) {
 
  273     if ( state.navigation.isInitialNode(te)
 
  274      or state.navigation.isRoINode(te) ) {
 
  277     if ( state.tesToProtect.find(te->getId()) == state.tesToProtect.end() ) {
 
  281   return StatusCode::SUCCESS;
 
 
 
 
◆ dropEmptyRoIs()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::dropEmptyRoIs | ( | State & | state | ) | const |  | private | 
 
Removes RoI nodes, which do not seed anything. 
Definition at line 249 of file TrigNavigationThinningSvc.cxx.
  250   for ( 
auto te: state.navigation.getAllTEs() ) {
 
  251     if ( state.navigation.isRoINode(te) 
 
  252      and te->getRelated(TriggerElement::seedsRelation).empty() )
 
  255   return StatusCode::SUCCESS;  
 
 
 
 
◆ dropFeatureless()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::dropFeatureless | ( | State & | state | ) | const |  | private | 
 
Removes TEs which have no features (combine wiht squeeze) 
Definition at line 258 of file TrigNavigationThinningSvc.cxx.
  259   for ( 
auto te: state.navigation.getAllTEs() ) {
 
  260     if ( te->getFeatureAccessHelpers().empty() )
 
  263   return StatusCode::SUCCESS;  
 
 
 
 
◆ dropFeatures()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::dropFeatures | ( | State & | state | ) | const |  | private | 
 
Removes references to features from the navigation structure. 
Features are specified via the inclusion and exclusion lists. If the inclusion list is specified, only elements on that list are included (the exclusion list is ignored). If the inclusion list is NULL or empty, then all elements except those on the exclusion list are included. 
Definition at line 185 of file TrigNavigationThinningSvc.cxx.
  190   std::set<std::pair<CLID, uint16_t> > toDelete;
 
  191   std::set<std::pair<CLID, uint16_t> > toRetain;
 
  193   std::lock_guard<std::recursive_mutex> 
lock(state.navigation.getMutex());
 
  196   if ( holders.empty() ) {  
 
  197     ATH_MSG_ERROR(
"The navigation does not contain any features. This is likely a configuration problem.");
 
  198     return StatusCode::FAILURE;
 
  201   for( 
auto h : holders ) {
 
  212     toRetain.insert(std::make_pair(
h->typeClid(), 
h->subTypeIndex() ));
 
  213     ATH_MSG_DEBUG(
"will be keeping references associated to: " << 
h->collectionName()<<
"#"<<
h->key() << 
" clid: " << 
h->typeClid() );
 
  220     toDelete.insert(std::make_pair(
h->typeClid(), 
h->subTypeIndex() ));
 
  221     ATH_MSG_DEBUG(
"will be dropping references associated to: " << 
h->collectionName()<<
"#"<<
h->key() );
 
  227   if ( not toRetain.empty() )
 
  229   if ( not toDelete.empty() )
 
  237   return StatusCode::SUCCESS;  
 
 
 
 
◆ dropInactive()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::dropInactive | ( |  | ) |  |  | private | 
 
Removes TEs which are inactive (rejected by hypothesis) 
 
 
◆ dropRoIs()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::dropRoIs | ( | State & | state | ) | const |  | private | 
 
Removes RoI nodes, rather aggressive option, should be use as one of last actions as it makes impossible to traverse the tree. 
Nonetheless the tree can be to some extent usable in the analysis i.e. when no TEs traversing is really needed 
Definition at line 241 of file TrigNavigationThinningSvc.cxx.
  242   for ( 
auto te: state.navigation.getAllTEs() ) {
 
  243     if ( state.navigation.isRoINode(te) )
 
  246   return StatusCode::SUCCESS;  
 
 
 
 
◆ finalize()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::finalize | ( |  | ) |  |  | overridevirtual | 
 
 
◆ initialize()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::initialize | ( |  | ) |  |  | overridevirtual | 
 
Definition at line 70 of file TrigNavigationThinningSvc.cxx.
   74   m_checkToolDeps = 
false;
 
   81       return StatusCode::FAILURE;
 
   83     ATH_MSG_INFO ( 
"Successfully retrived the TrigDecisionTool!" );
 
   86     ATH_MSG_FATAL ( 
"Could not retrive the TrigDecisionTool as it was not specified!" );
 
   87     return StatusCode::FAILURE;
 
   90   ATH_MSG_DEBUG ( 
"Leaving TrigNavigationThinningSvc::Initialize" );
 
   93     ATH_MSG_ERROR( 
"Can't use the features inclusion and exclusion lists at the same time.");
 
   94     return StatusCode::FAILURE;
 
  104       ATH_MSG_FATAL(
"Dropping features is demanded but neither inclusion and exclusion lists are set");
 
  105       return StatusCode::FAILURE;
 
  115       return StatusCode::FAILURE;
 
  118   return StatusCode::SUCCESS;
 
 
 
 
◆ lateFillConfiguration()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::lateFillConfiguration | ( | State & | state | ) | const |  | private | 
 
configures at the first event 
Definition at line 334 of file TrigNavigationThinningSvc.cxx.
  339   ATH_MSG_DEBUG(
"Will keep information related to this chains" << chainGroup->getListOfTriggers());
 
  340   auto confTEs = chainGroup->getHLTTriggerElements();
 
  341   for ( 
auto& 
vec: confTEs) {
 
  342     for ( 
auto confTEPtr: 
vec) {
 
  343       state.tesToProtect.insert(confTEPtr->id());
 
  346   return StatusCode::SUCCESS;
 
 
 
 
◆ print()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::print | ( | State & | state | ) | const |  | private | 
 
 
◆ propagateFeaturesToChildren()
Propagates the features on given TE to its children. 
Definition at line 598 of file TrigNavigationThinningSvc.cxx.
  601     return StatusCode::SUCCESS;
 
  603   const std::vector<TriggerElement::FeatureAccessHelper>& features = te->getFeatureAccessHelpers() ;
 
  605   const std::vector<TriggerElement*> 
children = te->getRelated(TriggerElement::seedsRelation);
 
  610     for( 
auto& fea: features ) {
 
  614     std::stringstream 
ss;
 
  618       ch->getFeatureAccessHelpers().insert(
ch->getFeatureAccessHelpers().begin(), fea );
 
  622   return StatusCode::SUCCESS;
 
 
 
 
◆ recursivelyRemoveNodesFromNavigation()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::recursivelyRemoveNodesFromNavigation | ( | HLT::TriggerElement * | te | ) |  |  | private | 
 
Removes the passed te and all children from the navigation structure. 
 
 
◆ reload()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::reload | ( | State & | state | ) | const |  | private | 
 
Reload the slimmed navigation in TDT so that all clients of current job see the chage. 
Definition at line 131 of file TrigNavigationThinningSvc.cxx.
  133   state.destinationNavigation.clear();
 
  134   std::vector<unsigned int> 
cuts;
 
  135   std::vector<uint32_t> 
temp;
 
  136   state.navigation.serialize(
temp, 
cuts);
 
  137   state.navigation.reset();
 
  138   state.navigation.prepare();
 
  139   state.navigation.deserialize(
temp);
 
  140   ATH_MSG_DEBUG ( 
"Reloaded the navigation content in TDT (all clients will see reduced navigation content) ..." );
 
  141   return StatusCode::SUCCESS;
 
 
 
 
◆ removeFeaturelessTriggerElements()
Removes all trigger elements with no features from the navigation structure. 
Definition at line 468 of file TrigNavigationThinningSvc.cxx.
  472   for ( 
auto te: state.navigation.getAllTEs() ) {
 
  477     if( featuresCount == 0 ) {
 
  481   return StatusCode::SUCCESS;
 
 
 
 
◆ removeFeatures()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::removeFeatures | ( | State & | state, |  
          |  |  | const std::set< std::pair< CLID, uint16_t > > & | doDelete |  
          |  | ) |  | const |  | private | 
 
This is a helper function for removeFeatures(HLT::NavigationCore*, ...). 
Note that that function should be instead, because it not only removes the features from the tree, but also cleans them up within the navigation structure. 
Definition at line 421 of file TrigNavigationThinningSvc.cxx.
  435   ATH_MSG_DEBUG(
"Will remove " << toDelete.size()<< 
" feature type/key");
 
  437    for (
auto te: state.navigation.getAllTEs()) {
 
  438     for ( 
auto& fea: te->getFeatureAccessHelpers() ) {
 
  439       if ( toDelete.find( std::make_pair(fea.getCLID(), fea.getIndex().subTypeIndex()) ) != toDelete.end() )    
 
  449   return StatusCode::SUCCESS;
 
 
 
 
◆ removeGhostTriggerElements()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::removeGhostTriggerElements | ( | HLT::TriggerElement * | te = 0 | ) |  |  | private | 
 
Removes all trigger elements with the flag ghost set to true from the navigation structure. 
 
 
◆ removeTriggerElement()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::removeTriggerElement | ( | State & | state, |  
          |  |  | HLT::TriggerElement * | te, |  
          |  |  | bool | propagateFeatures = true |  
          |  | ) |  | const |  | private | 
 
Removes the passed trigger element from the navigation structure by removing all references to it in seeded and seeding TEs,. 
- Parameters
- 
  
    | propagateFeatures | decides if features need to be moved to children TEs |  
 
Definition at line 349 of file TrigNavigationThinningSvc.cxx.
  353   if(state.navigation.isInitialNode(te)) {
 
  354     return StatusCode::SUCCESS;
 
  363   if ( propagateFeatures )
 
  370   const std::vector<TriggerElement*>& sameRoI = te->
getRelated(TriggerElement::sameRoIRelation);
 
  372   for( 
auto nodeInRoI : sameRoI ) {
 
  375     std::vector<TriggerElement*>& relations = nodeInRoI->m_relations[ TriggerElement::sameRoIRelation ];
 
  382   std::vector<TriggerElement*> seededBy = te->
m_relations[TriggerElement::seededByRelation];
 
  384   for(
auto seededByNode:  seededBy ) {
 
  387     std::vector<TriggerElement*>& relations = seededByNode->m_relations[ TriggerElement::seedsRelation ];
 
  393     if(!state.navigation.isTerminalNode(te))
 
  394       seededByNode->relate( te->
m_relations[ TriggerElement::seedsRelation ], TriggerElement::seedsRelation );
 
  400   std::vector<TriggerElement*>& seeds = te->
m_relations[TriggerElement::seedsRelation];
 
  402   for( 
auto seedsNode: seeds ) {
 
  405     std::vector<TriggerElement*>& relations = seedsNode->m_relations[ TriggerElement::seededByRelation ];
 
  409     if(!state.navigation.isInitialNode(te))
 
  410       seedsNode->relate( te->
m_relations[ TriggerElement::seededByRelation ], TriggerElement::seededByRelation );
 
  413   return StatusCode::SUCCESS;
 
 
 
 
◆ removeTriggerElementFromVector()
Removes all instances of the supplied TriggerElement from the supplied vector. 
Returns the number of elements removed. 
Definition at line 489 of file TrigNavigationThinningSvc.cxx.
  492     return StatusCode::SUCCESS;
 
  495   v.erase(newend, 
v.end());
 
  497   return StatusCode::SUCCESS;
 
 
 
 
◆ restore()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::restore | ( | State & | state | ) | const |  | private | 
 
Restore the original navigation structure. 
Definition at line 153 of file TrigNavigationThinningSvc.cxx.
  155   state.navigation.reset();
 
  156   state.navigation.prepare();
 
  157   state.navigation.deserialize(state.originalNavigation);
 
  159   return StatusCode::SUCCESS;
 
 
 
 
◆ retainFeatures()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::retainFeatures | ( | State & | state, |  
          |  |  | const std::set< std::pair< CLID, uint16_t > > & | toRetain |  
          |  | ) |  | const |  | private | 
 
This is a helper function for removeFeatures(HLT::NavigationCore*, ...). 
Either this or the above is caled depending which of the sets is smaller 
- Warning
- this is a bit more agresive as it cleans up the navigation from transient objects 
Definition at line 453 of file TrigNavigationThinningSvc.cxx.
  455   ATH_MSG_DEBUG(
"Will retain " << toRetain.size()<< 
" feature type/key");
 
  457    for (
auto te: state.navigation.getAllTEs()) {
 
  458     for ( 
auto& fea: te->getFeatureAccessHelpers() ) {
 
  459       if ( toRetain.find( std::make_pair(fea.getCLID(), fea.getIndex().subTypeIndex()) ) == toRetain.end() )    
 
  463   return StatusCode::SUCCESS;
 
 
 
 
◆ save()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::save | ( | State & | state | ) | const |  | private | 
 
Save the result of the slimming in the doSlimming argument (vector<uint32_t>) 
Definition at line 145 of file TrigNavigationThinningSvc.cxx.
  146   std::vector<unsigned int> 
cuts;
 
  147   state.navigation.serialize(state.destinationNavigation, 
cuts);
 
  149   return StatusCode::SUCCESS;
 
 
 
 
◆ squeeze()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::squeeze | ( | State & | state | ) | const |  | private | 
 
Remove intermediate TEs leaving very flat structure with event node, rois and terminals. 
Definition at line 169 of file TrigNavigationThinningSvc.cxx.
  170   for ( 
auto te: state.navigation.getAllTEs() ) {
 
  171     if ( state.navigation.isInitialNode(te) 
 
  172      or state.navigation.isRoINode(te) 
 
  173      or state.navigation.isTerminalNode(te) 
 
  174      or state.tesToProtect.find(te->getId()) != state.tesToProtect.end())
 
  181   return StatusCode::SUCCESS;
 
 
 
 
◆ syncThinning()
  
  | 
        
          | StatusCode TrigNavigationThinningSvc::syncThinning | ( | State & | state | ) | const |  | private | 
 
reset indexes in the after the thinning 
Definition at line 739 of file TrigNavigationThinningSvc.cxx.
  740   const EventContext& ctx = Gaudi::Hive::currentContext();
 
  743   std::lock_guard<std::recursive_mutex> 
lock(state.navigation.getMutex());
 
  746   if ( holders.empty() ) {  
 
  747     ATH_MSG_ERROR(
"The navigation does not contain any features. This is likely a configuration problem.");
 
  748     return StatusCode::FAILURE;
 
  751   for(
auto holder : holders) {
 
  753     if ( not ipd->
proxy(holder->containerClid(), holder->label() ) ) {
 
  754       ATH_MSG_DEBUG(
"Skipping feature missing in the store: " << holder->label());
 
  757       holder->syncWithSG();
 
  761     ATH_MSG_DEBUG ( 
"Thinning occured for this container" << *holder <<
", going to ajust the indices" );
 
  770     IndexRecalculator recalculator( dec );
 
  772     for ( 
const auto& te: state.navigation.getAllTEs() ) {
 
  773       for ( 
auto& fea: te->getFeatureAccessHelpers() ) {
 
  774         if ( fea.getCLID() == holder->typeClid() 
 
  775          and fea.getIndex().subTypeIndex() == holder->subTypeIndex() ) {
 
  782           idx.updateBeginAndEnd(newBegin, newEnd);
 
  794   return StatusCode::SUCCESS;
 
 
 
 
◆ toBeIncluded() [1/2]
Definition at line 550 of file TrigNavigationThinningSvc.cxx.
  559   if( state.navigation.isInitialNode(te) || state.navigation.isRoINode(te) )
 
  566   if(inclusionList && inclusionList->size() > 0) {
 
  569     if(std::find_if(inclusionList->begin(), inclusionList->end(), 
 
  570             TriggerElementFind(te)) != inclusionList->end())
 
  573     if(exclusionList && std::find_if(exclusionList->begin(), exclusionList->end(),
 
  574                      TriggerElementFind(te)) != exclusionList->end())
 
  583   if(!exclusionList || exclusionList->size() == 0)
 
  587   if(std::find_if(exclusionList->begin(), exclusionList->end(), 
 
  588           TriggerElementFind(te)) != exclusionList->end()) {
 
 
 
 
◆ toBeIncluded() [2/2]
  
  | 
        
          | bool TrigNavigationThinningSvc::toBeIncluded | ( | State & | state, |  
          |  |  | HLT::TriggerElement * | te, |  
          |  |  | std::vector< std::string > * | inclusionList, |  
          |  |  | std::vector< std::string > * | exclusionList |  
          |  | ) |  |  |  | private | 
 
Returns true if the TriggerElement should be included in the navigation tree and false if it should not be. 
Definition at line 500 of file TrigNavigationThinningSvc.cxx.
  505   if(inclusionList && inclusionList->size() > 0) {
 
  508     int onExclusionList = 0;
 
  509     for(std::vector< TriggerElement::FeatureAccessHelper >::const_iterator 
iter =
 
  516       if(exclusionList && 
std::find(exclusionList->begin(), exclusionList->end(), 
 
  534   if(!exclusionList || exclusionList->size() == 0)
 
  537   for(std::vector< TriggerElement::FeatureAccessHelper >::const_iterator 
iter = 
 
 
 
 
◆ m_actions
  
  | 
        
          | std::vector<std::string> TrigNavigationThinningSvc::m_actions |  | private | 
 
 
◆ m_actionsMap
  
  | 
        
          | std::map<std::string, Action> TrigNavigationThinningSvc::m_actionsMap |  | private | 
 
 
◆ m_chainsRegex
  
  | 
        
          | std::string TrigNavigationThinningSvc::m_chainsRegex |  | private | 
 
 
◆ m_featureDropSet
  
  | 
        
          | std::set<std::string> TrigNavigationThinningSvc::m_featureDropSet |  | private | 
 
 
◆ m_featureExclusionList
  
  | 
        
          | std::vector<std::string> TrigNavigationThinningSvc::m_featureExclusionList |  | private | 
 
 
◆ m_featureInclusionList
  
  | 
        
          | std::vector<std::string> TrigNavigationThinningSvc::m_featureInclusionList |  | private | 
 
 
◆ m_featureKeepSet
  
  | 
        
          | std::set<std::string> TrigNavigationThinningSvc::m_featureKeepSet |  | private | 
 
 
◆ m_report
  
  | 
        
          | bool TrigNavigationThinningSvc::m_report |  | private | 
 
 
◆ m_trigDecisionTool
The documentation for this class was generated from the following files:
 
JetConstituentVector::iterator iterator
Helper class for conversion from/to int stored in TE and pair of ints used in Navigation Object point...
std::vector< std::string > m_actions
StatusCode lateFillConfiguration(State &state) const
configures at the first event
virtual SG::DataProxy * proxy(const CLID &id, const std::string &key) const =0
Get proxy with given id and key.
std::string find(const std::string &s)
return a remapped string
StatusCode reload(State &state) const
Reload the slimmed navigation in TDT so that all clients of current job see the chage.
StatusCode dropFeatureless(State &state) const
Removes TEs which have no features (combine wiht squeeze)
Hold thinning decisions for one container.
StatusCode retainFeatures(State &state, const std::set< std::pair< CLID, uint16_t > > &toRetain) const
This is a helper function for removeFeatures(HLT::NavigationCore*, ...).
te_id_type getId() const
reset internals.
std::vector< size_t > vec
#define ATH_MSG_VERBOSE(x)
std::mutex TrigNavigationThinningSvcMutex::s_mutex ATLAS_THREAD_SAFE
StatusCode save(State &state) const
Save the result of the slimming in the doSlimming argument (vector<uint32_t>)
void setTransient(bool t=true)
std::string m_chainsRegex
const std::vector< TriggerElement * > & getRelated(Relation rel) const
returns reference to the likns to other TriggerElements related by relation r
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
The NavigationCore class, adds on top of the TrigNavStructure the EDM read-only handling.
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
StatusCode print(State &state) const
static std::mutex s_mutex
StatusCode removeFeatures(State &state, const std::set< std::pair< CLID, uint16_t > > &doDelete) const
This is a helper function for removeFeatures(HLT::NavigationCore*, ...).
CalibratedSpacePoint::State State
StatusCode removeTriggerElement(State &state, HLT::TriggerElement *te, bool propagateFeatures=true) const
Removes the passed trigger element from the navigation structure by removing all references to it in ...
#define CHECK(...)
Evaluate an expression and check for errors.
StatusCode dropRoIs(State &state) const
Removes RoI nodes, rather aggressive option, should be use as one of last actions as it makes impossi...
StatusCode syncThinning(State &state) const
reset indexes in the after the thinning
std::map< Relation, std::vector< TriggerElement * > > m_relations
relations holder (features outside)
StatusCode dropFeatures(State &state) const
Removes references to features from the navigation structure.
StatusCode squeeze(State &state) const
Remove intermediate TEs leaving very flat structure with event node, rois and terminals.
bool m_report
TE operations verbosity flag.
const SG::ThinningDecisionBase * getThinningDecision(const EventContext &ctx, const std::string &key)
Retrieve the current thinning decision for key.
StatusCode restore(State &state) const
Restore the original navigation structure.
std::set< std::string > m_featureKeepSet
computed from above
StatusCode propagateFeaturesToChildren(const HLT::TriggerElement *te) const
Propagates the features on given TE to its children.
the FeatureAccessHelper is a class used to keep track of features attached to this TE.
#define ATH_MSG_WARNING(x)
StatusCode drop(State &state) const
clear the result of the slimming in the doSliming argument (vector<uint32_t>) Makes no sense to combi...
StatusCode dropEmptyRoIs(State &state) const
Removes RoI nodes, which do not seed anything.
StatusCode removeTriggerElementFromVector(HLT::TriggerElement *te, std::vector< HLT::TriggerElement * > &v) const
Removes all instances of the supplied TriggerElement from the supplied vector.
const std::vector< FeatureAccessHelper > & getFeatureAccessHelpers() const
returns all features which ara attached to this TE
std::vector< std::string > m_featureExclusionList
ToolHandle< Trig::TrigDecisionTool > m_trigDecisionTool
std::vector< std::string > m_featureInclusionList
std::map< std::string, Action > m_actionsMap
StatusCode dropChains(State &state) const
remove info not related to the specified chains
std::set< std::string > m_featureDropSet
computed from above