ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
PersistentDataModelTPCnv
src
DataHeaderCnv_p4.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_p4.h
"
13
14
#include <cstdio>
15
#include <sstream>
16
#include <algorithm>
17
18
DataHeaderElementCnv_p4::DataHeaderElementCnv_p4
() {}
19
20
//______________________________________________________________________________
21
void
DataHeaderElementCnv_p4::persToTrans
(
const
DataHeaderElement_p4
* pers,
22
DataHeaderElement
* trans,
23
const
std::vector<std::string>&
map
) {
24
std::vector<unsigned int>::const_iterator intIter = pers->
m_clids
.begin();
25
const
std::vector<unsigned int>::const_iterator intLast = pers->
m_clids
.end();
26
trans->
m_pClid
= *intIter; ++intIter;
27
trans->
m_clids
.assign (intIter, intLast);
28
std::vector<std::string>::const_iterator strIter = pers->
m_alias
.begin();
29
trans->
m_key
= *strIter; ++strIter;
30
trans->
m_alias
.assign (strIter, pers->
m_alias
.end());
31
if
(!std::ranges::is_sorted (trans->
m_alias
)) {
32
// Should really be sorted, but just in case...
33
std::ranges::sort (trans->
m_alias
);
34
auto
ret = std::ranges::unique (trans->
m_alias
);
35
trans->
m_alias
.erase (ret.begin(), ret.end());
36
}
37
trans->
m_hashes
.clear();
38
trans->
m_hashes
.reserve(pers->
m_hashes
.size());
39
for
(std::vector<uint64_t>::const_iterator iter = pers->
m_hashes
.begin(),
40
last = pers->
m_hashes
.end(); iter != last; ++iter) {
41
trans->
m_hashes
.push_back((
unsigned
int
)(*iter));
42
}
43
// Translate PoolToken
44
std::string tokenStr;
45
if
(
map
.empty()) {
46
tokenStr = pers->
m_token
;
47
}
else
{
48
unsigned
int
tokenSize = 129 + pers->
m_token
.size();
49
if
(pers->
m_prefixIdx
> 0) {
50
tokenSize +=
map
[pers->
m_prefixIdx
].size();
51
}
52
if
(pers->
m_keyPos
> 0) {
53
tokenSize += trans->
m_key
.size();
54
}
55
tokenStr.reserve(tokenSize);
56
// Append DbGuid
57
tokenStr =
"[DB="
;
58
tokenStr.append(
map
[pers->
m_dbGuidIdx
]);
59
// Still optimize
60
tokenStr.append(
"][CNT="
);
61
std::string cntName;
62
if
(pers->
m_prefixIdx
> 0) {
63
tokenStr.append(
map
[pers->
m_prefixIdx
]);
64
}
65
// insert key
66
if
(pers->
m_keyPos
> 0) {
67
tokenStr.append(pers->
m_token
.substr(0, pers->
m_keyPos
- 1));
68
tokenStr.append(trans->
m_key
);
69
tokenStr.append(pers->
m_token
.substr(pers->
m_keyPos
- 1));
70
}
else
{
71
tokenStr.append(pers->
m_token
);
72
}
73
// Append ClassId
74
tokenStr.append(
"][CLID="
);
75
tokenStr.append(
map
[pers->
m_classIdIdx
]);
76
// Add Technology and Offsets
77
const
unsigned
int
length
= 40;
78
char
text[
length
];
79
snprintf(text,
length
,
"][TECH=%08X][OID=%08X-%08X]"
, pers->
m_technology
, pers->
m_oid1
, pers->
m_oid2
);
80
tokenStr.append(text);
81
}
82
trans->
m_token
.
fromString
(tokenStr);
83
}
84
//______________________________________________________________________________
85
void
DataHeaderElementCnv_p4::transToPers
(
const
DataHeaderElement
*
/*trans*/
,
86
DataHeaderElement_p4
*
/*pers*/
,
87
std::vector<std::string>&
/*map*/
) {
88
// Moved to next _p version
89
}
90
//______________________________________________________________________________
91
//______________________________________________________________________________
92
DataHeaderCnv_p4::DataHeaderCnv_p4
() {}
93
//______________________________________________________________________________
94
void
DataHeaderCnv_p4::persToTrans
(
const
DataHeader_p4
* pers,
DataHeader
* trans) {
95
trans->
m_inputDataHeader
.resize(pers->
m_provSize
);
96
std::vector<DataHeaderElement>::iterator it = trans->
m_inputDataHeader
.begin();
97
std::vector<DataHeaderElement_p4>::const_iterator pit = pers->
m_dataHeader
.begin();
98
for
(
unsigned
int
i = 0U; i != pers->
m_provSize
; ++i, ++it, ++pit) {
99
m_elemCnv
.persToTrans(&(*pit), &(*it), pers->
m_guidMap
);
100
}
101
trans->
m_dataHeader
.resize(pers->
m_dataHeader
.size() - pers->
m_provSize
);
102
it = trans->
m_dataHeader
.begin();
103
for
(std::vector<DataHeaderElement_p4>::const_iterator last = pers->
m_dataHeader
.end();
104
pit != last; ++it, ++pit) {
105
m_elemCnv
.persToTrans(&(*pit), &(*it), pers->
m_guidMap
);
106
}
107
}
108
//______________________________________________________________________________
109
void
DataHeaderCnv_p4::transToPers
(
const
DataHeader
*
/*trans*/
,
DataHeader_p4
*
/*pers*/
) {
110
// Moved to next _p version
111
}
112
//______________________________________________________________________________
113
void
DataHeaderCnv_p4::insertDHRef
(
DataHeader_p4
*
/*pers*/
,
114
const
std::string&
/*key*/
,
115
const
std::string&
/*token*/
) {
116
// Moved to next _p version
117
}
DataHeaderCnv_p4.h
This file contains the class definition for the DataHeaderCnv_p4 and DataHeaderElementCnv_p4 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_p4::m_elemCnv
DataHeaderElementCnv_p4 m_elemCnv
Definition
DataHeaderCnv_p4.h:46
DataHeaderCnv_p4::insertDHRef
void insertDHRef(DataHeader_p4 *pers, const std::string &key, const std::string &token)
Definition
DataHeaderCnv_p4.cxx:113
DataHeaderCnv_p4::transToPers
void transToPers(const DataHeader *trans, DataHeader_p4 *pers)
Definition
DataHeaderCnv_p4.cxx:109
DataHeaderCnv_p4::persToTrans
void persToTrans(const DataHeader_p4 *pers, DataHeader *trans)
Definition
DataHeaderCnv_p4.cxx:94
DataHeaderCnv_p4::DataHeaderCnv_p4
DataHeaderCnv_p4()
Definition
DataHeaderCnv_p4.cxx:92
DataHeaderElementCnv_p4::transToPers
void transToPers(const DataHeaderElement *trans, DataHeaderElement_p4 *pers, std::vector< std::string > &map)
Definition
DataHeaderCnv_p4.cxx:85
DataHeaderElementCnv_p4::DataHeaderElementCnv_p4
DataHeaderElementCnv_p4()
Definition
DataHeaderCnv_p4.cxx:18
DataHeaderElementCnv_p4::persToTrans
void persToTrans(const DataHeaderElement_p4 *pers, DataHeaderElement *trans, const std::vector< std::string > &map)
Definition
DataHeaderCnv_p4.cxx:21
DataHeaderElement_p4
This class provides a persistent representation for the DataHeaderElement class.
Definition
DataHeader_p4.h:21
DataHeaderElement_p4::m_alias
std::vector< std::string > m_alias
Definition
DataHeader_p4.h:40
DataHeaderElement_p4::m_prefixIdx
unsigned short m_prefixIdx
Definition
DataHeader_p4.h:42
DataHeaderElement_p4::m_clids
std::vector< unsigned int > m_clids
Definition
DataHeader_p4.h:38
DataHeaderElement_p4::m_classIdIdx
unsigned short m_classIdIdx
Definition
DataHeader_p4.h:42
DataHeaderElement_p4::m_hashes
std::vector< uint64_t > m_hashes
Definition
DataHeader_p4.h:44
DataHeaderElement_p4::m_oid1
unsigned int m_oid1
Definition
DataHeader_p4.h:41
DataHeaderElement_p4::m_keyPos
unsigned short m_keyPos
Definition
DataHeader_p4.h:43
DataHeaderElement_p4::m_technology
unsigned int m_technology
Definition
DataHeader_p4.h:41
DataHeaderElement_p4::m_token
std::string m_token
Definition
DataHeader_p4.h:39
DataHeaderElement_p4::m_dbGuidIdx
unsigned short m_dbGuidIdx
Definition
DataHeader_p4.h:42
DataHeaderElement_p4::m_oid2
unsigned int m_oid2
Definition
DataHeader_p4.h:41
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_p4
This class provides a persistent representation for the DataHeader class.
Definition
DataHeader_p4.h:50
DataHeader_p4::m_guidMap
std::vector< std::string > m_guidMap
Definition
DataHeader_p4.h:64
DataHeader_p4::m_dataHeader
std::vector< DataHeaderElement_p4 > m_dataHeader
Definition
DataHeader_p4.h:62
DataHeader_p4::m_provSize
unsigned int m_provSize
Definition
DataHeader_p4.h:63
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