ATLAS Offline Software
DataHeader_p6.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef PERSISTENTDATAMODELTPCNV_DATAHEADER_P6_H
6 #define PERSISTENTDATAMODELTPCNV_DATAHEADER_P6_H
7 
15 #include "CxxUtils/sgkey_t.h"
16 
17 #include <vector>
18 #include <set>
19 #include <string>
20 
21 class Token;
22 
23 
28 friend class DataHeaderCnv_p6;
29 
30 public:
32 
33  struct DbRecord {
34  Guid fid; unsigned tech;
35  DbRecord() {}
36  DbRecord( const Guid& f, unsigned t) : fid(f), tech(t) {}
37  bool operator==(const DbRecord& rhs) const { return fid==rhs.fid && tech==rhs.tech; }
38  };
39  struct ObjRecord {
41  std::string cont, key;
42  unsigned clid; long long oid1;
43  ObjRecord() {}
44  ObjRecord( const Guid& g, const std::string& c, const std::string& k, unsigned id, long long o)
45  : guid(g), cont(c), key(k), clid(id), oid1(o) {}
46  bool operator==(const ObjRecord& rhs) const
47  { return clid == rhs.clid && cont == rhs.cont && key == rhs.key && oid1 == rhs.oid1; }
48  };
49 
50 public: // 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::set<std::string>& alias = std::set<std::string>(), bool doAliasFiletering = true,
63  const std::set<unsigned int>& symLinks = std::set<unsigned int>(),
64  const std::vector<sgkey_t>& hashes = std::vector<sgkey_t>());
65  std::size_t sizeObj() const;
66  std::string getObjContainer(unsigned int index) const;
67  std::string getObjKey(unsigned int index) const;
68  unsigned int getObjType(unsigned int index) const;
69  Guid getObjClassId(unsigned int index) const;
70  long long getObjOid1(unsigned int index) const { return m_objRecords[index].oid1; }
71  std::set<std::string> getObjAlias(unsigned int index) const;
72  std::set<unsigned int> getObjSymLinks(unsigned int index) const;
73  std::vector<sgkey_t> getObjHashes(unsigned int index) const;
74  std::string calculateMdx();
75  bool wasModified() const;
76  void clearModified();
77  void setToken(const std::string& tok);
78  const std::string& getToken() const;
79  void resize(unsigned int size);
80 
81 private:
82  std::vector<DbRecord> m_dbRecords;
83  std::vector<ObjRecord> m_objRecords;
84  std::vector<std::vector<std::string> > m_objAlias;
85  std::vector<std::vector<unsigned int> > m_objSymLinks;
86  std::vector<std::vector<sgkey_t> > m_objHashes;
87 
89  unsigned m_version { 600 };
90 
91  // transient members
93  bool m_modified { true };
95  std::string m_token;
96 };
97 
98 
105 {
106  friend class DataHeaderCnv_p6;
107 
108 public:
109  struct FullElement {
110  FullElement() : oid2(0), dbIdx(0), objIdx(0) {}
111  FullElement(unsigned long long o2, unsigned db, unsigned obj) : oid2(o2), dbIdx(db), objIdx(obj) {}
112  unsigned long long oid2;
113  unsigned int dbIdx; // index to DHForm entry with DB GUID & technology
114  unsigned int objIdx; // index to DHForm entry with object data
115  };
116 
118  const std::string& dhFormToken() const;
119  void setDhFormToken(const std::string& formToken);
120 
121 private:
123  unsigned m_commonDbIndex;
124  unsigned long long m_commonOID2;
125 
126  std::vector<int> m_shortElements;
127  std::vector<FullElement> m_fullElements;
128  unsigned int m_provenanceSize;
129 
130  std::string m_dhFormToken;
131 };
132 
133 #endif
python.root_lsr_rank.hashes
hashes
Definition: root_lsr_rank.py:34
DataHeaderForm_p6
This class provides storage for the constant fields of the persistent DataHeader class.
Definition: DataHeader_p6.h:27
DataHeader_p6::DataHeader_p6
DataHeader_p6()
Definition: DataHeader_p6.h:117
DataHeader_p6::FullElement::FullElement
FullElement()
Definition: DataHeader_p6.h:110
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
DataHeaderForm_p6::DbRecord::fid
Guid fid
Definition: DataHeader_p6.h:34
DataHeaderForm_p6::sgkey_t
SG::sgkey_t sgkey_t
Definition: DataHeader_p6.h:31
DataHeaderCnv_p6
This class provides the converter to customize the saving of DataHeader_p6.
Definition: DataHeaderCnv_p6.h:21
DataHeaderForm_p6::m_objHashes
std::vector< std::vector< sgkey_t > > m_objHashes
Definition: DataHeader_p6.h:86
DataHeaderForm_p6::operator=
DataHeaderForm_p6 & operator=(const DataHeaderForm_p6 &rhs)
Definition: DataHeader_p6.cxx:21
index
Definition: index.py:1
DataHeader_p6::FullElement
Definition: DataHeader_p6.h:109
DataHeader_p6::m_dhFormToken
std::string m_dhFormToken
Definition: DataHeader_p6.h:130
CaloCondBlobAlgs_fillNoiseFromASCII.db
db
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:43
DataHeaderForm_p6::DbRecord
Definition: DataHeader_p6.h:33
DataHeaderForm_p6::DataHeaderForm_p6
DataHeaderForm_p6()
Definition: DataHeader_p6.h:51
DataHeaderForm_p6::ObjRecord::clid
unsigned clid
Definition: DataHeader_p6.h:42
DataHeaderForm_p6::m_dbRecords
std::vector< DbRecord > m_dbRecords
Definition: DataHeader_p6.h:82
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
DataHeader_p6::m_provenanceSize
unsigned int m_provenanceSize
Definition: DataHeader_p6.h:128
DataHeader_p6::m_commonOID2
unsigned long long m_commonOID2
Definition: DataHeader_p6.h:124
DataHeader_p6::setDhFormToken
void setDhFormToken(const std::string &formToken)
Definition: DataHeader_p6.cxx:168
DataHeader_p6::m_shortElements
std::vector< int > m_shortElements
Definition: DataHeader_p6.h:126
DataHeaderForm_p6::getObjOid1
long long getObjOid1(unsigned int index) const
Definition: DataHeader_p6.h:70
DataHeader_p6::m_fullElements
std::vector< FullElement > m_fullElements
Definition: DataHeader_p6.h:127
Token
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition: Token.h:21
DataHeader_p6::FullElement::dbIdx
unsigned int dbIdx
Definition: DataHeader_p6.h:113
DataHeaderForm_p6::calculateMdx
std::string calculateMdx()
DataHeader_p6::FullElement::FullElement
FullElement(unsigned long long o2, unsigned db, unsigned obj)
Definition: DataHeader_p6.h:111
DataHeaderForm_p6::m_token
std::string m_token
Reference to self in the persistent storage.
Definition: DataHeader_p6.h:95
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
DataHeaderForm_p6::getObjType
unsigned int getObjType(unsigned int index) const
Definition: DataHeader_p6.cxx:114
DataHeaderForm_p6::m_objRecords
std::vector< ObjRecord > m_objRecords
Definition: DataHeader_p6.h:83
DataHeaderForm_p6::getObjContainer
std::string getObjContainer(unsigned int index) const
Definition: DataHeader_p6.cxx:106
DataHeaderForm_p6::getToken
const std::string & getToken() const
Definition: DataHeader_p6.cxx:149
DataHeaderForm_p6::DbRecord::DbRecord
DbRecord(const Guid &f, unsigned t)
Definition: DataHeader_p6.h:36
DataHeader_p6::dhFormToken
const std::string & dhFormToken() const
Definition: DataHeader_p6.cxx:164
DataHeaderForm_p6::getObjClassId
Guid getObjClassId(unsigned int index) const
Definition: DataHeader_p6.cxx:118
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
DataHeaderForm_p6::getDbGuid
Guid getDbGuid(unsigned int index) const
Definition: DataHeader_p6.cxx:57
COOLRates.alias
alias
Definition: COOLRates.py:1172
DataHeaderForm_p6::DbRecord::operator==
bool operator==(const DbRecord &rhs) const
Definition: DataHeader_p6.h:37
DataHeaderForm_p6::ObjRecord::ObjRecord
ObjRecord(const Guid &g, const std::string &c, const std::string &k, unsigned id, long long o)
Definition: DataHeader_p6.h:44
DataHeaderForm_p6::DbRecord::tech
unsigned tech
Definition: DataHeader_p6.h:34
DataHeaderForm_p6::DbRecord::DbRecord
DbRecord()
Definition: DataHeader_p6.h:35
DataHeader_p6
This class provides a persistent representation for the DataHeader class.
Definition: DataHeader_p6.h:105
DataHeaderForm_p6::~DataHeaderForm_p6
~DataHeaderForm_p6()
Definition: DataHeader_p6.cxx:36
DataHeaderForm_p6::insertObj
unsigned int insertObj(const ObjRecord &rec, const std::set< std::string > &alias=std::set< std::string >(), bool doAliasFiletering=true, const std::set< unsigned int > &symLinks=std::set< unsigned int >(), const std::vector< sgkey_t > &hashes=std::vector< sgkey_t >())
Definition: DataHeader_p6.cxx:65
DataHeader_p6::FullElement::objIdx
unsigned int objIdx
Definition: DataHeader_p6.h:114
DataHeaderForm_p6::getObjSymLinks
std::set< unsigned int > getObjSymLinks(unsigned int index) const
Definition: DataHeader_p6.cxx:126
DataHeaderForm_p6::clearModified
void clearModified()
Definition: DataHeader_p6.cxx:140
DataHeaderForm_p6::sizeDb
std::size_t sizeDb() const
Definition: DataHeader_p6.cxx:53
DataHeaderForm_p6::m_objAlias
std::vector< std::vector< std::string > > m_objAlias
Definition: DataHeader_p6.h:84
DataHeaderForm_p6::getObjHashes
std::vector< sgkey_t > getObjHashes(unsigned int index) const
Definition: DataHeader_p6.cxx:131
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
DataHeaderForm_p6::ObjRecord::cont
std::string cont
Definition: DataHeader_p6.h:41
DataHeaderForm_p6::setToken
void setToken(const std::string &tok)
Definition: DataHeader_p6.cxx:144
DataHeaderForm_p6::sizeObj
std::size_t sizeObj() const
Definition: DataHeader_p6.cxx:102
SG::sgkey_t
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition: CxxUtils/CxxUtils/sgkey_t.h:32
DataHeaderForm_p6::ObjRecord::oid1
long long oid1
Definition: DataHeader_p6.h:42
python.changerun.o2
o2
Definition: changerun.py:45
DeMoScan.index
string index
Definition: DeMoScan.py:362
DataHeaderForm_p6::m_modified
bool m_modified
indicates that the last event was somehow different and a new DHForm needs to be written
Definition: DataHeader_p6.h:93
Guid
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
Definition: Guid.h:20
sgkey_t.h
Define the type used for hashed StoreGate key+CLID pairs.
DataHeaderForm_p6::resize
void resize(unsigned int size)
Definition: DataHeader_p6.cxx:153
DataHeaderForm_p6::getObjKey
std::string getObjKey(unsigned int index) const
Definition: DataHeader_p6.cxx:110
DataHeader_p6::FullElement::oid2
unsigned long long oid2
Definition: DataHeader_p6.h:112
DataHeaderForm_p6::ObjRecord::ObjRecord
ObjRecord()
Definition: DataHeader_p6.h:43
DataHeader_p6::m_commonDbIndex
unsigned m_commonDbIndex
common DB entry index used by all short DH elements
Definition: DataHeader_p6.h:123
DataHeaderForm_p6::m_objSymLinks
std::vector< std::vector< unsigned int > > m_objSymLinks
Definition: DataHeader_p6.h:85
DataHeaderForm_p6::ObjRecord::guid
Guid guid
Definition: DataHeader_p6.h:40
DataHeaderForm_p6::getDbTech
unsigned int getDbTech(unsigned int index) const
Definition: DataHeader_p6.cxx:61
DataHeaderForm_p6::ObjRecord::operator==
bool operator==(const ObjRecord &rhs) const
Definition: DataHeader_p6.h:46
Guid.h
This file contains the class definition for the Guid class (migrated from POOL).
DataHeaderForm_p6::insertDb
unsigned int insertDb(const DbRecord &rec)
Definition: DataHeader_p6.cxx:40
DataHeaderForm_p6::m_version
unsigned m_version
In case we need ot handle encoding changes later.
Definition: DataHeader_p6.h:89
python.PyAthena.obj
obj
Definition: PyAthena.py:135
DataHeaderForm_p6::getObjAlias
std::set< std::string > getObjAlias(unsigned int index) const
Definition: DataHeader_p6.cxx:122
python.compressB64.c
def c
Definition: compressB64.py:93
DataHeaderForm_p6::ObjRecord
Definition: DataHeader_p6.h:39
DataHeaderForm_p6::wasModified
bool wasModified() const
Definition: DataHeader_p6.cxx:136
fitman.k
k
Definition: fitman.py:528
DataHeaderForm_p6::ObjRecord::key
std::string key
Definition: DataHeader_p6.h:41