ATLAS Offline Software
TrigNavigationThinningSvc.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef TRIGNAVTOOLS_TRIGNAVIGATIONTHINNINGSVC_H
8 #define TRIGNAVTOOLS_TRIGNAVIGATIONTHINNINGSVC_H
9 
10 #include "GaudiKernel/IIncidentListener.h"
15 
16 namespace HLT {
17  class NavigationCore;
18 }
19 
20 
53 class TrigNavigationThinningSvc : public extends<AthService, ITrigNavigationThinningSvc>
54 {
55 public:
56  TrigNavigationThinningSvc( const std::string& name, ISvcLocator* pSvcLocator );
57 
58  virtual StatusCode initialize() override;
59  virtual StatusCode finalize() override;
60 
61  virtual StatusCode doSlimming( const EventContext& /*ctx*/,
62  std::vector<uint32_t>& slimmed_and_serialized ) const override;
63 
64 
65 private:
66  ToolHandle<Trig::TrigDecisionTool> m_trigDecisionTool;
67 
68  std::vector<std::string> m_featureInclusionList;
69  std::vector<std::string> m_featureExclusionList;
70  std::set<std::string> m_featureKeepSet;
71  std::set<std::string> m_featureDropSet;
72 
73  struct State
74  {
75  State (const EventContext& the_ctx,
76  HLT::NavigationCore& the_navigation,
77  std::vector<uint32_t>& the_destinationNavigation)
78  : ctx (the_ctx),
79  navigation (the_navigation),
80  destinationNavigation (the_destinationNavigation)
81  {}
82  const EventContext& ctx;
84  std::vector<uint32_t>& destinationNavigation;
85  std::vector<uint32_t> originalNavigation;
86  std::set<HLT::te_id_type> tesToProtect;
87  };
88 
89  std::vector<std::string> m_actions;
90  typedef StatusCode (TrigNavigationThinningSvc::*Action)(State& state) const;
91  std::map<std::string, Action> m_actionsMap;
92  std::string m_chainsRegex;
93 
94 
95  bool m_report;
96 
100  StatusCode lateFillConfiguration(State& state) const;
101 
102 
107  StatusCode drop(State& state) const;
111  StatusCode reload(State& state) const;
112 
116  StatusCode restore(State& state) const;
117 
122  StatusCode save(State& state) const;
123 
124  StatusCode print(State& state) const;
128  StatusCode squeeze(State& state) const;
129 
137  StatusCode dropFeatures(State& state) const;
143  StatusCode dropRoIs(State& state) const;
147  StatusCode dropEmptyRoIs(State& state) const;
151  StatusCode dropFeatureless(State& state) const;
156 
160  StatusCode syncThinning(State& state) const;
161 
165  StatusCode dropChains(State& state) const;
166 
174  bool propagateFeatures = true) const;
175 
176 
182 
188 
197  public:
199  bool operator()( const HLT::TriggerElement* te );
200 
201  private:
202  unsigned int m_id;
204  };
205 
211 
219  const std::set<std::pair<CLID, uint16_t> >& doDelete) const;
220 
227  const std::set<std::pair<CLID, uint16_t> >& toRetain) const;
228 
234  StatusCode removeTriggerElementFromVector(HLT::TriggerElement *te, std::vector<HLT::TriggerElement*>& v) const;
235 
240  bool toBeIncluded(State& state, HLT::TriggerElement *te, std::vector<std::string> *inclusionList,
241  std::vector<std::string> *exclusionList);
242  bool toBeIncluded(State& state, HLT::TriggerElement *te, std::vector<HLT::TriggerElement*> *inclusionList,
243  std::vector<HLT::TriggerElement*> *exclusionList);
244 
249 
250  // store the CLID and subtype ids of all the of the deleted features so we can
251  // remove their holders from the navigation structure.
252  //std::vector<std::pair<CLID, uint16_t> > *m_deletedFeatures;
253 
254  // internal functions
255  // virtual std::vector<HLT::TriggerElement*> *getTEsFromFailedChains();
256  // virtual std::vector<HLT::TriggerElement*> *getTEsFromChainGroup(const Trig::ChainGroup *cg);
257  // internal data
258 };
259 
260 
261 #endif
TrigNavigationThinningSvc::m_actions
std::vector< std::string > m_actions
Definition: TrigNavigationThinningSvc.h:89
TrigNavigationThinningSvc::State::ctx
const EventContext & ctx
Definition: TrigNavigationThinningSvc.h:82
TrigNavigationThinningSvc::State::tesToProtect
std::set< HLT::te_id_type > tesToProtect
Definition: TrigNavigationThinningSvc.h:86
TrigNavigationThinningSvc::lateFillConfiguration
StatusCode lateFillConfiguration(State &state) const
configures at the first event
Definition: TrigNavigationThinningSvc.cxx:334
TrigNavigationThinningSvc::doSlimming
virtual StatusCode doSlimming(const EventContext &, std::vector< uint32_t > &slimmed_and_serialized) const override
Definition: TrigNavigationThinningSvc.cxx:287
TrigNavigationThinningSvc::reload
StatusCode reload(State &state) const
Reload the slimmed navigation in TDT so that all clients of current job see the chage.
Definition: TrigNavigationThinningSvc.cxx:131
TrigNavigationThinningSvc::dropFeatureless
StatusCode dropFeatureless(State &state) const
Removes TEs which have no features (combine wiht squeeze)
Definition: TrigNavigationThinningSvc.cxx:258
TrigNavigationThinningSvc::finalize
virtual StatusCode finalize() override
Definition: TrigNavigationThinningSvc.cxx:327
TrigNavigationThinningSvc::State
Definition: TrigNavigationThinningSvc.h:74
TrigNavigationThinningSvc::retainFeatures
StatusCode retainFeatures(State &state, const std::set< std::pair< CLID, uint16_t > > &toRetain) const
This is a helper function for removeFeatures(HLT::NavigationCore*, ...).
Definition: TrigNavigationThinningSvc.cxx:453
TrigNavigationThinningSvc::State::originalNavigation
std::vector< uint32_t > originalNavigation
Definition: TrigNavigationThinningSvc.h:85
ITrigNavigationThinningSvc.h
Define interface for doing TrigNavigation thinning.
TrigDecisionTool.h
TrigNavigationThinningSvc::save
StatusCode save(State &state) const
Save the result of the slimming in the doSlimming argument (vector<uint32_t>)
Definition: TrigNavigationThinningSvc.cxx:145
TrigNavigationThinningSvc::toBeIncluded
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 n...
Definition: TrigNavigationThinningSvc.cxx:500
TrigNavigationThinningSvc::m_chainsRegex
std::string m_chainsRegex
Definition: TrigNavigationThinningSvc.h:92
TrigNavigationThinningSvc::TriggerElementFind::TriggerElementFind
TriggerElementFind(const HLT::TriggerElement *te)
Definition: TrigNavigationThinningSvc.cxx:625
TriggerElement.h
TrigNavigationThinningSvc::State::State
State(const EventContext &the_ctx, HLT::NavigationCore &the_navigation, std::vector< uint32_t > &the_destinationNavigation)
Definition: TrigNavigationThinningSvc.h:75
HLT::NavigationCore
The NavigationCore class, adds on top of the TrigNavStructure the EDM read-only handling.
Definition: NavigationCore.h:96
TrigNavigationThinningSvc::removeGhostTriggerElements
StatusCode removeGhostTriggerElements(HLT::TriggerElement *te=0)
Removes all trigger elements with the flag ghost set to true from the navigation structure.
HLT
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
Definition: HLTResultReader.h:26
TrigNavigationThinningSvc::print
StatusCode print(State &state) const
Definition: TrigNavigationThinningSvc.cxx:164
TrigNavigationThinningSvc::State::navigation
HLT::NavigationCore & navigation
Definition: TrigNavigationThinningSvc.h:83
TrigNavigationThinningSvc::removeFeatures
StatusCode removeFeatures(State &state, const std::set< std::pair< CLID, uint16_t > > &doDelete) const
This is a helper function for removeFeatures(HLT::NavigationCore*, ...).
Definition: TrigNavigationThinningSvc.cxx:421
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
HLT::TriggerElement
TriggerElement is the basic ingreedient of the interface between HLT algorithms and the navigation It...
Definition: TrigNavStructure/TrigNavStructure/TriggerElement.h:27
TrigNavigationThinningSvc::State::destinationNavigation
std::vector< uint32_t > & destinationNavigation
Definition: TrigNavigationThinningSvc.h:84
TrigNavigationThinningSvc::TriggerElementFind::m_RoI
const HLT::TriggerElement * m_RoI
Definition: TrigNavigationThinningSvc.h:203
TrigNavigationThinningSvc::dropInactive
StatusCode dropInactive()
Removes TEs which are inactive (rejected by hypothesis)
TrigNavigationThinningSvc::removeTriggerElement
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 ...
Definition: TrigNavigationThinningSvc.cxx:349
TrigNavigationThinningSvc::TriggerElementFind
Used to compare pointers of TriggerElements.
Definition: TrigNavigationThinningSvc.h:196
TrigNavigationThinningSvc::dropRoIs
StatusCode dropRoIs(State &state) const
Removes RoI nodes, rather aggressive option, should be use as one of last actions as it makes impossi...
Definition: TrigNavigationThinningSvc.cxx:241
TrigNavigationThinningSvc::syncThinning
StatusCode syncThinning(State &state) const
reset indexes in the after the thinning
Definition: TrigNavigationThinningSvc.cxx:739
TrigNavigationThinningSvc::Action
StatusCode(TrigNavigationThinningSvc::* Action)(State &state) const
Definition: TrigNavigationThinningSvc.h:90
TrigNavigationThinningSvc::dropFeatures
StatusCode dropFeatures(State &state) const
Removes references to features from the navigation structure.
Definition: TrigNavigationThinningSvc.cxx:185
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:224
TrigNavigationThinningSvc::squeeze
StatusCode squeeze(State &state) const
Remove intermediate TEs leaving very flat structure with event node, rois and terminals.
Definition: TrigNavigationThinningSvc.cxx:169
TrigNavigationThinningSvc::m_report
bool m_report
TE operations verbosity flag.
Definition: TrigNavigationThinningSvc.h:95
TrigNavigationThinningSvc::TriggerElementFind::operator()
bool operator()(const HLT::TriggerElement *te)
Definition: TrigNavigationThinningSvc.cxx:644
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TrigNavigationThinningSvc
The TrigNavigationThinningSvc is an athena tool used to slim the trigger Navigation structure in vari...
Definition: TrigNavigationThinningSvc.h:54
TrigNavigationThinningSvc::recursivelyRemoveNodesFromNavigation
StatusCode recursivelyRemoveNodesFromNavigation(HLT::TriggerElement *te)
Removes the passed te and all children from the navigation structure.
TrigNavigationThinningSvc::TriggerElementFind::m_id
unsigned int m_id
Definition: TrigNavigationThinningSvc.h:202
TrigNavigationThinningSvc::removeFeaturelessTriggerElements
StatusCode removeFeaturelessTriggerElements(State &state, HLT::TriggerElement *te=0)
Removes all trigger elements with no features from the navigation structure.
Definition: TrigNavigationThinningSvc.cxx:468
TrigNavigationThinningSvc::restore
StatusCode restore(State &state) const
Restore the original navigation structure.
Definition: TrigNavigationThinningSvc.cxx:153
python.PyAthena.v
v
Definition: PyAthena.py:157
TrigNavigationThinningSvc::m_featureKeepSet
std::set< std::string > m_featureKeepSet
computed from above
Definition: TrigNavigationThinningSvc.h:70
TrigNavigationThinningSvc::propagateFeaturesToChildren
StatusCode propagateFeaturesToChildren(const HLT::TriggerElement *te) const
Propagates the features on given TE to its children.
Definition: TrigNavigationThinningSvc.cxx:598
TrigNavigationThinningSvc::drop
StatusCode drop(State &state) const
clear the result of the slimming in the doSliming argument (vector<uint32_t>) Makes no sense to combi...
Definition: TrigNavigationThinningSvc.cxx:123
TrigNavigationThinningSvc::TrigNavigationThinningSvc
TrigNavigationThinningSvc(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TrigNavigationThinningSvc.cxx:31
AthService.h
TrigNavigationThinningSvc::dropEmptyRoIs
StatusCode dropEmptyRoIs(State &state) const
Removes RoI nodes, which do not seed anything.
Definition: TrigNavigationThinningSvc.cxx:249
TrigNavigationThinningSvc::removeTriggerElementFromVector
StatusCode removeTriggerElementFromVector(HLT::TriggerElement *te, std::vector< HLT::TriggerElement * > &v) const
Removes all instances of the supplied TriggerElement from the supplied vector.
Definition: TrigNavigationThinningSvc.cxx:489
TrigNavigationThinningSvc::m_featureExclusionList
std::vector< std::string > m_featureExclusionList
Definition: TrigNavigationThinningSvc.h:69
TrigNavigationThinningSvc::m_trigDecisionTool
ToolHandle< Trig::TrigDecisionTool > m_trigDecisionTool
Definition: TrigNavigationThinningSvc.h:66
TrigNavigationThinningSvc::initialize
virtual StatusCode initialize() override
Definition: TrigNavigationThinningSvc.cxx:70
TrigNavigationThinningSvc::m_featureInclusionList
std::vector< std::string > m_featureInclusionList
Definition: TrigNavigationThinningSvc.h:68
TrigNavigationThinningSvc::m_actionsMap
std::map< std::string, Action > m_actionsMap
Definition: TrigNavigationThinningSvc.h:91
TrigNavigationThinningSvc::dropChains
StatusCode dropChains(State &state) const
remove info not related to the specified chains
Definition: TrigNavigationThinningSvc.cxx:267
TrigNavigationThinningSvc::m_featureDropSet
std::set< std::string > m_featureDropSet
computed from above
Definition: TrigNavigationThinningSvc.h:71