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

TriggerDB loader of the LVL1 calorimeter sin and cos configuration. More...

#include <CaloSinCosLoader.h>

Inheritance diagram for TrigConf::CaloSinCosLoader:
Collaboration diagram for TrigConf::CaloSinCosLoader:

Public Member Functions

 CaloSinCosLoader (StorageMgr &sm, coral::ISessionProxy &session)
 constructor
virtual ~CaloSinCosLoader () override=default
 destructor
virtual bool load (CaloSinCos &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

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 sin and cos configuration.

Definition at line 29 of file CaloSinCosLoader.h.

Constructor & Destructor Documentation

◆ CaloSinCosLoader()

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

constructor

Parameters
smreference to storage manager
sessionreference to the database session

Definition at line 38 of file CaloSinCosLoader.h.

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

◆ ~CaloSinCosLoader()

virtual TrigConf::CaloSinCosLoader::~CaloSinCosLoader ( )
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::CaloSinCosLoader::load ( CaloSinCos & data)
overridevirtual

Implements TrigConf::ICaloSinCosLoader.

Definition at line 37 of file CaloSinCosLoader.cxx.

37 {
38 msg() << "CaloSinCosLoader started loading data via ID. ID = " << cscTarget.id() << std::endl;
39
40 try {
42 msg() << "Loading CaloSinCos " << cscTarget.id() << std::endl;
43
44 coral::ITable& table = m_session.nominalSchema().tableHandle( "L1_CALO_SIN_COS");
45 coral::IQuery* query = table.newQuery();
46 query->setRowCacheSize( 5 );
47
48 // the query condition
49 std::string condition = "L1CSC_ID = :l1cscid";
50
51 // binding
52 coral::AttributeList boundvars;
53 boundvars.extend<int>("l1cscid");
54 boundvars[0].data<int>() = (int)cscTarget.id();
55
56 query->setCondition( condition, boundvars );
57
58 //Output
59 coral::AttributeList attList;
60 attList.extend<int>( "L1CSC_VERSION" );
61 attList.extend<std::string>( "L1CSC_NAME" );
62 attList.extend<int>( "L1CSC_VAL1" );
63 attList.extend<int>( "L1CSC_VAL2" );
64 attList.extend<int>( "L1CSC_VAL3" );
65 attList.extend<int>( "L1CSC_VAL4" );
66 attList.extend<int>( "L1CSC_VAL5" );
67 attList.extend<int>( "L1CSC_VAL6" );
68 attList.extend<int>( "L1CSC_VAL7" );
69 attList.extend<int>( "L1CSC_VAL8" );
70 attList.extend<int>( "L1CSC_ETA_MIN" );
71 attList.extend<int>( "L1CSC_ETA_MAX" );
72 attList.extend<int>( "L1CSC_PHI_MIN" );
73 attList.extend<int>( "L1CSC_PHI_MAX" );
74 query->defineOutput(attList);
75
76 query->addToOutputList( "L1CSC_VERSION" );
77 query->addToOutputList( "L1CSC_NAME" );
78 query->addToOutputList( "L1CSC_VAL1" );
79 query->addToOutputList( "L1CSC_VAL2" );
80 query->addToOutputList( "L1CSC_VAL3" );
81 query->addToOutputList( "L1CSC_VAL4" );
82 query->addToOutputList( "L1CSC_VAL5" );
83 query->addToOutputList( "L1CSC_VAL6" );
84 query->addToOutputList( "L1CSC_VAL7" );
85 query->addToOutputList( "L1CSC_VAL8" );
86 query->addToOutputList( "L1CSC_ETA_MIN" );
87 query->addToOutputList( "L1CSC_ETA_MAX" );
88 query->addToOutputList( "L1CSC_PHI_MIN" );
89 query->addToOutputList( "L1CSC_PHI_MAX" );
90
91 query->addToOrderList( "L1CSC_ID" );
92
93 coral::ICursor& cursor = query->execute();
94
95 if ( ! cursor.next() ) {
96 msg() << "CaloSinCosLoader >> No such deadtime exists " << cscTarget.id() << std::endl;
97 delete query;
99 throw std::runtime_error( "CaloSinCosLoader >> CaloSinCos not available" );
100 }
101
102 const coral::AttributeList& row = cursor.currentRow();
103 std::string name = row["L1CSC_NAME"].data<std::string>();
104 int version = row["L1CSC_VERSION"].data<int>();
105 int val1 = row["L1CSC_VAL1"].data<int>();
106 int val2 = row["L1CSC_VAL2"].data<int>();
107 int val3 = row["L1CSC_VAL3"].data<int>();
108 int val4 = row["L1CSC_VAL4"].data<int>();
109 int val5 = row["L1CSC_VAL5"].data<int>();
110 int val6 = row["L1CSC_VAL6"].data<int>();
111 int val7 = row["L1CSC_VAL7"].data<int>();
112 int val8 = row["L1CSC_VAL8"].data<int>();
113 int eta_min = row["L1CSC_ETA_MIN"].data<int>();
114 int eta_max = row["L1CSC_ETA_MAX"].data<int>();
115 int phi_min = row["L1CSC_PHI_MIN"].data<int>();
116 int phi_max = row["L1CSC_PHI_MAX"].data<int>();
117
118 if ( cursor.next() ) {
119 msg() << "CaloSinCosLoader >> More than one CaloSinCos exists "
120 << cscTarget.id() << std::endl;
121 delete query;
123 throw std::runtime_error( "CaloSinCosLoader >> CaloSinCos not available" );
124 }
125
126 // fill the object with data
127 cscTarget.setName( name );
128 cscTarget.setVersion( version );
129 cscTarget.setVal1( val1 );
130 cscTarget.setVal2( val2 );
131 cscTarget.setVal3( val3 );
132 cscTarget.setVal4( val4 );
133 cscTarget.setVal5( val5 );
134 cscTarget.setVal6( val6 );
135 cscTarget.setVal7( val7 );
136 cscTarget.setVal8( val8 );
137 cscTarget.setEtaMin(eta_min);
138 cscTarget.setEtaMax(eta_max);
139 cscTarget.setPhiMin(phi_min);
140 cscTarget.setPhiMax(phi_max);
141
142 delete query;
144 return true;
145 } catch( const coral::SchemaException& e ) {
146 msg() << "CaloSinCosLoader >> SchemaException: "
147 << e.what() << std::endl;
148 m_session.transaction().rollback();
149 return false;
150 } catch( const std::exception& e ) {
151 msg() << "CaloSinCosLoader >> Standard C++ exception: " << e.what() << std::endl;
152 m_session.transaction().rollback();
153 return false;
154 } catch(...) {
155 msg() << "CaloSinCosLoader >> unknown C++ exception" << std::endl;
156 m_session.transaction().rollback();
157 return false;
158 }
159}
void commitSession()
commit session if not already done
Definition DBLoader.cxx:45
void startSession()
start session if not already active
Definition DBLoader.cxx:35
MsgStreamTC & msg() const
The standard message stream.
row
Appending html table to final .html summary file.
query
Definition index.py:72

◆ 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}
void fillQuery(coral::IQuery *q, coral::AttributeList &attList)
Definition DBHelper.cxx:13

◆ 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}
unsigned int triggerDBSchemaVersion()
Definition DBLoader.cxx:76

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