ATLAS Offline Software
Loading...
Searching...
No Matches
TrigConf::CaloInfoLoader Class Reference

TriggerDB loader of the LVL1 calorimeter trigger configuration. More...

#include <CaloInfoLoader.h>

Inheritance diagram for TrigConf::CaloInfoLoader:
Collaboration diagram for TrigConf::CaloInfoLoader:

Public Member Functions

 CaloInfoLoader (StorageMgr &sm, coral::ISessionProxy &session)
 constructor
virtual ~CaloInfoLoader () override=default
 destructor
virtual bool load (CaloInfo &data) override
virtual void setLevel (MSGTC::Level lvl) override
 access to output stream
virtual MSGTC::Level outputLevel () const override
void startSession ()
 start session if not already active
void commitSession ()
 commit session if not already done
bool loadL1MasterKey (int SuperMasterKey, int &Lvl1MasterKey)
 get l1 master from super master
bool loadL1MenuKey (int SuperMasterKey, int &Lvl1MenuKey)
 get l1 menu id from super master
unsigned int triggerDBSchemaVersion ()
virtual int verbose () const override
virtual void setVerbose (int v) override
bool isRun1 ()
bool isRun2 ()
bool msgLvl (const MSGTC::Level lvl) const
 Test the output level.
MsgStreamTCmsg () const
 The standard message stream.
MsgStreamTCmsg (const MSGTC::Level lvl) const
 The standard message stream.
const std::string & getName () const
 name accessor

Protected Attributes

StorageMgrm_storageMgr
 reference to the storage manager
coral::ISessionProxy & m_session
 CORAL interface to database session.
bool m_sessionOwner {false}
 remember if the loader started the session in the first place

Private Member Functions

void loadMinTobInfo (CaloInfo &data, const std::vector< int > &mintobIDs)
void loadIsolationInfo (CaloInfo &data, const std::vector< int > &isoparIDs)
std::tuple< unsigned int, unsigned int > loadSchemaVersion () const
 get DB schema version and run number

Private Attributes

int m_verbose {1}
boost::thread_specific_ptr< MsgStreamTCm_msg_tls
 MsgStreamTC instance (a std::cout like with print-out levels)
std::string m_name

Detailed Description

TriggerDB loader of the LVL1 calorimeter trigger configuration.

Definition at line 29 of file CaloInfoLoader.h.

Constructor & Destructor Documentation

◆ CaloInfoLoader()

TrigConf::CaloInfoLoader::CaloInfoLoader ( StorageMgr & sm,
coral::ISessionProxy & session )
inline

constructor

Parameters
smreference to storage manager
sessionreference to the database session

Definition at line 38 of file CaloInfoLoader.h.

39 : ILoader(), DBLoader("CaloInfoLoader", sm, session) {}
DBLoader(StorageMgr &sm, coral::ISessionProxy &session)
constructor
Definition DBLoader.cxx:30

◆ ~CaloInfoLoader()

virtual TrigConf::CaloInfoLoader::~CaloInfoLoader ( )
overridevirtualdefault

destructor

Member Function Documentation

◆ commitSession()

void TrigConf::DBLoader::commitSession ( )
inherited

commit session if not already done

Definition at line 45 of file DBLoader.cxx.

46{
47 if ( m_session.transaction().isActive() && m_sessionOwner) {
48 m_session.transaction().commit();
49 }
50}
bool m_sessionOwner
remember if the loader started the session in the first place
Definition DBLoader.h:69
coral::ISessionProxy & m_session
CORAL interface to database session.
Definition DBLoader.h:68

◆ getName()

const std::string & TrigConf::TrigConfMessaging::getName ( ) const
inlineinherited

name accessor

Returns
the name

Definition at line 101 of file TrigConfMessaging.h.

101 {
102 return m_name;
103 }

◆ isRun1()

bool TrigConf::DBLoader::isRun1 ( )
inlineinherited

Definition at line 60 of file DBLoader.h.

60{ return ! isRun2(); }

◆ isRun2()

bool DBLoader::isRun2 ( )
inherited

Definition at line 54 of file DBLoader.cxx.

54 {
55 const static unsigned int run = std::get<1>(loadSchemaVersion());
56 return run == 2;
57}
std::tuple< unsigned int, unsigned int > loadSchemaVersion() const
get DB schema version and run number
Definition DBLoader.cxx:81

◆ load()

bool TrigConf::CaloInfoLoader::load ( CaloInfo & data)
overridevirtual

Implements TrigConf::ICaloInfoLoader.

Definition at line 54 of file CaloInfoLoader.cxx.

54 {
55
56 if(data.smk()!=0) {
57 TRG_MSG_INFO("Loading CaloInfo for SMK " << data.smk());
58 } else if( data.id()!=0 ) {
59 TRG_MSG_INFO("Loading CaloInfo with ID = " << data.id());
60 } else {
61 TRG_MSG_ERROR("Can not load CaloInfo which has no id or SMK specified");
62 throw runtime_error("Can not load CaloInfo, no SMK or Id specified");
63 }
64
65
66
67 try {
68 unsigned int schema = triggerDBSchemaVersion();
69
71
72 unique_ptr<coral::IQuery> q(m_session.nominalSchema().newQuery());
73 q->addToTableList( "L1_CALO_INFO", "L1CI" );
74 q->setRowCacheSize( 5 );
75
76 //Bind list
77 coral::AttributeList bindList;
78 bindList.extend<int>("Id");
79 std::string cond("");
80 if(data.smk()!=0) {
81 q->addToTableList( "SUPER_MASTER_TABLE", "SMT" );
82 q->addToTableList( "L1_MASTER_TABLE", "L1M" );
83 cond = "SMT.SMT_ID = :Id";
84 cond += " AND SMT.SMT_L1_MASTER_TABLE_ID = L1M.L1MT_ID";
85 cond += " AND L1CI.L1CI_ID = L1M.L1MT_CALO_INFO_ID";
86 bindList[0].data<int>() = data.smk();
87 } else {
88 cond = "L1CI.L1CI_ID = :Id";
89 bindList[0].data<int>() = data.id();
90 }
91 q->setCondition( cond, bindList );
92
93 //Output data and types
94 coral::AttributeList attList;
95 attList.extend<std::string>( "L1CI.L1CI_NAME" );
96 attList.extend<int>( "L1CI.L1CI_VERSION" );
97 if(isRun1()) {
98 attList.extend<std::string>( "L1CI.L1CI_GLOBAL_SCALE" );
99 } else {
100 attList.extend<float>( "L1CI.L1CI_GLOBAL_EM_SCALE" );
101 attList.extend<float>( "L1CI.L1CI_GLOBAL_JET_SCALE" );
102 }
103 if(isRun2() || (isRun1() && schema>=10)) {
104 attList.extend<int>( "L1CI.L1CI_XS_SIGMA_SCALE" );
105 attList.extend<int>( "L1CI.L1CI_XS_SIGMA_OFFSET" );
106 attList.extend<int>( "L1CI.L1CI_XS_XE_MIN" );
107 attList.extend<int>( "L1CI.L1CI_XS_XE_MAX" );
108 attList.extend<int>( "L1CI.L1CI_XS_TESQRT_MIN" );
109 attList.extend<int>( "L1CI.L1CI_XS_TESQRT_MAX" );
110 }
111 if(isRun1()) {
112 for(unsigned int index = 1; index <= 12 ;index++) {
113 std::stringstream helpstring;
114 helpstring << "L1CI.L1CI_JET_WEIGHT" << index;
115 attList.extend<int>( helpstring.str() );
116 }
117 }
118 if(isRun2()) {
119 attList.extend<int>( "L1CI.L1CI_MIN_TOB_EM" );
120 attList.extend<int>( "L1CI.L1CI_MIN_TOB_TAU" );
121 attList.extend<int>( "L1CI.L1CI_MIN_TOB_JETS" );
122 attList.extend<int>( "L1CI.L1CI_MIN_TOB_JETL" );
123 attList.extend<int>( "L1CI.L1CI_ISO_HA_EM" );
124 attList.extend<int>( "L1CI.L1CI_ISO_EM_EM" );
125 attList.extend<int>( "L1CI.L1CI_ISO_EM_TAU" );
126 }
127
128
129 fillQuery(q.get(),attList);
130
131 coral::ICursor& cursor = q->execute();
132
133 if(!cursor.next()) {
134 if(data.smk()!=0) {
135 TRG_MSG_ERROR("No CaloInfo exists for SMK " << data.smk());
136 } else {
137 TRG_MSG_ERROR("No CaloInfo exists with ID " << data.id());
138 }
140 throw std::runtime_error( "CaloInfoLoader >> CaloInfo not available" );
141 }
142
143 // fill the object with data
144 const coral::AttributeList& row = cursor.currentRow();
145 data.setName ( row["L1CI.L1CI_NAME"].data<std::string>() );
146 data.setVersion ( row["L1CI.L1CI_VERSION"].data<int>() );
147 if(isRun1()) {
148 if(schema <= 6)
149 data.setGlobalScale( row["L1CI.L1CI_GLOBAL_SCALE"].data<float>());
150 else
151 data.setGlobalScale( std::stof(row["L1CI.L1CI_GLOBAL_SCALE"].data<std::string>()));
152 } else {
153 data.setGlobalEmScale( row["L1CI.L1CI_GLOBAL_EM_SCALE"].data<float>() );
154 data.setGlobalJetScale( row["L1CI.L1CI_GLOBAL_JET_SCALE"].data<float>() );
155 }
156 if(isRun1()) {
157 for(unsigned int index = 1; index <= 12 ;index++) {
158 std::stringstream helpstring;
159 helpstring << "L1CI.L1CI_JET_WEIGHT" << index;
160 data.addJetWeight( static_cast<int>(row[helpstring.str()].data<int>()) );
161 }
162 }
163 if(isRun2() || (isRun1() && schema>=10)) {
164 int XSSigmaScale = row["L1CI.L1CI_XS_SIGMA_SCALE"].data<int>();
165 int XSSigmaOffset = row["L1CI.L1CI_XS_SIGMA_OFFSET"].data<int>();
166 int XEmin = row["L1CI.L1CI_XS_XE_MIN"].data<int>();
167 int XEmax = row["L1CI.L1CI_XS_XE_MAX"].data<int>();
168 int TESqrtMin = row["L1CI.L1CI_XS_TESQRT_MIN"].data<int>();
169 int TESqrtMax = row["L1CI.L1CI_XS_TESQRT_MAX"].data<int>();
170 data.metSigParam().setValues( XSSigmaScale, XSSigmaOffset,
171 XEmin, XEmax, TESqrtMin, TESqrtMax);
172 }
173
174 vector<int> mintobIDs;
175 vector<int> isoparIDs;
176 if(isRun2()) {
177 mintobIDs.push_back(row["L1CI.L1CI_MIN_TOB_EM"].data<int>());
178 mintobIDs.push_back(row["L1CI.L1CI_MIN_TOB_TAU"].data<int>());
179 mintobIDs.push_back(row["L1CI.L1CI_MIN_TOB_JETS"].data<int>());
180 mintobIDs.push_back(row["L1CI.L1CI_MIN_TOB_JETL"].data<int>());
181 isoparIDs.push_back(row["L1CI.L1CI_ISO_HA_EM"].data<int>());
182 isoparIDs.push_back(row["L1CI.L1CI_ISO_EM_EM"].data<int>());
183 isoparIDs.push_back(row["L1CI.L1CI_ISO_EM_TAU"].data<int>());
184 }
185
186 // check for uniqness of CaloInfo object
187 if ( cursor.next() ) {
188 TRG_MSG_ERROR("More than one CaloInfo exists " );
189 throw std::runtime_error( "Too many CaloInfo objects" );
190 }
191
192 if(isRun2()) {
193 loadMinTobInfo(data, mintobIDs);
194 loadIsolationInfo(data, isoparIDs);
195 }
196
198 }
199 catch( const coral::Exception& e ) {
200 TRG_MSG_ERROR("Coral::Exception: " << e.what());
201 m_session.transaction().rollback();
202 throw;
203 }
204 return true;
205}
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
void loadMinTobInfo(CaloInfo &data, const std::vector< int > &mintobIDs)
void loadIsolationInfo(CaloInfo &data, const std::vector< int > &isoparIDs)
void commitSession()
commit session if not already done
Definition DBLoader.cxx:45
unsigned int triggerDBSchemaVersion()
Definition DBLoader.cxx:76
void startSession()
start session if not already active
Definition DBLoader.cxx:35
str index
Definition DeMoScan.py:362
row
Appending html table to final .html summary file.
void fillQuery(coral::IQuery *q, coral::AttributeList &attList)
Definition DBHelper.cxx:13

◆ loadIsolationInfo()

void TrigConf::CaloInfoLoader::loadIsolationInfo ( CaloInfo & data,
const std::vector< int > & isoparIDs )
private

Definition at line 279 of file CaloInfoLoader.cxx.

279 {
280
281 // first get a map of threshold type to isolation parameterizations
282
283 map<string,vector<int>> m;
284
285 {
286 unique_ptr<coral::IQuery> q(m_session.nominalSchema().tableHandle( "L1_CALO_ISOLATION" ).newQuery());
287 q->setRowCacheSize( 3 );
288
289 string cond( "L1CIS_ID IN (" + join(isoparIDs) + ")" );
290 q->setCondition( cond, coral::AttributeList() );
291
292 coral::AttributeList attList;
293 attList.extend<string>( "L1CIS_THR_TYPE" );
294 attList.extend<int>( "L1CIS_PAR1_ID" );
295 attList.extend<int>( "L1CIS_PAR2_ID" );
296 attList.extend<int>( "L1CIS_PAR3_ID" );
297 attList.extend<int>( "L1CIS_PAR4_ID" );
298 attList.extend<int>( "L1CIS_PAR5_ID" );
299 fillQuery(q.get(),attList);
300
301 coral::ICursor& cursor = q->execute();
302
303 while ( cursor.next() ) {
304
305 const coral::AttributeList& row = cursor.currentRow();
306
307 string thrtype = row["L1CIS_THR_TYPE"].data<string>();
308
309 vector<int> & idbytype = m[thrtype];
310
311 idbytype.push_back( row["L1CIS_PAR1_ID"].data<int>() );
312 idbytype.push_back( row["L1CIS_PAR2_ID"].data<int>() );
313 idbytype.push_back( row["L1CIS_PAR3_ID"].data<int>() );
314 idbytype.push_back( row["L1CIS_PAR4_ID"].data<int>() );
315 idbytype.push_back( row["L1CIS_PAR5_ID"].data<int>() );
316
317 }
318
319 }
320
321 // second get the individual parameterizations
322
323 {
324 for( const auto & isolation : m ) {
325
326 unique_ptr<coral::IQuery> q(m_session.nominalSchema().tableHandle( "L1_CALO_ISOPARAM" ).newQuery());
327 q->setRowCacheSize( 5 );
328
329 const string & thrtype = isolation.first;
330 const vector<int> & isoparIds = isolation.second;
331
332 string cond( "L1CIP_ID IN (" + join(isoparIds) + ")" );
333 q->setCondition( cond, coral::AttributeList() );
334
335 coral::AttributeList attList;
336 attList.extend<int>( "L1CIP_ID" );
337 attList.extend<int>( "L1CIP_ISO_BIT" );
338 attList.extend<int>( "L1CIP_OFFSET" );
339 attList.extend<int>( "L1CIP_SLOPE" );
340 attList.extend<int>( "L1CIP_MIN_CUT" );
341 attList.extend<int>( "L1CIP_UPPER_LIMIT" );
342 attList.extend<int>( "L1CIP_ETA_MIN" );
343 attList.extend<int>( "L1CIP_ETA_MAX" );
344 attList.extend<int>( "L1CIP_PRIORITY" );
345 fillQuery(q.get(),attList);
346
347 coral::ICursor& cursor = q->execute();
348
349 while ( cursor.next() ) {
350
351 const coral::AttributeList& row = cursor.currentRow();
352
353 unsigned int id = (unsigned int)row["L1CIP_ID"].data<int>();
354 unsigned int pos=1; // the position of this paramerization
355 for(unsigned int parId : isoparIds) {
356 if(id==parId) break;
357 ++pos;
358 }
359
360 int isobit = row["L1CIP_ISO_BIT"].data<int>();
361 int offset = row["L1CIP_OFFSET"].data<int>();
362 int slope = row["L1CIP_SLOPE"].data<int>();
363 int mincut = row["L1CIP_MIN_CUT"].data<int>();
364 int upperlimit = row["L1CIP_UPPER_LIMIT"].data<int>();
365 int etamin = row["L1CIP_ETA_MIN"].data<int>();
366 int etamax = row["L1CIP_ETA_MAX"].data<int>();
367 int priority = row["L1CIP_PRIORITY"].data<int>();
368
369
370 if(isobit>0) {
371 if(pos!=(unsigned int)isobit) {
372 TRG_MSG_ERROR(thrtype << " isolation bit " << isobit << " does not match the position it should have " << pos);
373 throw runtime_error("Isolation bit not matching");
374 }
375 data.setIsolation(thrtype, pos, IsolationParam( thrtype, isobit, offset, slope, mincut, upperlimit, etamin, etamax, priority ));
376 } else {
377 data.setIsolation(thrtype, pos, IsolationParam());
378 }
379
380
381 }
382
383 cursor.close();
384 }
385 }
386}
std::string join(const std::vector< std::string > &v, const char c=',')

◆ loadL1MasterKey()

bool TrigConf::DBLoader::loadL1MasterKey ( int SuperMasterKey,
int & Lvl1MasterKey )
inherited

get l1 master from super master

Definition at line 128 of file DBLoader.cxx.

128 {
129 try {
130 startSession();
131
132 unique_ptr< coral::IQuery > q( m_session.nominalSchema().tableHandle( "SUPER_MASTER_TABLE").newQuery() );
133 q->setRowCacheSize( 5 );
134
135 //Bind list
136 coral::AttributeList bindings;
137 bindings.extend<int>("smtid");
138 bindings[0].data<int>() = smk;
139 q->setCondition( "SMT_ID = :smtid", bindings );
140
141 //Output data and types
142 coral::AttributeList attList;
143 attList.extend<int>( "SMT_L1_MASTER_TABLE_ID" );
144 fillQuery(q.get(), attList);
145
146 coral::ICursor& cursor = q->execute();
147 if ( ! cursor.next() ) {
148 msg() << "DBLoader: No such SuperMaster key exists " << smk << endl;
149 throw runtime_error( "DBLoader: SuperMasterKey not available" );
150 }
151
152 const coral::AttributeList& row = cursor.currentRow();
153 Lvl1MasterKey = row["SMT_L1_MASTER_TABLE_ID"].data<int>();
154 }
155 catch( const std::exception& e ) {
157 msg() << "DBLoader: C++ exception: " << e.what() << std::endl;
158 throw;
159 }
161 return true;
162}
MsgStreamTC & msg() const
The standard message stream.

◆ loadL1MenuKey()

bool TrigConf::DBLoader::loadL1MenuKey ( int SuperMasterKey,
int & Lvl1MenuKey )
inherited

get l1 menu id from super master

Definition at line 167 of file DBLoader.cxx.

167 {
168 try {
169
170 int l1Master = 0;
171 loadL1MasterKey(SuperMasterKey, l1Master);
172
173 startSession();
174
175 unique_ptr< coral::IQuery > q( m_session.nominalSchema().tableHandle( "L1_MASTER_TABLE").newQuery() );
176 q->setRowCacheSize( 5 );
177
178 //Bind list
179 coral::AttributeList bindings;
180 bindings.extend<int>("l1mtid");
181 bindings[0].data<int>() = l1Master;
182 q->setCondition( "L1MT_ID = :l1mtid" , bindings );
183
184 //Output data and types
185 coral::AttributeList attList;
186 attList.extend<int>( "L1MT_TRIGGER_MENU_ID" );
187 q->defineOutput(attList);
188 q->addToOutputList( "L1MT_TRIGGER_MENU_ID" );
189
190 coral::ICursor& cursor = q->execute();
191 if ( ! cursor.next() ) {
192 msg() << "DBLoader >> No such L1 Master key exists " << l1Master << std::endl;
193 throw std::runtime_error( "DBLoader >> L1MasterKey not available" );
195 }
196
197 const coral::AttributeList& row = cursor.currentRow();
198 Lvl1MenuKey = row["L1MT_TRIGGER_MENU_ID"].data<int>();
199
201
202 }
203 catch( const std::exception& e ) {
204 msg() << "DBLoader >> Standard C++ exception: " << e.what() << std::endl;
205 m_session.transaction().rollback();
206 throw;
207 }
208 return true;
209}
bool loadL1MasterKey(int SuperMasterKey, int &Lvl1MasterKey)
get l1 master from super master
Definition DBLoader.cxx:128

◆ loadMinTobInfo()

void TrigConf::CaloInfoLoader::loadMinTobInfo ( CaloInfo & data,
const std::vector< int > & mintobIDs )
private

Definition at line 209 of file CaloInfoLoader.cxx.

209 {
210
211 unique_ptr<coral::IQuery> q(m_session.nominalSchema().tableHandle( "L1_CALO_MIN_TOB" ).newQuery());
212 q->setRowCacheSize( 4 );
213
214 string cond("L1CMT_ID IN (");
215 bool first=true;
216 for(int id : mintobIDs) {
217 if(first) { first = false; } else { cond += ","; }
218 cond += std::to_string(id);
219 }
220 cond += ")";
221 q->setCondition( cond, coral::AttributeList() );
222
223 coral::AttributeList attList;
224 attList.extend<int>( "L1CMT_ID" );
225 attList.extend<string>( "L1CMT_THR_TYPE" );
226 attList.extend<int>( "L1CMT_WINDOW" );
227 attList.extend<int>( "L1CMT_PT_MIN" );
228 attList.extend<int>( "L1CMT_ETA_MIN" );
229 attList.extend<int>( "L1CMT_ETA_MAX" );
230 attList.extend<int>( "L1CMT_PRIORITY" );
231 fillQuery(q.get(),attList);
232
233 coral::ICursor& cursor = q->execute();
234
235 while ( cursor.next() ) {
236
237 const coral::AttributeList& row = cursor.currentRow();
238
239 string thrtype = row["L1CMT_THR_TYPE"].data<string>();
240 int window = row["L1CMT_WINDOW"].data<int>();
241 int ptmin = row["L1CMT_PT_MIN"].data<int>();
242 int etamin = row["L1CMT_ETA_MIN"].data<int>();
243 int etamax = row["L1CMT_ETA_MAX"].data<int>();
244 int priority = row["L1CMT_PRIORITY"].data<int>();
245
246 if(ptmin<0) {
247 TRG_MSG_ERROR("MinTOBPt " << thrtype << " with pt " << ptmin << " which is less than 0");
248 throw runtime_error("PTMin of MinTOBPt found to be less than 0");
249 }
250 if(priority<0) {
251 TRG_MSG_ERROR("MinTOBPt " << thrtype << " with priority " << priority << " which is less than 0");
252 throw runtime_error("Priority of MinTOBPt found to be less than 0");
253 }
254
255 MinTOBPt mintob((unsigned int)ptmin, etamin, etamax, (unsigned int) priority);
256
257 if(thrtype=="EM") {
258 data.setMinTobEM(mintob);
259 } else if(thrtype=="TAU") {
260 data.setMinTobTau(mintob);
261 } else if(thrtype=="JETS") {
262 data.setMinTobJetSmall(mintob);
263 data.setJetWindowSizeSmall(window);
264 } else if(thrtype=="JETL") {
265 data.setMinTobJetLarge(mintob);
266 data.setJetWindowSizeLarge(window);
267 } else {
268 TRG_MSG_ERROR("Unknown threshold type " << thrtype);
269 throw runtime_error("MinTOBPt with unknown threshold type");
270 }
271
272 }
273
274}
bool first
Definition DeMoScan.py:534

◆ loadSchemaVersion()

std::tuple< unsigned int, unsigned int > DBLoader::loadSchemaVersion ( ) const
privateinherited

get DB schema version and run number

Definition at line 81 of file DBLoader.cxx.

82{
83 const static auto versions = [&]() -> std::tuple<unsigned int,unsigned int> {
84 bool mySession = false;
85 if ( ! m_session.transaction().isActive() ) {
86 m_session.transaction().start(true);
87 mySession = true;
88 }
89
90 std::unique_ptr< coral::IQuery > q( m_session.nominalSchema().tableHandle( "TRIGGER_SCHEMA").newQuery() );
91 q->setRowCacheSize( 1 );
92
93 //Output data and types
94 coral::AttributeList attList;
95 attList.extend<int>( "TS_ID" );
96 q->defineOutput(attList);
97 q->addToOutputList( "TS_ID" );
98
99 q->addToOrderList("TS_ID desc");
100 coral::ICursor& cursor = q->execute();
101
102 if ( ! cursor.next() ) {
103 TRG_MSG_ERROR("Table TRIGGER_SCHEMA is not filled");
104 if ( mySession ) m_session.transaction().commit();
105 throw std::runtime_error( "DBLoader::loadSchemaVersion() >> Table TRIGGER_SCHEMA is not filled" );
106 }
107
108 const coral::AttributeList& row = cursor.currentRow();
109 const unsigned int triggerDBSchemaVersion = row["TS_ID"].data<int>();
110
111 TRG_MSG_INFO("TriggerDB schema version: " << triggerDBSchemaVersion);
112
113 const unsigned int run = m_session.nominalSchema().existsTable( "ACTIVE_MASTERS" ) ? 2 : 1;
114
115 TRG_MSG_INFO("Database has Run " << run << " schema");
116 TRG_MSG_INFO("Total number of tables : " << m_session.nominalSchema().listTables().size());
117
118 //commitSession();
119 if ( mySession ) m_session.transaction().commit();
120
121 return {triggerDBSchemaVersion, run};
122 }();
123
124 return versions;
125}

◆ 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 86 of file TrigConfMessaging.h.

87 {
88 MsgStreamTC* ms = m_msg_tls.get();
89 if (!ms) {
90 ms = new MsgStreamTC(m_name);
91 m_msg_tls.reset(ms);
92 }
93 return *ms;
94 }
boost::thread_specific_ptr< MsgStreamTC > m_msg_tls
MsgStreamTC instance (a std::cout like with print-out levels)

◆ 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 96 of file TrigConfMessaging.h.

97 {
98 return msg() << lvl;
99 }

◆ 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 75 of file TrigConfMessaging.h.

76 {
77 if (msg().level() <= lvl) {
78 msg() << lvl;
79 return true;
80 }
81 else {
82 return false;
83 }
84 }

◆ outputLevel()

virtual MSGTC::Level TrigConf::DBLoader::outputLevel ( ) const
inlineoverridevirtualinherited

Implements TrigConf::ILoader.

Definition at line 40 of file DBLoader.h.

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

◆ setLevel()

void DBLoader::setLevel ( MSGTC::Level lvl)
overridevirtualinherited

◆ setVerbose()

virtual void TrigConf::DBLoader::setVerbose ( int v)
inlineoverridevirtualinherited

Implements TrigConf::ILoader.

Definition at line 58 of file DBLoader.h.

◆ startSession()

void TrigConf::DBLoader::startSession ( )
inherited

start session if not already active

Definition at line 35 of file DBLoader.cxx.

36{
37 if ( ! m_session.transaction().isActive() ) {
38 //std::cout << "DBLoader: startSession(readonly=true)" << std::endl;
39 bool readOnly = true;
40 m_session.transaction().start(readOnly);
41 m_sessionOwner = true;
42 }
43}

◆ triggerDBSchemaVersion()

unsigned int DBLoader::triggerDBSchemaVersion ( )
inherited

Definition at line 76 of file DBLoader.cxx.

76 {
77 return std::get<0>(loadSchemaVersion());
78}

◆ verbose()

virtual int TrigConf::DBLoader::verbose ( ) const
inlineoverridevirtualinherited

Implements TrigConf::ILoader.

Definition at line 57 of file DBLoader.h.

57{ return m_verbose; }

Member Data Documentation

◆ 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 71 of file TrigConfMessaging.h.

◆ m_name

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

Definition at line 72 of file TrigConfMessaging.h.

◆ m_session

coral::ISessionProxy& TrigConf::DBLoader::m_session
protectedinherited

CORAL interface to database session.

Definition at line 68 of file DBLoader.h.

◆ m_sessionOwner

bool TrigConf::DBLoader::m_sessionOwner {false}
protectedinherited

remember if the loader started the session in the first place

Definition at line 69 of file DBLoader.h.

69{false};

◆ m_storageMgr

StorageMgr& TrigConf::DBLoader::m_storageMgr
protectedinherited

reference to the storage manager

Definition at line 67 of file DBLoader.h.

◆ m_verbose

int TrigConf::DBLoader::m_verbose {1}
privateinherited

Definition at line 64 of file DBLoader.h.

64{1};

The documentation for this class was generated from the following files: