ATLAS Offline Software
Loading...
Searching...
No Matches
DataHeader_p6.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 PERSISTENTDATAMODELTPCNV_DATAHEADER_P6_H
6#define PERSISTENTDATAMODELTPCNV_DATAHEADER_P6_H
7
13
15#include "SGCore/sgkey_t.h"
16
17#include <vector>
18#include <string>
19
20class Token;
21
22
27friend class DataHeaderCnv_p6;
28
29public:
31
32 struct DbRecord {
33 Guid fid{}; unsigned tech{};
35 DbRecord( const Guid& f, unsigned t) : fid(f), tech(t) {}
36 bool operator==(const DbRecord& rhs) const { return fid==rhs.fid && tech==rhs.tech; }
37 };
38 struct ObjRecord {
40 std::string cont, key;
41 unsigned clid{}; long long oid1{};
43 ObjRecord( const Guid& g, const std::string& c, const std::string& k, unsigned id, long long o)
44 : guid(g), cont(c), key(k), clid(id), oid1(o) {}
45 bool operator==(const ObjRecord& rhs) const
46 { return clid == rhs.clid && cont == rhs.cont && key == rhs.key && oid1 == rhs.oid1; }
47 };
48
49 enum DHVersions { DHverFormRef = 600 };
50 /* DHverFormRef - has the self reference stored at the end of the provenance list
51 */
52
53public: // Constructor and Destructor
55
56 unsigned int insertDb(const DbRecord& rec);
57 std::size_t sizeDb() const;
58 Guid getDbGuid(unsigned int index) const;
59 unsigned int getDbTech(unsigned int index) const;
60
61 unsigned int insertObj(const ObjRecord& rec,
62 const std::vector<std::string>& alias = std::vector<std::string>(), bool doAliasFiletering = true,
63 const std::vector<unsigned int>& symLinks = std::vector<unsigned int>(),
64 const std::vector<sgkey_t>& hashes = std::vector<sgkey_t>());
65 std::size_t sizeObj() const;
66 const std::string& getObjContainer(unsigned int index) const;
67 const std::string& getObjKey(unsigned int index) const;
68 unsigned int getObjType(unsigned int index) const;
69 const Guid& getObjClassId(unsigned int index) const;
70 long long getObjOid1(unsigned int index) const { return m_objRecords[index].oid1; }
71 const std::vector<std::string>& getObjAlias(unsigned int index) const;
72 const std::vector<unsigned int>& getObjSymLinks(unsigned int index) const;
73 const std::vector<sgkey_t>& getObjHashes(unsigned int index) const;
74 bool isModified() const;
75 void clearModified();
76 void setToken(const std::string& tok);
77 const std::string& getToken() const;
78 void resize(unsigned int size);
79 const std::string& getProcessTag() const { return m_processTag; }
80 void setProcessTag(const std::string& tag) { m_processTag = tag; }
81 unsigned version() const { return m_version; }
83 void setVersion(const DHVersions ver) { m_version = ver; }
84
85private:
86 std::vector<DbRecord> m_dbRecords;
87 std::vector<ObjRecord> m_objRecords;
88 std::vector<std::vector<std::string> > m_objAlias;
89 std::vector<std::vector<unsigned int> > m_objSymLinks;
90 std::vector<std::vector<sgkey_t> > m_objHashes;
91
93 unsigned m_version { DHverFormRef };
95 std::string m_processTag;
96
97 // transient members:
99 bool m_modified { true };
101 std::string m_token;
102};
103
104
111{
112 friend class DataHeaderCnv_p6;
113
114public:
115 struct FullElement {
116 FullElement() : oid2(0), dbIdx(0), objIdx(0) {}
117 FullElement(unsigned long long o2, unsigned db, unsigned obj) : oid2(o2), dbIdx(db), objIdx(obj) {}
118 unsigned long long oid2;
119 unsigned int dbIdx; // index to DHForm entry with DB GUID & technology
120 unsigned int objIdx; // index to DHForm entry with object data
121 };
122
124 const std::string& dhFormToken() const;
125 void setDhFormToken(const std::string& formToken);
126
127private:
129 unsigned m_commonDbIndex{};
130 unsigned long long m_commonOID2{};
131
132 std::vector<int> m_shortElements;
133 std::vector<FullElement> m_fullElements;
134 unsigned int m_provenanceSize{};
135
136 std::string m_dhFormToken;
137};
138
139#endif
This file contains the class definition for the Guid class (migrated from POOL).
const std::string & getToken() const
std::vector< std::vector< std::string > > m_objAlias
std::string m_token
Reference to self in the persistent storage.
const std::string & getObjKey(unsigned int index) const
friend class DataHeaderCnv_p6
const std::string & getProcessTag() const
unsigned int getDbTech(unsigned int index) const
const Guid & getObjClassId(unsigned int index) const
std::vector< std::vector< unsigned int > > m_objSymLinks
std::size_t sizeObj() const
void setVersion(const DHVersions ver)
change version if writing backward compatible format
std::vector< ObjRecord > m_objRecords
unsigned int insertDb(const DbRecord &rec)
long long getObjOid1(unsigned int index) const
void setToken(const std::string &tok)
Guid getDbGuid(unsigned int index) const
const std::string & getObjContainer(unsigned int index) const
void resize(unsigned int size)
std::size_t sizeDb() const
unsigned m_version
Subversion of DHForm_p6 for small changes of data encoding.
unsigned int getObjType(unsigned int index) const
SG::sgkey_t sgkey_t
bool isModified() const
unsigned version() const
const std::vector< sgkey_t > & getObjHashes(unsigned int index) const
bool m_modified
indicates that the last event was somehow different and a new DHForm needs to be written
std::vector< std::vector< sgkey_t > > m_objHashes
std::string m_processTag
DataHeader SG Key.
const std::vector< unsigned int > & getObjSymLinks(unsigned int index) const
unsigned int insertObj(const ObjRecord &rec, const std::vector< std::string > &alias=std::vector< std::string >(), bool doAliasFiletering=true, const std::vector< unsigned int > &symLinks=std::vector< unsigned int >(), const std::vector< sgkey_t > &hashes=std::vector< sgkey_t >())
void setProcessTag(const std::string &tag)
const std::vector< std::string > & getObjAlias(unsigned int index) const
std::vector< DbRecord > m_dbRecords
void setDhFormToken(const std::string &formToken)
friend class DataHeaderCnv_p6
unsigned m_commonDbIndex
common DB entry index used by all short DH elements
const std::string & dhFormToken() const
std::vector< int > m_shortElements
std::vector< FullElement > m_fullElements
std::string m_dhFormToken
unsigned long long m_commonOID2
unsigned int m_provenanceSize
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
Definition Guid.h:25
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition Token.h:21
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition sgkey_t.h:32
Definition index.py:1
bool operator==(const DbRecord &rhs) const
DbRecord(const Guid &f, unsigned t)
bool operator==(const ObjRecord &rhs) const
ObjRecord(const Guid &g, const std::string &c, const std::string &k, unsigned id, long long o)
unsigned long long oid2
FullElement(unsigned long long o2, unsigned db, unsigned obj)