#include <DbiCalibDataSvc.h>
Inheritance diagram for DbiCalibDataSvc:
Definition at line 21 of file DbiCalibDataSvc.h.
DbiCalibDataSvc::DbiCalibDataSvc | ( | const std::string & | name, | |
ISvcLocator * | svc | |||
) |
Definition at line 37 of file DbiCalibDataSvc.cc.
00038 : Service(name,svc) 00039 { 00040 declareProperty("CableSvcName",m_cableSvcName="StaticCableSvc", 00041 "Name of service which provides the list of sensors to calibration"); 00042 }
DbiCalibDataSvc::~DbiCalibDataSvc | ( | ) |
StatusCode DbiCalibDataSvc::initialize | ( | ) | [virtual] |
Reimplemented from Service.
Definition at line 48 of file DbiCalibDataSvc.cc.
00049 { 00050 this->Service::initialize(); 00051 /* IMessageSvc* msg = msgSvc();//cxs 2010-12-7 00052 if( !msg ){ 00053 return StatusCode::FAILURE; 00054 } 00055 */ 00056 MsgStream msg(msgSvc(),name()); 00057 // Initialize the data with a static table of numbers 00058 ICableSvc* cableSvc = 0; 00059 StatusCode sc = service("StaticCableSvc",cableSvc,true); 00060 if( sc != StatusCode::SUCCESS ){ 00061 std::ostringstream msgStr; 00062 msgStr << "Failed to access cable service: " << m_cableSvcName; 00063 //msg->reportMessage("DbiCalibDataSvc",MSG::ERROR,msgStr.str()); 00064 return sc; 00065 } 00066 feeLastResult = 0; //cxs 2010-10-28 00067 fecLastResult = 0; //cxs 2010-10-28 00068 pmtLastResult = 0; //cxs 2010-10-28 00069 return StatusCode::SUCCESS; 00070 }
StatusCode DbiCalibDataSvc::finalize | ( | ) | [virtual] |
Reimplemented from Service.
Definition at line 72 of file DbiCalibDataSvc.cc.
00073 { 00074 return this->Service::finalize(); 00075 }
StatusCode DbiCalibDataSvc::queryInterface | ( | const InterfaceID & | riid, | |
void ** | ppvInterface | |||
) | [virtual] |
Reimplemented from Service.
Definition at line 77 of file DbiCalibDataSvc.cc.
00079 { 00080 StatusCode sc = StatusCode::FAILURE; 00081 if (ppvInterface) { 00082 *ppvInterface = 0; 00083 if (ICalibDataSvc::interfaceID().versionMatch(riid)) { 00084 *ppvInterface = static_cast<ICalibDataSvc*>(this); 00085 sc = StatusCode::SUCCESS; 00086 addRef(); 00087 } 00088 else sc = Service::queryInterface( riid, ppvInterface ); 00089 } 00090 return sc; 00091 }
const DayaBay::PmtCalibData * DbiCalibDataSvc::pmtCalibData | ( | const DayaBay::DetectorSensor & | pmtId, | |
const ServiceMode & | svcMode | |||
) | [virtual] |
Implements ICalibDataSvc.
Definition at line 93 of file DbiCalibDataSvc.cc.
00096 { 00097 /* 00098 if(serviceMode.context() != lastContext){ //XiaoSu Chen 2010/7/10 00099 readCalibPmtTable(serviceMode.context());//XiaoSu Chen 2010/6/30 00100 lastContext = serviceMode.context(); 00101 } 00102 */ 00103 readCalibPmtTable(serviceMode); 00104 std::map<DayaBay::DetectorSensor, DayaBay::PmtCalibData>::iterator result = 00105 m_pmtDataBySensor.find(pmtId); 00106 if(result != m_pmtDataBySensor.end()){ 00107 return &(result->second); 00108 } 00109 return 0; 00110 }
const DayaBay::RpcCalibData * DbiCalibDataSvc::rpcCalibData | ( | const DayaBay::RpcSensor & | rpcId, | |
const ServiceMode & | svcMode | |||
) | [virtual] |
Implements ICalibDataSvc.
Definition at line 112 of file DbiCalibDataSvc.cc.
00115 { 00116 std::map<DayaBay::RpcSensor, DayaBay::RpcCalibData>::iterator result = 00117 m_rpcDataBySensor.find(rpcId); 00118 if(result != m_rpcDataBySensor.end()){ 00119 return &(result->second); 00120 } 00121 return 0; 00122 }
const DayaBay::FeeCalibData * DbiCalibDataSvc::feeCalibData | ( | const DayaBay::FeeChannelId & | channelId, | |
const ServiceMode & | svcMode | |||
) | [virtual] |
Implements ICalibDataSvc.
Definition at line 124 of file DbiCalibDataSvc.cc.
00127 { 00128 /* 00129 if(serviceMode.context() != lastContext){ //XiaoSu Chen 2010/7/10 00130 readCalibFeeTable(serviceMode.context());//XiaoSu Chen 2010/6/30 00131 lastContext = serviceMode.context(); 00132 } 00133 */ 00134 readCalibFeeTable(serviceMode); 00135 std::map<DayaBay::FeeChannelId, DayaBay::FeeCalibData>::iterator result = 00136 m_feeDataByChannel.find(channelId); 00137 if(result != m_feeDataByChannel.end()){ 00138 return &(result->second); 00139 } 00140 return 0; 00141 }
const DayaBay::FecCalibData * DbiCalibDataSvc::fecCalibData | ( | const DayaBay::FecChannelId & | channelId, | |
const ServiceMode & | svcMode | |||
) | [virtual] |
Implements ICalibDataSvc.
Definition at line 143 of file DbiCalibDataSvc.cc.
00146 { 00147 std::map<DayaBay::FecChannelId, DayaBay::FecCalibData>::iterator result = 00148 m_fecDataByChannel.find(channelId); 00149 if(result != m_fecDataByChannel.end()){ 00150 return &(result->second); 00151 } 00152 return 0; 00153 }
const std::vector< DayaBay::PmtCalibData > & DbiCalibDataSvc::pmtCalibList | ( | const DayaBay::Detector & | detectorId, | |
const ServiceMode & | svcMode | |||
) | [virtual] |
Implements ICalibDataSvc.
Definition at line 155 of file DbiCalibDataSvc.cc.
00158 { 00159 readCalibPmtTable(serviceMode); 00160 return m_pmtData[detectorId]; 00161 }
const std::vector< DayaBay::RpcCalibData > & DbiCalibDataSvc::rpcCalibList | ( | const DayaBay::Detector & | detectorId, | |
const ServiceMode & | svcMode | |||
) | [virtual] |
Implements ICalibDataSvc.
Definition at line 163 of file DbiCalibDataSvc.cc.
00166 { 00167 return m_rpcData[detectorId]; 00168 }
const std::vector< DayaBay::FeeCalibData > & DbiCalibDataSvc::feeCalibList | ( | const DayaBay::Detector & | detectorId, | |
const ServiceMode & | svcMode | |||
) | [virtual] |
Implements ICalibDataSvc.
Definition at line 170 of file DbiCalibDataSvc.cc.
00173 { 00174 readCalibFeeTable(serviceMode); 00175 return m_feeData[detectorId]; 00176 }
const std::vector< DayaBay::FecCalibData > & DbiCalibDataSvc::fecCalibList | ( | const DayaBay::Detector & | detectorId, | |
const ServiceMode & | svcMode | |||
) | [virtual] |
Implements ICalibDataSvc.
Definition at line 178 of file DbiCalibDataSvc.cc.
00181 { 00182 return m_fecData[detectorId]; 00183 }
int DbiCalibDataSvc::readCalibPmtTable | ( | const ServiceMode & | ) | [inline, private, virtual] |
Definition at line 192 of file DbiCalibDataSvc.cc.
00192 { 00193 if(serviceMode.context() == pmtLastContext){ //XiaoSu Chen 2010/10/28 00194 return 2; 00195 } 00196 pmtLastContext = serviceMode.context(); //XiaoSu Chen 2010/10/28 00197 00198 DbiResultPtr<GCalibPmtSpec> pr("CalibPmtSpec",pmtLastContext,pmtLastContext.GetDetId()); 00199 // Check whether the result is the same as the last one 00200 const DbiResultKey* thisResult= pr.GetKey(); 00201 if(pmtLastResult == 0){ //XiaoSu Chen 2010/7/8 00202 pmtLastResult = thisResult; 00203 }else if(thisResult->IsEqualTo(pmtLastResult)) 00204 { 00205 return 2; 00206 }else{ 00207 pmtLastResult = thisResult; 00208 } 00209 00210 //DbiTableProxyRegistry::Instance().ShowStatistics(); 00211 // Check number of entires in result set 00212 unsigned int numRows = pr.GetNumRows(); 00213 00214 std::cout << "Database rows = " << numRows << std::endl; 00215 const GCalibPmtSpec* row ; 00216 // int site, detectorID, ring, column; 00217 //DayaBay::Detector lastDetector; 00218 for (unsigned int idx=0; idx < numRows; idx++) { 00219 row = pr.GetRowByIndex(idx); 00220 // site = row->GetSite(); 00221 // detectorID = row->GetAD(); 00222 // ring = row->GetRing(); 00223 // column = row->GetColumn(); 00224 // DayaBay::Detector detector((Site::Site_t)site, 00225 // (DetectorId::DetectorId_t)detectorID); 00226 // DayaBay::AdPmtSensor pmtId(ring, column, (Site::Site_t)site, 00227 // (DetectorId::DetectorId_t)detectorID); 00228 DayaBay::PmtCalibData pmt; 00229 DayaBay::DetectorSensor pmtId(row->GetPmtId()); 00230 DayaBay::Detector detector( pmtId.site(), pmtId.detectorId() ); 00231 pmt.m_pmtId = pmtId; 00232 pmt.m_status = DayaBay::PmtCalibData::Status_t(row->GetStatus()); // rewrited by ChenXiaosu 00233 pmt.m_speHigh = row->GetSpeHigh(); 00234 pmt.m_sigmaSpeHigh = row->GetSigmaSpeHigh(); 00235 pmt.m_speLow = row->GetSpeLow(); 00236 pmt.m_timeOffset = row->GetTimeOffset() * Units::ns; 00237 pmt.m_timeSpread = row->GetTimeSpread() * Units::ns; 00238 pmt.m_efficiency = row->GetEfficiency(); 00239 pmt.m_prePulseProb = row->GetPrePulseProb(); 00240 pmt.m_afterPulseProb = row->GetAfterPulseProb(); 00241 pmt.m_darkRate = row->GetDarkRate() * Units::hertz; 00242 //std::cout << "Adding PMT = " << pmtId.fullPackedData() << std::endl; 00243 //std::vector<DayaBay::PmtCalibData>& pmtList = m_pmtData[detector]; 00244 //Add lookup by sensor ID 00245 m_pmtDataBySensor[pmtId] = pmt; 00246 } 00247 for(std::map<DayaBay::Detector, std::vector<DayaBay::PmtCalibData> >::iterator pmtData = m_pmtData.begin(); pmtData != m_pmtData.end(); pmtData++)//Xiaosu Chen 2010/7/8 00248 { 00249 std::vector<DayaBay::PmtCalibData>& pmtList = pmtData->second; 00250 pmtList.clear(); 00251 } 00252 00253 for(std::map<DayaBay::DetectorSensor, DayaBay::PmtCalibData>::iterator pmtDataBySensor = m_pmtDataBySensor.begin(); pmtDataBySensor != m_pmtDataBySensor.end(); pmtDataBySensor++)//Xiaosu Chen 2010/7/8 00254 { 00255 DayaBay::DetectorSensor pmtId = pmtDataBySensor->first; 00256 DayaBay::Detector detector( pmtId.site(), pmtId.detectorId() ); 00257 std::vector<DayaBay::PmtCalibData>& pmtList = m_pmtData[detector]; 00258 pmtList.push_back(pmtDataBySensor->second); 00259 } 00260 return 1; 00261 }
int DbiCalibDataSvc::readCalibFeeTable | ( | const ServiceMode & | ) | [inline, private, virtual] |
Definition at line 264 of file DbiCalibDataSvc.cc.
00264 { 00265 if(serviceMode.context() == feeLastContext){ //XiaoSu Chen 2010/10/28 00266 return 2; 00267 } 00268 feeLastContext = serviceMode.context(); //XiaoSu Chen 2010/10/28 00269 00270 DbiResultPtr<GCalibFeeSpec> pr("CalibFeeSpec",feeLastContext,feeLastContext.GetDetId()); 00271 const DbiResultKey* thisResult= pr.GetKey(); 00272 if(feeLastResult == 0){ //XiaoSu Chen 2010/7/8 00273 feeLastResult = thisResult; 00274 }else if(thisResult->IsEqualTo(feeLastResult)) 00275 { 00276 return 2; 00277 }else{ 00278 feeLastResult = thisResult; 00279 } 00280 00281 //DbiTableProxyRegistry::Instance().ShowStatistics(); 00282 // Check number of entires in result set 00283 unsigned int numRows = pr.GetNumRows(); 00284 std::cout << "Database rows = " << numRows << std::endl; 00285 const GCalibFeeSpec* row; 00286 for (unsigned int idx=0; idx < numRows; idx++) { 00287 row = pr.GetRowByIndex(idx); 00288 DayaBay::FeeChannelId feeId(row->GetChannelId()); 00289 DayaBay::FeeCalibData fee; 00290 fee.m_channelId = row->GetChannelId(); 00291 fee.m_status = DayaBay::FeeCalibData::Status_t(row->GetStatus()); 00292 fee.m_adcThresholdHigh = row->GetAdcThresholdHigh(); 00293 fee.m_adcThresholdLow = row->GetAdcThresholdLow(); 00294 fee.m_adcBaselineHigh = row->GetAdcPedestalHigh(); 00295 fee.m_adcBaselineLow = row->GetAdcPedestalLow(); 00296 m_feeDataByChannel[feeId] = fee; 00297 } 00298 for(std::map<DayaBay::Detector, std::vector<DayaBay::FeeCalibData> >::iterator feeData = m_feeData.begin(); feeData != m_feeData.end(); feeData++)//Xiaosu Chen 2010/7/8 00299 { 00300 std::vector<DayaBay::FeeCalibData>& feeList = feeData->second; 00301 feeList.clear(); 00302 } 00303 for(std::map<DayaBay::FeeChannelId, DayaBay::FeeCalibData>::iterator feeDataByChannel = m_feeDataByChannel.begin(); feeDataByChannel != m_feeDataByChannel.end(); feeDataByChannel++)//Xiaosu Chen 2010/7/8 00304 { 00305 DayaBay::FeeChannelId feeId = feeDataByChannel->first; 00306 DayaBay::Detector detector( feeId.site(), feeId.detectorId() ); 00307 std::vector<DayaBay::FeeCalibData>& feeList = m_feeData[detector]; 00308 feeList.push_back(feeDataByChannel->second); 00309 } 00310 00311 return 1; 00312 }
std::map<DayaBay::Detector, std::vector<DayaBay::PmtCalibData> > DbiCalibDataSvc::m_pmtData [private] |
Definition at line 75 of file DbiCalibDataSvc.h.
std::map<DayaBay::Detector, std::vector<DayaBay::RpcCalibData> > DbiCalibDataSvc::m_rpcData [private] |
Definition at line 76 of file DbiCalibDataSvc.h.
std::map<DayaBay::Detector, std::vector<DayaBay::FeeCalibData> > DbiCalibDataSvc::m_feeData [private] |
Definition at line 77 of file DbiCalibDataSvc.h.
std::map<DayaBay::Detector, std::vector<DayaBay::FecCalibData> > DbiCalibDataSvc::m_fecData [private] |
Definition at line 78 of file DbiCalibDataSvc.h.
std::map<DayaBay::DetectorSensor, DayaBay::PmtCalibData> DbiCalibDataSvc::m_pmtDataBySensor [private] |
Definition at line 81 of file DbiCalibDataSvc.h.
Definition at line 82 of file DbiCalibDataSvc.h.
std::map<DayaBay::FeeChannelId, DayaBay::FeeCalibData> DbiCalibDataSvc::m_feeDataByChannel [private] |
Definition at line 84 of file DbiCalibDataSvc.h.
std::map<DayaBay::FecChannelId, DayaBay::FecCalibData> DbiCalibDataSvc::m_fecDataByChannel [private] |
Definition at line 85 of file DbiCalibDataSvc.h.
std::string DbiCalibDataSvc::m_cableSvcName [private] |
Definition at line 88 of file DbiCalibDataSvc.h.
Context DbiCalibDataSvc::feeLastContext [private] |
Definition at line 90 of file DbiCalibDataSvc.h.
Context DbiCalibDataSvc::fecLastContext [private] |
Definition at line 91 of file DbiCalibDataSvc.h.
Context DbiCalibDataSvc::pmtLastContext [private] |
Definition at line 92 of file DbiCalibDataSvc.h.
const DbiResultKey* DbiCalibDataSvc::feeLastResult [private] |
Definition at line 94 of file DbiCalibDataSvc.h.
const DbiResultKey* DbiCalibDataSvc::fecLastResult [private] |
Definition at line 95 of file DbiCalibDataSvc.h.
const DbiResultKey* DbiCalibDataSvc::pmtLastResult [private] |
Definition at line 96 of file DbiCalibDataSvc.h.