ATLAS Offline Software
Loading...
Searching...
No Matches
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
12
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
24class IOpaqueAddress;
25namespace SG {
26 class TransientAddress;
27 class DataProxy;
28}
29namespace coral {
30 class AttributeList;
31}
32class IStringPool;
33
38public: // 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
64public: // 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;
87
88 void dump(std::ostream& ostr) const;
89
90private:
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{
124public:
126
127public: // Constructor and Destructor
129 DataHeader();
131 DataHeader(const DataHeader& rhs);
133 virtual ~DataHeader();
134
135public: // Non-static members
137 DataHeader& operator=(const DataHeader& rhs);
138
140 void setStatus(statusFlag status);
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);
190 const coral::AttributeList* getAttributeList();
191 void setEvtRefTokenStr(const std::string& tokenStr);
192 const std::string& getEvtRefTokenStr();
193
194 void dump(std::ostream& ostr) const;
195
196protected:
198 virtual void recycle();
199
200
201private:
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;
217 const coral::AttributeList* m_attrList;
219 std::string m_evtRefTokenStr;
221 std::string m_dhFormToken;
222};
223
225CLASS_DEF(DataHeader, 222376821, 1)
226#endif
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
uint32_t CLID
The Class ID type.
This file contains the class definition for the Token class (migrated from POOL).
This class provides a persistent form for the TransientAddress.
Definition DataHeader.h:37
CLID m_pClid
primary ClassID.
Definition DataHeader.h:105
SG::TransientAddress * getAddress(long storageType) const
const std::vector< std::string > & getAlias() const
friend class DataHeaderCnv_p6
Definition DataHeader.h:94
DataHeaderElement()
Default Constructor.
std::string m_key
string with StoreGate key.
Definition DataHeader.h:109
std::vector< std::string > m_alias
vector of StoreGate alias string.
Definition DataHeader.h:111
const Token * getToken() const
CLID getPrimaryClassID() const
virtual ~DataHeaderElement()
Destructor.
SG::sgkey_t sgkey_t
Definition DataHeader.h:39
std::vector< CLID > m_clids
vector of unsigned long to store ClassID's for symlinked container.
Definition DataHeader.h:107
const std::vector< sgkey_t > & getHashes() const
friend class DataHeaderElementCnv_p3
Definition DataHeader.h:91
std::vector< sgkey_t > m_hashes
hash table for ElementLink host container keys.
Definition DataHeader.h:115
const std::set< CLID > getClassIDs() const
Token m_token
Transient address token.
Definition DataHeader.h:113
DataHeaderElement & operator=(const DataHeaderElement &rhs)
Assignment Operator.
void addHash(IStringPool *pool)
Add new entry to hash map.
friend class DataHeaderElementCnv_p5
Definition DataHeader.h:93
const std::string & getKey() const
friend class DataHeaderElementCnv_p4
Definition DataHeader.h:92
This class provides the layout for summary information stored for data written to POOL.
Definition DataHeader.h:123
void addHash(IStringPool *pool)
Add new entry to hash map.
int sizeProvenance() const
std::vector< DataHeaderElement >::const_iterator beginProvenance() const
friend class DataHeaderCnv_p3
Definition DataHeader.h:202
statusFlag m_status
StatusFlag (i.e.: Output, Primary, Input, Manual, Other).
Definition DataHeader.h:213
std::vector< DataHeaderElement >::const_iterator endProvenance() const
std::string m_dhFormToken
Token to the DH format object.
Definition DataHeader.h:221
friend class DataHeaderCnv_p6
Definition DataHeader.h:205
friend class DataHeaderCnv_p4
Definition DataHeader.h:203
std::vector< DataHeaderElement >::const_iterator begin() const
friend class DataHeaderCnv
Definition DataHeader.h:206
DataHeader()
Default Constructor.
void setDhFormToken(const std::string &formToken)
void setStatus(statusFlag status)
Set StatusFlag enum for DataHeader.
virtual void recycle()
Called before this object is recycled.
void insertProvenance(const DataHeaderElement &dhe)
Insert a new element into the "Provenance" vector.
const std::vector< DataHeaderElement > & elements() const
void setEvtRefTokenStr(const std::string &tokenStr)
std::vector< DataHeaderElement >::const_iterator end() const
const std::string & getProcessTag() const
std::string m_processTag
ProcessTag (e.g.: "StreamESD", "StreamAOD" ...).
Definition DataHeader.h:215
const std::string & dhFormToken() const
Form token, to be able to tell when the form changes.
std::vector< DataHeaderElement > m_inputDataHeader
vector with DataHeaderElement to upstream DataHeader ("Provenance").
Definition DataHeader.h:211
std::vector< DataHeaderElement > m_dataHeader
vector with DataHeaderElement to "DataObject".
Definition DataHeader.h:209
void setAttributeList(const coral::AttributeList *attrList)
virtual ~DataHeader()
Destructor.
DataHeader & operator=(const DataHeader &rhs)
Assignment Operator.
const coral::AttributeList * m_attrList
Optional pointer to AttributeList to enable writing of TAG Attributes to Payload files.
Definition DataHeader.h:217
bool isInput() const
Check whether StatusFlag is "Input".
void insert(const SG::TransientAddress *sgAddress, IOpaqueAddress *tokAddress=0, const std::string &pTag="")
Insert a new element into the "DataObject" vector.
friend class DataHeaderCnv_p5
Definition DataHeader.h:204
int size() const
const std::string & getEvtRefTokenStr()
const coral::AttributeList * getAttributeList()
void setProcessTag(const std::string &processTag)
Set ProcessTag for DataHeader.
std::string m_evtRefTokenStr
Optional Token String for Event Reference to enable writing of TAG to Payload files.
Definition DataHeader.h:219
Abstract interface for looking up strings/CLIDs in a pool.
Definition IStringPool.h:28
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition Token.h:21
Forward declaration.
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition sgkey_t.h:32
-event-from-file
pool namespace
Definition libname.h:15