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