Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
DecorKeyHelpers.cxx
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration.
3  */
13 #include "StoreGate/exceptions.h"
14 #include "StoreGate/VarHandleKey.h"
15 
16 
17 namespace SG {
18 
19 
26 std::string contKeyFromKey (const std::string& key)
27 {
28  std::string::size_type ipos = key.find ('.');
29  if (ipos == std::string::npos)
30  return key;
31  return key.substr (0, ipos);
32 }
33 
34 
42 std::string decorKeyFromKey (const std::string& key, const std::string& deflt /*= ""*/)
43 {
44  std::string::size_type ipos = key.find ('.');
45  if (ipos == std::string::npos)
46  return deflt;
47  return key.substr (ipos+1, std::string::npos);
48 }
49 
50 
59 std::string makeContDecorKey(const std::string& cont, const std::string& decor)
60 {
61  if (cont.empty()) return decor;
62  if (decor.empty()) return cont;
63  return cont + '.' + decor;
64 }
65 
66 
77 std::string makeContDecorKey(const VarHandleKey& contKey, const std::string& key)
78 {
79  if (key.empty() || key.ends_with ('+')) {
80  return "";
81  }
82  if (key.find('.') != std::string::npos) {
83  throw SG::ExcBadHandleKey(key + " (DecorHandleKey has been declared with a parent container. "
84  "Its value should not contain any container name.)");
85  }
86 
87  // Note: VHK::fullKey().key() contains the store prefix, key() does not.
88  return makeContDecorKey( contKey.fullKey().key(), key);
89 }
90 
91 
99 void removeContFromDecorKey(const VarHandleKey& contKey, std::string& key)
100 {
101  // Remove container name from key
102  const std::string toerase = contKey.fullKey().key() + ".";
103  const size_t pos = key.find(toerase);
104  if (pos != std::string::npos) {
105  key.erase(pos, toerase.size());
106  }
107 
108 }
109 
110 } // namespace SG
SG::contKeyFromKey
std::string contKeyFromKey(const std::string &key)
Extract the container part of key.
Definition: DecorKeyHelpers.cxx:26
VarHandleKey.h
A property holding a SG store/key/clid from which a VarHandle is made.
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
DecorKeyHelpers.h
Some common helper functions used by decoration handles.
exceptions.h
Exceptions that can be thrown from StoreGate.
SG::removeContFromDecorKey
void removeContFromDecorKey(const VarHandleKey &contKey, std::string &key)
Remove container name from decoration key.
Definition: DecorKeyHelpers.cxx:99
SG::ExcBadHandleKey
Exception — Bad key format for VarHandleKey.
Definition: Control/StoreGate/StoreGate/exceptions.h:62
SG::decorKeyFromKey
std::string decorKeyFromKey(const std::string &key, const std::string &deflt)
Extract the decoration part of key.
Definition: DecorKeyHelpers.cxx:42
SG::VarHandleKey
A property holding a SG store/key/clid from which a VarHandle is made.
Definition: StoreGate/StoreGate/VarHandleKey.h:62
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
SG::makeContDecorKey
std::string makeContDecorKey(const std::string &cont, const std::string &decor)
Make a StoreGate key from container and decoration name.
Definition: DecorKeyHelpers.cxx:59
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37