TriggerDB loader of the LVL1 calorimeter trigger configuration.
More...
#include <CaloInfoLoader.h>
TriggerDB loader of the LVL1 calorimeter trigger configuration.
Definition at line 29 of file CaloInfoLoader.h.
◆ CaloInfoLoader()
TrigConf::CaloInfoLoader::CaloInfoLoader |
( |
StorageMgr & |
sm, |
|
|
coral::ISessionProxy & |
session |
|
) |
| |
|
inline |
constructor
- Parameters
-
sm | reference to storage manager |
session | reference to the database session |
Definition at line 38 of file CaloInfoLoader.h.
39 : ILoader(),
DBLoader(
"CaloInfoLoader", sm, session) {}
◆ ~CaloInfoLoader()
virtual TrigConf::CaloInfoLoader::~CaloInfoLoader |
( |
| ) |
|
|
overridevirtualdefault |
◆ commitSession()
void TrigConf::DBLoader::commitSession |
( |
| ) |
|
|
inherited |
commit session if not already done
Definition at line 45 of file DBLoader.cxx.
◆ isRun1()
bool TrigConf::DBLoader::isRun1 |
( |
| ) |
|
|
inlineinherited |
◆ isRun2()
bool DBLoader::isRun2 |
( |
| ) |
|
|
inherited |
◆ load()
bool TrigConf::CaloInfoLoader::load |
( |
CaloInfo & |
data | ) |
|
|
overridevirtual |
Implements TrigConf::ICaloInfoLoader.
Definition at line 55 of file CaloInfoLoader.cxx.
59 }
else if(
data.id()!=0 ) {
62 TRG_MSG_ERROR(
"Can not load CaloInfo which has no id or SMK specified");
63 throw runtime_error(
"Can not load CaloInfo, no SMK or Id specified");
73 unique_ptr<coral::IQuery>
q(
m_session.nominalSchema().newQuery());
74 q->addToTableList(
"L1_CALO_INFO",
"L1CI" );
75 q->setRowCacheSize( 5 );
79 bindList.extend<
int>(
"Id");
82 q->addToTableList(
"SUPER_MASTER_TABLE",
"SMT" );
83 q->addToTableList(
"L1_MASTER_TABLE",
"L1M" );
84 cond =
"SMT.SMT_ID = :Id";
85 cond +=
" AND SMT.SMT_L1_MASTER_TABLE_ID = L1M.L1MT_ID";
86 cond +=
" AND L1CI.L1CI_ID = L1M.L1MT_CALO_INFO_ID";
87 bindList[0].data<
int>() =
data.smk();
89 cond =
"L1CI.L1CI_ID = :Id";
90 bindList[0].data<
int>() =
data.id();
92 q->setCondition( cond, bindList );
96 attList.extend<std::string>(
"L1CI.L1CI_NAME" );
97 attList.extend<
int>(
"L1CI.L1CI_VERSION" );
99 attList.extend<std::string>(
"L1CI.L1CI_GLOBAL_SCALE" );
101 attList.extend<
float>(
"L1CI.L1CI_GLOBAL_EM_SCALE" );
102 attList.extend<
float>(
"L1CI.L1CI_GLOBAL_JET_SCALE" );
105 attList.extend<
int>(
"L1CI.L1CI_XS_SIGMA_SCALE" );
106 attList.extend<
int>(
"L1CI.L1CI_XS_SIGMA_OFFSET" );
107 attList.extend<
int>(
"L1CI.L1CI_XS_XE_MIN" );
108 attList.extend<
int>(
"L1CI.L1CI_XS_XE_MAX" );
109 attList.extend<
int>(
"L1CI.L1CI_XS_TESQRT_MIN" );
110 attList.extend<
int>(
"L1CI.L1CI_XS_TESQRT_MAX" );
114 std::stringstream helpstring;
115 helpstring <<
"L1CI.L1CI_JET_WEIGHT" <<
index;
116 attList.extend<
int>( helpstring.str() );
120 attList.extend<
int>(
"L1CI.L1CI_MIN_TOB_EM" );
121 attList.extend<
int>(
"L1CI.L1CI_MIN_TOB_TAU" );
122 attList.extend<
int>(
"L1CI.L1CI_MIN_TOB_JETS" );
123 attList.extend<
int>(
"L1CI.L1CI_MIN_TOB_JETL" );
124 attList.extend<
int>(
"L1CI.L1CI_ISO_HA_EM" );
125 attList.extend<
int>(
"L1CI.L1CI_ISO_EM_EM" );
126 attList.extend<
int>(
"L1CI.L1CI_ISO_EM_TAU" );
132 coral::ICursor&
cursor =
q->execute();
141 throw std::runtime_error(
"CaloInfoLoader >> CaloInfo not available" );
146 data.setName (
row[
"L1CI.L1CI_NAME"].data<std::string>() );
147 data.setVersion (
row[
"L1CI.L1CI_VERSION"].data<int>() );
150 data.setGlobalScale(
row[
"L1CI.L1CI_GLOBAL_SCALE"].data<float>());
152 data.setGlobalScale( boost::lexical_cast<float,std::string>(
row[
"L1CI.L1CI_GLOBAL_SCALE"].data<std::string>()));
154 data.setGlobalEmScale(
row[
"L1CI.L1CI_GLOBAL_EM_SCALE"].data<float>() );
155 data.setGlobalJetScale(
row[
"L1CI.L1CI_GLOBAL_JET_SCALE"].data<float>() );
159 std::stringstream helpstring;
160 helpstring <<
"L1CI.L1CI_JET_WEIGHT" <<
index;
161 data.addJetWeight(
static_cast<int>(
row[helpstring.str()].data<
int>()) );
165 int XSSigmaScale =
row[
"L1CI.L1CI_XS_SIGMA_SCALE"].data<
int>();
166 int XSSigmaOffset =
row[
"L1CI.L1CI_XS_SIGMA_OFFSET"].data<
int>();
167 int XEmin =
row[
"L1CI.L1CI_XS_XE_MIN"].data<
int>();
168 int XEmax =
row[
"L1CI.L1CI_XS_XE_MAX"].data<
int>();
169 int TESqrtMin =
row[
"L1CI.L1CI_XS_TESQRT_MIN"].data<
int>();
170 int TESqrtMax =
row[
"L1CI.L1CI_XS_TESQRT_MAX"].data<
int>();
171 data.metSigParam().setValues( XSSigmaScale, XSSigmaOffset,
172 XEmin, XEmax, TESqrtMin, TESqrtMax);
175 vector<int> mintobIDs;
176 vector<int> isoparIDs;
178 mintobIDs.push_back(
row[
"L1CI.L1CI_MIN_TOB_EM"].data<int>());
179 mintobIDs.push_back(
row[
"L1CI.L1CI_MIN_TOB_TAU"].data<int>());
180 mintobIDs.push_back(
row[
"L1CI.L1CI_MIN_TOB_JETS"].data<int>());
181 mintobIDs.push_back(
row[
"L1CI.L1CI_MIN_TOB_JETL"].data<int>());
182 isoparIDs.push_back(
row[
"L1CI.L1CI_ISO_HA_EM"].data<int>());
183 isoparIDs.push_back(
row[
"L1CI.L1CI_ISO_EM_EM"].data<int>());
184 isoparIDs.push_back(
row[
"L1CI.L1CI_ISO_EM_TAU"].data<int>());
190 throw std::runtime_error(
"Too many CaloInfo objects" );
200 catch(
const coral::Exception&
e ) {
◆ loadIsolationInfo()
void TrigConf::CaloInfoLoader::loadIsolationInfo |
( |
CaloInfo & |
data, |
|
|
const std::vector< int > & |
isoparIDs |
|
) |
| |
|
private |
Definition at line 280 of file CaloInfoLoader.cxx.
284 map<string,vector<int>>
m;
287 unique_ptr<coral::IQuery>
q(
m_session.nominalSchema().tableHandle(
"L1_CALO_ISOLATION" ).newQuery());
288 q->setRowCacheSize( 3 );
290 string cond(
"L1CIS_ID IN (" +
join(isoparIDs) +
")" );
294 attList.extend<
string>(
"L1CIS_THR_TYPE" );
295 attList.extend<
int>(
"L1CIS_PAR1_ID" );
296 attList.extend<
int>(
"L1CIS_PAR2_ID" );
297 attList.extend<
int>(
"L1CIS_PAR3_ID" );
298 attList.extend<
int>(
"L1CIS_PAR4_ID" );
299 attList.extend<
int>(
"L1CIS_PAR5_ID" );
302 coral::ICursor&
cursor =
q->execute();
308 string thrtype =
row[
"L1CIS_THR_TYPE"].data<
string>();
310 vector<int> & idbytype =
m[thrtype];
312 idbytype.push_back(
row[
"L1CIS_PAR1_ID"].data<int>() );
313 idbytype.push_back(
row[
"L1CIS_PAR2_ID"].data<int>() );
314 idbytype.push_back(
row[
"L1CIS_PAR3_ID"].data<int>() );
315 idbytype.push_back(
row[
"L1CIS_PAR4_ID"].data<int>() );
316 idbytype.push_back(
row[
"L1CIS_PAR5_ID"].data<int>() );
325 for(
const auto & isolation :
m ) {
327 unique_ptr<coral::IQuery>
q(
m_session.nominalSchema().tableHandle(
"L1_CALO_ISOPARAM" ).newQuery());
328 q->setRowCacheSize( 5 );
330 const string & thrtype = isolation.first;
331 const vector<int> & isoparIds = isolation.second;
333 string cond(
"L1CIP_ID IN (" +
join(isoparIds) +
")" );
337 attList.extend<
int>(
"L1CIP_ID" );
338 attList.extend<
int>(
"L1CIP_ISO_BIT" );
339 attList.extend<
int>(
"L1CIP_OFFSET" );
340 attList.extend<
int>(
"L1CIP_SLOPE" );
341 attList.extend<
int>(
"L1CIP_MIN_CUT" );
342 attList.extend<
int>(
"L1CIP_UPPER_LIMIT" );
343 attList.extend<
int>(
"L1CIP_ETA_MIN" );
344 attList.extend<
int>(
"L1CIP_ETA_MAX" );
345 attList.extend<
int>(
"L1CIP_PRIORITY" );
348 coral::ICursor&
cursor =
q->execute();
354 unsigned int id = (
unsigned int)
row[
"L1CIP_ID"].data<int>();
356 for(
unsigned int parId : isoparIds) {
361 int isobit =
row[
"L1CIP_ISO_BIT"].data<
int>();
362 int offset =
row[
"L1CIP_OFFSET"].data<
int>();
363 int slope =
row[
"L1CIP_SLOPE"].data<
int>();
364 int mincut =
row[
"L1CIP_MIN_CUT"].data<
int>();
365 int upperlimit =
row[
"L1CIP_UPPER_LIMIT"].data<
int>();
366 int etamin =
row[
"L1CIP_ETA_MIN"].data<
int>();
367 int etamax =
row[
"L1CIP_ETA_MAX"].data<
int>();
372 if(
pos!=(
unsigned int)isobit) {
373 TRG_MSG_ERROR(thrtype <<
" isolation bit " << isobit <<
" does not match the position it should have " <<
pos);
374 throw runtime_error(
"Isolation bit not matching");
376 data.setIsolation(thrtype,
pos, IsolationParam( thrtype, isobit,
offset, slope, mincut, upperlimit,
etamin, etamax,
priority ));
378 data.setIsolation(thrtype,
pos, IsolationParam());
◆ loadL1MasterKey()
bool TrigConf::DBLoader::loadL1MasterKey |
( |
int |
SuperMasterKey, |
|
|
int & |
Lvl1MasterKey |
|
) |
| |
|
inherited |
get l1 master from super master
Definition at line 128 of file DBLoader.cxx.
132 unique_ptr< coral::IQuery >
q(
m_session.nominalSchema().tableHandle(
"SUPER_MASTER_TABLE").newQuery() );
133 q->setRowCacheSize( 5 );
137 bindings.extend<
int>(
"smtid");
138 bindings[0].data<
int>() =
smk;
139 q->setCondition(
"SMT_ID = :smtid", bindings );
143 attList.extend<
int>(
"SMT_L1_MASTER_TABLE_ID" );
146 coral::ICursor&
cursor =
q->execute();
148 msg() <<
"DBLoader: No such SuperMaster key exists " <<
smk << endl;
149 throw runtime_error(
"DBLoader: SuperMasterKey not available" );
153 Lvl1MasterKey =
row[
"SMT_L1_MASTER_TABLE_ID"].data<
int>();
157 msg() <<
"DBLoader: C++ exception: " <<
e.what() << std::endl;
◆ 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.
175 unique_ptr< coral::IQuery >
q(
m_session.nominalSchema().tableHandle(
"L1_MASTER_TABLE").newQuery() );
176 q->setRowCacheSize( 5 );
180 bindings.extend<
int>(
"l1mtid");
181 bindings[0].data<
int>() = l1Master;
182 q->setCondition(
"L1MT_ID = :l1mtid" , bindings );
186 attList.extend<
int>(
"L1MT_TRIGGER_MENU_ID" );
187 q->defineOutput(attList);
188 q->addToOutputList(
"L1MT_TRIGGER_MENU_ID" );
190 coral::ICursor&
cursor =
q->execute();
192 msg() <<
"DBLoader >> No such L1 Master key exists " << l1Master << std::endl;
193 throw std::runtime_error(
"DBLoader >> L1MasterKey not available" );
198 Lvl1MenuKey =
row[
"L1MT_TRIGGER_MENU_ID"].data<
int>();
204 msg() <<
"DBLoader >> Standard C++ exception: " <<
e.what() << std::endl;
◆ loadMinTobInfo()
void TrigConf::CaloInfoLoader::loadMinTobInfo |
( |
CaloInfo & |
data, |
|
|
const std::vector< int > & |
mintobIDs |
|
) |
| |
|
private |
Definition at line 210 of file CaloInfoLoader.cxx.
212 unique_ptr<coral::IQuery>
q(
m_session.nominalSchema().tableHandle(
"L1_CALO_MIN_TOB" ).newQuery());
213 q->setRowCacheSize( 4 );
215 string cond(
"L1CMT_ID IN (");
217 for(
int id : mintobIDs) {
218 if(
first) {
first =
false; }
else { cond +=
","; }
219 cond += boost::lexical_cast<string,int>(
id);
225 attList.extend<
int>(
"L1CMT_ID" );
226 attList.extend<
string>(
"L1CMT_THR_TYPE" );
227 attList.extend<
int>(
"L1CMT_WINDOW" );
228 attList.extend<
int>(
"L1CMT_PT_MIN" );
229 attList.extend<
int>(
"L1CMT_ETA_MIN" );
230 attList.extend<
int>(
"L1CMT_ETA_MAX" );
231 attList.extend<
int>(
"L1CMT_PRIORITY" );
234 coral::ICursor&
cursor =
q->execute();
240 string thrtype =
row[
"L1CMT_THR_TYPE"].data<
string>();
241 int window =
row[
"L1CMT_WINDOW"].data<
int>();
242 int ptmin =
row[
"L1CMT_PT_MIN"].data<
int>();
243 int etamin =
row[
"L1CMT_ETA_MIN"].data<
int>();
244 int etamax =
row[
"L1CMT_ETA_MAX"].data<
int>();
248 TRG_MSG_ERROR(
"MinTOBPt " << thrtype <<
" with pt " <<
ptmin <<
" which is less than 0");
249 throw runtime_error(
"PTMin of MinTOBPt found to be less than 0");
253 throw runtime_error(
"Priority of MinTOBPt found to be less than 0");
259 data.setMinTobEM(mintob);
260 }
else if(thrtype==
"TAU") {
261 data.setMinTobTau(mintob);
262 }
else if(thrtype==
"JETS") {
263 data.setMinTobJetSmall(mintob);
264 data.setJetWindowSizeSmall(window);
265 }
else if(thrtype==
"JETL") {
266 data.setMinTobJetLarge(mintob);
267 data.setJetWindowSizeLarge(window);
270 throw runtime_error(
"MinTOBPt with unknown threshold type");
◆ 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.
83 const static auto versions = [&]() -> std::tuple<unsigned int,unsigned int> {
84 bool mySession =
false;
85 if ( !
m_session.transaction().isActive() ) {
90 std::unique_ptr< coral::IQuery >
q(
m_session.nominalSchema().tableHandle(
"TRIGGER_SCHEMA").newQuery() );
91 q->setRowCacheSize( 1 );
95 attList.extend<
int>(
"TS_ID" );
96 q->defineOutput(attList);
97 q->addToOutputList(
"TS_ID" );
99 q->addToOrderList(
"TS_ID desc");
100 coral::ICursor&
cursor =
q->execute();
104 if ( mySession )
m_session.transaction().commit();
105 throw std::runtime_error(
"DBLoader::loadSchemaVersion() >> Table TRIGGER_SCHEMA is not filled" );
113 const unsigned int run =
m_session.nominalSchema().existsTable(
"ACTIVE_MASTERS" ) ? 2 : 1;
119 if ( mySession )
m_session.transaction().commit();
◆ 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.
◆ msg() [2/2]
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.
◆ msgLvl()
Test the output level.
- Parameters
-
lvl | The message level to test against |
- Returns
- boolean Indicting if messages at given level will be printed
- Return values
-
true | Messages at level "lvl" will be printed |
Definition at line 70 of file TrigConfMessaging.h.
◆ outputLevel() [1/2]
virtual MSGTC::Level TrigConf::ILoader::outputLevel |
( |
| ) |
const |
|
pure virtualinherited |
◆ outputLevel() [2/2]
virtual MSGTC::Level TrigConf::DBLoader::outputLevel |
( |
| ) |
const |
|
inlineoverridevirtualinherited |
◆ setLevel() [1/2]
◆ setLevel() [2/2]
virtual void TrigConf::ILoader::setLevel |
( |
MSGTC::Level |
lvl | ) |
|
|
pure virtualinherited |
Load the configuration data from the configuration source.
- Parameters
-
ctpc | reference to the data object to be filled |
- Returns
true
if the loading was successful, false
otherwise
Implemented in TrigConf::DBLoader.
◆ setVerbose() [1/2]
virtual void TrigConf::DBLoader::setVerbose |
( |
int |
v | ) |
|
|
inlineoverridevirtualinherited |
◆ setVerbose() [2/2]
virtual void TrigConf::ILoader::setVerbose |
( |
int |
v | ) |
|
|
pure virtualinherited |
◆ startSession()
void TrigConf::DBLoader::startSession |
( |
| ) |
|
|
inherited |
start session if not already active
Definition at line 35 of file DBLoader.cxx.
37 if ( !
m_session.transaction().isActive() ) {
◆ triggerDBSchemaVersion()
unsigned int DBLoader::triggerDBSchemaVersion |
( |
| ) |
|
|
inherited |
◆ verbose() [1/2]
virtual int TrigConf::ILoader::verbose |
( |
| ) |
const |
|
pure virtualinherited |
◆ verbose() [2/2]
virtual int TrigConf::DBLoader::verbose |
( |
| ) |
const |
|
inlineoverridevirtualinherited |
◆ m_msg_tls
boost::thread_specific_ptr<MsgStreamTC> TrigConf::TrigConfMessaging::m_msg_tls |
|
mutableprivateinherited |
◆ m_name
std::string TrigConf::TrigConfMessaging::m_name |
|
privateinherited |
◆ 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.
◆ m_storageMgr
reference to the storage manager
Definition at line 67 of file DBLoader.h.
◆ m_verbose
int TrigConf::DBLoader::m_verbose {1} |
|
privateinherited |
The documentation for this class was generated from the following files: