ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
PersistentDataModelTPCnv
src
DataHeaderCnv_p3.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
10
11
#include "
PersistentDataModel/DataHeader.h
"
12
#include "
PersistentDataModelTPCnv/DataHeaderCnv_p3.h
"
13
14
#include <cstdio>
15
#include <sstream>
16
#include <algorithm>
17
18
DataHeaderElementCnv_p3::DataHeaderElementCnv_p3
() {}
19
20
//______________________________________________________________________________
21
void
DataHeaderElementCnv_p3::persToTrans
(
const
DataHeaderElement_p3
* pers,
22
DataHeaderElement
* trans,
23
const
std::vector<std::string>&
map
) {
24
trans->
m_pClid
= *pers->
m_clids
.begin();
25
trans->
m_clids
.assign (pers->
m_clids
.begin()+1, pers->
m_clids
.end());
26
trans->
m_key
= *pers->
m_alias
.begin();
27
trans->
m_alias
.assign (pers->
m_alias
.begin()+1, pers->
m_alias
.end());
28
if
(!std::ranges::is_sorted (trans->
m_alias
)) {
29
// Should really be sorted, but just in case...
30
std::ranges::sort (trans->
m_alias
);
31
auto
ret = std::ranges::unique (trans->
m_alias
);
32
trans->
m_alias
.erase (ret.begin(), ret.end());
33
}
34
trans->
m_hashes
.clear();
35
trans->
m_hashes
.reserve(pers->
m_hashes
.size());
36
for
(std::vector<uint64_t>::const_iterator iter = pers->
m_hashes
.begin(),
37
last = pers->
m_hashes
.end(); iter != last; ++iter) {
38
trans->
m_hashes
.push_back((
unsigned
int
)(*iter));
39
}
40
// Translate PoolToken
41
std::string tokenStr;
42
if
(
map
.empty()) {
43
tokenStr = pers->
m_token
;
44
}
else
{
45
unsigned
int
tokenSize = 129 + pers->
m_token
.size();
46
if
(pers->
m_prefixIdx
> 0) {
47
tokenSize +=
map
[pers->
m_prefixIdx
].size();
48
}
49
if
(pers->
m_keyPos
> 0) {
50
tokenSize += trans->
m_key
.size();
51
}
52
tokenStr.reserve(tokenSize);
53
// Append DbGuid
54
tokenStr =
"[DB="
;
55
tokenStr.append(
map
[pers->
m_dbGuidIdx
]);
56
// Still optimize
57
tokenStr.append(
"][CNT="
);
58
if
(pers->
m_prefixIdx
> 0) {
59
tokenStr.append(
map
[pers->
m_prefixIdx
]);
60
}
61
// insert key
62
if
(pers->
m_keyPos
> 0) {
63
tokenStr.append(pers->
m_token
.substr(0, pers->
m_keyPos
- 1));
64
tokenStr.append(trans->
m_key
);
65
tokenStr.append(pers->
m_token
.substr(pers->
m_keyPos
- 1));
66
}
else
{
67
tokenStr.append(pers->
m_token
);
68
}
69
// Append ClassId
70
tokenStr.append(
"][CLID="
);
71
tokenStr.append(
map
[pers->
m_classIdIdx
]);
72
const
unsigned
int
length
= 40;
73
char
text[
length
];
74
snprintf(text,
length
,
"][TECH=%08X][OID=%08X-%08X]"
, pers->
m_technology
, pers->
m_oid1
, pers->
m_oid2
);
75
tokenStr.append(text);
76
}
77
trans->
m_token
.
fromString
(tokenStr);
78
}
79
//______________________________________________________________________________
80
void
DataHeaderElementCnv_p3::transToPers
(
const
DataHeaderElement
*
/*trans*/
,
81
DataHeaderElement_p3
*
/*pers*/
,
82
std::vector<std::string>&
/*map*/
) {
83
// Moved to next _p version
84
}
85
//______________________________________________________________________________
86
//______________________________________________________________________________
87
DataHeaderCnv_p3::DataHeaderCnv_p3
() {}
88
//______________________________________________________________________________
89
void
DataHeaderCnv_p3::persToTrans
(
const
DataHeader_p3
* pers,
DataHeader
* trans) {
90
trans->
m_dataHeader
.resize(pers->
m_DataHeader
.size());
91
std::vector<DataHeaderElement>::iterator it = trans->
m_dataHeader
.begin();
92
for
(std::vector<DataHeaderElement_p3>::const_iterator pit = pers->
m_DataHeader
.begin(),
93
last = pers->
m_DataHeader
.end(); pit != last; ++it, ++pit) {
94
m_elemCnv
.persToTrans(&(*pit), &(*it), pers->
m_GuidMap
);
95
}
96
trans->
m_inputDataHeader
.resize(pers->
m_InputDataHeader
.size());
97
it = trans->
m_inputDataHeader
.begin();
98
for
(std::vector<DataHeaderElement_p3>::const_iterator pit = pers->
m_InputDataHeader
.begin(),
99
last = pers->
m_InputDataHeader
.end(); pit != last; ++it, ++pit) {
100
m_elemCnv
.persToTrans(&(*pit), &(*it), pers->
m_GuidMap
);
101
}
102
}
103
//______________________________________________________________________________
104
void
DataHeaderCnv_p3::transToPers
(
const
DataHeader
*
/*trans*/
,
DataHeader_p3
*
/*pers*/
) {
105
// Moved to next _p version
106
}
107
//______________________________________________________________________________
108
void
DataHeaderCnv_p3::insertDHRef
(
DataHeader_p3
*
/*pers*/
,
109
const
std::string&
/*key*/
,
110
const
std::string&
/*token*/
) {
111
// Moved to next _p version
112
}
DataHeaderCnv_p3.h
This file contains the class definition for the DataHeaderCnv_p3 and DataHeaderElementCnv_p3 classes.
DataHeader.h
This file contains the class definition for the DataHeader and DataHeaderElement classes.
length
double length(const pvec &v)
Definition
FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
DataHeaderCnv_p3::insertDHRef
void insertDHRef(DataHeader_p3 *pers, const std::string &key, const std::string &token)
Definition
DataHeaderCnv_p3.cxx:108
DataHeaderCnv_p3::DataHeaderCnv_p3
DataHeaderCnv_p3()
Definition
DataHeaderCnv_p3.cxx:87
DataHeaderCnv_p3::persToTrans
void persToTrans(const DataHeader_p3 *pers, DataHeader *trans)
Definition
DataHeaderCnv_p3.cxx:89
DataHeaderCnv_p3::m_elemCnv
DataHeaderElementCnv_p3 m_elemCnv
Definition
DataHeaderCnv_p3.h:46
DataHeaderCnv_p3::transToPers
void transToPers(const DataHeader *trans, DataHeader_p3 *pers)
Definition
DataHeaderCnv_p3.cxx:104
DataHeaderElementCnv_p3::DataHeaderElementCnv_p3
DataHeaderElementCnv_p3()
Definition
DataHeaderCnv_p3.cxx:18
DataHeaderElementCnv_p3::persToTrans
void persToTrans(const DataHeaderElement_p3 *pers, DataHeaderElement *trans, const std::vector< std::string > &map)
Definition
DataHeaderCnv_p3.cxx:21
DataHeaderElementCnv_p3::transToPers
void transToPers(const DataHeaderElement *trans, DataHeaderElement_p3 *pers, std::vector< std::string > &map)
Definition
DataHeaderCnv_p3.cxx:80
DataHeaderElement_p3
This class provides a persistent representation for the DataHeaderElement class.
Definition
DataHeader_p3.h:21
DataHeaderElement_p3::m_hashes
std::vector< uint64_t > m_hashes
Definition
DataHeader_p3.h:43
DataHeaderElement_p3::m_oid2
unsigned int m_oid2
Definition
DataHeader_p3.h:40
DataHeaderElement_p3::m_technology
unsigned int m_technology
Definition
DataHeader_p3.h:40
DataHeaderElement_p3::m_clids
std::vector< unsigned int > m_clids
Definition
DataHeader_p3.h:37
DataHeaderElement_p3::m_dbGuidIdx
unsigned short m_dbGuidIdx
Definition
DataHeader_p3.h:41
DataHeaderElement_p3::m_classIdIdx
unsigned short m_classIdIdx
Definition
DataHeader_p3.h:41
DataHeaderElement_p3::m_prefixIdx
unsigned short m_prefixIdx
Definition
DataHeader_p3.h:41
DataHeaderElement_p3::m_token
std::string m_token
Definition
DataHeader_p3.h:38
DataHeaderElement_p3::m_oid1
unsigned int m_oid1
Definition
DataHeader_p3.h:40
DataHeaderElement_p3::m_keyPos
unsigned short m_keyPos
Definition
DataHeader_p3.h:42
DataHeaderElement_p3::m_alias
std::vector< std::string > m_alias
Definition
DataHeader_p3.h:39
DataHeaderElement
This class provides a persistent form for the TransientAddress.
Definition
DataHeader.h:37
DataHeaderElement::m_pClid
CLID m_pClid
primary ClassID.
Definition
DataHeader.h:105
DataHeaderElement::m_key
std::string m_key
string with StoreGate key.
Definition
DataHeader.h:109
DataHeaderElement::m_alias
std::vector< std::string > m_alias
vector of StoreGate alias string.
Definition
DataHeader.h:111
DataHeaderElement::m_clids
std::vector< CLID > m_clids
vector of unsigned long to store ClassID's for symlinked container.
Definition
DataHeader.h:107
DataHeaderElement::m_hashes
std::vector< sgkey_t > m_hashes
hash table for ElementLink host container keys.
Definition
DataHeader.h:115
DataHeaderElement::m_token
Token m_token
Transient address token.
Definition
DataHeader.h:113
DataHeader_p3
This class provides a persistent representation for the DataHeader class.
Definition
DataHeader_p3.h:49
DataHeader_p3::m_InputDataHeader
std::vector< DataHeaderElement_p3 > m_InputDataHeader
Definition
DataHeader_p3.h:61
DataHeader_p3::m_GuidMap
std::vector< std::string > m_GuidMap
Definition
DataHeader_p3.h:62
DataHeader_p3::m_DataHeader
std::vector< DataHeaderElement_p3 > m_DataHeader
Definition
DataHeader_p3.h:60
DataHeader
This class provides the layout for summary information stored for data written to POOL.
Definition
DataHeader.h:123
DataHeader::m_inputDataHeader
std::vector< DataHeaderElement > m_inputDataHeader
vector with DataHeaderElement to upstream DataHeader ("Provenance").
Definition
DataHeader.h:211
DataHeader::m_dataHeader
std::vector< DataHeaderElement > m_dataHeader
vector with DataHeaderElement to "DataObject".
Definition
DataHeader.h:209
Token::fromString
Token & fromString(const std::string_view from)
Build from the string representation of a token.
Definition
Token.cxx:169
map
STL class.
Generated on
for ATLAS Offline Software by
1.17.0