ATLAS Offline Software
ActiveStoreSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef STOREGATE_ACTIVESTORESVC_H
6 #define STOREGATE_ACTIVESTORESVC_H
7 
8 #include "GaudiKernel/Service.h"
9 #include "GaudiKernel/StatusCode.h"
10 
12 
13 class StoreGateSvc;
14 class ISvcLocator;
15 
16 
30 class ActiveStoreSvc : public IProxyDict,
31  public Service
32 {
33 public:
34 
36  inline StoreGateSvc* activeStore() const {
37  // Can't just `return StoreGateSvc::currentStoreGate()` due to
38  // a circular dependency
39  return activeStoreOOL();
40  }
41 
43  inline StoreGateSvc* operator->() const {
44  return activeStore();
45  }
46 
48  using IProxyDict::proxy;
49 
51  void setStore(StoreGateSvc* s);
52 
54  virtual SG::DataProxy* proxy(const void* const pTransient) const override;
55 
57  virtual SG::DataProxy* proxy(const CLID& id, const std::string& key) const override;
58 
62  virtual SG::DataProxy* proxy_exact (SG::sgkey_t sgkey) const override;
63 
65  virtual std::vector<const SG::DataProxy*> proxies() const override;
67 
70 
87  virtual
89  const std::string& key,
90  bool allowMods,
91  bool returnExisting) override;
92 
93 
102  virtual
103  sgkey_t stringToKey (const std::string& str, CLID clid) override;
104 
112  virtual
113  const std::string* keyToString (sgkey_t key) const override;
114 
123  virtual
124  const std::string* keyToString (sgkey_t key,
125  CLID& clid) const override;
126 
139  virtual
140  void registerKey (sgkey_t key,
141  const std::string& str,
142  CLID clid) override;
143 
144 
146  virtual StatusCode initialize() override;
147  virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvInterface ) override;
149 
151  static const InterfaceID& interfaceID();
152 
154  ActiveStoreSvc(const std::string& name, ISvcLocator* svc);
155 
156  virtual ~ActiveStoreSvc() override;
157 
158 private:
159  StoreGateSvc* activeStoreOOL() const;
161  std::string m_storeName; //< property: StoreGate instance name
162 
163 };
164 #endif // STOREGATE_ACTIVESTORESVC_H
165 
166 
167 
common.sgkey
def sgkey(tool)
Definition: common.py:1028
ActiveStoreSvc::m_storeName
std::string m_storeName
Definition: ActiveStoreSvc.h:161
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
ActiveStoreSvc::activeStore
StoreGateSvc * activeStore() const
returns pointer to the active store as StoreGateSvc
Definition: ActiveStoreSvc.h:36
IProxyDict::proxy
virtual SG::DataProxy * proxy(const CLID &id, const std::string &key) const =0
Get proxy with given id and key.
ActiveStoreSvc::~ActiveStoreSvc
virtual ~ActiveStoreSvc() override
Standard Destructor.
Definition: ActiveStoreSvc.cxx:27
ActiveStoreSvc::queryInterface
virtual StatusCode queryInterface(const InterfaceID &riid, void **ppvInterface) override
Definition: ActiveStoreSvc.cxx:174
ActiveStoreSvc::proxy_exact
virtual SG::DataProxy * proxy_exact(SG::sgkey_t sgkey) const override
Get proxy given a hashed key+clid.
Definition: ActiveStoreSvc.cxx:63
ActiveStoreSvc::ActiveStoreSvc
ActiveStoreSvc(const std::string &name, ISvcLocator *svc)
Standard Service Constructor. sets active store to default event store.
Definition: ActiveStoreSvc.cxx:17
ActiveStoreSvc
A service that caches a pointer to the currently active store. It also implements the IProxyDict stor...
Definition: ActiveStoreSvc.h:32
ActiveStoreSvc::p_activeStore
StoreGateSvc * p_activeStore
Definition: ActiveStoreSvc.h:160
IStringPool::sgkey_t
SG::sgkey_t sgkey_t
Type of the keys.
Definition: IStringPool.h:34
IProxyDict
A proxy dictionary.
Definition: AthenaKernel/AthenaKernel/IProxyDict.h:51
python.FakeAthena.Service
def Service(name)
Definition: FakeAthena.py:38
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
ActiveStoreSvc::proxies
virtual std::vector< const SG::DataProxy * > proxies() const override
return the list of all current proxies in store
Definition: ActiveStoreSvc.cxx:70
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ActiveStoreSvc::keyToString
virtual const std::string * keyToString(sgkey_t key) const override
Find the string corresponding to a given key.
Definition: ActiveStoreSvc.cxx:129
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
IProxyDict.h
ActiveStoreSvc::initialize
virtual StatusCode initialize() override
Service initialization.
Definition: ActiveStoreSvc.cxx:32
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
ActiveStoreSvc::activeStoreOOL
StoreGateSvc * activeStoreOOL() const
Definition: ActiveStoreSvc.cxx:191
SG::sgkey_t
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition: CxxUtils/CxxUtils/sgkey_t.h:32
ActiveStoreSvc::stringToKey
virtual sgkey_t stringToKey(const std::string &str, CLID clid) override
Find the key for a string/CLID pair.
Definition: ActiveStoreSvc.cxx:116
ActiveStoreSvc::registerKey
virtual void registerKey(sgkey_t key, const std::string &str, CLID clid) override
Remember an additional mapping from key to string/CLID.
Definition: ActiveStoreSvc.cxx:162
ActiveStoreSvc::setStore
void setStore(StoreGateSvc *s)
set the active store pointer: used by the event loop mgrs
Definition: ActiveStoreSvc.cxx:45
ActiveStoreSvc::operator->
StoreGateSvc * operator->() const
dereference operator to access the active store
Definition: ActiveStoreSvc.h:43
str
Definition: BTagTrackIpAccessor.cxx:11
SG::DataObjectSharedPtr
Smart pointer to manage DataObject reference counts.
Definition: DataObjectSharedPtr.h:46
python.PyAthena.obj
obj
Definition: PyAthena.py:135
SG::DataProxy
Definition: DataProxy.h:44
ActiveStoreSvc::interfaceID
static const InterfaceID & interfaceID()
not really kosher: should be in IActiveStoreSvc
Definition: ActiveStoreSvc.cxx:170
ActiveStoreSvc::recordObject
virtual SG::DataProxy * recordObject(SG::DataObjectSharedPtr< DataObject > obj, const std::string &key, bool allowMods, bool returnExisting) override
Record an object in the store.
Definition: ActiveStoreSvc.cxx:99
ActiveStoreSvc::addToStore
StatusCode addToStore(CLID id, SG::DataProxy *proxy) override
Raw addition of a proxy to the store.
Definition: ActiveStoreSvc.cxx:76
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
ActiveStoreSvc::proxy
virtual SG::DataProxy * proxy(const void *const pTransient) const override
get proxy for a given data object address in memory
Definition: ActiveStoreSvc.cxx:53