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.
 
 
◆ getName()
  
  | 
        
          | const std::string & TrigConf::TrigConfMessaging::getName | ( |  | ) | const |  | inlineinherited | 
 
 
◆ 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 += 
","; }
 
  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 86 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 96 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 75 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
- trueif the loading was successful,- falseotherwise
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: