00001 00002 // $Id: CalibPmtSpec.cc,v 1.0 2009/7/4 16:40:00 $ 00003 // 00004 // CalibPmtSpec 00005 // 00006 // Package: Dbi (Database Interface). 00007 // 00008 // Concept: A concrete data type corresponding to a single row in a 00009 // database table of non-aggregated data. 00010 // 00011 // based on DataModel/DataSvc/ and Database/DbiSimDataSvc 00012 // - Weili Zhong 7/4/2009 00013 // 00014 // 00016 00017 #include "DbiDataSvc/CalibPmtSpec.h" 00018 #include "DatabaseInterface/DbiLog.h" 00019 #include "DatabaseInterface/DbiOutRowStream.h" 00020 #include "DatabaseInterface/DbiResultSet.h" 00021 #include "DatabaseInterface/DbiValidityRec.h" 00022 00023 // Removed: ClassImp(CalibPmtSpec) 00024 00025 00026 // Definition of static data members 00027 // ********************************* 00028 00029 00030 // Instantiate associated Result Pointer and writer classes. 00031 // ******************************************************** 00032 00033 #include "DatabaseInterface/DbiResultPtr.tpl" 00034 template class DbiResultPtr<CalibPmtSpec>; 00035 00036 #include "DatabaseInterface/DbiWriter.tpl" 00037 template class DbiWriter<CalibPmtSpec>; 00038 00039 // Definition of member functions (alphabetical order) 00040 // *************************************************** 00041 00042 00043 //..................................................................... 00044 00045 void CalibPmtSpec::Fill(DbiResultSet& rs, 00046 const DbiValidityRec* /* vrec */) { 00047 // 00048 // 00049 // Purpose: Fill object from Result Set 00050 // 00051 // Arguments: 00052 // rs in Result Set used to fill object 00053 // vrec in Associated validity record (or 0 if filling 00054 // DbiValidityRec) 00055 // Return: 00056 // 00057 // Modified from the SimPmtSpec 00058 // 00059 // Specification:- 00060 // ============= 00061 // 00062 // o Fill object from current row of Result Set. 00063 00064 // Program Notes:- 00065 // ============= 00066 00067 Int_t numCol = rs.NumCols(); 00068 // The first column (SeqNo) has already been processed. 00069 for (Int_t curCol = 2; curCol <= numCol; ++curCol) { 00070 string colName = rs.CurColName(); 00071 if ( colName == "PMTID" ){ 00072 //int pmtId = 0; rs >> pmtId; 00073 //m_pmtId = DayaBay::DetectorSensor( pmtId ); 00074 rs >> m_pmtId; 00075 } 00076 else if ( colName == "PMTDESCRIB" ) rs >> m_describ; 00077 else if ( colName == "PMTSTATUS" ) rs >> m_status;//rewrited by Xiaosu Chen. 00078 else if ( colName == "PMTSPEHIGH" ) rs >> m_speHigh; 00079 else if ( colName == "PMTSIGMASPEHIGH" ) rs >> m_sigmaSpeHigh; 00080 else if ( colName == "PMTSPELOW" ) rs >> m_speLow; 00081 else if ( colName == "PMTTOFFSET" ) rs >> m_timeOffset; 00082 else if ( colName == "PMTTSPREAD" ) rs >> m_timeSpread; 00083 else if ( colName == "PMTEFFIC" ) rs >> m_efficiency; 00084 else if ( colName == "PMTPREPULSE" ) rs >> m_prePulseProb; 00085 else if ( colName == "PMTAFTERPULSE" ) rs >> m_afterPulseProb; 00086 else if ( colName == "PMTDARKRATE" ) rs >> m_darkRate; 00087 else { 00088 LOG(dbi,Logging::kDebug1) << "Ignoring column " << curCol 00089 << "(" << colName << ")" 00090 << "; not part of CalibPmtSpec" << std::endl; 00091 rs.IncrementCurCol(); 00092 } 00093 } 00094 } 00095 //..................................................................... 00096 00097 void CalibPmtSpec::Store(DbiOutRowStream& ors, 00098 const DbiValidityRec* /* vrec */) const { 00099 // 00100 // 00101 // Purpose: Stream object to output row stream 00102 // 00103 // Arguments: 00104 // ors in Output row stream. 00105 // vrec in Associated validity record (or 0 if filling 00106 // DbiValidityRec) 00107 // 00108 // Return: 00109 // 00110 // Contact: N. West 00111 // 00112 // Specification:- 00113 // ============= 00114 // 00115 // o Stream object to output row stream. 00116 00117 // Program Notes:- 00118 // ============= 00119 00120 // None. 00121 ors << m_pmtId << m_describ << m_status 00122 << m_speHigh << m_sigmaSpeHigh << m_speLow << m_timeOffset 00123 << m_timeSpread << m_efficiency << m_prePulseProb 00124 << m_afterPulseProb << m_darkRate; 00125 00126 /* 00127 ors << m_pmtId.sensorId() << m_describ << m_status 00128 << m_speHigh << m_sigmaSpeHigh << m_speLow << m_timeOffset 00129 << m_timeSpread << m_efficiency << m_prePulseProb 00130 << m_afterPulseProb << m_darkRate; 00131 */ 00132 } 00133