Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
13 
14 #include <cstdio>
15 #include <sstream>
16 #include <algorithm>
17 
20 
21 //______________________________________________________________________________
23  DataHeaderElement* trans,
24  const std::vector<std::string>& map) {
25  trans->m_pClid = *pers->m_clids.begin();
26  trans->m_clids.assign (pers->m_clids.begin()+1, pers->m_clids.end());
27  trans->m_key = *pers->m_alias.begin();
28  trans->m_alias.assign (pers->m_alias.begin()+1, pers->m_alias.end());
29  if (!std::ranges::is_sorted (trans->m_alias)) {
30  // Should really be sorted, but just in case...
31  std::ranges::sort (trans->m_alias);
32  auto ret = std::ranges::unique (trans->m_alias);
33  trans->m_alias.erase (ret.begin(), ret.end());
34  }
35  trans->m_hashes.clear();
36  trans->m_hashes.reserve(pers->m_hashes.size());
37  for (std::vector<uint64_t>::const_iterator iter = pers->m_hashes.begin(),
38  last = pers->m_hashes.end(); iter != last; ++iter) {
39  trans->m_hashes.push_back((unsigned int)(*iter));
40  }
41 // Translate PoolToken
42  std::string tokenStr;
43  if (map.empty()) {
44  tokenStr = pers->m_token;
45  } else {
46  unsigned int tokenSize = 129 + pers->m_token.size();
47  if (pers->m_prefixIdx > 0) {
48  tokenSize += map[pers->m_prefixIdx].size();
49  }
50  if (pers->m_keyPos > 0) {
51  tokenSize += trans->m_key.size();
52  }
53  tokenStr.reserve(tokenSize);
54 // Append DbGuid
55  tokenStr = "[DB=";
56  tokenStr.append(map[pers->m_dbGuidIdx]);
57 // Still optimize
58  tokenStr.append("][CNT=");
59  if (pers->m_prefixIdx > 0) {
60  tokenStr.append(map[pers->m_prefixIdx]);
61  }
62 // insert key
63  if (pers->m_keyPos > 0) {
64  tokenStr.append(pers->m_token.substr(0, pers->m_keyPos - 1));
65  tokenStr.append(trans->m_key);
66  tokenStr.append(pers->m_token.substr(pers->m_keyPos - 1));
67  } else {
68  tokenStr.append(pers->m_token);
69  }
70 // Append ClassId
71  tokenStr.append("][CLID=");
72  tokenStr.append(map[pers->m_classIdIdx]);
73  const unsigned int length = 40;
74  char text[length];
75  snprintf(text, length, "][TECH=%08X][OID=%08X-%08X]", pers->m_technology, pers->m_oid1, pers->m_oid2);
76  tokenStr.append(text);
77  }
78  trans->m_token.fromString(tokenStr);
79 }
80 //______________________________________________________________________________
82  DataHeaderElement_p3* /*pers*/,
83  std::vector<std::string>& /*map*/) {
84 // Moved to next _p version
85 }
86 //______________________________________________________________________________
87 //______________________________________________________________________________
90 //______________________________________________________________________________
92  trans->m_dataHeader.resize(pers->m_DataHeader.size());
94  for (std::vector<DataHeaderElement_p3>::const_iterator pit = pers->m_DataHeader.begin(),
95  last = pers->m_DataHeader.end(); pit != last; ++it, ++pit) {
96  m_elemCnv.persToTrans(&(*pit), &(*it), pers->m_GuidMap);
97  }
98  trans->m_inputDataHeader.resize(pers->m_InputDataHeader.size());
99  it = trans->m_inputDataHeader.begin();
100  for (std::vector<DataHeaderElement_p3>::const_iterator pit = pers->m_InputDataHeader.begin(),
101  last = pers->m_InputDataHeader.end(); pit != last; ++it, ++pit) {
102  m_elemCnv.persToTrans(&(*pit), &(*it), pers->m_GuidMap);
103  }
104 }
105 //______________________________________________________________________________
106 void DataHeaderCnv_p3::transToPers(const DataHeader* /*trans*/, DataHeader_p3* /*pers*/) {
107 // Moved to next _p version
108 }
109 //______________________________________________________________________________
111  const std::string& /*key*/,
112  const std::string& /*token*/) {
113 // Moved to next _p version
114 }
DataHeader_p3::m_InputDataHeader
std::vector< DataHeaderElement_p3 > m_InputDataHeader
Definition: DataHeader_p3.h:69
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
DataHeaderElementCnv_p3::persToTrans
void persToTrans(const DataHeaderElement_p3 *pers, DataHeaderElement *trans, const std::vector< std::string > &map)
Definition: DataHeaderCnv_p3.cxx:22
createLinkingScheme.iter
iter
Definition: createLinkingScheme.py:56
DataHeaderElement::m_key
std::string m_key
string with StoreGate key.
Definition: DataHeader.h:112
DataHeaderElement::m_alias
std::vector< std::string > m_alias
vector of StoreGate alias string.
Definition: DataHeader.h:114
DataHeaderElement::m_token
Token m_token
Transient address token.
Definition: DataHeader.h:116
DataHeaderElement_p3
This class provides a persistent representation for the DataHeaderElement class.
Definition: DataHeader_p3.h:21
DataHeaderElement_p3::m_classIdIdx
unsigned short m_classIdIdx
Definition: DataHeader_p3.h:45
DataHeaderElement_p3::m_dbGuidIdx
unsigned short m_dbGuidIdx
Definition: DataHeader_p3.h:45
DataHeaderElement::m_pClid
CLID m_pClid
primary ClassID.
Definition: DataHeader.h:108
DataHeaderElement_p3::m_hashes
std::vector< uint64_t > m_hashes
Definition: DataHeader_p3.h:47
skel.it
it
Definition: skel.GENtoEVGEN.py:407
DataHeaderElement_p3::m_oid2
unsigned int m_oid2
Definition: DataHeader_p3.h:44
DataHeader_p3
This class provides a persistent representation for the DataHeader class.
Definition: DataHeader_p3.h:53
DataHeaderCnv_p3::m_elemCnv
DataHeaderElementCnv_p3 m_elemCnv
Definition: DataHeaderCnv_p3.h:48
DataHeaderCnv_p3::~DataHeaderCnv_p3
virtual ~DataHeaderCnv_p3()
Definition: DataHeaderCnv_p3.cxx:89
DataHeaderElement_p3::m_prefixIdx
unsigned short m_prefixIdx
Definition: DataHeader_p3.h:45
DataHeaderElement_p3::m_token
std::string m_token
Definition: DataHeader_p3.h:42
DataHeader_p3::m_DataHeader
std::vector< DataHeaderElement_p3 > m_DataHeader
Definition: DataHeader_p3.h:68
DataHeaderElement_p3::m_oid1
unsigned int m_oid1
Definition: DataHeader_p3.h:44
Token::fromString
Token & fromString(const std::string &from)
Build from the string representation of a token.
Definition: Token.cxx:148
DataHeaderElement
This class provides a persistent form for the TransientAddress.
Definition: DataHeader.h:37
DataHeader
This class provides the layout for summary information stored for data written to POOL.
Definition: DataHeader.h:126
DataHeaderElementCnv_p3::transToPers
void transToPers(const DataHeaderElement *trans, DataHeaderElement_p3 *pers, std::vector< std::string > &map)
Definition: DataHeaderCnv_p3.cxx:81
DataHeaderCnv_p3::insertDHRef
void insertDHRef(DataHeader_p3 *pers, const std::string &key, const std::string &token)
Definition: DataHeaderCnv_p3.cxx:110
DataHeaderCnv_p3.h
This file contains the class definition for the DataHeaderCnv_p3 and DataHeaderElementCnv_p3 classes.
DataHeaderCnv_p3::persToTrans
void persToTrans(const DataHeader_p3 *pers, DataHeader *trans)
Definition: DataHeaderCnv_p3.cxx:91
DataHeader.h
This file contains the class definition for the DataHeader and DataHeaderElement classes.
DataHeader::m_dataHeader
std::vector< DataHeaderElement > m_dataHeader
vector with DataHeaderElement to "DataObject".
Definition: DataHeader.h:212
DataHeaderElementCnv_p3::DataHeaderElementCnv_p3
DataHeaderElementCnv_p3()
Definition: DataHeaderCnv_p3.cxx:18
DataHeaderElement::m_hashes
std::vector< sgkey_t > m_hashes
hash table for ElementLink host container keys.
Definition: DataHeader.h:118
DataHeaderElement::m_clids
std::vector< CLID > m_clids
vector of unsigned long to store ClassID's for symlinked container.
Definition: DataHeader.h:110
DataHeaderElement_p3::m_technology
unsigned int m_technology
Definition: DataHeader_p3.h:44
DataHeaderElementCnv_p3::~DataHeaderElementCnv_p3
virtual ~DataHeaderElementCnv_p3()
Definition: DataHeaderCnv_p3.cxx:19
DataHeaderElement_p3::m_clids
std::vector< unsigned int > m_clids
Definition: DataHeader_p3.h:41
makeTransCanvas.text
text
Definition: makeTransCanvas.py:11
DataHeader_p3::m_GuidMap
std::vector< std::string > m_GuidMap
Definition: DataHeader_p3.h:70
DataHeaderElement_p3::m_keyPos
unsigned short m_keyPos
Definition: DataHeader_p3.h:46
DataHeaderCnv_p3::DataHeaderCnv_p3
DataHeaderCnv_p3()
Definition: DataHeaderCnv_p3.cxx:88
DataHeaderCnv_p3::transToPers
void transToPers(const DataHeader *trans, DataHeader_p3 *pers)
Definition: DataHeaderCnv_p3.cxx:106
DataHeaderElement_p3::m_alias
std::vector< std::string > m_alias
Definition: DataHeader_p3.h:43
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
DataHeader::m_inputDataHeader
std::vector< DataHeaderElement > m_inputDataHeader
vector with DataHeaderElement to upstream DataHeader ("Provenance").
Definition: DataHeader.h:214