ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
TrigConf::TrigDBJobOptionsLoader Class Reference

Loader of trigger configurations from Json files. More...

#include <TrigDBJobOptionsLoader.h>

Inheritance diagram for TrigConf::TrigDBJobOptionsLoader:
Collaboration diagram for TrigConf::TrigDBJobOptionsLoader:

Public Member Functions

 TrigDBJobOptionsLoader (const std::string &connection)
 Constructor. More...
 
virtual ~TrigDBJobOptionsLoader () override
 Destructor - cannot be defined here because QueryDefinition is an incomplete type. More...
 
bool loadJobOptions (unsigned int smk, boost::property_tree::ptree &jobOptions, const std::string &outFileName="") const
 Load content from the Trigger DB into two ptrees for a given SuperMasterKey (SMK) More...
 
bool loadJobOptions (unsigned int smk, DataStructure &jobOptions, const std::string &outFileName="") const
 Load content from the Trigger DB into an L1Menu and an HLTMenu for a given SuperMasterKey (SMK) More...
 
size_t schemaVersion (coral::ISessionProxy *session) const
 access to TriggerDB schema version More...
 
bool writeRawFile (const coral::Blob &data, const std::string &outFileName) const
 write data blob into file This can be used to write the DB content to file without going through a ptree More...
 
void setLevel (MSGTC::Level lvl)
 
MSGTC::Level outputLevel () const
 
bool msgLvl (const MSGTC::Level lvl) const
 Test the output level. More...
 
MsgStreamTCmsg () const
 The standard message stream. More...
 
MsgStreamTCmsg (const MSGTC::Level lvl) const
 The standard message stream. More...
 

Protected Member Functions

std::unique_ptr< coral::ISessionProxy > createDBSession () const
 create (if needed) DB session and return the session proxy More...
 
QueryDefinition getQueryDefinition (size_t schemaVersion, const std::map< size_t, QueryDefinition > &queries) const
 return query for given schemaVersion from possible queries More...
 

Private Attributes

std::map< size_t, QueryDefinitionm_queries
 
std::string m_connection {"TRIGGERDB"}
 
int m_retrialPeriod {0}
 
int m_retrialTimeout {0}
 
int m_connectionTimeout {0}
 
boost::thread_specific_ptr< MsgStreamTCm_msg_tls
 MsgStreamTC instance (a std::cout like with print-out levels) More...
 
std::string m_name
 

Detailed Description

Loader of trigger configurations from Json files.

Definition at line 28 of file TrigDBJobOptionsLoader.h.

Constructor & Destructor Documentation

◆ TrigDBJobOptionsLoader()

TrigConf::TrigDBJobOptionsLoader::TrigDBJobOptionsLoader ( const std::string &  connection)

Constructor.

Definition at line 8 of file TrigDBJobOptionsLoader.cxx.

8  :
9  TrigDBLoader("TrigDBJobOptionsLoader", connection)
10 {
11  { // query for schema version 1
12  auto & q = m_queries[1];
13  // tables
14  q.addToTableList ( "SUPER_MASTER_TABLE", "SMT" );
15  q.addToTableList ( "JO_MASTER_TABLE", "JOMT" );
16  // bind vars
17  q.extendBinding<int>("smk");
18  // conditions
19  q.extendCondition("SMT.SMT_ID = :smk");
20  q.extendCondition(" AND SMT.SMT_JO_MASTER_TABLE_ID = JOMT.JO_ID");
21  // attributes
22  q.extendOutput<std::string>( "SMT.SMT_NAME" );
23  q.extendOutput<int> ( "SMT.SMT_JO_MASTER_TABLE_ID" );
24  q.extendOutput<coral::Blob>( "JOMT.JO_CONTENT" );
25  // the field with the data
26  q.setDataName("JOMT.JO_CONTENT");
27  }
28  { // query for schema version 2
29  auto & q = m_queries[2];
30  // tables
31  q.addToTableList ( "SUPER_MASTER_TABLE", "SMT" );
32  q.addToTableList ( "HLT_JOBOPTIONS", "HJO" );
33  // bind vars
34  q.extendBinding<int>("smk");
35  // conditions
36  q.extendCondition("SMT.SMT_ID = :smk");
37  q.extendCondition("AND HJO.HJO_ID=SMT.SMT_HLT_JOBOPTIONS_ID");
38  // attributes
39  q.extendOutput<std::string>( "SMT.SMT_NAME" );
40  q.extendOutput<int> ( "SMT.SMT_HLT_JOBOPTIONS_ID" );
41  q.extendOutput<coral::Blob>( "HJO.HJO_DATA" );
42  // the field with the data
43  q.setDataName("HJO.HJO_DATA");
44  }
45 }

◆ ~TrigDBJobOptionsLoader()

TrigConf::TrigDBJobOptionsLoader::~TrigDBJobOptionsLoader ( )
overridevirtualdefault

Destructor - cannot be defined here because QueryDefinition is an incomplete type.

Member Function Documentation

◆ createDBSession()

std::unique_ptr< coral::ISessionProxy > TrigConf::TrigDBLoader::createDBSession ( ) const
protectedinherited

create (if needed) DB session and return the session proxy

Definition at line 94 of file TrigDBLoader.cxx.

94  {
95 
96  coral::ConnectionService connSvc;
97  coral::IConnectionServiceConfiguration& csc = connSvc.configuration();
98  csc.setConnectionRetrialPeriod( m_retrialPeriod );
99  csc.setConnectionRetrialTimeOut( m_retrialTimeout );
100  csc.setConnectionTimeOut( m_connectionTimeout );
101 
102  /* TODO
103  if(csc.replicaSortingAlgorithm() == nullptr) { // likely to be standalone, create our own
104  TRG_MSG_INFO("Create own ReplicaSortingAlgorithm");
105  m_replicaSorter = new TrigConf::ReplicaSorter();
106  csc.setReplicaSortingAlgorithm(*m_replicaSorter);
107  }
108  */
109 
110  TRG_MSG_INFO("Connecting to " << m_connection);
111 
112  auto proxy = std::unique_ptr<coral::ISessionProxy>( connSvc.connect(m_connection, coral::AccessMode::ReadOnly) );
113 
114  TRG_MSG_INFO("Opened session " << m_connection << " with retrialPeriod/retrialTimeout/connectionTimeout: "
115  << m_retrialPeriod << "/" << m_retrialTimeout << "/" << m_connectionTimeout);
116 
117  return proxy;
118 }

◆ getQueryDefinition()

TrigConf::QueryDefinition TrigConf::TrigDBLoader::getQueryDefinition ( size_t  schemaVersion,
const std::map< size_t, QueryDefinition > &  queries 
) const
protectedinherited

return query for given schemaVersion from possible queries

Definition at line 122 of file TrigDBLoader.cxx.

124 {
125  // find the largest version key in the map of defined queries that is <= the schemaVersion
126  size_t maxDefVersion = 0;
127  for(auto & entry : queries) {
128  size_t vkey = entry.first;
129  if(vkey>maxDefVersion and vkey<=schemaVersion) {
130  maxDefVersion = vkey;
131  }
132  }
133  // if nothing found, throw an error
134  if( maxDefVersion==0 ) {
135  TRG_MSG_ERROR("No query for schema version " << schemaVersion << " defined" );
136  throw TrigConf::NoQueryException( "No query available for schema version" + std::to_string(schemaVersion) );
137  }
138  return queries.at(maxDefVersion);
139 }

◆ loadJobOptions() [1/2]

bool TrigConf::TrigDBJobOptionsLoader::loadJobOptions ( unsigned int  smk,
boost::property_tree::ptree jobOptions,
const std::string &  outFileName = "" 
) const

Load content from the Trigger DB into two ptrees for a given SuperMasterKey (SMK)

Parameters
smk[in] the SMK that should be loaded
jobOptions[out] the loaded job options

Definition at line 51 of file TrigDBJobOptionsLoader.cxx.

54 {
55  auto session = createDBSession();
56  session->transaction().start( /*bool readonly=*/ true);
57  const size_t sv = schemaVersion(session.get());
58  QueryDefinition qdef = getQueryDefinition(sv, m_queries);
59  try {
60  qdef.setBoundValue<int>("smk", smk);
61  auto q = qdef.createQuery( session.get() );
62  auto & cursor = q->execute();
63  if ( ! cursor.next() ) {
64  TRG_MSG_ERROR("Tried reading HLT job options, but SuperMasterKey " << smk << " is not available" );
65  throw TrigConf::NoSMKException("TrigDBJobOptionsLoader: SMK " + std::to_string(smk) + " not available");
66  }
67  const coral::AttributeList& row = cursor.currentRow();
68  const coral::Blob& dataBlob = row[qdef.dataName()].data<coral::Blob>();
69  writeRawFile( dataBlob, outFileName );
70  blobToPtree( dataBlob, jobOptions );
71  }
72  catch(coral::QueryException & ex) {
73  TRG_MSG_ERROR("When reading HLT job options for SMK " << smk << " a coral::QueryException was caught ( " << ex.what() <<" )" );
74  throw TrigConf::QueryException("TrigDBJobOptionsLoader: " + std::string(ex.what()));
75  }
76  return true;
77 }

◆ loadJobOptions() [2/2]

bool TrigConf::TrigDBJobOptionsLoader::loadJobOptions ( unsigned int  smk,
DataStructure jobOptions,
const std::string &  outFileName = "" 
) const

Load content from the Trigger DB into an L1Menu and an HLTMenu for a given SuperMasterKey (SMK)

Parameters
smk[in] the SMK that should be loaded
jobOptions[out] the loaded job options

Definition at line 81 of file TrigDBJobOptionsLoader.cxx.

84 {
85 
86  boost::property_tree::ptree ptJobOptions;
87  loadJobOptions( smk, ptJobOptions, outFileName );
88  try {
89  jobOptions.setData(std::move(ptJobOptions));
90  }
91  catch(std::exception & ex) {
92  jobOptions.clear();
93  TRG_MSG_ERROR("When reading HLT job options for SMK " << smk << " a parsing error occured ( " << ex.what() <<" )" );
94  throw TrigConf::ParsingException("TrigDBJobOptionsLoader: parsing error " + std::string(ex.what()));
95  }
96  return true;
97 }

◆ msg() [1/2]

MsgStreamTC & TrigConf::TrigConfMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 81 of file TrigConfMessaging.h.

82  {
83  MsgStreamTC* ms = m_msg_tls.get();
84  if (!ms) {
85  ms = new MsgStreamTC(m_name);
86  m_msg_tls.reset(ms);
87  }
88  return *ms;
89  }

◆ msg() [2/2]

MsgStreamTC & TrigConf::TrigConfMessaging::msg ( const MSGTC::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 91 of file TrigConfMessaging.h.

92  {
93  return msg() << lvl;
94  }

◆ msgLvl()

bool TrigConf::TrigConfMessaging::msgLvl ( const MSGTC::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicting if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 70 of file TrigConfMessaging.h.

71  {
72  if (msg().level() <= lvl) {
73  msg() << lvl;
74  return true;
75  }
76  else {
77  return false;
78  }
79  }

◆ outputLevel()

MSGTC::Level TrigConf::TrigDBLoader::outputLevel ( ) const
inlineinherited

Definition at line 54 of file TrigDBLoader.h.

54 { return msg().level(); }

◆ schemaVersion()

size_t TrigConf::TrigDBLoader::schemaVersion ( coral::ISessionProxy *  session) const
inherited

access to TriggerDB schema version

Returns
version of the DB schema (0 - no version, >0 - schema version)

Definition at line 38 of file TrigDBLoader.cxx.

38  {
39 
40  static const std::string versionTagPrefix("Trigger-Run3-Schema-v");
41 
42  // if database has no schema version, then we return 0
43  if(! session->nominalSchema().existsTable("TRIGGER_SCHEMA") ) {
44  throw std::runtime_error( "Trigger schema has no schema version table" );
45  }
46 
48  // tables
49  qdef.addToTableList ( "TRIGGER_SCHEMA" );
50  // attributes
51  qdef.extendOutput<std::string>( "TS_TAG" );
52 
53  auto query = qdef.createQuery( session );
54  auto & cursor = query->execute();
55  if ( ! cursor.next() ) {
56  throw std::runtime_error( "Trigger schema has schema version table but it is empty" );
57  }
58 
59  const coral::AttributeList& row = cursor.currentRow();
60  std::string versionTag = row["TS_TAG"].data<std::string>();
61  if( ! startswith(versionTag, versionTagPrefix)) {
62  throw std::runtime_error( "Tag format error: Trigger schema version tag " + versionTag + "does not start with " + versionTagPrefix);
63  }
64 
65  std::string vstr = versionTag.substr(versionTagPrefix.size()); // the part of the string containing the version
66  size_t schemaVersion{0};
67  try {
68  schemaVersion = std::stoi(vstr);
69  }
70  catch (const std::invalid_argument& ia) {
71  TRG_MSG_ERROR("Invalid argument when interpreting the version part " << vstr << " of schema tag " << versionTag << ". " << ia.what());
72  throw;
73  }
74 
75  TRG_MSG_INFO("TriggerDB schema version: " << schemaVersion);
76  return schemaVersion;
77 }

◆ setLevel()

void TrigConf::TrigDBLoader::setLevel ( MSGTC::Level  lvl)
inlineinherited

Definition at line 52 of file TrigDBLoader.h.

52 { msg().setLevel(lvl); }

◆ writeRawFile()

bool TrigConf::TrigDBLoader::writeRawFile ( const coral::Blob &  data,
const std::string &  outFileName 
) const
inherited

write data blob into file This can be used to write the DB content to file without going through a ptree

Definition at line 80 of file TrigDBLoader.cxx.

81 {
82  if( outFileName.empty() ) {
83  return true;
84  }
85  std::ofstream outFile;
86  outFile.open( outFileName, std::ofstream::binary );
87  outFile.write( static_cast<const char*> ( data.startingAddress()), data.size() );
88  outFile.close();
89  TRG_MSG_INFO("Wrote file " << outFileName);
90  return true;
91 }

Member Data Documentation

◆ m_connection

std::string TrigConf::TrigDBLoader::m_connection {"TRIGGERDB"}
privateinherited

Definition at line 68 of file TrigDBLoader.h.

◆ m_connectionTimeout

int TrigConf::TrigDBLoader::m_connectionTimeout {0}
privateinherited

Definition at line 71 of file TrigDBLoader.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStreamTC> TrigConf::TrigConfMessaging::m_msg_tls
mutableprivateinherited

MsgStreamTC instance (a std::cout like with print-out levels)

Definition at line 66 of file TrigConfMessaging.h.

◆ m_name

std::string TrigConf::TrigConfMessaging::m_name
privateinherited

Definition at line 67 of file TrigConfMessaging.h.

◆ m_queries

std::map<size_t, QueryDefinition> TrigConf::TrigDBJobOptionsLoader::m_queries
private

Definition at line 55 of file TrigDBJobOptionsLoader.h.

◆ m_retrialPeriod

int TrigConf::TrigDBLoader::m_retrialPeriod {0}
privateinherited

Definition at line 69 of file TrigDBLoader.h.

◆ m_retrialTimeout

int TrigConf::TrigDBLoader::m_retrialTimeout {0}
privateinherited

Definition at line 70 of file TrigDBLoader.h.


The documentation for this class was generated from the following files:
TRG_MSG_ERROR
#define TRG_MSG_ERROR(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:29
query_example.row
row
Definition: query_example.py:24
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
TrigConf::TrigConfMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStreamTC > m_msg_tls
MsgStreamTC instance (a std::cout like with print-out levels)
Definition: TrigConfMessaging.h:66
RunEBWeightsComputation.smk
smk
Definition: RunEBWeightsComputation.py:87
TrigConf::NoSMKException
Definition: Trigger/TrigConfiguration/TrigConfIO/TrigConfIO/Exceptions.h:31
TrigConf::TrigDBLoader::schemaVersion
size_t schemaVersion(coral::ISessionProxy *session) const
access to TriggerDB schema version
Definition: TrigDBLoader.cxx:38
TrigConf::TrigDBLoader::m_connection
std::string m_connection
Definition: TrigDBLoader.h:68
TrigConf::TrigDBJobOptionsLoader::m_queries
std::map< size_t, QueryDefinition > m_queries
Definition: TrigDBJobOptionsLoader.h:55
python.subdetectors.tile.Blob
Blob
Definition: tile.py:17
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
TrigConf::QueryDefinition
Definition: TrigDBHelper.h:28
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
TrigConf::QueryDefinition::extendOutput
void extendOutput(const std::string &fieldName)
Definition: TrigDBHelper.h:65
query
Definition: query.py:1
jobOptions
Definition: jobOptions.CompareGeomDBSources.py:1
DumpGeoConfig.outFileName
string outFileName
Definition: DumpGeoConfig.py:252
TrigConf::TrigConfMessaging::m_name
std::string m_name
Definition: TrigConfMessaging.h:67
TrigConf::TrigConfMessaging::msg
MsgStreamTC & msg() const
The standard message stream.
Definition: TrigConfMessaging.h:81
calibdata.exception
exception
Definition: calibdata.py:496
TrigConf::MsgStreamTC::level
MSGTC::Level level()
Return message level of stream.
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:53
TrigConf::QueryDefinition::createQuery
std::unique_ptr< coral::IQuery > createQuery(coral::ISessionProxy *session)
Definition: TrigDBHelper.cxx:10
TrigConf::NoQueryException
Definition: Trigger/TrigConfiguration/TrigConfIO/TrigConfIO/Exceptions.h:26
TRG_MSG_INFO
#define TRG_MSG_INFO(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:27
DQPostProcessTest.outFile
outFile
Comment Out Those You do not wish to run.
Definition: DQPostProcessTest.py:37
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
TrigConf::TrigDBLoader::m_retrialTimeout
int m_retrialTimeout
Definition: TrigDBLoader.h:70
TrigConf::TrigDBLoader::m_connectionTimeout
int m_connectionTimeout
Definition: TrigDBLoader.h:71
TrigConf::ParsingException
Definition: Trigger/TrigConfiguration/TrigConfIO/TrigConfIO/Exceptions.h:51
ptree
boost::property_tree::ptree ptree
Definition: JsonFileLoader.cxx:16
TrigConf::QueryException
Definition: Trigger/TrigConfiguration/TrigConfIO/TrigConfIO/Exceptions.h:21
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
TrigConf::TrigDBLoader::m_retrialPeriod
int m_retrialPeriod
Definition: TrigDBLoader.h:69
query_example.cursor
cursor
Definition: query_example.py:21
TrigConf::blobToPtree
void blobToPtree(const coral::Blob &blob, boost::property_tree::ptree &pt)
Definition: TrigDBHelper.cxx:58
TrigConf::TrigDBJobOptionsLoader::loadJobOptions
bool loadJobOptions(unsigned int smk, boost::property_tree::ptree &jobOptions, const std::string &outFileName="") const
Load content from the Trigger DB into two ptrees for a given SuperMasterKey (SMK)
Definition: TrigDBJobOptionsLoader.cxx:51
LArCellConditions.sv
bool sv
Definition: LArCellConditions.py:45
TrigConf::TrigDBLoader::writeRawFile
bool writeRawFile(const coral::Blob &data, const std::string &outFileName) const
write data blob into file This can be used to write the DB content to file without going through a pt...
Definition: TrigDBLoader.cxx:80
extractSporadic.q
list q
Definition: extractSporadic.py:98
TrigConf::MsgStreamTC::setLevel
void setLevel(MSGTC::Level lvl)
Set message level of stream.
Definition: Trigger/TrigConfiguration/TrigConfBase/Root/MsgStream.cxx:52
TrigConf::TrigDBLoader::createDBSession
std::unique_ptr< coral::ISessionProxy > createDBSession() const
create (if needed) DB session and return the session proxy
Definition: TrigDBLoader.cxx:94
TrigConf::QueryDefinition::addToTableList
void addToTableList(const std::string &table, const std::string &table_short="")
Definition: TrigDBHelper.cxx:42
TrigConf::TrigDBLoader::getQueryDefinition
QueryDefinition getQueryDefinition(size_t schemaVersion, const std::map< size_t, QueryDefinition > &queries) const
return query for given schemaVersion from possible queries
Definition: TrigDBLoader.cxx:122
TrigConf::TrigDBLoader::TrigDBLoader
TrigDBLoader(const std::string &loaderName, const std::string &connection)
Constructor.
Definition: TrigDBLoader.cxx:21