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
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
map
STL class.
trans
TH1F * trans(TH1F *h, bool t=false)
Definition
comparitor.cxx:185
Generated on
for ATLAS Offline Software by
1.17.0