ATLAS Offline Software
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 "SGCore/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::vector<std::string>& getAlias() const;
77  const Token* getToken() const;
80  const std::vector<sgkey_t>& getHashes() const;
82  SG::TransientAddress* getAddress( long storageType ) const;
84  SG::TransientAddress* getAddress( long storageType, const std::string& key ) const;
86  void addHash(IStringPool* pool);
87 
88  void dump(std::ostream& ostr) const;
89 
90 private:
94  friend class DataHeaderCnv_p6;
95 
98  const std::string& name,
99  const std::vector<CLID>& tClids,
100  std::vector<std::string>&& alias,
101  IOpaqueAddress* tadAddress,
102  IOpaqueAddress* tokAddress, const std::string& pTag);
103 
107  std::vector<CLID> m_clids;
109  std::string m_key;
111  std::vector<std::string> m_alias;
115  std::vector<sgkey_t> m_hashes;
116 };
117 
122  : public DataObject // Derive from DataObject so that it can be recyclable.
123 {
124 public:
126 
127 public: // Constructor and Destructor
129  DataHeader();
131  DataHeader(const DataHeader& rhs);
133  virtual ~DataHeader();
134 
135 public: // Non-static members
137  DataHeader& operator=(const DataHeader& rhs);
138 
142  bool isInput() const;
143 
146  void setProcessTag(const std::string& processTag);
148  const std::string& getProcessTag() const;
149 
151  int size() const;
153  std::vector<DataHeaderElement>::const_iterator begin() const;
155  std::vector<DataHeaderElement>::const_iterator end() const;
157  const std::vector<DataHeaderElement>& elements() const;
158 
162  void insert(const SG::TransientAddress* sgAddress, IOpaqueAddress* tokAddress = 0, const std::string& pTag = "");
166  void insert(const SG::DataProxy* proxy, IOpaqueAddress* tokAddress = 0, const std::string& pTag = "");
169  void insert(const DataHeaderElement& dhe);
170 
172  int sizeProvenance() const;
174  std::vector<DataHeaderElement>::const_iterator beginProvenance() const;
176  std::vector<DataHeaderElement>::const_iterator endProvenance() const;
177 
180  void insertProvenance(const DataHeaderElement& dhe);
181 
183  void addHash(IStringPool* pool);
184 
186  const std::string& dhFormToken() const;
187  void setDhFormToken(const std::string& formToken);
188 
189  void setAttributeList(const coral::AttributeList* attrList);
191  void setEvtRefTokenStr(const std::string& tokenStr);
192  const std::string& getEvtRefTokenStr();
193 
194  void dump(std::ostream& ostr) const;
195 
196 protected:
198  virtual void recycle();
199 
200 
201 private:
202  friend class DataHeaderCnv_p3;
203  friend class DataHeaderCnv_p4;
204  friend class DataHeaderCnv_p5;
205  friend class DataHeaderCnv_p6;
206  friend class DataHeaderCnv;
207 
209  std::vector<DataHeaderElement> m_dataHeader;
211  std::vector<DataHeaderElement> m_inputDataHeader;
215  std::string m_processTag;
219  std::string m_evtRefTokenStr;
221  std::string m_dhFormToken;
222 };
223 
224 #include "AthenaKernel/CLASS_DEF.h"
225 CLASS_DEF(DataHeader, 222376821, 1)
226 #endif
DataHeader::isInput
bool isInput() const
Check whether StatusFlag is "Input".
Definition: DataHeader.cxx:233
DataHeader::setProcessTag
void setProcessTag(const std::string &processTag)
Set ProcessTag for DataHeader.
Definition: DataHeader.cxx:237
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:283
DataHeaderElement::m_key
std::string m_key
string with StoreGate key.
Definition: DataHeader.h:109
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:407
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:217
DataHeaderElement::m_alias
std::vector< std::string > m_alias
vector of StoreGate alias string.
Definition: DataHeader.h:111
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:197
DataHeaderElement::m_token
Token m_token
Transient address token.
Definition: DataHeader.h:113
DataHeader::Input
@ Input
Definition: DataHeader.h:125
DataHeader::operator=
DataHeader & operator=(const DataHeader &rhs)
Assignment Operator.
Definition: DataHeader.cxx:218
DataHeader::dump
void dump(std::ostream &ostr) const
Definition: DataHeader.cxx:331
DataHeader::setAttributeList
void setAttributeList(const coral::AttributeList *attrList)
Definition: DataHeader.cxx:312
DataHeaderElement::m_pClid
CLID m_pClid
primary ClassID.
Definition: DataHeader.h:105
DataHeader::addHash
void addHash(IStringPool *pool)
Add new entry to hash map.
Definition: DataHeader.cxx:291
pool
pool namespace
Definition: libname.h:15
DataHeader::elements
const std::vector< DataHeaderElement > & elements() const
Definition: DataHeader.cxx:257
SG::TransientAddress
Definition: TransientAddress.h:34
DataHeader::begin
std::vector< DataHeaderElement >::const_iterator begin() const
Definition: DataHeader.cxx:249
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
DataHeader::statusFlag
statusFlag
Definition: DataHeader.h:125
DataHeader::insertProvenance
void insertProvenance(const DataHeaderElement &dhe)
Insert a new element into the "Provenance" vector.
Definition: DataHeader.cxx:287
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:92
coral
Definition: ISecondaryEventSelector.h:19
DataHeaderElement::getKey
const std::string & getKey() const
Definition: DataHeader.cxx:117
DataHeader::m_dhFormToken
std::string m_dhFormToken
Token to the DH format object.
Definition: DataHeader.h:221
DataHeaderElement
This class provides a persistent form for the TransientAddress.
Definition: DataHeader.h:37
DataHeaderElement::getAlias
const std::vector< std::string > & getAlias() const
Definition: DataHeader.cxx:121
DataHeader::beginProvenance
std::vector< DataHeaderElement >::const_iterator beginProvenance() const
Definition: DataHeader.cxx:279
DataHeaderElement::~DataHeaderElement
virtual ~DataHeaderElement()
Destructor.
Definition: DataHeader.cxx:89
DataHeader
This class provides the layout for summary information stored for data written to POOL.
Definition: DataHeader.h:123
DataHeader::size
int size() const
Definition: DataHeader.cxx:245
DataHeader::Output
@ Output
Definition: DataHeader.h:125
DataHeaderElementCnv_p5
This class provides the converter to customize the saving of DataHeaderElement_p5.
Definition: DataHeaderCnv_p5.h:24
sgkey_t.h
DataHeaderElement::getAddress
SG::TransientAddress * getAddress(long storageType) const
Definition: DataHeader.cxx:144
COOLRates.alias
alias
Definition: COOLRates.py:1172
DataHeader::sizeProvenance
int sizeProvenance() const
Definition: DataHeader.cxx:275
DataHeaderCnv
This class provides the converter to customize the saving of DataHeader.
Definition: DataHeaderCnv.h:32
DataHeaderElement::DataHeaderElement
DataHeaderElement()
Default Constructor.
Definition: DataHeader.cxx:19
DataProxy
DataProxy provides the registry services for StoreGate.
Definition: DataProxy.h:32
DataHeaderElement::dump
void dump(std::ostream &ostr) const
Definition: DataHeader.cxx:172
DataHeader::recycle
virtual void recycle()
Called before this object is recycled.
Definition: DataHeader.cxx:349
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:130
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:261
DataHeader::setStatus
void setStatus(statusFlag status)
Set StatusFlag enum for DataHeader.
Definition: DataHeader.cxx:229
DataHeaderElement::getClassIDs
const std::set< CLID > getClassIDs() const
Definition: DataHeader.cxx:111
DataHeader::m_status
statusFlag m_status
StatusFlag (i.e.: Output, Primary, Input, Manual, Other).
Definition: DataHeader.h:213
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
DataHeader::end
std::vector< DataHeaderElement >::const_iterator end() const
Definition: DataHeader.cxx:253
DataHeaderElement::addHash
void addHash(IStringPool *pool)
Add new entry to hash map.
Definition: DataHeader.cxx:134
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:104
DataHeader::m_dataHeader
std::vector< DataHeaderElement > m_dataHeader
vector with DataHeaderElement to "DataObject".
Definition: DataHeader.h:209
DataHeaderElement::sgkey_t
SG::sgkey_t sgkey_t
Definition: DataHeader.h:39
DataHeader::getEvtRefTokenStr
const std::string & getEvtRefTokenStr()
Definition: DataHeader.cxx:324
SG::sgkey_t
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition: sgkey_t.h:32
DataHeader::setDhFormToken
void setDhFormToken(const std::string &formToken)
Definition: DataHeader.cxx:307
DataHeaderElement::m_hashes
std::vector< sgkey_t > m_hashes
hash table for ElementLink host container keys.
Definition: DataHeader.h:115
DataHeaderElement::m_clids
std::vector< CLID > m_clids
vector of unsigned long to store ClassID's for symlinked container.
Definition: DataHeader.h:107
DataHeader::~DataHeader
virtual ~DataHeader()
Destructor.
Definition: DataHeader.cxx:215
DataHeader::Other
@ Other
Definition: DataHeader.h:125
DataHeader::getAttributeList
const coral::AttributeList * getAttributeList()
Definition: DataHeader.cxx:316
DataHeader::getProcessTag
const std::string & getProcessTag() const
Definition: DataHeader.cxx:241
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:320
DataHeader::m_processTag
std::string m_processTag
ProcessTag (e.g.: "StreamESD", "StreamAOD" ...).
Definition: DataHeader.h:215
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:16
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:125
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:211
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:302
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:219