CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiStripCoralIface Class Reference

An interface class to the PVSS cond DB. More...

#include <SiStripCoralIface.h>

Public Member Functions

void doNameQuery (std::vector< std::string > &vec_dpname, std::vector< uint32_t > &vec_dpid)
 
void doQuery (std::string queryType, const coral::TimeStamp &startTime, const coral::TimeStamp &endTime, std::vector< coral::TimeStamp > &, std::vector< float > &, std::vector< std::string > &)
 
void doSettingsQuery (const coral::TimeStamp &startTime, const coral::TimeStamp &endTime, std::vector< coral::TimeStamp > &, std::vector< float > &, std::vector< std::string > &, std::vector< uint32_t > &)
 
 SiStripCoralIface (std::string connectionString, std::string authenticationPath, const bool debug)
 
 ~SiStripCoralIface ()
 

Private Member Functions

void initialize ()
 

Private Attributes

bool debug_
 
std::string m_authPath
 
std::string m_connectionString
 
std::map< std::string, unsigned int > m_id_map
 
cond::persistency::Session m_session
 
std::unique_ptr< cond::persistency::TransactionScopem_transaction
 

Detailed Description

An interface class to the PVSS cond DB.

Author
J.Chen, J.Cole

Definition at line 18 of file SiStripCoralIface.h.

Constructor & Destructor Documentation

SiStripCoralIface::SiStripCoralIface ( std::string  connectionString,
std::string  authenticationPath,
const bool  debug 
)

constructor

Definition at line 21 of file SiStripCoralIface.cc.

References gather_cfg::cout, and initialize().

22 {
23  std::cout << "Building coral interface" << std::endl;
24  initialize();
25 }
std::string m_connectionString
std::string m_authPath
#define debug
Definition: HDRShower.cc:19
cond::persistency::Session m_session
SiStripCoralIface::~SiStripCoralIface ( )

destructor

Definition at line 28 of file SiStripCoralIface.cc.

References LogTrace.

28  {
29  LogTrace("SiStripCoralIface") << "[SiStripCoralIface::" << __func__ << "] Destructor called.";
30  // m_connection.close();
31 }
#define LogTrace(id)

Member Function Documentation

void SiStripCoralIface::doNameQuery ( std::vector< std::string > &  vec_dpname,
std::vector< uint32_t > &  vec_dpid 
)

Definition at line 158 of file SiStripCoralIface.cc.

References cond::persistency::Session::coralSession(), m_session, das::query(), and AlCaHLTBitMon_QueryRunRegistry::string.

159 {
160  std::unique_ptr<coral::IQuery> query( m_session.coralSession().schema(std::string("CMS_TRK_DCS_PVSS_COND")).newQuery());
161  query->addToOutputList("DP_NAME2ID.DPNAME","DPNAME");
162  query->addToOutputList("DP_NAME2ID.ID","DPID");
163  query->addToTableList("DP_NAME2ID");
164 
165  std::string condition = "DP_NAME2ID.DPNAME like '%easyBoard%' ";
166  query->setCondition( condition, coral::AttributeList() );
167 
168  query->setMemoryCacheSize( 100 );
169  coral::ICursor& cursor = query->execute();
170  int numberRow=0;
171  while( cursor.next() ){
172  const coral::AttributeList& row = cursor.currentRow();
173  numberRow++;
174  uint32_t id = (uint32_t)row["DPID"].data<float>();
175  vec_dpid.push_back(id);
176  std::string id_name = (std::string)row["DPNAME"].data<std::string>();
177  vec_dpname.push_back(id_name);
178  }
179  cursor.close();
180  edm::LogInfo("SiStripCoralIface") << "[SiStripCoralIface::" << __func__ << "] " << numberRow << " rows retrieved from PVSS Cond DB";
181 }
def query(query_str, verbose=False)
Definition: das.py:6
Definition: query.py:1
cond::persistency::Session m_session
coral::ISessionProxy & coralSession()
Definition: Session.cc:228
void SiStripCoralIface::doQuery ( std::string  queryType,
const coral::TimeStamp &  startTime,
const coral::TimeStamp &  endTime,
std::vector< coral::TimeStamp > &  vec_changedate,
std::vector< float > &  vec_actualValue,
std::vector< std::string > &  vec_dpname 
)

Method to retrieve information from status change table or lastValue table. queryType defines which table is to be accessed.

Definition at line 51 of file SiStripCoralIface.cc.

References cond::persistency::Session::coralSession(), gather_cfg::cout, debug_, objects.autophobj::float, LogTrace, m_session, das::query(), and AlCaHLTBitMon_QueryRunRegistry::string.

53 {
54  std::unique_ptr<coral::IQuery> query( m_session.coralSession().schema(std::string("CMS_TRK_DCS_PVSS_COND")).newQuery());
55  std::string condition;
56 
57  LogTrace("SiStripCoralIface") << "[SiStripCoralIface::" << __func__ << "] table to be accessed: " << queryType;
58 
59  if (queryType == "STATUSCHANGE") {
60  query->addToOutputList("FWCAENCHANNEL.CHANGE_DATE","CHANGE_DATE");
61  query->addToOutputList("FWCAENCHANNEL.ACTUAL_STATUS","ACTUAL_STATUS");
62  query->addToOutputList("DP_NAME2ID.DPNAME","DPNAME");
63  query->addToOrderList("FWCAENCHANNEL.CHANGE_DATE");
64  query->addToTableList("FWCAENCHANNEL");
65  query->addToTableList("DP_NAME2ID");
66  condition = "FWCAENCHANNEL.DPID = DP_NAME2ID.ID AND FWCAENCHANNEL.CHANGE_DATE<=:tmax AND FWCAENCHANNEL.ACTUAL_STATUS IS NOT NULL AND FWCAENCHANNEL.CHANGE_DATE >=:tmin AND (DP_NAME2ID.DPNAME like '%easyBoard%')";
67  } else if (queryType == "LASTVALUE") {
68  query->addToOutputList("DCSLASTVALUE_VOLTAGE.CHANGE_DATE","CHANGE_DATE");
69  query->addToOutputList("DCSLASTVALUE_VOLTAGE.ACTUAL_VMON","ACTUAL_VMON");
70  query->addToOutputList("DP_NAME2ID.DPNAME","DPNAME");
71  query->addToOrderList("DCSLASTVALUE_VOLTAGE.CHANGE_DATE");
72  query->addToTableList("DCSLASTVALUE_VOLTAGE");
73  query->addToTableList("DP_NAME2ID");
74  condition = "DCSLASTVALUE_VOLTAGE.DPID = DP_NAME2ID.ID AND DCSLASTVALUE_VOLTAGE.CHANGE_DATE<=:tmax AND DCSLASTVALUE_VOLTAGE.CHANGE_DATE>=:tmin AND DCSLASTVALUE_VOLTAGE.ACTUAL_VMON IS NOT NULL AND (DP_NAME2ID.DPNAME like '%easyBoard%')";
75  }
76 
77  coral::AttributeList conditionData;
78  conditionData.extend<coral::TimeStamp>( "tmax" );
79  conditionData.extend<coral::TimeStamp>( "tmin" );
80  query->setCondition( condition, conditionData );
81  conditionData[0].data<coral::TimeStamp>() = endTime;
82  conditionData[1].data<coral::TimeStamp>() = startTime;
83 
84  query->setMemoryCacheSize( 100 );
85  std::cout<<"Executing query"<<std::endl;
86  if (debug_) std::cout<<"[SiStripCoralIface::"<<__func__<<"] Dumping all query results:"<<std::endl;
87  coral::ICursor& cursor = query->execute();
88  int numberRow=0;
89  while( cursor.next() ){
90  const coral::AttributeList& row = cursor.currentRow();
91  //DEBUG
92  //Output the query results directly to cout,
93  //Can be subsequently parsed by Python validation code
94  if( debug_ ) row.toOutputStream( std::cout ) << std::endl;
95  numberRow++;
96  if (queryType == "STATUSCHANGE") {
97  coral::TimeStamp ts = row["CHANGE_DATE"].data<coral::TimeStamp>();
98  vec_changedate.push_back(ts);
99  float as = (float)row["ACTUAL_STATUS"].data<float>();
100  vec_actualValue.push_back(as);
101  std::string id_name = (std::string)row["DPNAME"].data<std::string>();
102  vec_dpname.push_back(id_name);
103  } else if (queryType == "LASTVALUE") {
104  coral::TimeStamp ts = row["CHANGE_DATE"].data<coral::TimeStamp>();
105  vec_changedate.push_back(ts);
106  float av = (float)row["ACTUAL_VMON"].data<float>();
107  vec_actualValue.push_back(av);
108  std::string id_name = (std::string)row["DPNAME"].data<std::string>();
109  vec_dpname.push_back(id_name);
110  }
111  }
112  cursor.close();
113  if (debug_) std::cout<<"[SiStripCoralIface::"<<__func__<<"] Finished dumping query results, "<< numberRow<<" rows were retrieved from PVSS Cond DB (both Pixel and Strip CAEN supplies)"<<std::endl;
114  edm::LogInfo("SiStripCoralIface") << "[SiStripCoralIface::" << __func__ << "] " << numberRow << " rows retrieved from PVSS Cond DB";
115 }
def query(query_str, verbose=False)
Definition: das.py:6
Definition: query.py:1
#define LogTrace(id)
cond::persistency::Session m_session
coral::ISessionProxy & coralSession()
Definition: Session.cc:228
void SiStripCoralIface::doSettingsQuery ( const coral::TimeStamp &  startTime,
const coral::TimeStamp &  endTime,
std::vector< coral::TimeStamp > &  vec_changedate,
std::vector< float > &  vec_settings,
std::vector< std::string > &  vec_dpname,
std::vector< uint32_t > &  vec_dpid 
)

Method to access the settings for each channel stored in the status change table

Definition at line 118 of file SiStripCoralIface.cc.

References cond::persistency::Session::coralSession(), gather_cfg::cout, debug_, objects.autophobj::float, m_session, das::query(), and AlCaHLTBitMon_QueryRunRegistry::string.

120 {
121  std::unique_ptr<coral::IQuery> query( m_session.coralSession().schema(std::string("CMS_TRK_DCS_PVSS_COND")).newQuery());
122  query->addToOutputList("FWCAENCHANNEL.CHANGE_DATE","CHANGE_DATE");
123  query->addToOutputList("FWCAENCHANNEL.SETTINGS_V0","VSET");
124  query->addToOutputList("FWCAENCHANNEL.DPID","DPID");
125  query->addToOutputList("DP_NAME2ID.DPNAME","DPNAME");
126  query->addToOrderList("FWCAENCHANNEL.CHANGE_DATE");
127  query->addToTableList("FWCAENCHANNEL");
128  query->addToTableList("DP_NAME2ID");
129  std::string condition = "FWCAENCHANNEL.DPID = DP_NAME2ID.ID AND FWCAENCHANNEL.CHANGE_DATE<=:tmax AND FWCAENCHANNEL.SETTINGS_V0 IS NOT NULL AND FWCAENCHANNEL.CHANGE_DATE >=:tmin AND (DP_NAME2ID.DPNAME like '%easyBoard%')";
130 
131  coral::AttributeList conditionData;
132  conditionData.extend<coral::TimeStamp>( "tmax" );
133  conditionData.extend<coral::TimeStamp>( "tmin" );
134  query->setCondition( condition, conditionData );
135  conditionData[0].data<coral::TimeStamp>() = endTime;
136  conditionData[1].data<coral::TimeStamp>() = startTime;
137 
138  query->setMemoryCacheSize( 100 );
139  coral::ICursor& cursor = query->execute();
140  int numberRow=0;
141  while( cursor.next() ){
142  const coral::AttributeList& row = cursor.currentRow();
143  if( debug_ ) row.toOutputStream( std::cout ) << std::endl;
144  numberRow++;
145  coral::TimeStamp ts = row["CHANGE_DATE"].data<coral::TimeStamp>();
146  vec_changedate.push_back(ts);
147  float vs = (float)row["VSET"].data<float>();
148  vec_settings.push_back(vs);
149  uint32_t id = (uint32_t)row["DPID"].data<float>();
150  vec_dpid.push_back(id);
151  std::string id_name = (std::string)row["DPNAME"].data<std::string>();
152  vec_dpname.push_back(id_name);
153  }
154  cursor.close();
155  edm::LogInfo("SiStripCoralIface") << "[SiStripCoralIface::" << __func__ << "] " << numberRow << " rows retrieved from PVSS Cond DB";
156 }
def query(query_str, verbose=False)
Definition: das.py:6
Definition: query.py:1
cond::persistency::Session m_session
coral::ISessionProxy & coralSession()
Definition: Session.cc:228
void SiStripCoralIface::initialize ( )
private

Set up the connection to the database

Definition at line 34 of file SiStripCoralIface.cc.

References cond::persistency::ConnectionPool::configure(), cond::persistency::ConnectionPool::createSession(), cmsRelvalreport::exit, LogTrace, m_authPath, m_connectionString, m_session, m_transaction, cond::persistency::ConnectionPool::setAuthenticationPath(), and cond::persistency::Session::transaction().

Referenced by SiStripCoralIface().

34  {
37  connection.configure();
39  try {
41  m_transaction->start(true);
42  LogTrace("SiStripCoralIface") << "[SiStripCoralIface::" << __func__ << "] Database connection opened";
43  }
44  catch (...) {
45  edm::LogError("SiStripCoralIface") << "Database connection failed";
46  exit(1);
47  }
48 }
std::string m_connectionString
std::string m_authPath
Transaction & transaction()
Definition: Session.cc:66
Session createSession(const std::string &connectionString, bool writeCapable=false)
#define LogTrace(id)
cond::persistency::Session m_session
std::unique_ptr< cond::persistency::TransactionScope > m_transaction
void setAuthenticationPath(const std::string &p)

Member Data Documentation

bool SiStripCoralIface::debug_
private

Definition at line 44 of file SiStripCoralIface.h.

Referenced by doQuery(), and doSettingsQuery().

std::string SiStripCoralIface::m_authPath
private

Definition at line 37 of file SiStripCoralIface.h.

Referenced by initialize().

std::string SiStripCoralIface::m_connectionString
private

Definition at line 36 of file SiStripCoralIface.h.

Referenced by initialize().

std::map<std::string,unsigned int> SiStripCoralIface::m_id_map
private

Definition at line 38 of file SiStripCoralIface.h.

cond::persistency::Session SiStripCoralIface::m_session
private

Definition at line 39 of file SiStripCoralIface.h.

Referenced by doNameQuery(), doQuery(), doSettingsQuery(), and initialize().

std::unique_ptr<cond::persistency::TransactionScope> SiStripCoralIface::m_transaction
private

Definition at line 40 of file SiStripCoralIface.h.

Referenced by initialize().