CMS 3D CMS Logo

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

MonLaserGreenDat Class Reference

#include <MonLaserGreenDat.h>

Inheritance diagram for MonLaserGreenDat:
IDataItem IDBObject

List of all members.

Public Member Functions

float getAPDMean () const
float getAPDOverPNMean () const
float getAPDOverPNRMS () const
float getAPDRMS () const
std::string getTable ()
bool getTaskStatus () const
 MonLaserGreenDat ()
void setAPDMean (float mean)
void setAPDOverPNMean (float mean)
void setAPDOverPNRMS (float rms)
void setAPDRMS (float rms)
void setTaskStatus (bool status)
 ~MonLaserGreenDat ()

Private Member Functions

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

Private Attributes

float m_apdMean
float m_apdOverPNMean
float m_apdOverPNRMS
float m_apdRMS
bool m_taskStatus

Friends

class EcalCondDBInterface

Detailed Description

Definition at line 12 of file MonLaserGreenDat.h.


Constructor & Destructor Documentation

MonLaserGreenDat::MonLaserGreenDat ( )

Definition at line 10 of file MonLaserGreenDat.cc.

References NULL.

MonLaserGreenDat::~MonLaserGreenDat ( )

Definition at line 27 of file MonLaserGreenDat.cc.

{
}

Member Function Documentation

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

Definition at line 81 of file MonLaserGreenDat.cc.

References edm::pset::fillMap(), o2o::iov, AlCaHLTBitMon_ParallelJobs::p, setAPDMean(), setAPDOverPNMean(), setAPDOverPNRMS(), setAPDRMS(), and setTaskStatus().

{
  this->checkConnection();

  fillMap->clear();

  iov->setConnection(m_env, m_conn);
  int iovID = iov->fetchID();
  if (!iovID) { 
    //  throw(std::runtime_error("MonLaserGreenDat::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.apd_mean, d.apd_rms, d.apd_over_pn_mean, d.apd_over_pn_rms, d.task_status "
                 "FROM channelview cv JOIN mon_laser_green_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, MonLaserGreenDat > p;
    MonLaserGreenDat 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.setAPDMean( rset->getFloat(7) );
      dat.setAPDRMS( rset->getFloat(8) );
      dat.setAPDOverPNMean( rset->getFloat(9) );
      dat.setAPDOverPNRMS( rset->getFloat(10) );
      dat.setTaskStatus( rset->getInt(11) );
                        

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

Definition at line 22 of file MonLaserGreenDat.h.

References m_apdMean.

Referenced by writeArrayDB().

{ return m_apdMean; }
float MonLaserGreenDat::getAPDOverPNMean ( ) const [inline]

Definition at line 28 of file MonLaserGreenDat.h.

References m_apdOverPNMean.

Referenced by writeArrayDB().

{ return m_apdOverPNMean; }
float MonLaserGreenDat::getAPDOverPNRMS ( ) const [inline]

Definition at line 31 of file MonLaserGreenDat.h.

References m_apdOverPNRMS.

Referenced by writeArrayDB().

{ return m_apdOverPNRMS; }
float MonLaserGreenDat::getAPDRMS ( ) const [inline]

Definition at line 25 of file MonLaserGreenDat.h.

References m_apdRMS.

Referenced by writeArrayDB().

{ return m_apdRMS; }
std::string MonLaserGreenDat::getTable ( ) [inline, virtual]

Implements IDataItem.

Definition at line 19 of file MonLaserGreenDat.h.

{ return "MON_LASER_GREEN_DAT"; }
bool MonLaserGreenDat::getTaskStatus ( ) const [inline]

Definition at line 34 of file MonLaserGreenDat.h.

References m_taskStatus.

Referenced by writeArrayDB().

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

Implements IDataItem.

Definition at line 33 of file MonLaserGreenDat.cc.

{
  this->checkConnection();

  try {
    m_writeStmt = m_conn->createStatement();
    m_writeStmt->setSQL("INSERT INTO mon_laser_green_dat (iov_id, logic_id, "
                        "apd_mean, apd_rms, apd_over_pn_mean, apd_over_pn_rms, task_status) "
                        "VALUES (:iov_id, :logic_id, "
                        ":apd_mean, :apd_rms, :apd_over_pn_mean, :apd_over_pn_rms, :task_status)");
  } catch (SQLException &e) {
    throw(std::runtime_error("MonLaserGreenDat::prepareWrite():  "+e.getMessage()));
  }
}
void MonLaserGreenDat::setAPDMean ( float  mean) [inline]

Definition at line 21 of file MonLaserGreenDat.h.

References m_apdMean, and timingPdfMaker::mean.

Referenced by fetchData().

{ m_apdMean = mean; }
void MonLaserGreenDat::setAPDOverPNMean ( float  mean) [inline]

Definition at line 27 of file MonLaserGreenDat.h.

References m_apdOverPNMean, and timingPdfMaker::mean.

Referenced by fetchData().

void MonLaserGreenDat::setAPDOverPNRMS ( float  rms) [inline]

Definition at line 30 of file MonLaserGreenDat.h.

References m_apdOverPNRMS, and plotscripts::rms().

Referenced by fetchData().

void MonLaserGreenDat::setAPDRMS ( float  rms) [inline]

Definition at line 24 of file MonLaserGreenDat.h.

References m_apdRMS, and plotscripts::rms().

Referenced by fetchData().

{ m_apdRMS = rms; }
void MonLaserGreenDat::setTaskStatus ( bool  status) [inline]

Definition at line 33 of file MonLaserGreenDat.h.

References m_taskStatus, and ntuplemaker::status.

Referenced by fetchData().

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

Definition at line 130 of file MonLaserGreenDat.cc.

References prof2calltree::count, AlCaHLTBitMon_QueryRunRegistry::data, getAPDMean(), getAPDOverPNMean(), getAPDOverPNRMS(), getAPDRMS(), EcalLogicID::getLogicID(), getTaskStatus(), o2o::iov, AlCaHLTBitMon_ParallelJobs::p, x, detailsBasic3DVector::y, and z.

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

  int iovID = iov->fetchID();
  if (!iovID) { throw(std::runtime_error("MonLaserGreenDat::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];
  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* st_len= new ub2[nrows];

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

        dataitem = &(p->second);
        // dataIface.writeDB( channel, dataitem, iov);
        float x=dataitem->getAPDMean();
        float y=dataitem->getAPDRMS();
        float z=dataitem->getAPDOverPNMean();
        float w=dataitem->getAPDOverPNRMS();
        int statu=dataitem->getTaskStatus();



        xx[count]=x;
        yy[count]=y;
        zz[count]=z;
        ww[count]=w;
        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]);
        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*)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 [] st;

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



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

Definition at line 51 of file MonLaserGreenDat.cc.

References o2o::iov.

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

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

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

    m_writeStmt->setFloat(3, item->getAPDMean() );
    m_writeStmt->setFloat(4, item->getAPDRMS() );
    m_writeStmt->setFloat(5, item->getAPDOverPNMean() );
    m_writeStmt->setFloat(6, item->getAPDOverPNRMS() );
    m_writeStmt->setInt(7, item->getTaskStatus() );

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

Friends And Related Function Documentation

friend class EcalCondDBInterface [friend]

Reimplemented from IDBObject.

Definition at line 14 of file MonLaserGreenDat.h.


Member Data Documentation

float MonLaserGreenDat::m_apdMean [private]

Definition at line 52 of file MonLaserGreenDat.h.

Referenced by getAPDMean(), and setAPDMean().

Definition at line 54 of file MonLaserGreenDat.h.

Referenced by getAPDOverPNMean(), and setAPDOverPNMean().

Definition at line 55 of file MonLaserGreenDat.h.

Referenced by getAPDOverPNRMS(), and setAPDOverPNRMS().

float MonLaserGreenDat::m_apdRMS [private]

Definition at line 53 of file MonLaserGreenDat.h.

Referenced by getAPDRMS(), and setAPDRMS().

Definition at line 56 of file MonLaserGreenDat.h.

Referenced by getTaskStatus(), and setTaskStatus().