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

#include <HLTPrescaleSetLoader.h>

Inheritance diagram for TrigConf::HLTPrescaleSetLoader:
Collaboration diagram for TrigConf::HLTPrescaleSetLoader:

Public Member Functions

 HLTPrescaleSetLoader (StorageMgr &sm, coral::ISessionProxy &session)
virtual ~HLTPrescaleSetLoader () override=default
virtual bool load (HLTPrescaleSet &hltpss) 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

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

Definition at line 25 of file HLTPrescaleSetLoader.h.

Constructor & Destructor Documentation

◆ HLTPrescaleSetLoader()

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

Definition at line 28 of file HLTPrescaleSetLoader.h.

28: DBLoader("HLTPrescaleSetLoader", sm, session) {}
DBLoader(StorageMgr &sm, coral::ISessionProxy &session)
constructor
Definition DBLoader.cxx:30

◆ ~HLTPrescaleSetLoader()

virtual TrigConf::HLTPrescaleSetLoader::~HLTPrescaleSetLoader ( )
overridevirtualdefault

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::HLTPrescaleSetLoader::load ( HLTPrescaleSet & hltpss)
overridevirtual

Implements TrigConf::IHLTPrescaleSetLoader.

Definition at line 49 of file HLTPrescaleSetLoader.cxx.

49 {
50
51 using std::string;
52
53 TRG_MSG_INFO("Started loading data with HLT PSK: " << hltpss.id());
54
55 //Find if old or new schema is being used:
56 try {
57
59
61
62 unique_ptr< coral::IQuery > q( m_session.nominalSchema().newQuery() );
63
64 //Set the tables that are used
65 q->addToTableList ( "HLT_PRESCALE_SET", "PS" );
66 q->addToTableList ( "HLT_PRESCALE", "PR" );
67
68 //printTable(m_session.nominalSchema().tableHandle( "HLT_PRESCALE"));
69
70 //Bind list
71 coral::AttributeList bindList;
72 bindList.extend<int>("psid");
73 bindList[0].data<int>() = (int)hltpss.id();
74
75 // selection condition
76 string theCondition = " PS.HPS_ID = :psid";
77 theCondition += " AND PS.HPS_ID = PR.HPR_PRESCALE_SET_ID";
78 q->setCondition( theCondition, bindList );
79
80 // output data
81 coral::AttributeList attList;
82 attList.extend<string>( "PS.HPS_NAME" );
83 attList.extend<int> ( "PS.HPS_VERSION" );
84 if(isRun1()) {
85 attList.extend<string>( "PR.HPR_L2_OR_EF" );
86 attList.extend<string>( "PR.HPR_PASS_THROUGH_RATE" );
87 attList.extend<string>( "PR.HPR_PRESCALE" );
88 } else {
89 attList.extend<float> ( "PR.HPR_VALUE" );
90 attList.extend<string> ( "PR.HPR_TYPE" );
91 attList.extend<string> ( "PR.HPR_CONDITION" );
92 }
93 attList.extend<int> ( "PR.HPR_CHAIN_COUNTER" );
94
95 fillQuery(q.get(),attList);
96
97 // the ordering
98 string theOrder = "";
99 if(isRun1()) {
100 theOrder = " PR.HPR_L2_OR_EF DESC, PR.HPR_CHAIN_COUNTER ASC";
101 } else {
102 theOrder += "PR.HPR_CHAIN_COUNTER ASC";
103 }
104 q->addToOrderList( theOrder );
105
106
107 q->setRowCacheSize(1000);
108 q->setDistinct();
109
110 // process the query
111 coral::ICursor& cursor = q->execute();
112
113 bool pssnameset = false;
114
115
116 // fill chain info list
117 while (cursor.next()) {
118
119 const coral::AttributeList& row = cursor.currentRow();
120
121 if(!pssnameset) {
122 string pssname = CheckTilda(row["PS.HPS_NAME"].data<string>());
123 int pssversion = row["PS.HPS_VERSION"].data<int>();
124 hltpss.setName(pssname);
125 hltpss.setVersion(pssversion);
126 pssnameset=true;
127 }
128
129 string level = isRun1() ? row["PR.HPR_L2_OR_EF"].data<string>() : "HLT";
130 int counter = row["PR.HPR_CHAIN_COUNTER"].data<int>();
131
132 // this is faster than boost::lexical_cast string->float:
133 if(isRun1()) {
134 float ps(-999);
135 float pt(-999);
136 std::string prescaleStr = row["PR.HPR_PRESCALE"].data<string>();
137 if(prescaleStr=="-0" || prescaleStr=="na" ) prescaleStr = "-1";
138 if (!convert(prescaleStr, ps)) {
139 TRG_MSG_WARNING("Could not convert prescale string '" << prescaleStr << "' of chain " << counter << " to float");
140 }
141
142 std::string passThroughStr = row["PR.HPR_PASS_THROUGH_RATE"].data<string>();
143 if (!convert(passThroughStr, pt)) {
144 TRG_MSG_WARNING("Could not convert passthrough string '" << passThroughStr << "' of chain " << counter << " to float");
145 }
146
147 if(level=="L2" || level=="l2" || level=="EF" || level=="ef" || level=="hlt" || level=="HLT" || level=="") {
148 hltpss.thePrescale( counter, str2lvl(level) )
149 .setPrescale(ps)
150 .setPassThrough(pt);
151 } else {
152 std::string streamnametype(std::move(level));
153 // sanity check: stream name and type are separated by ':'
154 if(streamnametype.rfind(':')==std::string::npos)
155 streamnametype += ":" + streamnametype;
156 }
157 } else {
158 // RUN 2
159 float value = row["PR.HPR_VALUE"].data<float>();
160 string pstype = row["PR.HPR_TYPE"].data<string>();
161 string pscondition = row["PR.HPR_CONDITION"].data<string>();
162
163 TRG_MSG_DEBUG("Loaded prescales:"<< setw(4) << right << counter << " : " << pstype << " (" << pscondition << ") => " << value );
164
165 auto& thePS = hltpss.thePrescale( counter, str2lvl("HLT") );
166
167 if(pstype=="Prescale") {
168 thePS.setPrescale(value);
169 } else if (pstype=="Pass_Through") {
170 thePS.setPassThrough(value);
171 } else if (pstype=="ReRun") {
172 if(pscondition=="0") pscondition="";
173 thePS.setRerunPrescale(pscondition,value);
174 } else if (pstype=="Stream") {
175 // pscontition : stream name
176 thePS.setStreamPrescale(pscondition,value);
177 } else {
178 TRG_MSG_WARNING("Could not interpret this entry in the prescale set table: counter " << counter << " : " << pstype << " (" << pscondition << ") => " << value);
179 }
180 }
181 }
182
183 if(isRun1()) {
184 TRG_MSG_INFO("Loaded " << hltpss.size(L2) << " L2 prescales and " << hltpss.size(EF) << " EF prescales.");
185 } else {
186 TRG_MSG_INFO("Loaded " << hltpss.size() << " HLT prescales");
187 }
189 }
190 catch (const coral::SchemaException& e) {
191 TRG_MSG_ERROR("HLTPrescaleSetLoader >> IRelationalException: " << e.what());
192 m_session.transaction().rollback();
193 return false;
194 }
195 catch (const std::exception& e) {
196 TRG_MSG_ERROR("HLTPrescaleSetLoader >> Standard C++ exception: " << e.what());
197 m_session.transaction().rollback();
198 return false;
199 }
200 catch (...) {
201 TRG_MSG_ERROR("HLTPrescaleSetLoader >> unknown C++ exception");
202 m_session.transaction().rollback();
203 return false;
204 }
205
206 return true;
207
208}
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
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
row
Appending html table to final .html summary file.
std::unique_ptr< MVAUtils::BDT > convert(TMVA::MethodBDT *bdt, bool isRegression=true, bool useYesNoLeaf=false)
HLTLevel str2lvl(const std::string &level)
Definition HLTLevel.h:14
void fillQuery(coral::IQuery *q, coral::AttributeList &attList)
Definition DBHelper.cxx:13

◆ 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

◆ 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: