Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
DataHeader.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef PERSISTENTDATAMODEL_DATAHEADER_H
6 #define PERSISTENTDATAMODEL_DATAHEADER_H
7 
13 #include "GaudiKernel/ClassID.h"
14 #include "GaudiKernel/DataObject.h"
15 
17 #include "CxxUtils/sgkey_t.h"
18 
19 #include <string>
20 #include <set>
21 #include <vector>
22 
23 // Forward declarations
24 class IOpaqueAddress;
25 namespace SG {
26  class TransientAddress;
27  class DataProxy;
28 }
29 namespace coral {
30  class AttributeList;
31 }
32 class IStringPool;
33 
38 public: // Constructor and Destructor
40 
45 
49  DataHeaderElement(const SG::TransientAddress* sgAddress, IOpaqueAddress* tokAddress, const std::string& pTag);
50 
54  DataHeaderElement(const SG::DataProxy* proxy, IOpaqueAddress* tokAddress, const std::string& pTag);
55 
60  DataHeaderElement(const CLID classID, const std::string& key, Token&& token);
62  virtual ~DataHeaderElement();
63 
64 public: // Non-static members
67 
69  CLID getPrimaryClassID() const;
71  const std::set<CLID> getClassIDs() const;
73  const std::string& getKey() const;
75  const std::set<std::string>& getAlias() const;
77  const Token* getToken() const;
79  long getStorageType() const;
82  const std::vector<sgkey_t>& getHashes() const;
84  SG::TransientAddress* getAddress(unsigned long contextId = 0) const;
86  SG::TransientAddress* getAddress(const std::string& key,
87  unsigned long contextId = 0) const;
89  void addHash(IStringPool* pool);
90 
91  void dump(std::ostream& ostr) const;
92 
93 private:
97  friend class DataHeaderCnv_p6;
98 
100  DataHeaderElement(CLID clid,
101  const std::string& name,
102  const std::vector<CLID>& tClids,
103  std::set<std::string>&& alias,
104  IOpaqueAddress* tadAddress,
105  IOpaqueAddress* tokAddress, const std::string& pTag);
106 
110  std::vector<CLID> m_clids;
112  std::string m_key;
114  std::set<std::string> m_alias;
118  std::vector<sgkey_t> m_hashes;
119 };
120 
125  : public DataObject // Derive from DataObject so that it can be recyclable.
126 {
127 public:
129 
130 public: // Constructor and Destructor
132  DataHeader();
134  DataHeader(const DataHeader& rhs);
136  virtual ~DataHeader();
137 
138 public: // Non-static members
140  DataHeader& operator=(const DataHeader& rhs);
141 
145  bool isInput() const;
146 
149  void setProcessTag(const std::string& processTag);
151  const std::string& getProcessTag() const;
152 
154  int size() const;
156  std::vector<DataHeaderElement>::const_iterator begin() const;
158  std::vector<DataHeaderElement>::const_iterator end() const;
160  const std::vector<DataHeaderElement>& elements() const;
161 
165  void insert(const SG::TransientAddress* sgAddress, IOpaqueAddress* tokAddress = 0, const std::string& pTag = "");
169  void insert(const SG::DataProxy* proxy, IOpaqueAddress* tokAddress = 0, const std::string& pTag = "");
172  void insert(const DataHeaderElement& dhe);
173 
175  int sizeProvenance() const;
177  std::vector<DataHeaderElement>::const_iterator beginProvenance() const;
179  std::vector<DataHeaderElement>::const_iterator endProvenance() const;
180 
183  void insertProvenance(const DataHeaderElement& dhe);
184 
186  void addHash(IStringPool* pool);
187 
189  const std::string& dhFormToken() const;
190  void setDhFormToken(const std::string& formToken);
191 
192  void setAttributeList(const coral::AttributeList* attrList);
194  void setEvtRefTokenStr(const std::string& tokenStr);
195  const std::string& getEvtRefTokenStr();
196 
197  void dump(std::ostream& ostr) const;
198 
199 protected:
201  virtual void recycle();
202 
203 
204 private:
205  friend class DataHeaderCnv_p3;
206  friend class DataHeaderCnv_p4;
207  friend class DataHeaderCnv_p5;
208  friend class DataHeaderCnv_p6;
209  friend class DataHeaderCnv;
210 
212  std::vector<DataHeaderElement> m_dataHeader;
214  std::vector<DataHeaderElement> m_inputDataHeader;
218  std::string m_processTag;
222  std::string m_evtRefTokenStr;
224  std::string m_dhFormToken;
225 };
226 
227 #include "AthenaKernel/CLASS_DEF.h"
228 CLASS_DEF(DataHeader, 222376821, 1)
229 #endif
DataHeader::isInput
bool isInput() const
Check whether StatusFlag is "Input".
Definition: DataHeader.cxx:221
DataHeader::setProcessTag
void setProcessTag(const std::string &processTag)
Set ProcessTag for DataHeader.
Definition: DataHeader.cxx:225
IStringPool
Abstract interface for looking up strings/CLIDs in a pool.
Definition: IStringPool.h:28
DataHeaderElementCnv_p3
This class provides the converter to customize the saving of DataHeaderElement_p3.
Definition: DataHeaderCnv_p3.h:21
DataHeader::endProvenance
std::vector< DataHeaderElement >::const_iterator endProvenance() const
Definition: DataHeader.cxx:271
DataHeaderElement::m_key
std::string m_key
string with StoreGate key.
Definition: DataHeader.h:112
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:395
DataHeaderElement::getAlias
const std::set< std::string > & getAlias() const
Definition: DataHeader.cxx:120
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
DataHeader::m_attrList
const coral::AttributeList * m_attrList
Optional pointer to AttributeList to enable writing of TAG Attributes to Payload files.
Definition: DataHeader.h:220
DataHeaderCnv_p6
This class provides the converter to customize the saving of DataHeader_p6.
Definition: DataHeaderCnv_p6.h:25
DataHeader::DataHeader
DataHeader()
Default Constructor.
Definition: DataHeader.cxx:185
DataHeaderElement::m_token
Token m_token
Transient address token.
Definition: DataHeader.h:116
DataHeader::Input
@ Input
Definition: DataHeader.h:128
DataHeader::operator=
DataHeader & operator=(const DataHeader &rhs)
Assignment Operator.
Definition: DataHeader.cxx:206
DataHeader::dump
void dump(std::ostream &ostr) const
Definition: DataHeader.cxx:319
DataHeader::setAttributeList
void setAttributeList(const coral::AttributeList *attrList)
Definition: DataHeader.cxx:300
DataHeaderElement::m_pClid
CLID m_pClid
primary ClassID.
Definition: DataHeader.h:108
DataHeader::addHash
void addHash(IStringPool *pool)
Add new entry to hash map.
Definition: DataHeader.cxx:279
pool
pool namespace
Definition: libname.h:15
DataHeader::elements
const std::vector< DataHeaderElement > & elements() const
Definition: DataHeader.cxx:245
SG::TransientAddress
Definition: TransientAddress.h:32
DataHeader::begin
std::vector< DataHeaderElement >::const_iterator begin() const
Definition: DataHeader.cxx:237
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
DataHeader::statusFlag
statusFlag
Definition: DataHeader.h:128
DataHeader::insertProvenance
void insertProvenance(const DataHeaderElement &dhe)
Insert a new element into the "Provenance" vector.
Definition: DataHeader.cxx:275
DataHeaderCnv_p5
This class provides the converter to customize the saving of DataHeader_p5.
Definition: DataHeaderCnv_p5.h:42
Token
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition: Token.h:21
DataHeaderElement::operator=
DataHeaderElement & operator=(const DataHeaderElement &rhs)
Assignment Operator.
Definition: DataHeader.cxx:91
coral
Definition: ISecondaryEventSelector.h:19
DataHeaderElement::getKey
const std::string & getKey() const
Definition: DataHeader.cxx:116
DataHeader::m_dhFormToken
std::string m_dhFormToken
Token to the DH format object.
Definition: DataHeader.h:224
DataHeaderElement
This class provides a persistent form for the TransientAddress.
Definition: DataHeader.h:37
DataHeader::beginProvenance
std::vector< DataHeaderElement >::const_iterator beginProvenance() const
Definition: DataHeader.cxx:267
DataHeaderElement::m_alias
std::set< std::string > m_alias
set of StoreGate alias string.
Definition: DataHeader.h:114
DataHeaderElement::~DataHeaderElement
virtual ~DataHeaderElement()
Destructor.
Definition: DataHeader.cxx:88
DataHeader
This class provides the layout for summary information stored for data written to POOL.
Definition: DataHeader.h:126
DataHeader::size
int size() const
Definition: DataHeader.cxx:233
DataHeader::Output
@ Output
Definition: DataHeader.h:128
DataHeaderElementCnv_p5
This class provides the converter to customize the saving of DataHeaderElement_p5.
Definition: DataHeaderCnv_p5.h:24
COOLRates.alias
alias
Definition: COOLRates.py:1172
DataHeader::sizeProvenance
int sizeProvenance() const
Definition: DataHeader.cxx:263
DataHeaderCnv
This class provides the converter to customize the saving of DataHeader.
Definition: DataHeaderCnv.h:32
DataHeaderElement::DataHeaderElement
DataHeaderElement()
Default Constructor.
Definition: DataHeader.cxx:18
DataProxy
DataProxy provides the registry services for StoreGate.
Definition: DataProxy.h:32
DataHeaderElement::dump
void dump(std::ostream &ostr) const
Definition: DataHeader.cxx:160
DataHeader::recycle
virtual void recycle()
Called before this object is recycled.
Definition: DataHeader.cxx:337
jobOptions.pTag
string pTag
Definition: jobOptions.py:28
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
DataHeaderElement::getHashes
const std::vector< sgkey_t > & getHashes() const
Definition: DataHeader.cxx:133
DataHeader::insert
void insert(const SG::TransientAddress *sgAddress, IOpaqueAddress *tokAddress=0, const std::string &pTag="")
Insert a new element into the "DataObject" vector.
Definition: DataHeader.cxx:249
DataHeader::setStatus
void setStatus(statusFlag status)
Set StatusFlag enum for DataHeader.
Definition: DataHeader.cxx:217
DataHeaderElement::getClassIDs
const std::set< CLID > getClassIDs() const
Definition: DataHeader.cxx:110
DataHeader::m_status
statusFlag m_status
StatusFlag (i.e.: Output, Primary, Input, Manual, Other).
Definition: DataHeader.h:216
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
DataHeader::end
std::vector< DataHeaderElement >::const_iterator end() const
Definition: DataHeader.cxx:241
DataHeaderElement::addHash
void addHash(IStringPool *pool)
Add new entry to hash map.
Definition: DataHeader.cxx:137
DataHeaderCnv_p4
This class provides the converter to customize the saving of DataHeader_p4.
Definition: DataHeaderCnv_p4.h:35
DataHeaderElement::getPrimaryClassID
CLID getPrimaryClassID() const
Definition: DataHeader.cxx:103
DataHeader::m_dataHeader
std::vector< DataHeaderElement > m_dataHeader
vector with DataHeaderElement to "DataObject".
Definition: DataHeader.h:212
DataHeaderElement::sgkey_t
SG::sgkey_t sgkey_t
Definition: DataHeader.h:39
DataHeader::getEvtRefTokenStr
const std::string & getEvtRefTokenStr()
Definition: DataHeader.cxx:312
SG::sgkey_t
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition: CxxUtils/CxxUtils/sgkey_t.h:32
DataHeader::setDhFormToken
void setDhFormToken(const std::string &formToken)
Definition: DataHeader.cxx:295
DataHeaderElement::getStorageType
long getStorageType() const
Definition: DataHeader.cxx:128
DataHeaderElement::m_hashes
std::vector< sgkey_t > m_hashes
hash table for ElementLink host container keys.
Definition: DataHeader.h:118
DataHeaderElement::m_clids
std::vector< CLID > m_clids
vector of unsigned long to store ClassID's for symlinked container.
Definition: DataHeader.h:110
DataHeaderElement::getAddress
SG::TransientAddress * getAddress(unsigned long contextId=0) const
Definition: DataHeader.cxx:147
DataHeader::~DataHeader
virtual ~DataHeader()
Destructor.
Definition: DataHeader.cxx:203
DataHeader::Other
@ Other
Definition: DataHeader.h:128
sgkey_t.h
Define the type used for hashed StoreGate key+CLID pairs.
DataHeader::getAttributeList
const coral::AttributeList * getAttributeList()
Definition: DataHeader.cxx:304
DataHeader::getProcessTag
const std::string & getProcessTag() const
Definition: DataHeader.cxx:229
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition: Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:67
DataHeader::setEvtRefTokenStr
void setEvtRefTokenStr(const std::string &tokenStr)
Definition: DataHeader.cxx:308
DataHeader::m_processTag
std::string m_processTag
ProcessTag (e.g.: "StreamESD", "StreamAOD" ...).
Definition: DataHeader.h:218
DataHeaderElementCnv_p4
This class provides the converter to customize the saving of DataHeaderElement_p4.
Definition: DataHeaderCnv_p4.h:21
merge.status
status
Definition: merge.py:17
DataHeaderCnv_p3
This class provides the converter to customize the saving of DataHeader_p3.
Definition: DataHeaderCnv_p3.h:35
DataHeaderElement::getToken
const Token * getToken() const
Definition: DataHeader.cxx:124
SG::DataProxy
Definition: DataProxy.h:45
Token.h
This file contains the class definition for the Token class (migrated from POOL).
DataHeader::m_inputDataHeader
std::vector< DataHeaderElement > m_inputDataHeader
vector with DataHeaderElement to upstream DataHeader ("Provenance").
Definition: DataHeader.h:214
CLASS_DEF.h
macros to associate a CLID to a type
DataHeader::dhFormToken
const std::string & dhFormToken() const
Form token, to be able to tell when the form changes.
Definition: DataHeader.cxx:290
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
DataHeader::m_evtRefTokenStr
std::string m_evtRefTokenStr
Optional Token String for Event Reference to enable writing of TAG to Payload files.
Definition: DataHeader.h:222