ATLAS Offline Software
Navigation.h
Go to the documentation of this file.
1 // Emacs -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 
8 #ifndef TRIGNAVIGATION_HLTNAVIGATION_H
9 #define TRIGNAVIGATION_HLTNAVIGATION_H
10 
11 #include "GaudiKernel/ClassID.h"
12 #include "GaudiKernel/MsgStream.h"
13 #include "GaudiKernel/ServiceHandle.h"
14 #include "GaudiKernel/IConversionSvc.h"
15 
19 
22 #include "TrigNavigation/Holder.h"
24 
25 
26 namespace HLT {
100  class Navigation : public AthAlgTool, public NavigationCore {
101  public:
102  // resolve ambiguity between base classes
103  using AthAlgTool::msg;
104  using AthAlgTool::msgLvl;
105 
106  Navigation( const std::string& type,
107  const std::string& name,
108  const IInterface* parent );
109 
110  virtual ~Navigation();
111 
112  virtual StatusCode initialize() override;
113 
124  template<class T>
125  bool attachFeature( TriggerElement* te, const T* feature,
126  MemoryManagement, std::string& key,
127  const std::string& label="" );
128 
129  template<class T>
131  MemoryManagement, std::string& key,
132  const std::string& label="" );
133 
134 
135 
136  template<class T>
137  bool associateExternalCollection(const std::string& label);
147  template<class T> bool findOwners(const T* obj, std::vector<const TriggerElement*>& owners, unsigned int id = 0);
148 
152  template<class T> const std::string getNextKey( const std::string& label = "" );
153 
157  template<class T> const std::string getUniqueKey( const std::string& label = "" );
158 
159  protected:
160  Navigation(); //> not implemented
161  Navigation (const Navigation&); //> not implemented
162  Navigation& operator= (const Navigation&); //> not implemented
163 
165  private:
166  // private stuff of Navigation class
169  Gaudi::Property<std::vector<std::string>> m_dlls{this, "Dlls", {}, "Libraries to load (with trigger EDM)", "OrderedSet<T>"};
172  StatusCode classKey2CLIDKey(const std::vector<std::string>& property, std::vector<CSPair>& decoded);
173 
174  };
175 
176  MsgStream& operator<< ( MsgStream& m, const Navigation& nav ); //<! printing helper
177 
178 } // eof namespace
179 
180 #endif //#ifndef HLTNAVIGATION_H
HLT::FullHolderFactory
Definition: FullHolderFactory.h:24
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
HLT::TrigNavStructure::label
std::string label(class_id_type clid, const index_or_label_type &sti_or_label) const
Definition: TrigNavStructure.cxx:775
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
HLT::Navigation::m_readonly
bool m_readonly
Definition: Navigation.h:171
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
HLT::Navigation::attachFeature
bool attachFeature(TriggerElement *te, const T *feature, MemoryManagement, std::string &key, const std::string &label="")
attaches feature to given TriggerElement
TriggerElement.h
HLT::operator<<
MsgStream & operator<<(MsgStream &m, const Navigation &nav)
Definition: Navigation.cxx:168
HLT::NavigationCore
The NavigationCore class, adds on top of the TrigNavStructure the EDM read-only handling.
Definition: NavigationCore.h:96
HLT
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
Definition: HLTResultReader.h:26
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
HLT::Navigation::Navigation
Navigation(const Navigation &)
HLT::TriggerElement
TriggerElement is the basic ingreedient of the interface between HLT algorithms and the navigation It...
Definition: TrigNavStructure/TrigNavStructure/TriggerElement.h:27
Holder.h
NavigationCore.h
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
HLT::Navigation
The Navigation class, organizes TriggerElements into the tree structure.
Definition: Navigation.h:100
HLT::Navigation::initialize
virtual StatusCode initialize() override
Definition: Navigation.cxx:48
FullHolderFactory.h
HLT::Navigation::getUniqueKey
const std::string getUniqueKey(const std::string &label="")
Get a unique key (not in the usual series) for a given object.
HLT::Navigation::m_serializerServiceHandle
ServiceHandle< IConversionSvc > m_serializerServiceHandle
Definition: Navigation.h:167
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
HLT::Navigation::getNextKey
const std::string getNextKey(const std::string &label="")
Get the next key for a given object.
HLT::Navigation::m_fullholderfactory
FullHolderFactory m_fullholderfactory
Definition: Navigation.h:170
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
HLT::Navigation::Navigation
Navigation()
HLT::Navigation::~Navigation
virtual ~Navigation()
Definition: Navigation.cxx:44
ConstDataVector< T >
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
HLT::Navigation::m_clidSvc
ServiceHandle< IClassIDSvc > m_clidSvc
Definition: Navigation.h:168
AthAlgTool
Definition: AthAlgTool.h:26
HLT::Navigation::classKey2CLIDKey
StatusCode classKey2CLIDKey(const std::vector< std::string > &property, std::vector< CSPair > &decoded)
Definition: Navigation.cxx:114
HLT::Navigation::m_dlls
Gaudi::Property< std::vector< std::string > > m_dlls
Definition: Navigation.h:169
python.PyAthena.obj
obj
Definition: PyAthena.py:132
HLT::Navigation::findOwners
bool findOwners(const T *obj, std::vector< const TriggerElement * > &owners, unsigned int id=0)
find all TriggerElements which have this object attached given feature
HLT::Navigation::associateExternalCollection
bool associateExternalCollection(const std::string &label)
HLT::NavigationCore::MemoryManagement
MemoryManagement
defines 3 possible origins of the objects which are attached to TEs This should be used like this:
Definition: NavigationCore.h:157
HLT::Navigation::operator=
Navigation & operator=(const Navigation &)
ServiceHandle< IConversionSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
HLT::Navigation::attachFeature
bool attachFeature(TriggerElement *te, const ConstDataVector< T > *feature, MemoryManagement, std::string &key, const std::string &label="")