CMS 3D CMS Logo

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

MonH4TablePositionDat Class Reference

#include <MonH4TablePositionDat.h>

Inheritance diagram for MonH4TablePositionDat:
IDataItem IDBObject

List of all members.

Public Member Functions

std::string getTable ()
float getTableX () const
float getTableY () const
 MonH4TablePositionDat ()
void setTableX (float x)
void setTableY (float y)
 ~MonH4TablePositionDat ()

Private Member Functions

void fetchData (std::map< EcalLogicID, MonH4TablePositionDat > *fillMap, MonRunIOV *iov) throw (std::runtime_error)
void prepareWrite () throw (std::runtime_error)
void writeArrayDB (const std::map< EcalLogicID, MonH4TablePositionDat > *data, MonRunIOV *iov) throw (std::runtime_error)
void writeDB (const EcalLogicID *ecid, const MonH4TablePositionDat *item, MonRunIOV *iov) throw (std::runtime_error)

Private Attributes

float m_tableX
float m_tableY

Friends

class EcalCondDBInterface

Detailed Description

Definition at line 11 of file MonH4TablePositionDat.h.


Constructor & Destructor Documentation

MonH4TablePositionDat::MonH4TablePositionDat ( )

Definition at line 10 of file MonH4TablePositionDat.cc.

References NULL.

MonH4TablePositionDat::~MonH4TablePositionDat ( )

Definition at line 23 of file MonH4TablePositionDat.cc.

{
}

Member Function Documentation

void MonH4TablePositionDat::fetchData ( std::map< EcalLogicID, MonH4TablePositionDat > *  fillMap,
MonRunIOV iov 
) throw (std::runtime_error) [private]

Definition at line 74 of file MonH4TablePositionDat.cc.

References edm::pset::fillMap(), o2o::iov, AlCaHLTBitMon_ParallelJobs::p, setTableX(), and setTableY().

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

  iov->setConnection(m_env, m_conn);
  int iovID = iov->fetchID();
  if (!iovID) { 
    //  throw(std::runtime_error("MonH4TablePositionDat::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.table_x, d.table_y "
                 "FROM channelview cv JOIN mon_h4_table_position_dat 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, MonH4TablePositionDat > p;
    MonH4TablePositionDat 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.setTableX( rset->getFloat(7) );
      dat.setTableY( rset->getFloat(8) );

      p.second = dat;
      fillMap->insert(p);
    }
  } catch (SQLException &e) {
    throw(std::runtime_error("MonH4TablePositionDat::fetchData():  "+e.getMessage()));
  }
}
std::string MonH4TablePositionDat::getTable ( ) [inline, virtual]

Implements IDataItem.

Definition at line 18 of file MonH4TablePositionDat.h.

{ return "MON_H4_TABLE_POSITION_DAT"; }
float MonH4TablePositionDat::getTableX ( ) const [inline]

Definition at line 21 of file MonH4TablePositionDat.h.

References m_tableX.

Referenced by writeArrayDB().

{ return m_tableX; }
float MonH4TablePositionDat::getTableY ( ) const [inline]

Definition at line 24 of file MonH4TablePositionDat.h.

References m_tableY.

Referenced by writeArrayDB().

{ return m_tableY; }
void MonH4TablePositionDat::prepareWrite ( ) throw (std::runtime_error) [private, virtual]

Implements IDataItem.

Definition at line 29 of file MonH4TablePositionDat.cc.

{
  this->checkConnection();

  try {
    m_writeStmt = m_conn->createStatement();
    m_writeStmt->setSQL("INSERT INTO mon_h4_table_position_dat (iov_id, logic_id, "
                        "table_x, table_y) "
                        "VALUES (:iov_id, :logic_id, "
                        ":3, :4)");
  } catch (SQLException &e) {
    throw(std::runtime_error("MonH4TablePositionDat::prepareWrite():  "+e.getMessage()));
  }
}
void MonH4TablePositionDat::setTableX ( float  x) [inline]

Definition at line 20 of file MonH4TablePositionDat.h.

References m_tableX, and x.

Referenced by fetchData().

{ m_tableX = x; }
void MonH4TablePositionDat::setTableY ( float  y) [inline]

Definition at line 23 of file MonH4TablePositionDat.h.

References m_tableY, and detailsBasic3DVector::y.

Referenced by fetchData().

{ m_tableY = y; }
void MonH4TablePositionDat::writeArrayDB ( const std::map< EcalLogicID, MonH4TablePositionDat > *  data,
MonRunIOV iov 
) throw (std::runtime_error) [private]

Definition at line 118 of file MonH4TablePositionDat.cc.

References prof2calltree::count, AlCaHLTBitMon_QueryRunRegistry::data, EcalLogicID::getLogicID(), getTableX(), getTableY(), o2o::iov, AlCaHLTBitMon_ParallelJobs::p, x, and detailsBasic3DVector::y.

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

  int iovID = iov->fetchID();
  if (!iovID) { throw(std::runtime_error("MonH4TablePositionDat::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];


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

  const EcalLogicID* channel;
  const MonH4TablePositionDat* dataitem;
  int count=0;
  typedef map< EcalLogicID, MonH4TablePositionDat >::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("MonH4TablePositionDat::writeArrayDB:  Bad EcalLogicID")); }
        ids[count]=logicID;
        iovid_vec[count]=iovID;

        dataitem = &(p->second);
        // dataIface.writeDB( channel, dataitem, iov);
        float x=dataitem->getTableX();
        float y=dataitem->getTableY();

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

        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]);

        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->executeArrayUpdate(nrows);

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

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

  } catch (SQLException &e) {
    throw(std::runtime_error("MonH4TablePositionDat::writeArrayDB():  "+e.getMessage()));
  }
}
void MonH4TablePositionDat::writeDB ( const EcalLogicID ecid,
const MonH4TablePositionDat item,
MonRunIOV iov 
) throw (std::runtime_error) [private]

Definition at line 47 of file MonH4TablePositionDat.cc.

References o2o::iov.

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

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

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

    m_writeStmt->setFloat(3, item->getTableX() );
    m_writeStmt->setFloat(4, item->getTableY() );

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

Friends And Related Function Documentation

friend class EcalCondDBInterface [friend]

Reimplemented from IDBObject.

Definition at line 13 of file MonH4TablePositionDat.h.


Member Data Documentation

Definition at line 40 of file MonH4TablePositionDat.h.

Referenced by getTableX(), and setTableX().

Definition at line 41 of file MonH4TablePositionDat.h.

Referenced by getTableY(), and setTableY().