ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
DataQuality
DataQualityInterfaces
src
DatabaseConfig.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include <iostream>
6
#include <nlohmann/json.hpp>
7
8
#include "CoolApplication/DatabaseSvcFactory.h"
9
#include "CoolKernel/IDatabase.h"
10
#include "CoolKernel/IDatabaseSvc.h"
11
#include "CoolKernel/IObject.h"
12
#include "CoolKernel/IFolder.h"
13
14
#include "
DataQualityInterfaces/DatabaseConfig.h
"
15
#include <array>
16
#include <utility>
17
18
namespace
dqi
{
19
20
DatabaseConfig::
21
DatabaseConfig
(std::string connectionString,
long
runNumber)
22
:
m_connectionString
(
std
::move(connectionString))
23
,
m_runNumber
((runNumber << 32) + 1)
24
,
m_dbConnected
(false)
25
,
m_folderConnected
(false)
26
{
27
}
28
29
void
30
DatabaseConfig::
31
Disconnect
()
32
{
33
if
(
m_dbConnected
) {
34
m_database
->closeDatabase();
35
m_dbConnected
=
false
;
36
m_folderConnected
=
false
;
37
}
38
}
39
40
void
41
DatabaseConfig::
42
Connect
()
43
{
44
try
{
45
cool::IDatabaseSvc& dbSvc = cool::DatabaseSvcFactory::databaseService();
46
m_database
= dbSvc.openDatabase(
m_connectionString
,
true
);
47
48
}
catch
(std::exception& e) {
49
std::cerr <<
"Unable to open database -> "
<< e.what() <<
'\n'
;
50
return
;
51
}
52
m_dbConnected
=
true
;
53
try
{
54
m_folder
=
m_database
->getFolder(
"/GLOBAL/DQM/REFERENCES"
);
55
56
}
catch
(std::exception& e) {
57
std::cerr <<
"Unable loading folder for this tag/run-> "
<< e.what() <<
'\n'
;
58
return
;
59
}
60
m_folderConnected
=
true
;
61
}
62
63
nlohmann::json
64
DatabaseConfig::
65
GetPayload
(
const
std::string& tag)
66
{
67
if
(!
m_dbConnected
&& !
m_folderConnected
) {
68
Connect
();
69
}
70
if
(
m_jsonData
.find(tag) ==
m_jsonData
.end()) {
71
return
LoadPayload
(tag);
72
}
73
return
m_jsonData
.at(tag);
74
}
75
76
nlohmann::json
77
DatabaseConfig::
78
LoadPayload
(
const
std::string& tag)
79
{
80
nlohmann::json jsonData;
81
if
(
m_dbConnected
&&
m_folderConnected
) {
82
try
{
83
cool::IObjectPtr
object
=
m_folder
->findObject(
GetRunNumber
(), 1, tag);
84
85
std::string data =
object
->payloadValue(
"jsonData"
);
86
jsonData = nlohmann::json::parse(data);
87
m_jsonData
[tag] = jsonData;
88
89
}
catch
(std::exception& e) {
90
std::cerr <<
"Error: Failed loading payload for this tag/run-> "
<< e.what() <<
'\n'
;
91
}
92
}
93
return
jsonData;
94
}
95
96
bool
97
DatabaseConfig::
98
IsConnected
()
const
99
{
100
return
m_dbConnected
&&
m_folderConnected
;
101
}
102
103
long
104
DatabaseConfig::
105
GetRunNumber
()
const
106
{
107
return
m_runNumber
;
108
}
109
110
}
DatabaseConfig.h
dqi::DatabaseConfig::m_folder
cool::IFolderPtr m_folder
Definition
DatabaseConfig.h:32
dqi::DatabaseConfig::m_dbConnected
bool m_dbConnected
Definition
DatabaseConfig.h:28
dqi::DatabaseConfig::m_folderConnected
bool m_folderConnected
Definition
DatabaseConfig.h:29
dqi::DatabaseConfig::m_runNumber
const long m_runNumber
Definition
DatabaseConfig.h:26
dqi::DatabaseConfig::GetPayload
nlohmann::json GetPayload(const std::string &tag)
Definition
DatabaseConfig.cxx:65
dqi::DatabaseConfig::DatabaseConfig
DatabaseConfig(std::string connectionString, long runNumber)
Definition
DatabaseConfig.cxx:21
dqi::DatabaseConfig::m_database
cool::IDatabasePtr m_database
Definition
DatabaseConfig.h:33
dqi::DatabaseConfig::m_jsonData
std::unordered_map< std::string, nlohmann::json > m_jsonData
Definition
DatabaseConfig.h:31
dqi::DatabaseConfig::m_connectionString
const std::string m_connectionString
Definition
DatabaseConfig.h:25
dqi::DatabaseConfig::GetRunNumber
long GetRunNumber() const
Definition
DatabaseConfig.cxx:105
dqi::DatabaseConfig::Connect
void Connect()
Definition
DatabaseConfig.cxx:42
dqi::DatabaseConfig::Disconnect
void Disconnect()
Definition
DatabaseConfig.cxx:31
dqi::DatabaseConfig::LoadPayload
nlohmann::json LoadPayload(const std::string &tag)
Definition
DatabaseConfig.cxx:78
dqi::DatabaseConfig::IsConnected
bool IsConnected() const
Definition
DatabaseConfig.cxx:98
dqi
Definition
CompositeAlgorithm.h:16
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0