CMS 3D CMS Logo

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

MonTestPulseDat Class Reference

#include <MonTestPulseDat.h>

Inheritance diagram for MonTestPulseDat:
IDataItem IDBObject

List of all members.

Public Member Functions

float getADCMeanG1 () const
float getADCMeanG12 () const
float getADCMeanG6 () const
float getADCRMSG1 () const
float getADCRMSG12 () const
float getADCRMSG6 () const
std::string getTable ()
bool getTaskStatus () const
 MonTestPulseDat ()
void setADCMeanG1 (float mean)
void setADCMeanG12 (float mean)
void setADCMeanG6 (float mean)
void setADCRMSG1 (float rms)
void setADCRMSG12 (float rms)
void setADCRMSG6 (float rms)
void setTaskStatus (bool status)
 ~MonTestPulseDat ()

Private Member Functions

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

Private Attributes

float m_adcMeanG1
float m_adcMeanG12
float m_adcMeanG6
float m_adcRMSG1
float m_adcRMSG12
float m_adcRMSG6
bool m_taskStatus

Friends

class EcalCondDBInterface

Detailed Description

Definition at line 12 of file MonTestPulseDat.h.


Constructor & Destructor Documentation

MonTestPulseDat::MonTestPulseDat ( )

Definition at line 12 of file MonTestPulseDat.cc.

References NULL.

MonTestPulseDat::~MonTestPulseDat ( )

Definition at line 30 of file MonTestPulseDat.cc.

{
}

Member Function Documentation

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

Definition at line 85 of file MonTestPulseDat.cc.

References edm::pset::fillMap(), o2o::iov, AlCaHLTBitMon_ParallelJobs::p, setADCMeanG1(), setADCMeanG12(), setADCMeanG6(), setADCRMSG1(), setADCRMSG12(), setADCRMSG6(), and setTaskStatus().

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

  iov->setConnection(m_env, m_conn);
  int iovID = iov->fetchID();
  if (!iovID) { 
    //  throw(std::runtime_error("MonTestPulseDat::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.adc_mean_g1, d.adc_rms_g1, d.adc_mean_g6, d.adc_rms_g6, d.adc_mean_g12, d.adc_rms_g12, d.task_status "
                 "FROM channelview cv JOIN mon_test_pulse_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, MonTestPulseDat > p;
    MonTestPulseDat 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.setADCMeanG1( rset->getFloat(7) );
      dat.setADCRMSG1( rset->getFloat(8) );
      dat.setADCMeanG6( rset->getFloat(9) );
      dat.setADCRMSG6( rset->getFloat(10) );
      dat.setADCMeanG12( rset->getFloat(11) );
      dat.setADCRMSG12( rset->getFloat(12) );
      dat.setTaskStatus( rset->getInt(13) );

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

Definition at line 22 of file MonTestPulseDat.h.

References m_adcMeanG1.

Referenced by writeArrayDB().

{ return m_adcMeanG1; }
float MonTestPulseDat::getADCMeanG12 ( ) const [inline]

Definition at line 34 of file MonTestPulseDat.h.

References m_adcMeanG12.

Referenced by writeArrayDB().

{ return m_adcMeanG12; }
float MonTestPulseDat::getADCMeanG6 ( ) const [inline]

Definition at line 28 of file MonTestPulseDat.h.

References m_adcMeanG6.

Referenced by writeArrayDB().

{ return m_adcMeanG6; }
float MonTestPulseDat::getADCRMSG1 ( ) const [inline]

Definition at line 25 of file MonTestPulseDat.h.

References m_adcRMSG1.

Referenced by writeArrayDB().

{ return m_adcRMSG1; }
float MonTestPulseDat::getADCRMSG12 ( ) const [inline]

Definition at line 37 of file MonTestPulseDat.h.

References m_adcRMSG12.

Referenced by writeArrayDB().

{ return m_adcRMSG12; }
float MonTestPulseDat::getADCRMSG6 ( ) const [inline]

Definition at line 31 of file MonTestPulseDat.h.

References m_adcRMSG6.

Referenced by writeArrayDB().

{ return m_adcRMSG6; }
std::string MonTestPulseDat::getTable ( ) [inline, virtual]

Implements IDataItem.

Definition at line 19 of file MonTestPulseDat.h.

{ return "MON_TEST_PULSE_DAT"; }
bool MonTestPulseDat::getTaskStatus ( ) const [inline]

Definition at line 40 of file MonTestPulseDat.h.

References m_taskStatus.

Referenced by writeArrayDB().

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

Implements IDataItem.

Definition at line 36 of file MonTestPulseDat.cc.

{
  this->checkConnection();

  try {
    m_writeStmt = m_conn->createStatement();
    m_writeStmt->setSQL("INSERT INTO mon_test_pulse_dat (iov_id, logic_id, "
                        "adc_mean_g1, adc_rms_g1, adc_mean_g6, adc_rms_g6, adc_mean_g12, adc_rms_g12, task_status) "
                        "VALUES (:iov_id, :logic_id, "
                        ":adc_mean_g1, :adc_rms_g1, :adc_rms_g6, :adc_rms_g6, :adc_mean_g12, :adc_rms_g12, :task_status)");
  } catch (SQLException &e) {
    throw(std::runtime_error("MonTestPulseDat::prepareWrite():  "+e.getMessage()));
  }
}
void MonTestPulseDat::setADCMeanG1 ( float  mean) [inline]

Definition at line 21 of file MonTestPulseDat.h.

References m_adcMeanG1, and timingPdfMaker::mean.

Referenced by fetchData().

void MonTestPulseDat::setADCMeanG12 ( float  mean) [inline]

Definition at line 33 of file MonTestPulseDat.h.

References m_adcMeanG12, and timingPdfMaker::mean.

Referenced by fetchData().

void MonTestPulseDat::setADCMeanG6 ( float  mean) [inline]

Definition at line 27 of file MonTestPulseDat.h.

References m_adcMeanG6, and timingPdfMaker::mean.

Referenced by fetchData().

void MonTestPulseDat::setADCRMSG1 ( float  rms) [inline]

Definition at line 24 of file MonTestPulseDat.h.

References m_adcRMSG1, and plotscripts::rms().

Referenced by fetchData().

{ m_adcRMSG1 = rms; }
void MonTestPulseDat::setADCRMSG12 ( float  rms) [inline]

Definition at line 36 of file MonTestPulseDat.h.

References m_adcRMSG12, and plotscripts::rms().

Referenced by fetchData().

void MonTestPulseDat::setADCRMSG6 ( float  rms) [inline]

Definition at line 30 of file MonTestPulseDat.h.

References m_adcRMSG6, and plotscripts::rms().

Referenced by fetchData().

{ m_adcRMSG6 = rms; }
void MonTestPulseDat::setTaskStatus ( bool  status) [inline]

Definition at line 39 of file MonTestPulseDat.h.

References m_taskStatus, and ntuplemaker::status.

Referenced by fetchData().

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

Definition at line 134 of file MonTestPulseDat.cc.

References prof2calltree::count, AlCaHLTBitMon_QueryRunRegistry::data, getADCMeanG1(), getADCMeanG12(), getADCMeanG6(), getADCRMSG1(), getADCRMSG12(), getADCRMSG6(), EcalLogicID::getLogicID(), getTaskStatus(), o2o::iov, AlCaHLTBitMon_ParallelJobs::p, matplotRender::t, x, detailsBasic3DVector::y, and z.

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

  int iovID = iov->fetchID();
  if (!iovID) { throw(std::runtime_error("MonTestPulseDat::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];
  float* zz= new float[nrows];
  float* ww= new float[nrows];
  float* uu= new float[nrows];
  float* tt= 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* z_len= new ub2[nrows];
  ub2* w_len= new ub2[nrows];
  ub2* u_len= new ub2[nrows];
  ub2* t_len= new ub2[nrows];
  ub2* st_len= new ub2[nrows];

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

        dataitem = &(p->second);
        // dataIface.writeDB( channel, dataitem, iov);
        float x=dataitem->getADCMeanG1();
        float y=dataitem->getADCRMSG1();
        float z=dataitem->getADCMeanG6();
        float w=dataitem->getADCRMSG6();
        float u=dataitem->getADCMeanG12();
        float t=dataitem->getADCRMSG12();
        int statu=dataitem->getTaskStatus();



        xx[count]=x;
        yy[count]=y;
        zz[count]=z;
        ww[count]=w;
        uu[count]=u;
        tt[count]=t;
        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]);
        z_len[count]=sizeof(zz[count]);
        w_len[count]=sizeof(ww[count]);
        u_len[count]=sizeof(uu[count]);
        t_len[count]=sizeof(tt[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*)zz, OCCIFLOAT , sizeof(zz[0]), z_len );
    m_writeStmt->setDataBuffer(6, (dvoid*)ww, OCCIFLOAT , sizeof(ww[0]), w_len );
    m_writeStmt->setDataBuffer(7, (dvoid*)uu, OCCIFLOAT , sizeof(uu[0]), u_len );
    m_writeStmt->setDataBuffer(8, (dvoid*)tt, OCCIFLOAT , sizeof(tt[0]), t_len );
    m_writeStmt->setDataBuffer(9, (dvoid*)st, OCCIINT , sizeof(st[0]), st_len );
   

    m_writeStmt->executeArrayUpdate(nrows);

    delete [] ids;
    delete [] iovid_vec;
    delete [] xx;
    delete [] yy;
    delete [] zz;
    delete [] ww;
    delete [] uu;
    delete [] tt;
    delete [] st;

    delete [] ids_len;
    delete [] iov_len;
    delete [] x_len;
    delete [] y_len;
    delete [] z_len;
    delete [] w_len;
    delete [] u_len;
    delete [] t_len;
    delete [] st_len;



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

Definition at line 54 of file MonTestPulseDat.cc.

References o2o::iov.

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

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

  int logicID = ecid->getLogicID();
  if (!logicID) { throw(std::runtime_error("MonTestPulseDat::writeDB:  Bad EcalLogicID")); }
  
  try {
    m_writeStmt->setInt(1, iovID);
    m_writeStmt->setInt(2, logicID);
    m_writeStmt->setFloat(3, item->getADCMeanG1() );
    m_writeStmt->setFloat(4, item->getADCRMSG1() );
    m_writeStmt->setFloat(5, item->getADCMeanG6() );
    m_writeStmt->setFloat(6, item->getADCRMSG6() );
    m_writeStmt->setFloat(7, item->getADCMeanG12() );
    m_writeStmt->setFloat(8, item->getADCRMSG12() );
    m_writeStmt->setInt(9, item->getTaskStatus() );

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

Friends And Related Function Documentation

friend class EcalCondDBInterface [friend]

Reimplemented from IDBObject.

Definition at line 14 of file MonTestPulseDat.h.


Member Data Documentation

Definition at line 57 of file MonTestPulseDat.h.

Referenced by getADCMeanG1(), and setADCMeanG1().

Definition at line 61 of file MonTestPulseDat.h.

Referenced by getADCMeanG12(), and setADCMeanG12().

Definition at line 59 of file MonTestPulseDat.h.

Referenced by getADCMeanG6(), and setADCMeanG6().

float MonTestPulseDat::m_adcRMSG1 [private]

Definition at line 58 of file MonTestPulseDat.h.

Referenced by getADCRMSG1(), and setADCRMSG1().

Definition at line 62 of file MonTestPulseDat.h.

Referenced by getADCRMSG12(), and setADCRMSG12().

float MonTestPulseDat::m_adcRMSG6 [private]

Definition at line 60 of file MonTestPulseDat.h.

Referenced by getADCRMSG6(), and setADCRMSG6().

Definition at line 63 of file MonTestPulseDat.h.

Referenced by getTaskStatus(), and setTaskStatus().