#include <OnlineDB/EcalCondDB/interface/ITimingDat.h>
Public Member Functions | |
std::string | getTable () |
bool | getTaskStatus () const |
float | getTimingMean () const |
float | getTimingRMS () const |
ITimingDat () | |
void | setTable (std::string x) |
void | setTaskStatus (bool status) |
void | setTimingMean (float mean) |
void | setTimingRMS (float rms) |
~ITimingDat () | |
Private Member Functions | |
template<class DATT, class IOVT> | |
void | fetchData (std::map< EcalLogicID, DATT > *fillMap, IOVT *iov) throw (runtime_error) |
void | prepareWrite () throw (runtime_error) |
template<class DATT, class IOVT> | |
void | writeArrayDB (const std::map< EcalLogicID, DATT > *data, IOVT *iov) throw (runtime_error) |
template<class DATT, class IOVT> | |
void | writeDB (const EcalLogicID *ecid, const DATT *item, IOVT *iov) throw (std::runtime_error) |
Private Attributes | |
std::string | m_table_name |
bool | m_taskStatus |
float | m_timingMean |
float | m_timingRMS |
Friends | |
class | EcalCondDBInterface |
Definition at line 23 of file ITimingDat.h.
ITimingDat::ITimingDat | ( | ) | [inline] |
Definition at line 28 of file ITimingDat.h.
References IDBObject::m_conn, IDBObject::m_env, IDataItem::m_readStmt, m_taskStatus, m_timingMean, m_timingRMS, IDataItem::m_writeStmt, and NULL.
00029 { 00030 m_env = NULL; 00031 m_conn = NULL; 00032 m_writeStmt = NULL; 00033 m_readStmt = NULL; 00034 00035 m_timingMean = 0; 00036 m_timingRMS = 0; 00037 m_taskStatus=0; 00038 };
ITimingDat::~ITimingDat | ( | ) | [inline] |
void ITimingDat::fetchData | ( | std::map< EcalLogicID, DATT > * | fillMap, | |
IOVT * | iov | |||
) | throw (runtime_error) [inline, private] |
Definition at line 197 of file ITimingDat.h.
References IDBObject::checkConnection(), e, getTable(), IDBObject::m_conn, IDBObject::m_env, IDataItem::m_readStmt, and p.
00199 { 00200 this->checkConnection(); 00201 fillMap->clear(); 00202 00203 iov->setConnection(m_env, m_conn); 00204 int iovID = iov->fetchID(); 00205 if (!iovID) { 00206 // throw(runtime_error("ITimingDat::writeDB: IOV not in DB")); 00207 return; 00208 } 00209 00210 try { 00211 00212 m_readStmt->setSQL("SELECT cv.name, cv.logic_id, cv.id1, cv.id2, cv.id3, cv.maps_to, " 00213 "d.timing_mean, d.timing_rms, d.task_status " 00214 "FROM channelview cv JOIN "+ getTable() +" d " 00215 "ON cv.logic_id = d.logic_id AND cv.name = cv.maps_to " 00216 "WHERE d.iov_id = :iov_id"); 00217 m_readStmt->setInt(1, iovID); 00218 ResultSet* rset = m_readStmt->executeQuery(); 00219 00220 std::pair< EcalLogicID, DATT > p; 00221 DATT dat; 00222 while(rset->next()) { 00223 p.first = EcalLogicID( rset->getString(1), // name 00224 rset->getInt(2), // logic_id 00225 rset->getInt(3), // id1 00226 rset->getInt(4), // id2 00227 rset->getInt(5), // id3 00228 rset->getString(6)); // maps_to 00229 00230 dat.setTimingMean( rset->getFloat(7) ); 00231 dat.setTimingRMS( rset->getFloat(8) ); 00232 dat.setTaskStatus( rset->getInt(9) ); 00233 00234 00235 p.second = dat; 00236 fillMap->insert(p); 00237 } 00238 00239 00240 } catch (SQLException &e) { 00241 throw(runtime_error("ITimingDat::fetchData(): "+e.getMessage())); 00242 } 00243 }
std::string ITimingDat::getTable | ( | ) | [inline, virtual] |
Implements IDataItem.
Reimplemented in MonTimingCrystalDat, MonTimingLaserBlueCrystalDat, MonTimingLaserBlueTTDat, MonTimingLaserGreenCrystalDat, MonTimingLaserGreenTTDat, MonTimingLaserIRedCrystalDat, MonTimingLaserIRedTTDat, MonTimingLaserRedCrystalDat, MonTimingLaserRedTTDat, MonTimingLed1CrystalDat, MonTimingLed1TTDat, MonTimingLed2CrystalDat, MonTimingLed2TTDat, and MonTimingTTDat.
Definition at line 46 of file ITimingDat.h.
References m_table_name.
Referenced by fetchData(), and prepareWrite().
00046 { return m_table_name;}
bool ITimingDat::getTaskStatus | ( | ) | const [inline] |
float ITimingDat::getTimingMean | ( | ) | const [inline] |
float ITimingDat::getTimingRMS | ( | ) | const [inline] |
void ITimingDat::prepareWrite | ( | ) | throw (runtime_error) [inline, private, virtual] |
Implements IDataItem.
Definition at line 60 of file ITimingDat.h.
References IDBObject::checkConnection(), e, getTable(), IDBObject::m_conn, and IDataItem::m_writeStmt.
00062 { 00063 this->checkConnection(); 00064 00065 try { 00066 m_writeStmt = m_conn->createStatement(); 00067 m_writeStmt->setSQL("INSERT INTO " + getTable() + " (iov_id, logic_id, " 00068 "timing_mean, timing_rms , task_status ) " 00069 "VALUES (:iov_id, :logic_id, " 00070 ":timing_mean, :timing_rms, :task_status )"); 00071 } catch (SQLException &e) { 00072 throw(runtime_error("ITimingDat::prepareWrite(): "+e.getMessage())); 00073 } 00074 }
void ITimingDat::setTable | ( | std::string | x | ) | [inline] |
Definition at line 55 of file ITimingDat.h.
References m_taskStatus.
Referenced by EELedClient::writeDb(), EETimingClient::writeDb(), EBLaserClient::writeDb(), EBTimingClient::writeDb(), and EELaserClient::writeDb().
00055 { m_taskStatus = status; }
void ITimingDat::setTimingMean | ( | float | mean | ) | [inline] |
Definition at line 49 of file ITimingDat.h.
References m_timingMean.
Referenced by EELedClient::writeDb(), EETimingClient::writeDb(), EBLaserClient::writeDb(), EBTimingClient::writeDb(), and EELaserClient::writeDb().
00049 { m_timingMean = mean; }
void ITimingDat::setTimingRMS | ( | float | rms | ) | [inline] |
Definition at line 52 of file ITimingDat.h.
References m_timingRMS.
Referenced by EELedClient::writeDb(), EETimingClient::writeDb(), EBLaserClient::writeDb(), EBTimingClient::writeDb(), and EELaserClient::writeDb().
00052 { m_timingRMS = rms; }
void ITimingDat::writeArrayDB | ( | const std::map< EcalLogicID, DATT > * | data, | |
IOVT * | iov | |||
) | throw (runtime_error) [inline, private] |
Definition at line 106 of file ITimingDat.h.
References IDBObject::checkConnection(), IDataItem::checkPrepare(), count, data, e, EcalLogicID::getLogicID(), IDataItem::m_writeStmt, p, st, x, and y.
00108 { 00109 this->checkConnection(); 00110 this->checkPrepare(); 00111 00112 int iovID = iov->fetchID(); 00113 if (!iovID) { throw(runtime_error("ITimingDat::writeArrayDB: IOV not in DB")); } 00114 00115 00116 int nrows=data->size(); 00117 int* ids= new int[nrows]; 00118 int* iovid_vec= new int[nrows]; 00119 float* xx= new float[nrows]; 00120 float* yy= new float[nrows]; 00121 int* st= new int[nrows]; 00122 00123 00124 ub2* ids_len= new ub2[nrows]; 00125 ub2* iov_len= new ub2[nrows]; 00126 ub2* x_len= new ub2[nrows]; 00127 ub2* y_len= new ub2[nrows]; 00128 ub2* st_len= new ub2[nrows]; 00129 00130 00131 const EcalLogicID* channel; 00132 const DATT* dataitem; 00133 int count=0; 00134 // typedef std::map< EcalLogicID, DATT >::const_iterator CI; 00135 typedef typename std::map< EcalLogicID, DATT >::const_iterator CI; 00136 for (CI p = data->begin(); p != data->end(); ++p) { 00137 channel = &(p->first); 00138 int logicID = channel->getLogicID(); 00139 if (!logicID) { throw(runtime_error("ITimingDat::writeArrayDB: Bad EcalLogicID")); } 00140 ids[count]=logicID; 00141 iovid_vec[count]=iovID; 00142 00143 dataitem = &(p->second); 00144 00145 float x=dataitem->getTimingMean(); 00146 float y=dataitem->getTimingRMS(); 00147 int statu=dataitem->getTaskStatus(); 00148 00149 xx[count]=x; 00150 yy[count]=y; 00151 st[count]=statu; 00152 00153 00154 00155 ids_len[count]=sizeof(ids[count]); 00156 iov_len[count]=sizeof(iovid_vec[count]); 00157 00158 x_len[count]=sizeof(xx[count]); 00159 y_len[count]=sizeof(yy[count]); 00160 st_len[count]=sizeof(st[count]); 00161 00162 count++; 00163 } 00164 00165 00166 try { 00167 m_writeStmt->setDataBuffer(1, (dvoid*)iovid_vec, OCCIINT, sizeof(iovid_vec[0]),iov_len); 00168 m_writeStmt->setDataBuffer(2, (dvoid*)ids, OCCIINT, sizeof(ids[0]), ids_len ); 00169 m_writeStmt->setDataBuffer(3, (dvoid*)xx, OCCIFLOAT , sizeof(xx[0]), x_len ); 00170 m_writeStmt->setDataBuffer(4, (dvoid*)yy, OCCIFLOAT , sizeof(yy[0]), y_len ); 00171 m_writeStmt->setDataBuffer(5, (dvoid*)st, OCCIINT , sizeof(st[0]), st_len ); 00172 00173 m_writeStmt->executeArrayUpdate(nrows); 00174 00175 delete [] ids; 00176 delete [] iovid_vec; 00177 delete [] xx; 00178 delete [] yy; 00179 delete [] st; 00180 00181 delete [] ids_len; 00182 delete [] iov_len; 00183 delete [] x_len; 00184 delete [] y_len; 00185 delete [] st_len; 00186 00187 } catch (SQLException &e) { 00188 throw(runtime_error("ITimingDat::writeArrayDB(): "+e.getMessage())); 00189 } 00190 }
void ITimingDat::writeDB | ( | const EcalLogicID * | ecid, | |
const DATT * | item, | |||
IOVT * | iov | |||
) | throw (std::runtime_error) [inline, private] |
Definition at line 78 of file ITimingDat.h.
References IDBObject::checkConnection(), IDataItem::checkPrepare(), e, and IDataItem::m_writeStmt.
00080 { 00081 this->checkConnection(); 00082 this->checkPrepare(); 00083 00084 int iovID = iov->fetchID(); 00085 if (!iovID) { throw(runtime_error("ITimingDat::writeDB: IOV not in DB")); } 00086 00087 int logicID = ecid->getLogicID(); 00088 if (!logicID) { throw(runtime_error("ITimingDat::writeDB: Bad EcalLogicID")); } 00089 00090 try { 00091 m_writeStmt->setInt(1, iovID); 00092 m_writeStmt->setInt(2, logicID); 00093 00094 m_writeStmt->setFloat(3, item->getTimingMean() ); 00095 m_writeStmt->setFloat(4, item->getTimingRMS() ); 00096 m_writeStmt->setInt(5, item->getTaskStatus() ); 00097 00098 00099 m_writeStmt->executeUpdate(); 00100 } catch (SQLException &e) { 00101 throw(runtime_error("ITimingDat::writeDB(): "+e.getMessage())); 00102 } 00103 }
friend class EcalCondDBInterface [friend] |
std::string ITimingDat::m_table_name [private] |
bool ITimingDat::m_taskStatus [private] |
Definition at line 253 of file ITimingDat.h.
Referenced by getTaskStatus(), ITimingDat(), and setTaskStatus().
float ITimingDat::m_timingMean [private] |
Definition at line 251 of file ITimingDat.h.
Referenced by getTimingMean(), ITimingDat(), and setTimingMean().
float ITimingDat::m_timingRMS [private] |
Definition at line 252 of file ITimingDat.h.
Referenced by getTimingRMS(), ITimingDat(), and setTimingRMS().