CMS 3D CMS Logo

ITimingDat Class Reference

#include <OnlineDB/EcalCondDB/interface/ITimingDat.h>

Inheritance diagram for ITimingDat:

IDataItem IDBObject MonTimingCrystalDat MonTimingLaserBlueCrystalDat MonTimingLaserBlueTTDat MonTimingLaserGreenCrystalDat MonTimingLaserGreenTTDat MonTimingLaserIRedCrystalDat MonTimingLaserIRedTTDat MonTimingLaserRedCrystalDat MonTimingLaserRedTTDat MonTimingLed1CrystalDat MonTimingLed1TTDat MonTimingLed2CrystalDat MonTimingLed2TTDat MonTimingTTDat

List of all members.

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


Detailed Description

Definition at line 23 of file ITimingDat.h.


Constructor & Destructor Documentation

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]

Definition at line 42 of file ITimingDat.h.

00042 {};


Member Function Documentation

template<class DATT, class IOVT>
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]

Definition at line 56 of file ITimingDat.h.

References m_taskStatus.

00056 { return m_taskStatus; }

float ITimingDat::getTimingMean (  )  const [inline]

Definition at line 50 of file ITimingDat.h.

References m_timingMean.

00050 { return m_timingMean; }

float ITimingDat::getTimingRMS (  )  const [inline]

Definition at line 53 of file ITimingDat.h.

References m_timingRMS.

00053 { return m_timingRMS; }

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 47 of file ITimingDat.h.

References m_table_name.

00047 { m_table_name=x; }

void ITimingDat::setTaskStatus ( bool  status  )  [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; }

template<class DATT, class IOVT>
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 }

template<class DATT, class IOVT>
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 }


Friends And Related Function Documentation

friend class EcalCondDBInterface [friend]

Reimplemented from IDBObject.

Definition at line 25 of file ITimingDat.h.


Member Data Documentation

std::string ITimingDat::m_table_name [private]

Definition at line 254 of file ITimingDat.h.

Referenced by getTable(), and setTable().

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().


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:26:00 2009 for CMSSW by  doxygen 1.5.4