ATLAS Offline Software
StatusFlagCOOLBase.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 // **********************************************************************
6 // $Id: StatusFlagCOOLBase.cxx,v 1.6 2009-02-13 12:32:11 ponyisi Exp $
7 // **********************************************************************
8 
10 
11 //CORAL API include files
12 #include "CoralBase/Attribute.h"
13 
14 //COOL API include files (CoolKernel)
15 #include "CoolKernel/IDatabase.h"
16 #include "CoolKernel/IFolder.h"
17 #include "CoolKernel/IObjectIterator.h"
18 #include "CoolKernel/IObject.h"
19 #include "CoolKernel/Record.h"
20 #include "CoolKernel/Exception.h"
21 #include "CoolKernel/IDatabaseSvc.h"
22 #include "CoolKernel/StorageType.h"
23 #include "CoolKernel/ConstRecordAdapter.h"
24 
26 
27 namespace dqutils {
28  cool::IDatabasePtr
30  coolDbInstance(const std::string& dbStr, bool readOnly) {
31  try {
32  std::cout << "Opening database '" << dbStr << "'...";
33  cool::IDatabaseSvc& dbSvc = this->databaseService();
34  std::cout << "done." << std::endl;
35  return dbSvc.openDatabase(dbStr.c_str(), readOnly);
36  }
37  catch (cool::DatabaseDoesNotExist&) {
38  std::cout << "Error! Database does not exist!" << std::endl;
39  throw;
40  }
41  }
42 
43  cool::IFolderPtr
45  coolFolderInstance(const std::string& folderStr) {
46  try {
47  cool::IFolderPtr folder = m_coolDb->getFolder(folderStr.c_str());
48  std::cout << "Browsing objects of '" << folderStr << "'" << std::endl;
49  //folder->setupStorageBuffer();
50  return folder;
51  }
52  catch (cool::FolderNotFound&) {
53  std::cout << "Error! Folder '" << folderStr << "' does not exist!" << std::endl;
54  throw;
55  }
56  }
57 
58  void
60  setSince(cool::Int64 run, cool::Int64 lumi) {
61  m_since = ((run << 32) + lumi);
62  }
63 
64  void
66  setUntil(cool::Int64 run, cool::Int64 lumi) {
67  m_until = ((run << 32) + lumi);
68  }
69 
70  void
72  setIOV(cool::Int64 runS, cool::Int64 lumiS, cool::Int64 runU, cool::Int64 lumiU) {
73  this->setSince(runS, lumiS);
74  this->setUntil(runU, lumiU);
75  //this->printIOV();
76  }
77 
78  void
80  setIOV(cool::Int64 run) {
81  this->setSince(run, 0);
82  this->setUntil(run, cool::UInt32Max);
83  //this->printIOV();
84  }
85 
86  void
88  printIOV() {
89  cool::Int64 runS = m_since >> 32;
90  cool::Int64 lumiS = m_since - (runS << 32);
91  cool::Int64 runU = m_until >> 32;
92  cool::Int64 lumiU = m_until - (runU << 32);
93  std::cout << "Using IOVrange [(" << runS << "," << lumiS << "),(" << runU << "," << lumiU << ")[ " << "[" <<
94  m_since << "," << m_until << "[" << std::endl;
95  }
96 
97  void
99  flush() {
100  //m_coolFolder->flushStorageBuffer();
101  }
102 
103  void
105  Initialize(const std::string& dbStr, const std::string& folderStr, int runS, int lumiS, int runU, int lumiU) {
106  m_coolDb = this->coolDbInstance(dbStr, false);
107  m_coolFolder = this->coolFolderInstance(folderStr);
108  this->setIOV(runS, lumiS, runU, lumiU);
109  }
110 
112  StatusFlagCOOLBase (const std::string& dbStr, const std::string& folderStr, int runS, int lumiS, int runU,
113  int lumiU) {
114  Initialize(dbStr, folderStr, runS, lumiS, runU, lumiU);
115  }
116 
118  StatusFlagCOOLBase(int runS, int lumiS, int runU, int lumiU) {
119  Initialize("COOLOFL_GLOBAL/OFLP200", "/GLOBAL/DETSTATUS/SHIFTOFL",
120  runS, lumiS, runU, lumiU);
121  }
122 
125  Initialize("COOLOFL_GLOBAL/OFLP200", "/GLOBAL/DETSTATUS/SHIFTOFL",
126  0, 0, 0, 0);
127  }
128 
131  //m_coolFolder->flushStorageBuffer();
132  m_coolDb->closeDatabase();
133  std::cout << "Cleared!" << std::endl;
134  }
135 
136  void
138  dump(cool::ChannelSelection selection, std::string tag_name) {
139  try {
140  cool::IObjectIteratorPtr objects = m_coolFolder->browseObjects(m_since, m_until - 1, selection, tag_name);
141  while (objects->goToNext()) {
142  const cool::IObject& element = objects->currentRef();
143  std::cout << element << std::endl;
144  }
145  }
146  catch (cool::Exception& e) {
147  std::cout << "Unknown exception caught!" << e.what() << std::endl;
148  }
149  }
150 
151  std::string
153  dumpField(cool::ChannelId channelId, std::string field, std::string tag_name) {
154  std::string result = "";
155  try {
156  cool::ChannelSelection selection = cool::ChannelSelection(channelId);
157  cool::IObjectIteratorPtr objects = m_coolFolder->browseObjects(m_since, m_until - 1, selection, tag_name);
158  while (objects->goToNext()) {
159  const cool::IObject& element = objects->currentRef();
160  result = element.payloadValue(field);
161  }
162  }
163  catch (cool::Exception& e) {
164  std::cout << "Unknown exception caught!" << e.what() << std::endl;
165  }
166  return result;
167  }
168 
169  int
171  dumpCode(const std::string& channelName, const std::string& tag_name) {
172  std::string result = this->dumpField(this->getCoolFolder()->channelId(channelName.c_str()), "Code", tag_name);
173  if (result == "") {
174  return INT_MAX;
175  } else {
176  return atoi(result.c_str());
177  }
178  }
179 
180  void
182  dumpall(const std::string& tag_name) {
183  this->dump(cool::ChannelSelection::all(), tag_name);
184  }
185 
186  void
189  const std::string& tag_name) {
190  cool::ConstRecordAdapter record(m_coolFolder->payloadSpecification(), payload);
191  if (tag_name == "HEAD") {
192  m_coolFolder->storeObject(m_since, m_until, cool::Record(m_coolFolder->payloadSpecification(), payload),
193  channelId);
194  } else {
195  m_coolFolder->storeObject(m_since, m_until, cool::Record(
196  m_coolFolder->payloadSpecification(), payload), channelId, tag_name, true);
197  }
198  }
199 
200  cool::IFolderPtr
202  getCoolFolder() {
203  return this->m_coolFolder;
204  }
205 
206  cool::IDatabasePtr
208  getCoolDb() {
209  return this->m_coolDb;
210  }
211 } //namespace dqutils
dqutils::StatusFlagCOOLBase
Definition: StatusFlagCOOLBase.h:51
get_generator_info.result
result
Definition: get_generator_info.py:21
dqutils::StatusFlagCOOLBase::m_coolFolder
cool::IFolderPtr m_coolFolder
Definition: StatusFlagCOOLBase.h:59
LArConditions2Ntuple.objects
objects
Definition: LArConditions2Ntuple.py:56
dqutils::StatusFlagCOOLBase::getCoolDb
cool::IDatabasePtr getCoolDb()
dqutils::StatusFlagCOOLBase::coolDbInstance
cool::IDatabasePtr coolDbInstance(const std::string &dbStr, bool readOnly)
dqutils::StatusFlagCOOLBase::flush
void flush()
ClassImp
ClassImp(dqutils::StatusFlagCOOLBase) namespace dqutils
Definition: StatusFlagCOOLBase.cxx:25
dqutils::StatusFlagCOOLBase::dump
void dump(cool::ChannelSelection selection, std::string tag_name)
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
dqutils::StatusFlagCOOLBase::dumpField
std::string dumpField(cool::ChannelId channelId, std::string field, std::string tag_name)
dqutils::StatusFlagCOOLBase::coolFolderInstance
cool::IFolderPtr coolFolderInstance(const std::string &folderStr)
dqutils::StatusFlagCOOLBase::m_coolDb
cool::IDatabasePtr m_coolDb
Definition: StatusFlagCOOLBase.h:58
StatusFlagCOOLBase.h
dqutils::StatusFlagCOOLBase::StatusFlagCOOLBase
StatusFlagCOOLBase()
dqutils::StatusFlagCOOLBase::getCoolFolder
cool::IFolderPtr getCoolFolder()
run
Definition: run.py:1
dqutils::StatusFlagCOOLBase::m_since
cool::ValidityKey m_since
Definition: StatusFlagCOOLBase.h:56
dqutils
Definition: CoolMdt.h:76
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:122
selection
std::string selection
Definition: fbtTestBasics.cxx:73
dqutils::StatusFlagCOOLBase::insert_helper
void insert_helper(cool::ChannelId channelId, coral::AttributeList &payload, const std::string &tag_name)
CaloNoise_fillDB.dbSvc
dbSvc
Definition: CaloNoise_fillDB.py:108
dqutils::StatusFlagCOOLBase::~StatusFlagCOOLBase
virtual ~StatusFlagCOOLBase()
dqutils::StatusFlagCOOLBase::dumpCode
int dumpCode(const std::string &channelName, const std::string &tag_name)
dqutils::StatusFlagCOOLBase::m_until
cool::ValidityKey m_until
Definition: StatusFlagCOOLBase.h:57
PixelModuleFeMask_create_db.payload
string payload
Definition: PixelModuleFeMask_create_db.py:69
dqutils::StatusFlagCOOLBase::setUntil
void setUntil(cool::Int64 run, cool::Int64 lumi)
dqutils::StatusFlagCOOLBase::Initialize
void Initialize(const std::string &dbStr, const std::string &folderStr, int runS, int lumiS, int runU, int lumiU)
Cut::all
@ all
Definition: SUSYToolsAlg.cxx:64
lumiFormat.lumi
lumi
Definition: lumiFormat.py:113
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
dqutils::StatusFlagCOOLBase::setSince
void setSince(cool::Int64 run, cool::Int64 lumi)
dqutils::StatusFlagCOOLBase::setIOV
void setIOV(cool::Int64 runS, cool::Int64 lumiS, cool::Int64 runU, cool::Int64 lumiU)
dqutils::StatusFlagCOOLBase::printIOV
void printIOV()
CaloCondBlobAlgs_fillNoiseFromASCII.folder
folder
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:56
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
dqutils::StatusFlagCOOLBase::dumpall
void dumpall(const std::string &tag_name)