CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends

ITimingDat Class Reference

#include <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 Types

typedef oracle::occi::ResultSet ResultSet
typedef oracle::occi::SQLException SQLException

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 (std::runtime_error)
void prepareWrite () throw (std::runtime_error)
template<class DATT , class IOVT >
void writeArrayDB (const std::map< EcalLogicID, DATT > *data, IOVT *iov) throw (std::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 17 of file ITimingDat.h.


Member Typedef Documentation

Definition at line 20 of file ITimingDat.h.

Definition at line 19 of file ITimingDat.h.


Constructor & Destructor Documentation

ITimingDat::ITimingDat ( ) [inline]
ITimingDat::~ITimingDat ( ) [inline]

Definition at line 38 of file ITimingDat.h.

{};

Member Function Documentation

template<class DATT , class IOVT >
void ITimingDat::fetchData ( std::map< EcalLogicID, DATT > *  fillMap,
IOVT *  iov 
) throw (std::runtime_error) [inline, private]

Definition at line 197 of file ITimingDat.h.

References IDBObject::checkConnection(), edm::pset::fillMap(), getTable(), o2o::iov, IDBObject::m_conn, IDBObject::m_env, IDataItem::m_readStmt, and AlCaHLTBitMon_ParallelJobs::p.

{
  this->checkConnection();
  fillMap->clear();

  iov->setConnection(m_env, m_conn);
  int iovID = iov->fetchID();
  if (!iovID) { 
    //  throw(std::runtime_error("ITimingDat::writeDB:  IOV not in DB")); 
    return;
  }

  try {

    m_readStmt->setSQL("SELECT cv.name, cv.logic_id, cv.id1, cv.id2, cv.id3, cv.maps_to, "
                 "d.timing_mean, d.timing_rms, d.task_status "
                 "FROM channelview cv JOIN "+ getTable() +"  d "
                 "ON cv.logic_id = d.logic_id AND cv.name = cv.maps_to "
                 "WHERE d.iov_id = :iov_id");
    m_readStmt->setInt(1, iovID);
    ResultSet* rset = m_readStmt->executeQuery();
    
    std::pair< EcalLogicID, DATT > p;
    DATT dat;
    while(rset->next()) {
      p.first = EcalLogicID( rset->getString(1),     // name
                             rset->getInt(2),        // logic_id
                             rset->getInt(3),        // id1
                             rset->getInt(4),        // id2
                             rset->getInt(5),        // id3
                             rset->getString(6));    // maps_to

      dat.setTimingMean( rset->getFloat(7) );
      dat.setTimingRMS( rset->getFloat(8) );
      dat.setTaskStatus( rset->getInt(9) );


      p.second = dat;
      fillMap->insert(p);
    }


  } catch (SQLException &e) {
    throw(std::runtime_error("ITimingDat::fetchData():  "+e.getMessage()));
  }
}
std::string ITimingDat::getTable ( ) [inline, virtual]
bool ITimingDat::getTaskStatus ( ) const [inline]

Definition at line 52 of file ITimingDat.h.

References m_taskStatus.

{ return m_taskStatus; }
float ITimingDat::getTimingMean ( ) const [inline]

Definition at line 46 of file ITimingDat.h.

References m_timingMean.

{ return m_timingMean; }
float ITimingDat::getTimingRMS ( ) const [inline]

Definition at line 49 of file ITimingDat.h.

References m_timingRMS.

{ return m_timingRMS; }
void ITimingDat::prepareWrite ( ) throw (std::runtime_error) [inline, private, virtual]

Implements IDataItem.

Definition at line 56 of file ITimingDat.h.

References IDBObject::checkConnection(), getTable(), IDBObject::m_conn, and IDataItem::m_writeStmt.

{
  this->checkConnection();

  try {
    m_writeStmt = m_conn->createStatement();
    m_writeStmt->setSQL("INSERT INTO " + getTable() + " (iov_id, logic_id, "
                        "timing_mean, timing_rms , task_status ) "
                        "VALUES (:iov_id, :logic_id, "
                        ":timing_mean, :timing_rms, :task_status )");
  } catch (SQLException &e) {
    throw(std::runtime_error("ITimingDat::prepareWrite():  "+e.getMessage()));
  }
}
void ITimingDat::setTable ( std::string  x) [inline]

Definition at line 43 of file ITimingDat.h.

References m_table_name, and x.

void ITimingDat::setTaskStatus ( bool  status) [inline]

Definition at line 51 of file ITimingDat.h.

References m_taskStatus, and ntuplemaker::status.

void ITimingDat::setTimingMean ( float  mean) [inline]

Definition at line 45 of file ITimingDat.h.

References m_timingMean, and timingPdfMaker::mean.

void ITimingDat::setTimingRMS ( float  rms) [inline]

Definition at line 48 of file ITimingDat.h.

References m_timingRMS, and plotscripts::rms().

template<class DATT , class IOVT >
void ITimingDat::writeArrayDB ( const std::map< EcalLogicID, DATT > *  data,
IOVT *  iov 
) throw (std::runtime_error) [inline, private]

Definition at line 102 of file ITimingDat.h.

References IDBObject::checkConnection(), IDataItem::checkPrepare(), prof2calltree::count, AlCaHLTBitMon_QueryRunRegistry::data, EcalLogicID::getLogicID(), o2o::iov, IDataItem::m_writeStmt, AlCaHLTBitMon_ParallelJobs::p, x, and detailsBasic3DVector::y.

{
  using oracle::occi::OCCIINT;
  using oracle::occi::OCCIFLOAT;

  this->checkConnection();
  this->checkPrepare();

  int iovID = iov->fetchID();
  if (!iovID) { throw(std::runtime_error("ITimingDat::writeArrayDB:  IOV not in DB")); }


  int nrows=data->size(); 
  int* ids= new int[nrows];
  int* iovid_vec= new int[nrows];
  float* xx= new float[nrows];
  float* yy= new float[nrows];
  int* st= new int[nrows];


  ub2* ids_len= new ub2[nrows];
  ub2* iov_len= new ub2[nrows];
  ub2* x_len= new ub2[nrows];
  ub2* y_len= new ub2[nrows];
  ub2* st_len= new ub2[nrows];


  const EcalLogicID* channel;
  const DATT* dataitem;
  int count=0;
  //  typedef std::map< EcalLogicID, DATT >::const_iterator CI;
  typedef typename std::map< EcalLogicID, DATT >::const_iterator CI;
  for (CI p = data->begin(); p != data->end(); ++p) {
        channel = &(p->first);
        int logicID = channel->getLogicID();
        if (!logicID) { throw(std::runtime_error("ITimingDat::writeArrayDB:  Bad EcalLogicID")); }
        ids[count]=logicID;
        iovid_vec[count]=iovID;

        dataitem = &(p->second);
        
        float x=dataitem->getTimingMean();
        float y=dataitem->getTimingRMS();
        int statu=dataitem->getTaskStatus();

        xx[count]=x;
        yy[count]=y;
        st[count]=statu;



        ids_len[count]=sizeof(ids[count]);
        iov_len[count]=sizeof(iovid_vec[count]);
        
        x_len[count]=sizeof(xx[count]);
        y_len[count]=sizeof(yy[count]);
        st_len[count]=sizeof(st[count]);

        count++;
     }


  try {
    m_writeStmt->setDataBuffer(1, (dvoid*)iovid_vec, OCCIINT, sizeof(iovid_vec[0]),iov_len);
    m_writeStmt->setDataBuffer(2, (dvoid*)ids, OCCIINT, sizeof(ids[0]), ids_len );
    m_writeStmt->setDataBuffer(3, (dvoid*)xx, OCCIFLOAT , sizeof(xx[0]), x_len );
    m_writeStmt->setDataBuffer(4, (dvoid*)yy, OCCIFLOAT , sizeof(yy[0]), y_len );
    m_writeStmt->setDataBuffer(5, (dvoid*)st, OCCIINT , sizeof(st[0]), st_len );
 
    m_writeStmt->executeArrayUpdate(nrows);

    delete [] ids;
    delete [] iovid_vec;
    delete [] xx;
    delete [] yy;
    delete [] st;

    delete [] ids_len;
    delete [] iov_len;
    delete [] x_len;
    delete [] y_len;
    delete [] st_len;

  } catch (SQLException &e) {
    throw(std::runtime_error("ITimingDat::writeArrayDB():  "+e.getMessage()));
  }
}
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 74 of file ITimingDat.h.

References IDBObject::checkConnection(), IDataItem::checkPrepare(), o2o::iov, and IDataItem::m_writeStmt.

{
  this->checkConnection();
  this->checkPrepare();

  int iovID = iov->fetchID();
  if (!iovID) { throw(std::runtime_error("ITimingDat::writeDB:  IOV not in DB")); }

  int logicID = ecid->getLogicID();
  if (!logicID) { throw(std::runtime_error("ITimingDat::writeDB:  Bad EcalLogicID")); }
  
  try {
    m_writeStmt->setInt(1, iovID);
    m_writeStmt->setInt(2, logicID);

    m_writeStmt->setFloat(3, item->getTimingMean() );
    m_writeStmt->setFloat(4, item->getTimingRMS() );
    m_writeStmt->setInt(5, item->getTaskStatus() );


    m_writeStmt->executeUpdate();
  } catch (SQLException &e) {
    throw(std::runtime_error("ITimingDat::writeDB():  "+e.getMessage()));
  }
}

Friends And Related Function Documentation

friend class EcalCondDBInterface [friend]

Reimplemented from IDBObject.

Definition at line 21 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().