ATLAS Offline Software
Loading...
Searching...
No Matches
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
15#include <array>
16#include <utility>
17
18namespace dqi {
19
21DatabaseConfig(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
29void
32{
33 if(m_dbConnected) {
34 m_database->closeDatabase();
35 m_dbConnected = false;
36 m_folderConnected = false;
37 }
38}
39
40void
42Connect()
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
63nlohmann::json
65GetPayload(const std::string& tag)
66{
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
76nlohmann::json
78LoadPayload(const std::string& tag)
79{
80 nlohmann::json jsonData;
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
96bool
102
103long
105GetRunNumber() const
106{
107 return m_runNumber;
108}
109
110}
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
cool::IFolderPtr m_folder
nlohmann::json GetPayload(const std::string &tag)
DatabaseConfig(std::string connectionString, long runNumber)
cool::IDatabasePtr m_database
std::unordered_map< std::string, nlohmann::json > m_jsonData
const std::string m_connectionString
nlohmann::json LoadPayload(const std::string &tag)
STL namespace.