ATLAS Offline Software
Functions
CoolTgc.cxx File Reference
#include "DataQualityUtils/CoolTgc.h"
#include "CoralBase/Attribute.h"
#include "CoolKernel/IDatabase.h"
#include "CoolKernel/IFolder.h"
#include "CoolKernel/IObjectIterator.h"
#include "CoolKernel/IObject.h"
#include "CoolKernel/Record.h"
#include "CoolKernel/Exception.h"
#include "CoolKernel/IDatabaseSvc.h"
#include "CoolKernel/StorageType.h"
#include "CoolKernel/ConstRecordAdapter.h"

Go to the source code of this file.

Functions

 ClassImp (dqutils::CoolTgc) namespace dqutils
 

Function Documentation

◆ ClassImp()

ClassImp ( dqutils::CoolTgc  )

Definition at line 26 of file CoolTgc.cxx.

28  {
29  cool::IDatabasePtr
30  CoolTgc::
31  coolDbInstance(const std::string& dbStr, bool readOnly) {
32  try {
33  std::cout << "Opening database '" << dbStr << "'...";
34  cool::IDatabaseSvc& dbSvc = this->databaseService();
35  std::cout << "done." << std::endl;
36  return dbSvc.openDatabase(dbStr.c_str(), readOnly);
37  }
38  catch (cool::DatabaseDoesNotExist&) {
39  std::cout << "Error! Database does not exist!" << std::endl;
40  throw;
41  }
42  }
43 
44  cool::IFolderPtr
45  CoolTgc::
46  coolFolderInstance(const std::string& folderStr) {
47  try {
48  cool::IFolderPtr folder = m_coolDb->getFolder(folderStr.c_str());
49  // std::cout << "Browsing objects of '" << folderStr << "'" << std::endl;
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
59  CoolTgc::coolDbFolder(const std::string& dbStr, const std::string& folderStr) {
60  m_coolDb = this->coolDbInstance(dbStr, false);
61  m_coolFolder = this->coolFolderInstance(folderStr);
62  }
63 
64  void
65  CoolTgc::
66  setSince(cool::Int64 run, cool::Int64 lumi) {
67  m_since = ((run << 32) + lumi);
68  }
69 
70  void
71  CoolTgc::
72  setUntil(cool::Int64 run, cool::Int64 lumi) {
73  m_until = ((run << 32) + lumi);
74  }
75 
76  void
77  CoolTgc::
78  setIOV(cool::Int64 runS, cool::Int64 lumiS, cool::Int64 runU, cool::Int64 lumiU) {
79  this->setSince(runS, lumiS);
80  this->setUntil(runU, lumiU);
81  this->printIOV();
82  }
83 
84  void
85  CoolTgc::
86  setIOV(cool::Int64 run) {
87  this->setSince(run, 0);
88  this->setUntil(run, 4294967295U);
89  this->printIOV();
90  }
91 
92  void
93  CoolTgc::
94  printIOV() {
95  cool::Int64 runS = m_since >> 32;
96  cool::Int64 lumiS = m_since - (runS << 32);
97  cool::Int64 runU = m_until >> 32;
98  cool::Int64 lumiU = m_until - (runU << 32);
99  std::cout << "Using IOVrange [(" << runS << "," << lumiS << "),(" << runU << "," << lumiU << ")] " << "[" <<
100  m_since << "," << m_until << "]" << std::endl;
101  }
102 
103  void
104  CoolTgc::
105  CoolOpen(const std::string& dbStr) {
106  m_coolDb = this->coolDbInstance(dbStr, false);
107  }
108 
109  CoolTgc::
110  ~CoolTgc () {
111  m_coolDb->closeDatabase();
112  std::cout << "Cleared!" << std::endl;
113  }
114 
115  cool::RecordSpecification
116  CoolTgc::
117  createSpecDataDead() {
118  //std::cout << "Preparing RecordSpecification" << std::endl;
119  cool::RecordSpecification spec;
120  spec.extend("Chamber_Name", cool::StorageType::String255);
121  spec.extend("Dead_multilayer", cool::StorageType::String255);
122  spec.extend("Dead_tube", cool::StorageType::String4k);
123 
124  m_coolFolder = this->coolFolderInstance("/OFFLINE/DQMFOFFLINE/DQMFOFFLINE_DEAD");
125  if (!(spec == m_coolFolder->payloadSpecification())) {
126  std::cout << "ERROR Source and destination folder specifications differ." << std::endl;
127  }
128  // std::cout << "CREATE DONE" << std::endl;
129  return spec;
130  }
131 
133  CoolTgc::
134  createPayloadDataDead(const std::string& ChamberName,
135  const std::string& DeadMultilayer,
136  const std::string& DeadTube,
137  const cool::RecordSpecification& spec) {
138  // std::cout << "createPayloadData "<< std::endl;
139 
140  coral::AttributeList payload = cool::Record(spec).attributeList();
141 
142  payload["Chamber_Name"].data<cool::String255>() = ChamberName;
143  payload["Dead_multilayer"].data<cool::String255>() = DeadMultilayer;
144  payload["Dead_tube"].data<cool::String4k>() = DeadTube;
145 
146  return payload;
147  }
148 
149  // noisy
150 
151  cool::RecordSpecification
152  CoolTgc::
153  createSpecDataNoisy() {
154  //std::cout << "Preparing RecordSpecification" << std::endl;
155  cool::RecordSpecification spec;
156  spec.extend("Chamber_Name", cool::StorageType::String255);
157  spec.extend("Noisy_multilayer", cool::StorageType::String255);
158  spec.extend("Noisy_tube", cool::StorageType::String4k);
159 
160  m_coolFolder = this->coolFolderInstance("/OFFLINE/DQMFOFFLINE/DQMFOFFLINE_NOISY");
161  if (!(spec == m_coolFolder->payloadSpecification())) {
162  std::cout << "ERROR Source and destination folder specifications differ." << std::endl;
163  }
164  // std::cout << "CREATE DONE" << std::endl;
165  return spec;
166  }
167 
169  CoolTgc::
170  createPayloadDataNoisy(const std::string& ChamberName,
171  const std::string& NoisyMultilayer,
172  const std::string& NoisyTube,
173  const cool::RecordSpecification& spec) {
174  // std::cout << "createPayloadData "<< std::endl;
175 
176  coral::AttributeList payload = cool::Record(spec).attributeList();
177 
178  payload["Chamber_Name"].data<cool::String255>() = ChamberName;
179  payload["Noisy_multilayer"].data<cool::String255>() = NoisyMultilayer;
180  payload["Noisy_tube"].data<cool::String4k>() = NoisyTube;
181 
182  return payload;
183  }
184 
185  //
186 
187 
188  void
189  CoolTgc::
190  dump(cool::ChannelSelection selection) {
191  try {
192  cool::IObjectIteratorPtr objects = m_coolFolder->browseObjects(m_since, m_until, selection, "");
193  while (objects->goToNext()) {
194  const cool::IObject& element = objects->currentRef();
195  std::cout << element << std::endl;
196  }
197  }
198  catch (cool::Exception& e) {
199  std::cout << "Unknown exception caught!" << e.what() << std::endl;
200  std::cout << " dentro create payload" << std::endl;
201  }
202  }
203 
204  std::string
205  CoolTgc::
206  dumpField(cool::ChannelId channelId, std::string field) {
207  std::string result = "";
208  try {
209  cool::ChannelSelection selection = cool::ChannelSelection(channelId);
210  cool::IObjectIteratorPtr objects = m_coolFolder->browseObjects(m_since, m_until, selection, "");
211  while (objects->goToNext()) {
212  const cool::IObject& element = objects->currentRef();
213  result = element.payloadValue(field);
214  }
215  }
216  catch (cool::Exception& e) {
217  std::cout << "Unknown exception caught!" << e.what() << std::endl;
218  }
219  return result;
220  }
221 
222  int
223  CoolTgc::
224  dumpCode(const std::string& channelName) {
225  std::string result = this->dumpField(this->getCoolFolder()->channelId(channelName.c_str()), "Code");
226  return atoi(result.c_str());
227  }
228 
229  void
230  CoolTgc::
231  dumpall() {
233  }
234 
235  void
236  CoolTgc::
237  insertDeadFlag_withTag(cool::Int64 run,
238  cool::ChannelId channelId,
239  const std::string& ChamberName,
240  const std::string& DeadMultilayer,
241  const std::string& DeadTube,
242  const std::string& cool_tag) {
243  try {
244  cool::RecordSpecification spec = this->createSpecDataDead();
245  coral::AttributeList payload = this->createPayloadDataDead(ChamberName, DeadMultilayer, DeadTube, spec);
246  cool::ValidityKey since_u = (run << 32);
247  cool::ValidityKey until_u = (run + 1) << 32;
248  m_coolFolder->storeObject(since_u, until_u, cool::Record(
249  m_coolFolder->payloadSpecification(), payload), channelId, cool_tag);
250  std::cout << "stored! With Tag =" << cool_tag << std::endl;
251  }
252  catch (cool::Exception& e) {
253  std::cout << " dentro create insert" << std::endl;
254  std::cout << "Unknown exception caught!" << e.what() << std::endl;
255  }
256  }
257 
258  void
259  CoolTgc::
260  insertDeadFlag(cool::Int64 run,
261  cool::ChannelId channelId,
262  const std::string& ChamberName,
263  const std::string& DeadMultilayer,
264  const std::string& DeadTube) {
265  std::cout << "Trying to store payload [channel " << std::endl;
266  try {
267  cool::RecordSpecification spec = this->createSpecDataDead();
268  coral::AttributeList payload = this->createPayloadDataDead(ChamberName, DeadMultilayer, DeadTube, spec);
269  cool::ValidityKey since_u = (run << 32);
270  cool::ValidityKey until_u = (run + 1) << 32;
271  m_coolFolder->storeObject(since_u, until_u, cool::Record(m_coolFolder->payloadSpecification(), payload),
272  channelId);
273  std::cout << "stored! without Tag" << std::endl;
274  }
275  catch (cool::Exception& e) {
276  std::cout << " dentro create insert" << std::endl;
277  std::cout << "Unknown exception caught!" << e.what() << std::endl;
278  }
279  }
280 
281  //
282 
283 
284 
285  void
286  CoolTgc::
287  insertNoisyFlag_withTag(cool::Int64 run,
288  cool::ChannelId channelId,
289  const std::string& ChamberName,
290  const std::string& NoisyMultilayer,
291  const std::string& NoisyTube,
292  const std::string& cool_tag) {
293  try {
294  cool::RecordSpecification spec = this->createSpecDataNoisy();
295  coral::AttributeList payload = this->createPayloadDataNoisy(ChamberName, NoisyMultilayer, NoisyTube, spec);
296  cool::ValidityKey since_u = (run << 32);
297  cool::ValidityKey until_u = (run + 1) << 32;
298  m_coolFolder->storeObject(since_u, until_u, cool::Record(
299  m_coolFolder->payloadSpecification(), payload), channelId, cool_tag);
300  std::cout << "stored! With Tag =" << cool_tag << std::endl;
301  }
302  catch (cool::Exception& e) {
303  std::cout << " dentro create insert" << std::endl;
304  std::cout << "Unknown exception caught!" << e.what() << std::endl;
305  }
306  }
307 
308  void
309  CoolTgc::
310  insertNoisyFlag(cool::Int64 run,
311  cool::ChannelId channelId,
312  const std::string& ChamberName,
313  const std::string& NoisyMultilayer,
314  const std::string& NoisyTube) {
315  std::cout << "Trying to store payload [channel " << std::endl;
316  try {
317  cool::RecordSpecification spec = this->createSpecDataNoisy();
318  coral::AttributeList payload = this->createPayloadDataNoisy(ChamberName, NoisyMultilayer, NoisyTube, spec);
319  cool::ValidityKey since_u = (run << 32);
320  cool::ValidityKey until_u = (run + 1) << 32;
321  m_coolFolder->storeObject(since_u, until_u, cool::Record(m_coolFolder->payloadSpecification(), payload),
322  channelId);
323  std::cout << "stored! without Tag" << std::endl;
324  }
325  catch (cool::Exception& e) {
326  std::cout << " dentro create insert" << std::endl;
327  std::cout << "Unknown exception caught!" << e.what() << std::endl;
328  }
329  }
330 
331  cool::IFolderPtr
332  CoolTgc::
333  getCoolFolder() {
334  return this->m_coolFolder;
335  }
336 
337  cool::IDatabasePtr
338  CoolTgc::
339  getCoolDb() {
340  return this->m_coolDb;
341  }
342 } //namespace dqutils
get_generator_info.result
result
Definition: get_generator_info.py:21
LArConditions2Ntuple.objects
objects
Definition: LArConditions2Ntuple.py:56
CaloCondBlobAlgs_fillNoiseFromASCII.spec
spec
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:47
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
CalibDbCompareRT.cool_tag
cool_tag
Definition: CalibDbCompareRT.py:12
run
Definition: run.py:1
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:122
selection
std::string selection
Definition: fbtTestBasics.cxx:73
CaloNoise_fillDB.dbSvc
dbSvc
Definition: CaloNoise_fillDB.py:108
PixelModuleFeMask_create_db.payload
string payload
Definition: PixelModuleFeMask_create_db.py:69
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
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
FourMomUtils::dump
std::ostream & dump(std::ostream &out, const I4MomIter iBeg, const I4MomIter iEnd)
Helper to stream out a range of I4Momentum objects.
Definition: P4Dumper.h:24