CMS 3D CMS Logo

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

MonLaserRedDat Class Reference

#include <MonLaserRedDat.h>

Inheritance diagram for MonLaserRedDat:
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
 MonLaserRedDat ()
void setAPDMean (float mean)
void setAPDOverPNMean (float mean)
void setAPDOverPNRMS (float rms)
void setAPDRMS (float rms)
void setTaskStatus (bool status)
 ~MonLaserRedDat ()

Private Member Functions

void fetchData (std::map< EcalLogicID, MonLaserRedDat > *fillMap, MonRunIOV *iov) throw (std::runtime_error)
void prepareWrite () throw (std::runtime_error)
void writeArrayDB (const std::map< EcalLogicID, MonLaserRedDat > *data, MonRunIOV *iov) throw (std::runtime_error)
void writeDB (const EcalLogicID *ecid, const MonLaserRedDat *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 MonLaserRedDat.h.


Constructor & Destructor Documentation

MonLaserRedDat::MonLaserRedDat ( )

Definition at line 10 of file MonLaserRedDat.cc.

References NULL.

MonLaserRedDat::~MonLaserRedDat ( )

Definition at line 27 of file MonLaserRedDat.cc.

{
}

Member Function Documentation

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

Definition at line 81 of file MonLaserRedDat.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("MonLaserRedDat::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_red_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, MonLaserRedDat > p;
    MonLaserRedDat 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("MonLaserRedDat::fetchData():  "+e.getMessage()));
  }
}
float MonLaserRedDat::getAPDMean ( ) const [inline]

Definition at line 22 of file MonLaserRedDat.h.

References m_apdMean.

Referenced by writeArrayDB().

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

Definition at line 28 of file MonLaserRedDat.h.

References m_apdOverPNMean.

Referenced by writeArrayDB().

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

Definition at line 31 of file MonLaserRedDat.h.

References m_apdOverPNRMS.

Referenced by writeArrayDB().

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

Definition at line 25 of file MonLaserRedDat.h.

References m_apdRMS.

Referenced by writeArrayDB().

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

Implements IDataItem.

Definition at line 19 of file MonLaserRedDat.h.

{ return "MON_LASER_RED_DAT"; }
bool MonLaserRedDat::getTaskStatus ( ) const [inline]

Definition at line 34 of file MonLaserRedDat.h.

References m_taskStatus.

Referenced by writeArrayDB().

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

Implements IDataItem.

Definition at line 33 of file MonLaserRedDat.cc.

{
  this->checkConnection();

  try {
    m_writeStmt = m_conn->createStatement();
    m_writeStmt->setSQL("INSERT INTO mon_laser_red_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("MonLaserRedDat::prepareWrite():  "+e.getMessage()));
  }
}
void MonLaserRedDat::setAPDMean ( float  mean) [inline]

Definition at line 21 of file MonLaserRedDat.h.

References m_apdMean, and timingPdfMaker::mean.

Referenced by fetchData().

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

Definition at line 27 of file MonLaserRedDat.h.

References m_apdOverPNMean, and timingPdfMaker::mean.

Referenced by fetchData().

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

Definition at line 30 of file MonLaserRedDat.h.

References m_apdOverPNRMS, and plotscripts::rms().

Referenced by fetchData().

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

Definition at line 24 of file MonLaserRedDat.h.

References m_apdRMS, and plotscripts::rms().

Referenced by fetchData().

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

Definition at line 33 of file MonLaserRedDat.h.

References m_taskStatus, and ntuplemaker::status.

Referenced by fetchData().

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

Definition at line 130 of file MonLaserRedDat.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("MonLaserRedDat::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 MonLaserRedDat* dataitem;
  int count=0;
  typedef map< EcalLogicID, MonLaserRedDat >::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("MonLaserRedDat::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("MonLaserRedDat::writeArrayDB():  "+e.getMessage()));
  }
}
void MonLaserRedDat::writeDB ( const EcalLogicID ecid,
const MonLaserRedDat item,
MonRunIOV iov 
) throw (std::runtime_error) [private]

Definition at line 51 of file MonLaserRedDat.cc.

References o2o::iov.

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

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

  int logicID = ecid->getLogicID();
  if (!logicID) { throw(std::runtime_error("MonLaserRedDat::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("MonLaserRedDat::writeDB():  "+e.getMessage()));
  }
}

Friends And Related Function Documentation

friend class EcalCondDBInterface [friend]

Reimplemented from IDBObject.

Definition at line 14 of file MonLaserRedDat.h.


Member Data Documentation

float MonLaserRedDat::m_apdMean [private]

Definition at line 51 of file MonLaserRedDat.h.

Referenced by getAPDMean(), and setAPDMean().

Definition at line 53 of file MonLaserRedDat.h.

Referenced by getAPDOverPNMean(), and setAPDOverPNMean().

Definition at line 54 of file MonLaserRedDat.h.

Referenced by getAPDOverPNRMS(), and setAPDOverPNRMS().

float MonLaserRedDat::m_apdRMS [private]

Definition at line 52 of file MonLaserRedDat.h.

Referenced by getAPDRMS(), and setAPDRMS().

Definition at line 55 of file MonLaserRedDat.h.

Referenced by getTaskStatus(), and setTaskStatus().