ATLAS Offline Software
CoolQuery.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef COOLQUERY_H
6 #define COOLQUERY_H
7 
8 // Cool access
9 #include "CoolKernel/Exception.h"
10 #include "CoolKernel/FolderSpecification.h"
11 #include "CoolKernel/IDatabaseSvc.h"
12 #include "CoolKernel/IDatabase.h"
13 #include "CoolKernel/IFolder.h"
14 #include "CoolKernel/IFolderSet.h"
15 #include "CoolKernel/IObject.h"
16 #include "CoolKernel/IObjectIterator.h"
17 #include "CoolKernel/pointers.h"
18 #include "CoolApplication/DatabaseSvcFactory.h"
19 #include "LumiCalc/ReplicaSorter.h"
20 
21 #include "RelationalAccess/IConnectionServiceConfiguration.h"
22 #include "RelationalAccess/ConnectionService.h"
23 #include "RelationalAccess/ISessionProxy.h"
24 #include "RelationalAccess/ITransaction.h"
25 #include "RelationalAccess/ISchema.h"
26 #include "RelationalAccess/ITable.h"
27 #include "RelationalAccess/IQuery.h"
28 #include "RelationalAccess/ICursor.h"
29 
30 // Need this to keep other packages from failing, should be fixed properly
32 
33 // LumiBlock includes
36 #include "AthenaKernel/IOVRange.h"
37 #include "AthenaKernel/IOVTime.h"
38 
39 // stl includes
40 #include <iomanip>
41 #include <iostream>
42 #include <string>
43 #include <vector>
44 #include <map>
45 
46 // logger
48 
49 //================================================
50 // Simple class to hold
51 
52 // Simple class to hold IOV-based data efficiently
53 template <class T>
54 class IOVData {
55 
56  public:
57  IOVData() {
58  clear();
59  }
60 
62  clear();
63  }
64 
65  IOVData (const IOVData&) = default;
66  IOVData (IOVData&&) = default;
67  IOVData& operator= (const IOVData&) = default;
68  IOVData& operator= (IOVData&&) = default;
69 
70  void clear() {
71  data.clear();
72  m_last = data.begin();
73  m_lastData = false;
74  }
75 
76  // Main access function, returns value at specific time
78 
79  // Useful for LAr calculation, returns list of IOV-data pairs which intersect given range
80  typename std::list<std::pair<IOVRange, T > > getOverlap(const IOVRange& range);
81 
82  // Insert element
83  void add(IOVRange range, T val);
84 
85  // Data list
86  typename std::list<std::pair<IOVRange, T > > data;
87 
88  private:
89  bool m_lastData;
90 
91  // Cant use a map as IOVRange objects have no order
92  typename std::list<std::pair<IOVRange, T > >::iterator m_last;
93 
94 };
95 
96 template <class T>
98  data.push_back(std::pair<IOVRange, T>(range, val));
99  m_last = data.begin();
100  m_lastData = false;
101 }
102 
103 template <class T>
105 
106  // bool verbose = false;
107  // if (verbose) {
108  // cout << endl << "getValue(" << time << ")" << endl;
109  // cout << "Data Size: " << data.size() << endl;
110  // }
111 
112  if (data.empty()) return T(-1);
113 
114  typename std::list<std::pair<IOVRange, T> >::iterator it;
115 
116  // if (verbose) {
117  // for (it = data.begin(); it != data.end(); it++)
118  // cout << "(" << it->first << ", " << it->second << ")" << endl;
119  // cout << "Last is valid - " << m_lastData << endl;
120  // }
121 
122  // Check if previous value is still good
123  if (m_lastData) {
124  // if (verbose) {
125  // cout << "Check previous " << m_last->first << endl;
126  // }
127 
128  if ((m_last->first).isInRange(time)) return m_last->second;
129 
130  // Previous not good, try next as best guess
131  if (++(m_last) != data.end()) {
132  // if (verbose) cout << "Check next " << m_last->first << endl;
133  if ((m_last->first).isInRange(time)) return m_last->second;
134  }
135  } else {
136  m_last = data.begin();
137  }
138 
139  m_lastData = false;
140 
141  // OK, suck it up and find the best value by stepping through entire list
142  // Make sure we start on a valid value
143  if ( m_last == data.end() ) --m_last;
144 
145  // Step forward looking for a match
146  if (m_last->first.stop() <= time) {
147 
148  // if (verbose) cout << "Search upwards" << endl;
149  for (++m_last; m_last != data.end(); ++m_last) {
150  // if (verbose) cout << m_last->first << endl;
151  if ((m_lastData = (m_last->first).isInRange(time))) return m_last->second;
152  }
153 
154  } else if ( m_last != data.begin() && m_last->first.start() > time) {
155 
156  // if (verbose) cout << "Search downwards" << endl;
157  do {
158  --m_last;
159  // if (verbose) cout << m_last->first << endl;
160  if ((m_lastData = (m_last->first).isInRange(time))) return m_last->second;
161  } while (m_last != data.begin());
162 
163  } else {
164 
165  if ((m_lastData = m_last->first.isInRange(time))) return m_last->second;
166 
167  }
168 
169  // Set to valid data if we didn't find anything
170  m_last = data.begin();
171  m_lastData = false;
172 
173  // If we got to here, we didn't find it
174  return T(-1);
175 }
176 
177 template <class T>
178 std::list<std::pair<IOVRange, T> > IOVData<T>::getOverlap(const IOVRange& range) {
179 
180  std::list<std::pair<IOVRange, T> > mydata;
181  mydata.clear();
182 
183  // Find first time
184  IOVTime firsttime = range.start();
185  IOVTime lasttime = range.stop();
186 
187  // Use this to efficiently set the 'm_last' pointer
188  getValue(firsttime);
189 
190  // Pointer to found element
191  typename std::list<std::pair<IOVRange, T> >::iterator elem;
192 
193  std::pair<IOVRange, T> val;
194 
195  // Loop over elements
196  for (elem = m_last; elem != data.end(); ++elem) {
197 
198  val = *elem;
199 
200  // Truncate this if necessary
201  if (val.first.start() < firsttime || val.first.stop() > lasttime) {
202  IOVTime iovstart((val.first.start() < firsttime ? firsttime : val.first.start()));
203  IOVTime iovstop((val.first.stop() > lasttime ? lasttime : val.first.stop()));
204  val.first = IOVRange(iovstart, iovstop);
205  }
206  mydata.push_back(val);
207 
208  // Check if we are done
209  if (elem->first.isInRange(lasttime)) break;
210  }
211 
212  return mydata;
213 }
214 
215 /***************************************
216  * This class serves as a common engine
217  * for Cool Query by fetching
218  * up basic values from COOL for a single
219  * trigger chain, trigger db and lumi db
220  ****************************************/
221 
222 class CoolQuery{
223  public:
224 
225  // constructor
226  CoolQuery(const std::string& database, const std::string& triggerchain);
227 
228  // destructor
229  ~CoolQuery();
230 
231  // Set trigger database
232  void setDb(const std::string& database){m_database = database;}
233 
234  // Set trigger
235  void setTrigger(const std::string& triggerchain){m_triggerchain = triggerchain;}
236 
237 
238  // Opens database connection
239  bool openDbConn();
240 
241  // set the "central" IOV range to this time (presumable this comes from some LumiBlockCollection's IOVRange
242  // but one in general can create one such object via e.g.:
243  //
244  // * iovc = new LumiBlockCollection();
245  // iovc->push_back(new IOVRange(IOVTime(runnumber, LBstart), IOVTime(runnumber,LBend)));
246  // LumiBlockCollection::const_iterator i = iovc->begin();
247  //
248  // then use it via
249  //
250  // mycoolquery->setIOV(iovr->start().re_time(), iovr->stop().re_time());
251  //
252  void setIOV(const cool::ValidityKey start, const cool::ValidityKey stop);
253 
254  void setIOVForRun(unsigned int runnum);
255 
256  // returns HLT channelId of trigger "trigger" in folder "folder_name"
257  cool::ChannelId getHLTChannelId(const std::string& trigger, const std::string& folder_name);
258 
259  // returns L1 channelId of trigger "trigger" in folder "folder_name"
260  cool::ChannelId getL1ChannelId(const std::string& trigger, const std::string& folder_name);
261 
262  // returns Lumi channelId for lumimethod in folder_name
263  cool::ChannelId getLumiChannelId(const std::string& lumimethod, const std::string& folder_name);
264 
265  // utility to indicate whether ChannelID returned by any of the above is valid
266  bool channelIdValid();
267 
268  // returns "LowerChainName" of "trigger" in "folder_name" folder
269  std::string getHLTLowerChainName(const std::string& trigger, const std::string& folder_name);
270 
271  // handy function to get quickly prescale
272  cool::Int32 getL1PrescaleFromChannelId(const std::string& folder_name, const cool::ChannelId& id );
273 
274  // handy function to get quickly prescale
275  cool::Float getHLTPrescaleFromChannelId(const std::string& folder_name, const cool::ChannelId& id );
276 
277  // Print list of triggers
278  void printL1Triggers(const std::string& folder_name);
279  void printHLTTriggers(const std::string& folder_name);
280 
281  // note this is mainly for trigger dependent variables, counters, prescales, etc.
282  template <class T>
283  std::map<cool::ValidityKey, T> getObjMapFromFolderAtChan(const std::string& obj_name, const std::string& folder_name, const cool::ChannelId& id);
284 
285  template <class T>
286  std::map<cool::ValidityKey, T> getTrigObjMapFromFolderByName(const std::string& obj_name, const std::string& folder_name, const std::string& trigger);
287 
288  // same but giving an (unordered) map with IOVRange key
289  // template <class T>
290  // unordered_map<IOVRange, T> getTrigObjMapFromFolderByNameIOV(const std::string& obj_name, const std::string& folder_name, const std::string& trigger);
291 
292  template <class T>
293  std::map<cool::ValidityKey, T> getLumiIterator(const std::string& luminame, const std::string& folder_name, const std::string& tag, const cool::ChannelId& id );
294 
295  // returns numerical 1/2/3 values for trigger "triggername"
296  unsigned int getTriggerLevel(const std::string& triggername);
297 
298  // Retrieve all lumi data at once
299  struct LumiFolderData {
300  float LBAvInstLumi;
301  float LBAvEvtsPerBX;
302  cool::UInt32 Valid;
304  };
305 
306  std::map<cool::ValidityKey, LumiFolderData>
307  getLumiFolderData(const std::string& folder_name, const std::string& tag, const cool::ChannelId& id );
308 
309  // Retrieve all L1 counter data at once
310  struct L1CountFolderData {
311  cool::UInt63 BeforePrescale;
312  cool::UInt63 AfterPrescale;
313  cool::UInt63 L1Accept; // After L1 veto
314  };
315 
316  std::map<cool::ValidityKey, L1CountFolderData>
317  getL1CountFolderData(const std::string& folder_name, const cool::ChannelId& id);
318 
319  // Retrieve prescale data into cached data object
320  template <class T>
321  IOVData<T> getIOVData(const std::string& name, const std::string& folder_name, const cool::ChannelId& id, const std::string& tag="");
322 
323  private:
324  std::string transConn(const std::string& inconn);
325 
326  coral::ConnectionService m_coralsvc;
328  cool::IDatabasePtr m_sourceDbPtr;
329  std::string m_database;
330  std::string m_triggerchain;
331  cool::ValidityKey m_VKstart;
332  cool::ValidityKey m_VKstop;
333 
335 
336  bool m_valid;
337 };
338 
339 /* template <class T> */
340 /* unordered_map<IOVRange, T> CoolQuery::getTrigObjMapFromFolderByNameIOV(const std::string& obj_name, const std::string& folder_name, const std::string& trigger){ */
341 /* unordered_map<IOVRange, T> test; */
342 /* return test; */
343 
344 /* } */
345 
346 
347 
348 //===========================================================================
349 template <class T>
350 std::map<cool::ValidityKey, T> CoolQuery::getTrigObjMapFromFolderByName(const std::string& obj_name, const std::string& folder_name, const std::string& trigger){
351  // m_logger << Root::kWARNING << "Getting object [" << obj_name << "] from folder [" << folder_name << "], in LB range: " << (m_VKstart >> 32) << ", " << (m_VKstart & 0xFFFFFFFF) << " - " << (m_VKstop >> 32) << ","<< (m_VKstop & 0xFFFFFFFF) << Root::GEndl;
352  std::map<cool::ValidityKey, T> mymap;
353  bool found = false;
354  cool::IFolderPtr folder_ptr = m_sourceDbPtr->getFolder(folder_name);
355  cool::IObjectIteratorPtr obj_itr=folder_ptr->browseObjects(m_VKstart,m_VKstart, cool::ChannelSelection::all());
356  // loop through all triggers
357  while (obj_itr->goToNext()){
358 
359  const cool::IRecord& payload=obj_itr->currentRef().payload();
360  // std::cout << "ChainNames: " << payload["ChainName"].data<std::string>() << std::endl;
361 
362  if(payload["ChainName"].data<std::string>() == trigger){
363  found = true;
364  const cool::IRecord& payload=obj_itr->currentRef().payload();
365  // std::cout << "Inserting: " << (obj_itr->currentRef().since() >> 32) << " - " << (obj_itr->currentRef().since() & 0xFFFFFF) << ", " << payload[obj_name].data<T>() << std::endl;
366  mymap.insert( std::pair<cool::ValidityKey, T>(obj_itr->currentRef().since() ,payload[obj_name].data<T>()));
367  }
368  }
369 
370  if(!found){
371  m_logger << Root::kERROR << "Couldn't find HLT trigger [" << trigger << "] in folder [" << folder_name << "]" << Root::GEndl;
372  }
373 
374  return mymap;
375 }
376 
377 
378 //===========================================================================
379 template <class T>
380 std::map<cool::ValidityKey, T> CoolQuery::getObjMapFromFolderAtChan(const std::string& obj_name, const std::string& folder_name, const cool::ChannelId& id){
381  // m_logger << Root::kWARNING << "Getting object [" << obj_name << "] from folder [" << folder_name << "], in channel: " << id << ", in LB range: " << (m_VKstart >> 32) << ", " << (m_VKstart & 0xFFFFFFFF) << " - " << (m_VKstop >> 32) << ","<< (m_VKstop & 0xFFFFFFFF) << Root::GEndl;
382  std::map<cool::ValidityKey, T> mymap;
383  cool::IFolderPtr folder_ptr = m_sourceDbPtr->getFolder(folder_name);
384  cool::ChannelSelection chsel(id);
385  if(folder_ptr->existsChannel(id)){
386  cool::IObjectIteratorPtr itr = folder_ptr->browseObjects(m_VKstart, m_VKstop,chsel);
387  while (itr->goToNext()) {
388  const cool::IRecord& payload=itr->currentRef().payload();
389  // std::cout << "Inserting: " << (itr->currentRef().since() >> 32) << " - " << (itr->currentRef().since() & 0xFFFFFF) << ", " << payload[obj_name].data<T>() << std::endl;
390  mymap.insert( std::pair<cool::ValidityKey, T>(itr->currentRef().since() ,payload[obj_name].data<T>()));
391  }
392  }else{
393  m_logger << Root::kWARNING << "Channel " << id << " does not exist in database." << Root::GEndl;
394 /* const std::map<cool::ChannelId,std::string> list = folder_ptr->listChannelsWithNames(); */
395  }
396  return mymap;
397 }
398 
399 
400 //===========================================================================
401 template <class T>
402 std::map<cool::ValidityKey, T> CoolQuery::getLumiIterator(const std::string& luminame, const std::string& folder_name, const std::string& tag, const cool::ChannelId& id ){
403 
404  std::map<cool::ValidityKey, T> mymap;
405  cool::IFolderPtr folder_ptr = m_sourceDbPtr->getFolder(folder_name);
406  // m_logger << Root::kWARNING << "Getting from database " << m_database << " tag " << tag << Root::GEndl;
407  if(folder_ptr->existsChannel(id) && folder_ptr->existsUserTag(tag)){
408  cool::IObjectIteratorPtr itr = folder_ptr->browseObjects(m_VKstart, m_VKstop, id, tag);
409  while (itr->goToNext()) {
410  const cool::IRecord& payload=itr->currentRef().payload();
411  mymap.insert( std::pair<cool::ValidityKey, T>(itr->currentRef().since() ,payload[luminame].data<T>()));
412  }
413  }else if(folder_ptr->existsChannel(id) && !folder_ptr->existsUserTag(tag)){
414  // ok, tag doesn't exist, still try to use an untagged way of accessing data
415  mymap = CoolQuery::getObjMapFromFolderAtChan<T>(luminame, folder_name,id);
416  }else{
417  m_logger << Root::kWARNING << "Lumi tag " << tag << " does not exist, or Lumi channel id " << id << " does not exist in database." << Root::GEndl;
418  }
419  return mymap;
420 
421 }
422 
423 //===========================================================================
424 template <class T>
426 CoolQuery::getIOVData(const std::string& obj_name, const std::string& folder_name, const cool::ChannelId& id, const std::string& tag) {
427 
428  IOVData<T> mydata;
429 
430  cool::IFolderPtr folder_ptr = m_sourceDbPtr->getFolder(folder_name);
431  cool::ChannelSelection chsel(id);
432  if(!folder_ptr->existsChannel(id)){
433  m_logger << Root::kWARNING << "Channel " << id << " does not exist in database " << folder_name << "!" << Root::GEndl;
434  return mydata;
435  }
436 
437  // Try with or without tag
438  cool::IObjectIteratorPtr itr;
439  if (folder_ptr->existsUserTag(tag)) {
440  itr = folder_ptr->browseObjects(m_VKstart, m_VKstop, id, tag);
441  } else {
442  itr = folder_ptr->browseObjects(m_VKstart, m_VKstop, id);
443  }
444 
445  while (itr->goToNext()) {
447  since.setRETime(itr->currentRef().since());
448  until.setRETime(itr->currentRef().until());
449 
451 
452  const cool::IRecord& payload=itr->currentRef().payload();
453 
454  mydata.add( range, payload[obj_name].data<T>() );
455  }
456 
457  return mydata;
458 }
459 
460 
461 
462 #endif //> COOLQUERY_H
463 
464 
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
CoolQuery::m_logger
Root::TMsgLogger m_logger
Definition: CoolQuery.h:339
python.utils.AtlRunQueryDQUtils.runnum
runnum
Definition: AtlRunQueryDQUtils.py:213
CoolQuery::LumiFolderData
Definition: CoolQuery.h:304
CoolQuery::m_database
std::string m_database
Definition: CoolQuery.h:334
CoolQuery::m_triggerchain
std::string m_triggerchain
Definition: CoolQuery.h:335
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
Root::kWARNING
@ kWARNING
Definition: TMsgLogger.h:51
ReplicaSorter.h
IOVRange
Validity Range object. Holds two IOVTimes (start and stop)
Definition: IOVRange.h:30
IOVData::m_last
std::list< std::pair< IOVRange, T > >::iterator m_last
Definition: CoolQuery.h:92
CoolQuery::LumiFolderData::LBAvInstLumi
float LBAvInstLumi
Definition: CoolQuery.h:305
IOVRange.h
Validity Range object. Holds two IOVTime instances (start and stop)
CoolQuery::m_VKstop
cool::ValidityKey m_VKstop
Definition: CoolQuery.h:337
CoolQuery::CoolQuery
CoolQuery(const std::string &database, const std::string &triggerchain)
Definition: CoolQuery.cxx:9
IOVData
Definition: CoolQuery.h:54
CoolQuery::getLumiFolderData
std::map< cool::ValidityKey, LumiFolderData > getLumiFolderData(const std::string &folder_name, const std::string &tag, const cool::ChannelId &id)
Definition: CoolQuery.cxx:290
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:13
CoolQuery::getHLTLowerChainName
std::string getHLTLowerChainName(const std::string &trigger, const std::string &folder_name)
Definition: CoolQuery.cxx:256
CoolQuery::setIOVForRun
void setIOVForRun(unsigned int runnum)
Definition: CoolQuery.cxx:101
skel.it
it
Definition: skel.GENtoEVGEN.py:407
CoolQuery::L1CountFolderData::AfterPrescale
cool::UInt63 AfterPrescale
Definition: CoolQuery.h:317
python.getProblemFolderFromLogs.elem
elem
Definition: getProblemFolderFromLogs.py:90
CoolQuery::getL1PrescaleFromChannelId
cool::Int32 getL1PrescaleFromChannelId(const std::string &folder_name, const cool::ChannelId &id)
Definition: CoolQuery.cxx:107
CoolQuery::getTrigObjMapFromFolderByName
std::map< cool::ValidityKey, T > getTrigObjMapFromFolderByName(const std::string &obj_name, const std::string &folder_name, const std::string &trigger)
Definition: CoolQuery.h:350
LumiBlockCollection.h
CoolQuery::L1CountFolderData::BeforePrescale
cool::UInt63 BeforePrescale
Definition: CoolQuery.h:316
Root::kERROR
@ kERROR
Definition: TMsgLogger.h:52
PixelModuleFeMask_create_db.stop
int stop
Definition: PixelModuleFeMask_create_db.py:76
GEndl
#define GEndl
Definition: TMsgLogger.h:152
CoolQuery::setDb
void setDb(const std::string &database)
Definition: CoolQuery.h:237
IOVTime.h
Basic time unit for IOVSvc. Hold time as a combination of run and event numbers.
dq_defect_copy_defect_database.since
def since
Definition: dq_defect_copy_defect_database.py:54
IOVData::IOVData
IOVData(IOVData &&)=default
CoolQuery::getL1CountFolderData
std::map< cool::ValidityKey, L1CountFolderData > getL1CountFolderData(const std::string &folder_name, const cool::ChannelId &id)
Definition: CoolQuery.cxx:324
dq_defect_copy_defect_database.until
def until
Definition: dq_defect_copy_defect_database.py:55
CoolQuery::transConn
std::string transConn(const std::string &inconn)
Definition: CoolQuery.cxx:68
IOVTime
Basic time unit for IOVSvc. Hold time as a combination of run and event numbers.
Definition: IOVTime.h:33
CoolQuery::getLumiIterator
std::map< cool::ValidityKey, T > getLumiIterator(const std::string &luminame, const std::string &folder_name, const std::string &tag, const cool::ChannelId &id)
Definition: CoolQuery.h:402
CoolQuery::m_coralsvc
coral::ConnectionService m_coralsvc
Definition: CoolQuery.h:331
CoolQuery::getLumiChannelId
cool::ChannelId getLumiChannelId(const std::string &lumimethod, const std::string &folder_name)
Definition: CoolQuery.cxx:170
CoolQuery::L1CountFolderData::L1Accept
cool::UInt63 L1Accept
Definition: CoolQuery.h:318
CoolQuery
Definition: CoolQuery.h:222
python.subdetectors.mmg.database
database
Definition: mmg.py:6
CoolQuery::~CoolQuery
~CoolQuery()
Definition: CoolQuery.cxx:22
IOVData::IOVData
IOVData(const IOVData &)=default
IOVData::clear
void clear()
Definition: CoolQuery.h:70
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
CoolQuery::m_valid
bool m_valid
Definition: CoolQuery.h:341
IOVData::add
void add(IOVRange range, T val)
Definition: CoolQuery.h:97
CoolQuery::getObjMapFromFolderAtChan
std::map< cool::ValidityKey, T > getObjMapFromFolderAtChan(const std::string &obj_name, const std::string &folder_name, const cool::ChannelId &id)
Definition: CoolQuery.h:380
CoolQuery::LumiFolderData::Valid
cool::UInt32 Valid
Definition: CoolQuery.h:307
CoolQuery::printHLTTriggers
void printHLTTriggers(const std::string &folder_name)
Definition: CoolQuery.cxx:235
CoolQuery::setTrigger
void setTrigger(const std::string &triggerchain)
Definition: CoolQuery.h:240
CoolQuery::getIOVData
IOVData< T > getIOVData(const std::string &name, const std::string &folder_name, const cool::ChannelId &id, const std::string &tag="")
Definition: CoolQuery.h:426
CoolQuery::getHLTChannelId
cool::ChannelId getHLTChannelId(const std::string &trigger, const std::string &folder_name)
Definition: CoolQuery.cxx:191
CoolQuery::LumiFolderData::LBAvEvtsPerBX
float LBAvEvtsPerBX
Definition: CoolQuery.h:306
CoolQuery::channelIdValid
bool channelIdValid()
Definition: CoolQuery.cxx:250
CoolQuery::setIOV
void setIOV(const cool::ValidityKey start, const cool::ValidityKey stop)
Definition: CoolQuery.cxx:96
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
IOVData::IOVData
IOVData()
Definition: CoolQuery.h:57
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
IOVData::m_lastData
bool m_lastData
Definition: CoolQuery.h:89
Cut::all
@ all
Definition: SUSYToolsAlg.cxx:67
PixelModuleFeMask_create_db.payload
string payload
Definition: PixelModuleFeMask_create_db.py:69
CoolQuery::printL1Triggers
void printL1Triggers(const std::string &folder_name)
Definition: CoolQuery.cxx:221
CoolQuery::m_sourceDbPtr
cool::IDatabasePtr m_sourceDbPtr
Definition: CoolQuery.h:333
IOVData::data
std::list< std::pair< IOVRange, T > > data
Definition: CoolQuery.h:86
CoolQuery::openDbConn
bool openDbConn()
Definition: CoolQuery.cxx:30
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
LumiBlockRangeContainer.h
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
IOVData::operator=
IOVData & operator=(const IOVData &)=default
TMsgLogger.h
CoolQuery::m_repsort
ReplicaSorter * m_repsort
Definition: CoolQuery.h:332
CoolQuery::getHLTPrescaleFromChannelId
cool::Float getHLTPrescaleFromChannelId(const std::string &folder_name, const cool::ChannelId &id)
Definition: CoolQuery.cxx:123
IOVData::~IOVData
~IOVData()
Definition: CoolQuery.h:61
IOVData::getValue
T getValue(IOVTime time)
Definition: CoolQuery.h:104
IOVData::getOverlap
std::list< std::pair< IOVRange, T > > getOverlap(const IOVRange &range)
Definition: CoolQuery.h:178
CoolQuery::LumiFolderData::LumiFolderData
LumiFolderData()
Definition: CoolQuery.h:308
Root::TMsgLogger
Definition: TMsgLogger.h:52
CoolQuery::L1CountFolderData
Definition: CoolQuery.h:315
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:23
CoolQuery::m_VKstart
cool::ValidityKey m_VKstart
Definition: CoolQuery.h:336
LumiBlockRangeAuxContainer.h
ReplicaSorter
Definition: Database/CoolConvUtilities/src/ReplicaSorter.h:12
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
CoolQuery::getTriggerLevel
unsigned int getTriggerLevel(const std::string &triggername)
Definition: CoolQuery.cxx:79
CoolQuery::getL1ChannelId
cool::ChannelId getL1ChannelId(const std::string &trigger, const std::string &folder_name)
Definition: CoolQuery.cxx:139