ATLAS Offline Software
DataHeader_p6.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
8 #include "CxxUtils/MD5.h"
9 
10 #include <uuid/uuid.h>
11 
13 
14 
15 unsigned int DataHeaderForm_p6::insertDb(const DbRecord& rec) {
16  unsigned int index = 0U;
17  for (std::vector<DbRecord>::const_iterator iter = m_dbRecords.begin(), last = m_dbRecords.end();
18  iter != last; ++iter, ++index) {
19  if (*iter == rec) break;
20  }
21  if (index == m_dbRecords.size()) {
22  m_dbRecords.push_back(rec);
23  m_modified = true;
24  }
25  return(index);
26 }
27 
28 std::size_t DataHeaderForm_p6::sizeDb() const {
29  return(m_dbRecords.size());
30 }
31 
33  return m_dbRecords[index].fid;
34 }
35 
36 unsigned int DataHeaderForm_p6::getDbTech(unsigned int index) const {
37  return m_dbRecords[index].tech;
38 }
39 
40 unsigned int DataHeaderForm_p6::insertObj(const ObjRecord& rec,
41  const std::vector<std::string>& aliases, bool doAliasFiltering,
42  const std::vector<unsigned int>& symLinks,
43  const std::vector<sgkey_t>& hashes)
44 {
45  unsigned int index = 0U;
46  for (std::vector<ObjRecord>::const_iterator iter = m_objRecords.begin(), last = m_objRecords.end();
47  iter != last; ++iter, ++index) {
48  if (*iter == rec) break;
49  }
50  if (index != m_objRecords.size()) {
51  // found matching object record, check if all the info is the same
52  if( m_objSymLinks[index] != symLinks ) {
53  m_objSymLinks[index] = symLinks;
54  m_modified = true;
55  }
56  if( m_objHashes[index] != hashes ) {
58  m_modified = true;
59  }
60  if( (!doAliasFiltering or m_modified) and m_objAlias[index] != aliases ) {
61  m_objAlias[index] = aliases;
62  m_modified = true;
63  }
64  return index;
65  }
66  // enter a new record
67  m_objRecords.push_back( rec );
68  m_objAlias.push_back( aliases );
69  m_objSymLinks.push_back( symLinks );
70  m_objHashes.push_back( hashes );
71  m_modified = true;
72  return m_objRecords.size() - 1;
73 }
74 
75 std::size_t DataHeaderForm_p6::sizeObj() const {
76  return(m_objRecords.size());
77 }
78 
79 const std::string& DataHeaderForm_p6::getObjContainer(unsigned int index) const {
80  return m_objRecords[index].cont;
81 }
82 
83 const std::string& DataHeaderForm_p6::getObjKey(unsigned int index) const {
84  return m_objRecords[index].key;
85 }
86 
87 unsigned int DataHeaderForm_p6::getObjType(unsigned int index) const {
88  return m_objRecords[index].clid;
89 }
90 
91 const Guid& DataHeaderForm_p6::getObjClassId(unsigned int index) const {
92  return m_objRecords[index].guid;
93 }
94 
95 const std::vector<std::string>& DataHeaderForm_p6::getObjAlias(unsigned int index) const {
96  return m_objAlias[index];
97 }
98 
99 const std::vector<unsigned int>&
101  return m_objSymLinks[index];
102 }
103 
104 const std::vector<DataHeaderForm_p6::sgkey_t>&
106  return(m_objHashes[index]);
107 }
108 
110  return m_modified;
111 }
112 
114  m_modified = false;
115 }
116 
117 void DataHeaderForm_p6::setToken( const std::string& tok )
118 {
119  m_token = tok;
120 }
121 
122 const std::string& DataHeaderForm_p6::getToken() const {
123  return m_token;
124 }
125 
126 void DataHeaderForm_p6::resize(unsigned int size) {
127  m_objRecords.reserve( size );
128  m_objAlias.reserve( size );
129  m_objSymLinks.reserve( size );
130  m_objHashes.reserve( size );
131 }
132 
133 
134 
135 //---------------------------------------------------------------------
136 
137 const std::string& DataHeader_p6::dhFormToken() const {
138  return(m_dhFormToken);
139 }
140 
141 void DataHeader_p6::setDhFormToken(const std::string& formToken) {
142  m_dhFormToken = formToken;
143 }
144 
python.root_lsr_rank.hashes
hashes
Definition: root_lsr_rank.py:34
createLinkingScheme.iter
iter
Definition: createLinkingScheme.py:62
DataHeaderForm_p6::isModified
bool isModified() const
Definition: DataHeader_p6.cxx:109
DataHeaderForm_p6::m_objHashes
std::vector< std::vector< sgkey_t > > m_objHashes
Definition: DataHeader_p6.h:90
index
Definition: index.py:1
DataHeader_p6::m_dhFormToken
std::string m_dhFormToken
Definition: DataHeader_p6.h:136
DataHeaderForm_p6::getObjKey
const std::string & getObjKey(unsigned int index) const
Definition: DataHeader_p6.cxx:83
DataHeaderForm_p6::DbRecord
Definition: DataHeader_p6.h:32
DataHeaderForm_p6::m_dbRecords
std::vector< DbRecord > m_dbRecords
Definition: DataHeader_p6.h:86
athena.value
value
Definition: athena.py:124
DataHeaderForm_p6::insertObj
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 >())
Definition: DataHeader_p6.cxx:40
DataHeader_p6::setDhFormToken
void setDhFormToken(const std::string &formToken)
Definition: DataHeader_p6.cxx:141
MD5.h
solar's public-domain MD5, wrapped for C++.
DataHeaderForm_p6::m_token
std::string m_token
Reference to self in the persistent storage.
Definition: DataHeader_p6.h:101
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
DataHeaderForm_p6::getObjSymLinks
const std::vector< unsigned int > & getObjSymLinks(unsigned int index) const
Definition: DataHeader_p6.cxx:100
DataHeaderForm_p6::getObjType
unsigned int getObjType(unsigned int index) const
Definition: DataHeader_p6.cxx:87
DataHeaderForm_p6::m_objRecords
std::vector< ObjRecord > m_objRecords
Definition: DataHeader_p6.h:87
DataHeaderForm_p6::getObjHashes
const std::vector< sgkey_t > & getObjHashes(unsigned int index) const
Definition: DataHeader_p6.cxx:105
DataHeaderForm_p6::getToken
const std::string & getToken() const
Definition: DataHeader_p6.cxx:122
DataHeader_p6::dhFormToken
const std::string & dhFormToken() const
Definition: DataHeader_p6.cxx:137
DataHeaderForm_p6::getDbGuid
Guid getDbGuid(unsigned int index) const
Definition: DataHeader_p6.cxx:32
DataHeader_p6.h
This file contains the class definitions for the DataHeader_p6 and DataHeaderForm_p6.
DataHeaderForm_p6::getObjAlias
const std::vector< std::string > & getObjAlias(unsigned int index) const
Definition: DataHeader_p6.cxx:95
DataHeaderForm_p6::clearModified
void clearModified()
Definition: DataHeader_p6.cxx:113
DataHeaderForm_p6::sizeDb
std::size_t sizeDb() const
Definition: DataHeader_p6.cxx:28
DataHeaderForm_p6::m_objAlias
std::vector< std::vector< std::string > > m_objAlias
Definition: DataHeader_p6.h:88
DataHeaderForm_p6::setToken
void setToken(const std::string &tok)
Definition: DataHeader_p6.cxx:117
DataHeaderForm_p6::sizeObj
std::size_t sizeObj() const
Definition: DataHeader_p6.cxx:75
DataHeaderForm_p6::getObjClassId
const Guid & getObjClassId(unsigned int index) const
Definition: DataHeader_p6.cxx:91
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:99
Guid
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
Definition: Guid.h:25
DataHeaderForm_p6::resize
void resize(unsigned int size)
Definition: DataHeader_p6.cxx:126
DataHeaderForm_p6::m_objSymLinks
std::vector< std::vector< unsigned int > > m_objSymLinks
Definition: DataHeader_p6.h:89
DataHeaderForm_p6::getDbTech
unsigned int getDbTech(unsigned int index) const
Definition: DataHeader_p6.cxx:36
DataHeaderForm_p6::insertDb
unsigned int insertDb(const DbRecord &rec)
Definition: DataHeader_p6.cxx:15
Token.h
This file contains the class definition for the Token class (migrated from POOL).
DataHeaderForm_p6::ObjRecord
Definition: DataHeader_p6.h:38
DataHeaderForm_p6::getObjContainer
const std::string & getObjContainer(unsigned int index) const
Definition: DataHeader_p6.cxx:79