ATLAS Offline Software
DataHeader_p5.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include "CxxUtils/MD5.h"
8 
9 #include <uuid/uuid.h>
10 #include<type_traits>
11 #include <sstream>
12 
13 
17 
18 DataHeaderElement_p5::DataHeaderElement_p5() : m_token(), m_oid2(0U) {}
19 
20 const std::string& DataHeaderElement_p5::token() const {
21  return(m_token);
22 }
23 
24 long long int DataHeaderElement_p5::oid2() const {
25  return(m_oid2);
26 }
27 
28 
29 DataHeaderForm_p5::DataHeaderForm_p5() : m_map(), m_uints() {}
30 
31 const std::vector<std::string>& DataHeaderForm_p5::map() const {
32  return(m_map);
33 }
34 
35 void DataHeaderForm_p5::insertMap(const std::string& element) {
36  m_map.push_back(element);
37 }
38 
39 const std::vector<unsigned int>& DataHeaderForm_p5::params(unsigned int entry) const {
40  return(m_uints[entry - 1]);
41 }
42 
43 void DataHeaderForm_p5::insertParam(unsigned int param, unsigned int entry) {
44  m_uints[entry - 1].push_back(param);
45 }
46 
47 unsigned int DataHeaderForm_p5::size() const {
48  return(m_uints.size());
49 }
50 
51 void DataHeaderForm_p5::resize(unsigned int size) {
52  m_uints.resize(size);
53 }
54 
55 
56 DataHeader_p5::DataHeader_p5() : m_dataHeader(), m_dhFormToken(), m_dhFormMdx() {}
57 
58 const std::vector<DataHeaderElement_p5>& DataHeader_p5::elements() const {
59  return(m_dataHeader);
60 }
61 
62 const std::string& DataHeader_p5::dhFormToken() const {
63  return(m_dhFormToken);
64 }
65 
66 void DataHeader_p5::setDhFormToken(const std::string& formToken,
67  const DataHeaderForm_p5& dhForm)
68 {
69  m_dhFormToken = formToken;
70  std::ostringstream stream;
71  for (const std::string& s : dhForm.map()) {
72  stream << s << "\n";
73  }
74  for (unsigned int entry = 1; entry <= dhForm.size(); ++entry) {
75  for (unsigned int x : dhForm.params(entry)) {
76  stream << x << ",";
77  }
78  stream << "\n";
79  }
80  MD5 checkSum((unsigned char*)stream.str().c_str(), stream.str().size());
81  uuid_t checkSumUuid;
82  checkSum.raw_digest((unsigned char*)(&checkSumUuid));
83  char text[37];
84  uuid_unparse_upper(checkSumUuid, text);
85  m_dhFormMdx = text;
86 }
87 const std::string& DataHeader_p5::dhFormMdx() const {
88  return(m_dhFormMdx);
89 }
DataHeaderForm_p5::m_uints
std::vector< std::vector< unsigned int > > m_uints
Definition: DataHeader_p5.h:53
DataHeaderElement_p5::token
const std::string & token() const
Definition: DataHeader_p5.cxx:20
DataHeaderElement_p5::m_token
std::string m_token
Definition: DataHeader_p5.h:31
DataHeader_p5::m_dhFormToken
std::string m_dhFormToken
Definition: DataHeader_p5.h:73
DataHeader_p5::dhFormMdx
const std::string & dhFormMdx() const
Definition: DataHeader_p5.cxx:87
DataHeaderForm_p5
This class provides storage for the constant fields of the persistent DataHeader class.
Definition: DataHeader_p5.h:38
DataHeaderForm_p5::m_map
std::vector< std::string > m_map
Definition: DataHeader_p5.h:52
athena.value
value
Definition: athena.py:124
DataHeaderForm_p5::map
const std::vector< std::string > & map() const
Definition: DataHeader_p5.cxx:31
DataHeaderForm_p5::resize
void resize(unsigned int size)
Definition: DataHeader_p5.cxx:51
x
#define x
MD5::raw_digest
void raw_digest(unsigned char *s) const
Definition: MD5.cxx:82
AthenaPoolTestWrite.stream
string stream
Definition: AthenaPoolTestWrite.py:12
MD5.h
solar's public-domain MD5, wrapped for C++.
DataHeaderElement_p5::oid2
long long int oid2() const
Definition: DataHeader_p5.cxx:24
DataHeader_p5::dhFormToken
const std::string & dhFormToken() const
Definition: DataHeader_p5.cxx:62
DataHeaderForm_p5::params
const std::vector< unsigned int > & params(unsigned int entry) const
Definition: DataHeader_p5.cxx:39
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
DataHeader_p5::elements
const std::vector< DataHeaderElement_p5 > & elements() const
Definition: DataHeader_p5.cxx:58
DataHeader_p5::m_dataHeader
std::vector< DataHeaderElement_p5 > m_dataHeader
Definition: DataHeader_p5.h:72
DataHeaderForm_p5::size
unsigned int size() const
Definition: DataHeader_p5.cxx:47
DataHeader_p5::setDhFormToken
void setDhFormToken(const std::string &formToken, const DataHeaderForm_p5 &dhForm)
Definition: DataHeader_p5.cxx:66
DataHeader_p5.h
This file contains the class definition for the DataHeader_p5, DataHeaderForm_p5 and DataHeaderElemen...
DataHeaderElement_p5::m_oid2
long long int m_oid2
Definition: DataHeader_p5.h:32
MD5
Definition: MD5.h:20
DataHeaderForm_p5::insertMap
void insertMap(const std::string &element)
Definition: DataHeader_p5.cxx:35
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
DataHeaderForm_p5::DataHeaderForm_p5
DataHeaderForm_p5()
Definition: DataHeader_p5.cxx:29
DataHeaderForm_p5::insertParam
void insertParam(unsigned int param, unsigned int entry)
Definition: DataHeader_p5.cxx:43
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
makeTransCanvas.text
text
Definition: makeTransCanvas.py:11
DataHeader_p5::DataHeader_p5
DataHeader_p5()
Definition: DataHeader_p5.cxx:56
DataHeader_p5::m_dhFormMdx
std::string m_dhFormMdx
Definition: DataHeader_p5.h:74
DataHeaderElement_p5::DataHeaderElement_p5
DataHeaderElement_p5()
Definition: DataHeader_p5.cxx:18