ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ReadLumiBlock Class Reference

Helper class to read in lumi block length info from COOL for a run. More...

#include <ReadLumiBlock.h>

Inheritance diagram for ReadLumiBlock:
Collaboration diagram for ReadLumiBlock:

Public Member Functions

 ReadLumiBlock ()
 Construct helper class for reading in lumi block length from COOL. More...
 
 ~ReadLumiBlock ()
 
bool updateLumiBlocks (uint32_t run, MsgStream &msg)
 Load information for. More...
 
float getLumiBlockLength (uint32_t lb, MsgStream &msg) const
 
void setConnectionCOOL (const std::string &id)
 Set which COOL instance to connect to (run1, run2) More...
 
bool getTriedSetup ()
 True when a connection attempt has been made. More...
 
cool::DatabaseId & cool_id ()
 Get reference to COOL database ID. More...
 
cool::IDatabasePtr & cool_ptr ()
 Get reference to COOL database ptr. More...
 
const std::string & cool_source () const
 Get name of COOL data source. More...
 
uint32_t getRun () const
 Get run number. More...
 

Private Member Functions

bool dbIsOpen ()
 Check if DB connection is open. More...
 
void closeDb (MsgStream &msg)
 Close DB connection. More...
 
bool openDb (bool readOnly, MsgStream &msg)
 Open a DB connection. More...
 

Private Attributes

std::map< uint32_t, uint64_t > m_lbLength
 
cool::DatabaseId m_cool_id
 
cool::DatabaseId m_cool_id_run1
 
cool::DatabaseId m_cool_id_run2
 
cool::IDatabasePtr m_cool_ptr
 
std::string m_cool_source
 
uint32_t m_run
 
bool m_triedSetup
 

Detailed Description

Helper class to read in lumi block length info from COOL for a run.

Definition at line 28 of file ReadLumiBlock.h.

Constructor & Destructor Documentation

◆ ReadLumiBlock()

ReadLumiBlock::ReadLumiBlock ( )

Construct helper class for reading in lumi block length from COOL.

Definition at line 26 of file ReadLumiBlock.cxx.

27  :m_cool_id(),
28  m_cool_id_run1("COOLONL_TRIGGER/COMP200"),
29  m_cool_id_run2("COOLONL_TRIGGER/CONDBR2"),
30  m_cool_source(),
31  m_run(0),
32  m_triedSetup(false)
33 {
34 }

◆ ~ReadLumiBlock()

ReadLumiBlock::~ReadLumiBlock ( )

Definition at line 37 of file ReadLumiBlock.cxx.

38 {
39 }

Member Function Documentation

◆ closeDb()

void ReadLumiBlock::closeDb ( MsgStream &  msg)
private

Close DB connection.

Definition at line 138 of file ReadLumiBlock.cxx.

139 {
140  try {
141  if(dbIsOpen()) {
142  msg << MSG::DEBUG << "ReadLumiBlock::closeDd - closing database '" << m_cool_id << endmsg;
143  m_cool_ptr->closeDatabase();
144  }
145  } catch(std::exception& e) {
146  msg << MSG::ERROR << "ReadLumiBlock::closeDB - COOL exception caught: " << e.what() << endmsg;
147  msg << MSG::ERROR << " could not close COOL database: " << m_cool_id << endmsg;
148  }
149  return;
150 }

◆ cool_id()

cool::DatabaseId& ReadLumiBlock::cool_id ( )
inline

Get reference to COOL database ID.

Definition at line 43 of file ReadLumiBlock.h.

◆ cool_ptr()

cool::IDatabasePtr& ReadLumiBlock::cool_ptr ( )
inline

Get reference to COOL database ptr.

Definition at line 44 of file ReadLumiBlock.h.

◆ cool_source()

const std::string& ReadLumiBlock::cool_source ( ) const
inline

Get name of COOL data source.

Definition at line 46 of file ReadLumiBlock.h.

◆ dbIsOpen()

bool ReadLumiBlock::dbIsOpen ( )
private

Check if DB connection is open.

Definition at line 113 of file ReadLumiBlock.cxx.

114 {
115  return m_cool_ptr.use_count() > 0 && m_cool_ptr->isOpen();
116 }

◆ getLumiBlockLength()

float ReadLumiBlock::getLumiBlockLength ( uint32_t  lb,
MsgStream &  msg 
) const
Returns
Length of lb

Definition at line 102 of file ReadLumiBlock.cxx.

103 {
104 
105  if (m_lbLength.count(lb) != 1) {
106  msg << MSG::INFO << "Unknown lumiblock number " << lb << endmsg;
107  return 60.0; // Sensible default
108  }
109  return m_lbLength.at(lb) * 1e-9; // Convert from ns
110 }

◆ getRun()

uint32_t ReadLumiBlock::getRun ( ) const
inline

Get run number.

Definition at line 48 of file ReadLumiBlock.h.

◆ getTriedSetup()

bool ReadLumiBlock::getTriedSetup ( )
inline

True when a connection attempt has been made.

Definition at line 41 of file ReadLumiBlock.h.

◆ openDb()

bool ReadLumiBlock::openDb ( bool  readOnly,
MsgStream &  msg 
)
private

Open a DB connection.

Definition at line 119 of file ReadLumiBlock.cxx.

120 {
121  if(dbIsOpen()) return true;
122 
123  try {
124  msg << MSG::DEBUG << "ReadLumiBlock::openDb - opening database '" << m_cool_id << "'" << endmsg;
125  m_cool_ptr = databaseService().openDatabase(m_cool_id, readOnly);
126 
127  return true;
128  } catch(cool::DatabaseDoesNotExist& e) {
129  msg << MSG::ERROR << "ReadLumiBlock::openDb - COOL exception caught: " << e.what() << endmsg;
130  msg << MSG::ERROR << " could not open database: " << m_cool_id << endmsg;
131  return false;
132  }
133 
134  return false;
135 }

◆ setConnectionCOOL()

void ReadLumiBlock::setConnectionCOOL ( const std::string &  id)
inline

Set which COOL instance to connect to (run1, run2)

Definition at line 40 of file ReadLumiBlock.h.

◆ updateLumiBlocks()

bool ReadLumiBlock::updateLumiBlocks ( uint32_t  run,
MsgStream &  msg 
)

Load information for.

Parameters
run

Definition at line 42 of file ReadLumiBlock.cxx.

43 {
44  //
45  // Read configuration keys from COOL
46  //
47  m_triedSetup = true;
48  m_cool_source.clear();
49  m_run = run;
50 
51  if (m_run < 238742) m_cool_id = m_cool_id_run1;
53 
54  cool::ValidityKey since(run);
55  cool::ValidityKey until(run);
56  cool::ValidityKey maskLB(0xffffffff);
57 
58  since <<= 32; // upper 31 bits are run number
59  until <<= 32; // upper 31 bits are run number
60  until += maskLB;
61 
62  if (!dbIsOpen()) {
63  if (!openDb(true, msg)) {
64  msg << MSG::FATAL << "updateLumiBlocks - failed to open DB... " << m_cool_id << endmsg;
65  return false;
66  }
67  }
68 
69  if (m_cool_ptr->existsFolder("/TRIGGER/LUMI/LBLB")) {
70 
71  msg << MSG::INFO << "ReadRunData - reading folder: /TRIGGER/LUMI/LBLB" << endmsg;
72 
73  cool::IFolderPtr folderLB = m_cool_ptr->getFolder("/TRIGGER/LUMI/LBLB");
74  cool::IObjectIteratorPtr objectsLB = folderLB->browseObjects(since, until, 0);
75 
76  while ( objectsLB -> goToNext() ) {
77  const cool::IObject &obj = objectsLB->currentRef();
78  const cool::IRecord &payload = obj.payload();
79  const uint32_t lumi = (obj.since() & 0xffff);
80 
81  const uint64_t start = payload["StartTime"].data<cool::UInt63>();
82  const uint64_t end = payload["EndTime"].data<cool::UInt63>();
83  const uint64_t length = end - start;
84 
86 
87  msg << MSG::DEBUG << " run=" << run
88  << " LB=" << lumi
89  << " Start=" << start
90  << " End=" << end
91  << " Length=" << length << endmsg;
92  }
93  } else {
94  msg << MSG::INFO << "ReadRunData - missing COOL folder: /TRIGGER/LUMI/LBLB in " << m_cool_id << endmsg;
95  }
96  // more lumi info can be got from http://acode-browser.usatlas.bnl.gov/lxr/source/atlas/Trigger/TrigCost/TrigCostRate/src/ReadCool.cxx
97 
98  closeDb(msg);
99  return true;
100 }

Member Data Documentation

◆ m_cool_id

cool::DatabaseId ReadLumiBlock::m_cool_id
private

Definition at line 60 of file ReadLumiBlock.h.

◆ m_cool_id_run1

cool::DatabaseId ReadLumiBlock::m_cool_id_run1
private

Definition at line 61 of file ReadLumiBlock.h.

◆ m_cool_id_run2

cool::DatabaseId ReadLumiBlock::m_cool_id_run2
private

Definition at line 62 of file ReadLumiBlock.h.

◆ m_cool_ptr

cool::IDatabasePtr ReadLumiBlock::m_cool_ptr
private

Definition at line 63 of file ReadLumiBlock.h.

◆ m_cool_source

std::string ReadLumiBlock::m_cool_source
private

Definition at line 65 of file ReadLumiBlock.h.

◆ m_lbLength

std::map<uint32_t, uint64_t> ReadLumiBlock::m_lbLength
private

Definition at line 58 of file ReadLumiBlock.h.

◆ m_run

uint32_t ReadLumiBlock::m_run
private

Definition at line 66 of file ReadLumiBlock.h.

◆ m_triedSetup

bool ReadLumiBlock::m_triedSetup
private

Definition at line 67 of file ReadLumiBlock.h.


The documentation for this class was generated from the following files:
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
run
int run(int argc, char *argv[])
Definition: ttree2hdf5.cxx:28
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
ReadLumiBlock::m_cool_source
std::string m_cool_source
Definition: ReadLumiBlock.h:65
dq_defect_copy_defect_database.since
def since
Definition: dq_defect_copy_defect_database.py:54
dq_defect_copy_defect_database.until
def until
Definition: dq_defect_copy_defect_database.py:55
ReadLumiBlock::m_run
uint32_t m_run
Definition: ReadLumiBlock.h:66
python.BunchSpacingUtils.lb
lb
Definition: BunchSpacingUtils.py:88
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ReadLumiBlock::m_cool_ptr
cool::IDatabasePtr m_cool_ptr
Definition: ReadLumiBlock.h:63
calibdata.exception
exception
Definition: calibdata.py:496
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ReadLumiBlock::openDb
bool openDb(bool readOnly, MsgStream &msg)
Open a DB connection.
Definition: ReadLumiBlock.cxx:119
run
Definition: run.py:1
ReadLumiBlock::m_cool_id
cool::DatabaseId m_cool_id
Definition: ReadLumiBlock.h:60
PixelModuleFeMask_create_db.payload
string payload
Definition: PixelModuleFeMask_create_db.py:69
ReadLumiBlock::closeDb
void closeDb(MsgStream &msg)
Close DB connection.
Definition: ReadLumiBlock.cxx:138
lumiFormat.lumi
lumi
Definition: lumiFormat.py:113
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
ReadLumiBlock::m_lbLength
std::map< uint32_t, uint64_t > m_lbLength
Definition: ReadLumiBlock.h:58
DEBUG
#define DEBUG
Definition: page_access.h:11
ReadLumiBlock::m_cool_id_run1
cool::DatabaseId m_cool_id_run1
Definition: ReadLumiBlock.h:61
ReadLumiBlock::dbIsOpen
bool dbIsOpen()
Check if DB connection is open.
Definition: ReadLumiBlock.cxx:113
python.PyAthena.obj
obj
Definition: PyAthena.py:135
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
ReadLumiBlock::m_cool_id_run2
cool::DatabaseId m_cool_id_run2
Definition: ReadLumiBlock.h:62
ReadLumiBlock::m_triedSetup
bool m_triedSetup
Definition: ReadLumiBlock.h:67