ATLAS Offline Software
StoreGateSvc.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "GaudiKernel/IIncidentSvc.h"
9 
10 #include "StoreGate/StoreGateSvc.h"
12 #include "SGTools/DataStore.h"
13 
14 #include "Gaudi/Interfaces/IOptionsSvc.h"
15 #include "GaudiKernel/IAppMgrUI.h"
16 #include <fstream>
17 #include <algorithm>
18 
19 using namespace SG;
20 using namespace std;
21 
22 namespace {
23  thread_local HiveEventSlot* currentHiveEventSlot = nullptr;
24  thread_local StoreGateSvc* currentStoreGate = nullptr;
25 }
26 
28 StoreGateSvc::StoreGateSvc(const std::string& name,ISvcLocator* svc) :
29  base_class(name,svc),
30  m_storeID (StoreID::findStoreID(name))
31 {
32 }
33 
36 {}
37 
38 void
40  m_defaultStore = pStore;
41 }
42 
43 void
45  currentHiveEventSlot=pSlot;
46  if ( 0 != currentHiveEventSlot) {
47  currentHiveEventSlot->pEvtStore->makeCurrent();
48  }
49 }
50 
52  if (!::currentStoreGate) {
53  // this is a static function so we don't have many conveniences
54  ISvcLocator *svcLocator = Gaudi::svcLocator();
55  SmartIF<StoreGateSvc> sg{svcLocator->service("StoreGateSvc/StoreGateSvc")};
56  if ( !sg.isValid() ) {
57  throw GaudiException(
58  "Could not get \"StoreGateSvc\" to initialize currentStoreGate",
59  "StoreGateSvc", StatusCode::FAILURE);
60  }
61  sg->makeCurrent();
62  return sg;
63  }
64  return ::currentStoreGate;
65 }
66 
69  return currentHiveEventSlot;
70 }
71 
73 
74 
75 void
77  _SGVOIDCALL(commitNewDataObjects, ());
78 }
79 
82 StoreGateSvc::recordAddress(const std::string& skey,
84  bool clearAddressFlag) {
85  _SGXCALL(recordAddress, (skey, std::move(pAddress), clearAddressFlag), StatusCode::FAILURE);
86 }
90  bool clearAddressFlag) {
91  _SGXCALL(recordAddress, (std::move(pAddress), clearAddressFlag), StatusCode::FAILURE);
92 }
93 
94 
96 StoreGateSvc::setConst(const void* pObject) {
97  _SGXCALL(setConst, (pObject), StatusCode::FAILURE);
98 }
99 
100 
104 
105  // Initialize service:
107 
108  verbose() << "Initializing " << name() << endmsg;
109 
110  SmartIF<Gaudi::Interfaces::IOptionsSvc> pJOSvc{serviceLocator()->service("JobOptionsSvc")};
111  if ( !pJOSvc.isValid() ) {
112  error() << "Failed to retrieve JobOptionsSvc" << endmsg;
113  }
114  //copy our properties to the prototype (default) SGImplSvc
115  const std::string implStoreName = name() + "_Impl";
116  for (const Gaudi::Details::PropertyBase* p : getProperties()) {
117  pJOSvc->set( implStoreName + "." + p->name(), p->toString() );
118  }
119 
120  //HACK ALERT: using createService rather then the customary service(...,CREATEIF=true) we set our pointer
121  // to SGImplSvc early (even before it is initialized). This should help take care of some initialize loops
122  // for example when we try to record an address from one of the address providers initialize methods
123 
124  std::string implStoreFullName = "SGImplSvc/" + implStoreName;
125  debug() << "trying to create store " << implStoreFullName << endmsg;
126 
127  m_defaultStore = serviceLocator().as<ISvcManager>()->createService(implStoreFullName);
128 
129  if (!m_defaultStore) {
130  error() << "Could not create store " << implStoreFullName << endmsg;
131  return StatusCode::FAILURE;
132  }
133 
134  if ( m_defaultStore->sysInitialize().isSuccess() ) {
135  // If this is the default event store (StoreGateSvc), then declare
136  // our arena as the default for memory allocations.
137  if (name() == "StoreGateSvc") {
138  m_defaultStore->makeCurrent();
139  }
140  } else {
141  error() << "Could not initialize default store " << implStoreFullName
142  << endmsg;
143  return StatusCode::FAILURE;
144  }
145  if ( !m_incSvc.retrieve().isSuccess() ) {
146  error() << "Could not locate IncidentSvc" << endmsg;
147  return StatusCode::FAILURE;
148  }
149 
150  // Don't retrieve m_activeStoreSvc here to prevent a possible
151  // initialization loop.
152 
153  const int PRIORITY=100;
154  m_incSvc->addListener(this, "EndEvent",PRIORITY);
155  m_incSvc->addListener(this, "BeginEvent", PRIORITY);
156 
157  return StatusCode::SUCCESS;
158 }
159 
162  verbose() << "Stop " << name() << endmsg;
163  //HACK ALERT: ID event store objects refer to det store objects
164  //by setting an ad-hoc priority for event store(s) we make sure they are finalized and hence cleared first
165  // see e.g. https://savannah.cern.ch/bugs/index.php?99993
166  if (m_defaultStore->store()->storeID() == StoreID::EVENT_STORE) {
167  auto pISM = serviceLocator().as<ISvcManager>();
168  pISM->setPriority(name(), pISM->getPriority(name())+1).ignore();
169  verbose() << "stop: setting service priority to " << pISM->getPriority(name())
170  << " so that event stores get finalized and cleared before other stores" <<endmsg;
171  }
172  return StatusCode::SUCCESS;
173 }
174 
175 void StoreGateSvc::handle(const Incident &inc) {
176  currentStore()->handle(inc);
177 }
178 
180 
184  verbose() << "Finalizing " << name() << endmsg;
185  if (m_defaultStore) {
186  // m_defaultStore is not active, so ServiceManager won't finalize it!
187  CHECK( m_defaultStore->finalize());
188  }
189 
190  printBadList (m_badRetrieves, "retrieve()");
191  printBadList (m_badRecords, "record()");
192  return StatusCode::SUCCESS;
193 }
194 
195 
197 DataProxy*
198 StoreGateSvc::proxy(const void* const pTransient) const {
199  _SGXCALL(proxy, (pTransient), 0);
200 }
201 
203 DataProxy*
204 StoreGateSvc::proxy(const CLID& id) const {
205  _SGXCALL(proxy, (id), 0);
206 }
207 
209 DataProxy*
210 StoreGateSvc::proxy(const CLID& id, const std::string& key) const {
211  _SGXCALL(proxy, (id, key), 0);
212 }
213 
214 
218 StoreGateSvc::proxy(const CLID& id, bool checkValid) const {
219  _SGXCALL(proxy, (id, checkValid), 0);
220 }
221 
225 StoreGateSvc::proxy(const CLID& id, const std::string& key, bool checkValid) const {
226  _SGXCALL(proxy, (id, key, checkValid), 0);
227 }
228 
229 
236 {
237  _SGXCALL(addToStore, (id, proxy), StatusCode::FAILURE);
238 }
239 
240 
263  const std::string& key,
264  bool allowMods,
265  bool returnExisting)
266 {
267  _SGXCALL(recordObject, (std::move(obj), key, allowMods, returnExisting), nullptr);
268 }
269 
270 
272 vector<const SG::DataProxy*>
274  vector<const SG::DataProxy*> nullV;
275  _SGXCALL(proxies, (), nullV);
276 }
277 
279 vector<CLID>
281 {
282  vector<CLID> nullV;
283  _SGXCALL(clids, (), nullV);
284 }
285 
289 StoreGateSvc::transientProxy(const CLID& id, const std::string& key) const {
290  _SGXCALL(transientProxy, (id, key), 0);
291 }
292 
293 
295 DataObject*
296 StoreGateSvc::accessData(const CLID& id) const {
297  _SGXCALL(accessData, (id), 0);
298 }
299 
301 DataObject*
302 StoreGateSvc::accessData(const CLID& id, const std::string& key) const {
303  _SGXCALL(accessData, (id, key), 0);
304 }
305 
306 bool
308  const std::string& keyA, const std::string& keyB ) {
309  _SGXCALL(transientSwap, (id, keyA, keyB), false);
310 }
311 
314 StatusCode
315 StoreGateSvc::typeless_record( DataObject* obj, const std::string& key,
316  const void* const raw_ptr,
317  bool allowMods, bool resetOnly,
318  bool noHist ) {
319  _SGXCALL(typeless_record, (obj, key, raw_ptr, allowMods, resetOnly, noHist), StatusCode::FAILURE);
320 }
322 StatusCode
324  DataObject* obj, const std::string& key,
325  const void* const raw_ptr,
326  bool allowMods,
327  bool noHist,
328  const std::type_info* tinfo) {
329  _SGXCALL(typeless_overwrite, (id, obj, key, raw_ptr, allowMods, noHist, tinfo), StatusCode::FAILURE);
330 }
331 
333 void
335 {
336  m_storeID = id;
337  // FIXME: should broadcast this to all instances.
338  _SGVOIDCALL(setStoreID,(id));
339 }
340 
341 void
342 StoreGateSvc::keys(const CLID& id, std::vector<std::string>& vkeys,
343  bool includeAlias, bool onlyValid) const
344 {
345  _SGVOIDCALL(keys,(id, vkeys, includeAlias, onlyValid));
346 }
347 
348 
349 
350 std::string
352  std::string nullS = "\n>>>>>>>NO CURRENT STORE<<<<<<<\n";
353  _SGXCALL(dump, (), nullS);
354 }
355 
356 int
357 StoreGateSvc::typeCount(const CLID& clid) const{
358  _SGXCALL(typeCount, (clid), -1);
359 }
360 
361 
362 
363 typename StoreGateSvc::sgkey_t
364 StoreGateSvc::stringToKey (const std::string& str, CLID clid) {
365  _SGXCALL( stringToKey, (str, clid), 0 );
366 }
367 
368 const std::string*
370  _SGXCALL( keyToString, (key), 0 );
371 }
372 
373 const std::string*
374 StoreGateSvc::keyToString (sgkey_t key, CLID& clid) const {
375  _SGXCALL( keyToString, (key, clid), 0 );
376 }
377 
378 void
380  const std::string& str,
381  CLID clidid) {
382  _SGVOIDCALL( registerKey, (key, str, clidid) );
383 }
384 void
386  sgkey_t target,
387  off_t index_offset) {
388  _SGVOIDCALL( remap_impl, (source, target, index_offset) );
389 }
390 
391 bool
392 StoreGateSvc::tryELRemap (sgkey_t sgkey_in, size_t index_in,
393  sgkey_t& sgkey_out, size_t& index_out) {
394  _SGXCALL( tryELRemap, (sgkey_in, index_in, sgkey_out, index_out), false );
395 }
396 
397 StatusCode
400  SG::ConstProxyIterator& end) const {
401  _SGXCALL( proxyRange, (id, beg, end), StatusCode::FAILURE );
402 }
403 
404 
405 void
406 StoreGateSvc::releaseObject(const CLID& id, const std::string& key) {
407  _SGVOIDCALL( releaseObject, (id, key) );
408 }
409 
410 void
412  _SGVOIDCALL( clearProxyPayload, (proxy) );
413 }
414 
415 
416 StatusCode
418  this->makeCurrent();
419  _SGXCALL(loadEventProxies, (), StatusCode::FAILURE);
420 }
421 
423 // clear store
424 StatusCode
425 StoreGateSvc::clearStore(bool forceRemove)
426 {
427  StatusCode sc = currentStore()->clearStore(forceRemove);
428 
429  // Send a notification that the store was cleared.
430  if (sc.isSuccess()) {
431  m_incSvc->fireIncident(StoreClearedIncident (this, name()));
432  }
433  return sc;
434 }
435 
436 void
438  _SGVOIDCALL( emptyTrash, () );
439 }
440 
445  ::currentStoreGate = this;
446  _SGVOIDCALL (makeCurrent, ());
447 }
448 
450  bool forceRemove) {
451  _SGXCALL(removeProxy, (proxy, pTrans, forceRemove), StatusCode::FAILURE);
452 }
453 
454 
466 StoreGateSvc::createObj (IConverter* cvt,
467  IOpaqueAddress* addr,
468  DataObject*& refpObject)
469 {
470  _SGXCALL( createObj, (cvt, addr, refpObject), StatusCode::FAILURE );
471 }
472 
473 
481  CLID clid, const std::string& key) const
482 {
483  if (m_storeID == StoreID::EVENT_STORE && currentHiveEventSlot != nullptr) {
484  lock_t lock (m_badMutex);
485  std::string algo;
486  if (m_algContextSvc.isValid()) {
487  if (IAlgorithm* alg = m_algContextSvc->currentAlg()) {
488  if (alg->type() == "AthenaOutputStream") return;
489  if (alg->type() == "AthIncFirerAlg") return;
490  algo = alg->type() + "/" + alg->name();
491  bad.insert (BadListItem (clid, key, algo));
492  }
493  }
494  }
495 }
496 
497 
504  const std::string& what) const
505 {
506  if (bad.empty()) return;
507  std::vector<std::string> lines;
508  for (const BadListItem& id : bad) {
509  lines.push_back (id.fullKey() + " [" + id.m_algo + "]");
510  }
511  std::sort (lines.begin(), lines.end());
512  warning() << "Called " << what << " on these objects in a MT store" << endmsg;
513  for (const std::string& s : lines) {
514  warning() << s << endmsg;
515  }
516 }
517 
518 
520 {
521  std::cout << sg->dump() << "\n";
522 }
523 
524 void SG_dump (StoreGateSvc* sg, const char* fname)
525 {
526  std::ofstream f (fname);
527  f << sg->dump() << "\n";
528  f.close();
529 }
530 
StoreGateSvc::transientSwap
bool transientSwap(const CLID &id, const std::string &keyA, const std::string &keyB)
swap the content of 2 keys payload A indexed by keyA will now be accessed via keyB and vice versa Not...
Definition: StoreGateSvc.cxx:307
bad
@ bad
Definition: SUSYToolsTester.cxx:95
SG::HiveEventSlot
Definition: SGHiveEventSlot.h:19
StoreGateSvc::typeCount
int typeCount() const
Return the number of instances of an object of type T int i = p_store->typeCount<T>(); Note that th...
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:50
StoreGateSvc::setSlot
static void setSlot(SG::HiveEventSlot *pSlot)
set the hive event slot pointer: used by the event loop mgrs
Definition: StoreGateSvc.cxx:44
StoreGateSvc::clearProxyPayload
void clearProxyPayload(SG::DataProxy *)
use to reset a proxy (clearing the data object it contains) Unlike DataProxy::reset this method corre...
Definition: StoreGateSvc.cxx:411
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:407
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
SG_dump
void SG_dump(StoreGateSvc *sg)
These are intended to be easy to call from the debugger.
Definition: StoreGateSvc.cxx:519
StoreGateSvc::stop
virtual StatusCode stop() override
Service start.
Definition: StoreGateSvc.cxx:161
StoreGateSvc::handle
virtual void handle(const Incident &) override final
Definition: StoreGateSvc.cxx:175
initialize
void initialize()
Definition: run_EoverP.cxx:894
DataStore.h
StoreGateSvc::makeCurrent
void makeCurrent()
The current store is becoming the active store.
Definition: StoreGateSvc.cxx:444
StoreGateSvc::~StoreGateSvc
virtual ~StoreGateSvc() override
Standard Destructor.
Definition: StoreGateSvc.cxx:35
StoreGateSvc::printBadList
void printBadList(const BadItemList &bad, const std::string &what) const
Print out a list of bad calls during finalization.
Definition: StoreGateSvc.cxx:503
StoreGateSvc::typeless_overwrite
StatusCode typeless_overwrite(const CLID &id, DataObject *obj, const std::string &key, const void *const raw_ptr, bool allowMods, bool noHist=false, const std::type_info *tinfo=0)
same as typeless_record, allows to overwrite an object in memory or on disk
Definition: StoreGateSvc.cxx:323
CxxUtils::RefCountedPtr< IOpaqueAddress >
StoreGateSvc::commitNewDataObjects
virtual void commitNewDataObjects() override final
Reset handles added since the last call to commit.
Definition: StoreGateSvc.cxx:76
python.RatesEmulationExample.lock
lock
Definition: RatesEmulationExample.py:148
StoreGateSvc::keys
void keys(std::vector< std::string > &vkeys, bool includeAlias=false, bool onlyValid=true) const
provide list of all StoreGate keys associated with an object.
python.DualUseConfig.createService
def createService(typeName, serviceName, sequence=None)
Definition: DualUseConfig.py:127
StoreGateSvc::removeProxy
StatusCode removeProxy(SG::DataProxy *proxy, const void *pTrans, bool forceRemove=false)
remove proxy from store, unless it is reset only.
Definition: StoreGateSvc.cxx:449
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:92
StoreGateSvc::remap_impl
void remap_impl(sgkey_t source, sgkey_t target, off_t index_offset)
Declare a remapping.
Definition: StoreGateSvc.cxx:385
run_Egamma1_LArStrip_Fex.dump
dump
Definition: run_Egamma1_LArStrip_Fex.py:87
StoreGateSvc::proxyRange
StatusCode proxyRange(const CLID &id, SG::ConstProxyIterator &beg, SG::ConstProxyIterator &end) const
return a range to all proxies of a given CLID
Definition: StoreGateSvc.cxx:398
DiTauMassTools::ignore
void ignore(T &&)
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:58
StoreGateSvc::emptyTrash
void emptyTrash()
throw away bad objects
Definition: StoreGateSvc.cxx:437
StoreGateSvc::finalize
virtual StatusCode finalize() override
Definition: StoreGateSvc.cxx:182
ArenaHeader.h
Proxy for a group of Arenas. See Arena.h for an overview of the arena-based memory allocators.
StoreGateSvc::releaseObject
void releaseObject(const CLID &id, const std::string &key)
release object held by proxy, if any.
Definition: StoreGateSvc.cxx:406
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
StoreGateSvc::initialize
virtual StatusCode initialize() override
Service initialization.
Definition: StoreGateSvc.cxx:103
StoreGateSvc::dump
std::string dump() const
dump objects in store.
Definition: StoreGateSvc.cxx:351
CaloCondBlobAlgs_fillNoiseFromASCII.lines
lines
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:103
StoreGateSvc::BadItemList
std::unordered_set< BadListItem, DataObjID_Hasher > BadItemList
Definition: StoreGateSvc.h:928
StoreGateSvc::sgkey_t
IStringPool::sgkey_t sgkey_t
Definition: StoreGateSvc.h:641
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SGImplSvc.h
StoreGateSvc::currentStoreGate
static StoreGateSvc * currentStoreGate()
get current StoreGate
Definition: StoreGateSvc.cxx:51
StoreGateSvc::setDefaultStore
void setDefaultStore(SGImplSvc *pStore)
set pointer to default event store: used by ActiveStoreSvc
Definition: StoreGateSvc.cxx:39
StoreGateSvc::keyToString
virtual const std::string * keyToString(sgkey_t key) const override final
Find the string corresponding to a given key.
StoreGateSvc::loadEventProxies
StatusCode loadEventProxies()
load proxies at begin event
Definition: StoreGateSvc.cxx:417
SGImplSvc
The Athena Transient Store API.
Definition: SGImplSvc.h:110
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
StoreID
defines an enum used by address providers to decide what kind of StoreGateSvc they are providing addr...
Definition: StoreID.h:18
hist_file_dump.f
f
Definition: hist_file_dump.py:140
StoreGateSvc::clearStore
virtual StatusCode clearStore(bool forceRemove=false) override final
clear DataStore contents: called by the event loop mgrs
Definition: StoreGateSvc.cxx:425
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
StoreGateSvc::registerKey
virtual void registerKey(sgkey_t key, const std::string &str, CLID clidid) override final
Remember an additional mapping from key to string/CLID.
Definition: StoreGateSvc.cxx:379
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
SG::HiveEventSlot::pEvtStore
SGImplSvc * pEvtStore
Definition: SGHiveEventSlot.h:23
StoreGateSvc::typeless_record
StatusCode typeless_record(DataObject *obj, const std::string &key, const void *const raw_ptr, bool allowMods, bool resetOnly=true, bool noHist=false)
type-less recording of an object with a key, allow possibility of specifying const-access and history...
Definition: StoreGateSvc.cxx:315
StoreGateSvc::stringToKey
virtual sgkey_t stringToKey(const std::string &str, CLID clid) override final
Find the key for a string/CLID pair.
Definition: StoreGateSvc.cxx:364
StoreGateSvc::clids
std::vector< CLID > clids() const
Return all CLIDs in the store.
Definition: StoreGateSvc.cxx:280
StoreGateSvc::createObj
virtual StatusCode createObj(IConverter *cvt, IOpaqueAddress *addr, DataObject *&refpObject) override
Call converter to create an object, with locking.
Definition: StoreGateSvc.cxx:466
StoreGateSvc::rememberBad
void rememberBad(BadItemList &bad, CLID clid, const std::string &key) const
Remember that retrieve or record was called for a MT store.
Definition: StoreGateSvc.cxx:480
python.ExitCodes.what
def what(code)
Definition: ExitCodes.py:73
WriteBchToCool.beg
beg
Definition: WriteBchToCool.py:69
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:239
StoreGateSvc::proxy
virtual SG::DataProxy * proxy(const void *const pTransient) const override final
get proxy for a given data object address in memory
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
StoreGateSvc::lock_t
std::lock_guard< mutex_t > lock_t
Definition: StoreGateSvc.h:938
errorcheck.h
Helpers for checking error return status codes and reporting errors.
StoreGateSvc::setConst
StatusCode setConst(const void *pointer)
prevent downstream clients from modifying the pointed-at dobj
Definition: StoreGateSvc.cxx:96
RegSelToolConfig.alg
alg
Definition: RegSelToolConfig.py:332
SG::sgkey_t
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition: sgkey_t.h:32
StoreClearedIncident.h
Incident sent after a store is cleared.
StoreGateSvc::recordAddress
StatusCode recordAddress(const std::string &skey, CxxUtils::RefCountedPtr< IOpaqueAddress > pAddress, bool clearAddressFlag=true)
Create a proxy object using an IOpaqueAddress and a transient key.
StoreGateSvc::accessData
DataObject * accessData(const CLID &id) const
find proxy and access its data. Returns 0 to flag failure
Definition: StoreGateSvc.cxx:296
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:66
StoreGateSvc::recordObject
virtual SG::DataProxy * recordObject(SG::DataObjectSharedPtr< DataObject > obj, const std::string &key, bool allowMods, bool returnExisting) override final
Record an object in the store.
Definition: StoreGateSvc.cxx:262
StoreGateSvc::proxies
virtual std::vector< const SG::DataProxy * > proxies() const override final
return the list of all current proxies in store
Definition: StoreGateSvc.cxx:273
StoreGateSvc::tryELRemap
virtual bool tryELRemap(sgkey_t sgkey_in, size_t index_in, sgkey_t &sgkey_out, size_t &index_out) override final
Test to see if the target of an ElementLink has moved.
Definition: StoreGateSvc.cxx:392
hydjet.StoreGateSvc
StoreGateSvc
Definition: hydjet.minbias.pbpb5520.r12345.job.py:40
SGImplSvc::makeCurrent
void makeCurrent()
The current store is becoming the active store.
Definition: SGImplSvc.cxx:1781
StoreID::type
type
Definition: StoreID.h:24
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
copySelective.target
string target
Definition: copySelective.py:36
StoreGateSvc::setStoreID
void setStoreID(StoreID::type id)
set store ID. request forwarded to DataStore:
Definition: StoreGateSvc.cxx:334
python.TriggerHandler.verbose
verbose
Definition: TriggerHandler.py:296
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
copySelective.source
string source
Definition: copySelective.py:31
str
Definition: BTagTrackIpAccessor.cxx:11
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
StoreGateSvc::transientProxy
SG::DataProxy * transientProxy(const CLID &id, const std::string &key) const
get proxy with given id and key.
Definition: StoreGateSvc.cxx:289
StoreID::EVENT_STORE
@ EVENT_STORE
Definition: StoreID.h:26
SG::DataObjectSharedPtr
Smart pointer to manage DataObject reference counts.
Definition: DataObjectSharedPtr.h:45
StoreGateSvc::addToStore
virtual StatusCode addToStore(CLID id, SG::DataProxy *proxy) override final
Raw addition of a proxy to the store.
Definition: StoreGateSvc.cxx:235
get_generator_info.error
error
Definition: get_generator_info.py:40
python.PyAthena.obj
obj
Definition: PyAthena.py:132
SG::DataProxy
Definition: DataProxy.h:45
StoreGateSvc.h
StoreGateSvc::BadListItem
Definition: StoreGateSvc.h:921
StoreGateSvc::StoreGateSvc
StoreGateSvc(const std::string &name, ISvcLocator *svc)
Standard Constructor.
Definition: StoreGateSvc.cxx:28
StoreGateSvc::currentSlot
static SG::HiveEventSlot * currentSlot()
Definition: StoreGateSvc.cxx:68
SG::ConstProxyIterator
ProxyMap::const_iterator ConstProxyIterator
Definition: ProxyMap.h:28
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
StoreClearedIncident
Incident sent after a store is cleared.
Definition: StoreClearedIncident.h:30