CMS 3D CMS Logo

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

MonOccupancyDat Class Reference

#include <MonOccupancyDat.h>

Inheritance diagram for MonOccupancyDat:
IDataItem IDBObject

List of all members.

Public Member Functions

float getAvgEnergy () const
int getEventsOverHighThreshold () const
int getEventsOverLowThreshold () const
std::string getTable ()
 MonOccupancyDat ()
void setAvgEnergy (float energy)
void setEventsOverHighThreshold (int events)
void setEventsOverLowThreshold (int events)
 ~MonOccupancyDat ()

Private Member Functions

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

Private Attributes

float m_avgEnergy
int m_eventsOverHighThreshold
int m_eventsOverLowThreshold

Friends

class EcalCondDBInterface

Detailed Description

Definition at line 12 of file MonOccupancyDat.h.


Constructor & Destructor Documentation

MonOccupancyDat::MonOccupancyDat ( )
MonOccupancyDat::~MonOccupancyDat ( )

Definition at line 24 of file MonOccupancyDat.cc.

{
}

Member Function Documentation

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

Definition at line 76 of file MonOccupancyDat.cc.

References alignCSCRings::e, edm::pset::fillMap(), o2o::iov, AlCaHLTBitMon_ParallelJobs::p, setAvgEnergy(), setEventsOverHighThreshold(), and setEventsOverLowThreshold().

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

  iov->setConnection(m_env, m_conn);
  int iovID = iov->fetchID();
  if (!iovID) { 
    //  throw(std::runtime_error("MonOccupancyDat::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.events_over_low_threshold, d.events_over_high_threshold, d.avg_energy "
                 "FROM channelview cv JOIN mon_occupancy_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, MonOccupancyDat > p;
    MonOccupancyDat 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.setEventsOverLowThreshold( rset->getInt(7) );
      dat.setEventsOverHighThreshold( rset->getInt(8) );
      dat.setAvgEnergy( rset->getFloat(9) );

      p.second = dat;
      fillMap->insert(p);
    }
  } catch (SQLException &e) {
    throw(std::runtime_error("MonOccupancyDat::fetchData():  "+e.getMessage()));
  }
}
float MonOccupancyDat::getAvgEnergy ( ) const [inline]

Definition at line 28 of file MonOccupancyDat.h.

References m_avgEnergy.

Referenced by writeArrayDB().

{ return m_avgEnergy; }
int MonOccupancyDat::getEventsOverHighThreshold ( ) const [inline]
int MonOccupancyDat::getEventsOverLowThreshold ( ) const [inline]

Definition at line 22 of file MonOccupancyDat.h.

References m_eventsOverLowThreshold.

Referenced by writeArrayDB().

std::string MonOccupancyDat::getTable ( ) [inline, virtual]

Implements IDataItem.

Definition at line 19 of file MonOccupancyDat.h.

{ return "MON_OCCUPANCY_DAT"; }
void MonOccupancyDat::prepareWrite ( ) throw (std::runtime_error) [private, virtual]

Implements IDataItem.

Definition at line 30 of file MonOccupancyDat.cc.

References alignCSCRings::e.

{
  this->checkConnection();

  try {
    m_writeStmt = m_conn->createStatement();
    m_writeStmt->setSQL("INSERT INTO mon_occupancy_dat (iov_id, logic_id, "
                        "events_over_low_threshold, events_over_high_threshold, avg_energy) "
                        "VALUES (:iov_id, :logic_id, "
                        ":3, :4, :5)");
  } catch (SQLException &e) {
    throw(std::runtime_error("MonOccupancyDat::prepareWrite():  "+e.getMessage()));
  }
}
void MonOccupancyDat::setAvgEnergy ( float  energy) [inline]

Definition at line 27 of file MonOccupancyDat.h.

References relval_parameters_module::energy, and m_avgEnergy.

Referenced by fetchData().

void MonOccupancyDat::setEventsOverHighThreshold ( int  events) [inline]

Definition at line 24 of file MonOccupancyDat.h.

References patZpeak::events, and m_eventsOverHighThreshold.

Referenced by fetchData().

void MonOccupancyDat::setEventsOverLowThreshold ( int  events) [inline]

Definition at line 21 of file MonOccupancyDat.h.

References patZpeak::events, and m_eventsOverLowThreshold.

Referenced by fetchData().

void MonOccupancyDat::writeArrayDB ( const std::map< EcalLogicID, MonOccupancyDat > *  data,
MonRunIOV iov 
) throw (std::runtime_error) [private]

Definition at line 121 of file MonOccupancyDat.cc.

References prof2calltree::count, data, alignCSCRings::e, getAvgEnergy(), getEventsOverHighThreshold(), getEventsOverLowThreshold(), EcalLogicID::getLogicID(), o2o::iov, AlCaHLTBitMon_ParallelJobs::p, x, detailsBasic3DVector::y, and z.

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

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


  int nrows=data->size(); 
  int* ids= new int[nrows];
  int* iovid_vec= new int[nrows];
  int* xx= new int[nrows];
  int* yy= new int[nrows];
  float* zz= 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];
  ub2* z_len= new ub2[nrows];


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

        dataitem = &(p->second);
        // dataIface.writeDB( channel, dataitem, iov);
        int x=dataitem->getEventsOverLowThreshold();
        int y=dataitem->getEventsOverHighThreshold();
        float z=dataitem->getAvgEnergy();



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

        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]);
        z_len[count]=sizeof(zz[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, OCCIINT , sizeof(xx[0]), x_len );
    m_writeStmt->setDataBuffer(4, (dvoid*)yy, OCCIINT , sizeof(yy[0]), y_len );
    m_writeStmt->setDataBuffer(5, (dvoid*)zz, OCCIFLOAT , sizeof(zz[0]), z_len );
    
    m_writeStmt->executeArrayUpdate(nrows);

    delete [] ids;
    delete [] iovid_vec;
    delete [] xx;
    delete [] yy;
    delete [] zz;
    
    delete [] ids_len;
    delete [] iov_len;
    delete [] x_len;
    delete [] y_len;
    delete [] z_len;
    

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

Definition at line 48 of file MonOccupancyDat.cc.

References alignCSCRings::e, and o2o::iov.

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

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

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

    m_writeStmt->setInt(3, item->getEventsOverLowThreshold() );
    m_writeStmt->setInt(4, item->getEventsOverHighThreshold() );
    m_writeStmt->setFloat(5, item->getAvgEnergy() );

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

Friends And Related Function Documentation

friend class EcalCondDBInterface [friend]

Reimplemented from IDBObject.

Definition at line 14 of file MonOccupancyDat.h.


Member Data Documentation

Definition at line 47 of file MonOccupancyDat.h.

Referenced by getAvgEnergy(), and setAvgEnergy().

Definition at line 46 of file MonOccupancyDat.h.

Referenced by getEventsOverHighThreshold(), and setEventsOverHighThreshold().

Definition at line 45 of file MonOccupancyDat.h.

Referenced by getEventsOverLowThreshold(), and setEventsOverLowThreshold().