| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DbiCalibDataSvc Class Reference

#include <DbiCalibDataSvc.h>

Inheritance diagram for DbiCalibDataSvc:

[legend]
Collaboration diagram for DbiCalibDataSvc:
[legend]
List of all members.

Public Types

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR
enum  Status
 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Public Member Functions

 DbiCalibDataSvc (const std::string &name, ISvcLocator *svc)
 ~DbiCalibDataSvc ()
virtual StatusCode initialize ()
virtual StatusCode finalize ()
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvInterface)
const DayaBay::PmtCalibDatapmtCalibData (const DayaBay::DetectorSensor &pmtId, const ServiceMode &svcMode)
const DayaBay::RpcCalibDatarpcCalibData (const DayaBay::RpcSensor &rpcId, const ServiceMode &svcMode)
const DayaBay::FeeCalibDatafeeCalibData (const DayaBay::FeeChannelId &channelId, const ServiceMode &svcMode)
const DayaBay::FecCalibDatafecCalibData (const DayaBay::FecChannelId &channelId, const ServiceMode &svcMode)
const std::vector< DayaBay::PmtCalibData > & pmtCalibList (const DayaBay::Detector &detectorId, const ServiceMode &svcMode)
const std::vector< DayaBay::RpcCalibData > & rpcCalibList (const DayaBay::Detector &detectorId, const ServiceMode &svcMode)
const std::vector< DayaBay::FeeCalibData > & feeCalibList (const DayaBay::Detector &detectorId, const ServiceMode &svcMode)
const std::vector< DayaBay::FecCalibData > & fecCalibList (const DayaBay::Detector &detectorId, const ServiceMode &svcMode)
virtual unsigned long addRef ()
virtual unsigned long release ()
virtual const std::string & name () const
virtual const InterfaceIDtype () const
virtual StatusCode configure ()
virtual StatusCode start ()
virtual StatusCode stop ()
virtual StatusCode terminate ()
virtual Gaudi::StateMachine::State FSMState () const
virtual Gaudi::StateMachine::State targetFSMState () const
virtual StatusCode reinitialize ()
virtual StatusCode restart ()
virtual StatusCode sysInitialize ()
virtual StatusCode sysStart ()
virtual StatusCode sysStop ()
virtual StatusCode sysFinalize ()
virtual StatusCode sysReinitialize ()
virtual StatusCode sysRestart ()
virtual StatusCode setProperty (const Property &p)
virtual StatusCode setProperty (const std::string &s)
virtual StatusCode setProperty (const std::string &n, const std::string &v)
StatusCode setProperty (const std::string &name, const TYPE &value)
virtual StatusCode getProperty (Property *p) const
virtual const PropertygetProperty (const std::string &name) const
virtual StatusCode getProperty (const std::string &n, std::string &v) const
virtual const std::vector<
Property * > & 
getProperties () const
ISvcLocatorserviceLocator () const
IMessageSvcmsgSvc ()
IMessageSvcmsgSvc () const
IMessageSvcmessageService ()
IMessageSvcmessageService () const
StatusCode setProperties ()
StatusCode service (const std::string &name, T *&psvc, bool createIf=true) const
StatusCode service (const std::string &svcType, const std::string &svcName, T *&psvc) const
PropertydeclareProperty (const std::string &name, T &property, const std::string &doc="none") const
PropertydeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
IAuditorSvcauditorSvc () const
virtual unsigned long addRef ()=0
virtual unsigned long release ()=0

Static Public Member Functions

static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()

Public Attributes

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Protected Member Functions

int outputLevel () const

Protected Attributes

IntegerProperty m_outputLevel
Gaudi::StateMachine::State m_state
Gaudi::StateMachine::State m_targetState
IMessageSvcm_messageSvc

Private Member Functions

virtual int readCalibPmtTable (const ServiceMode &)
virtual int readCalibFeeTable (const ServiceMode &)

Private Attributes

std::map< DayaBay::Detector,
std::vector< DayaBay::PmtCalibData > > 
m_pmtData
std::map< DayaBay::Detector,
std::vector< DayaBay::RpcCalibData > > 
m_rpcData
std::map< DayaBay::Detector,
std::vector< DayaBay::FeeCalibData > > 
m_feeData
std::map< DayaBay::Detector,
std::vector< DayaBay::FecCalibData > > 
m_fecData
std::map< DayaBay::DetectorSensor,
DayaBay::PmtCalibData
m_pmtDataBySensor
std::map< DayaBay::RpcSensor,
DayaBay::RpcCalibData
m_rpcDataBySensor
std::map< DayaBay::FeeChannelId,
DayaBay::FeeCalibData
m_feeDataByChannel
std::map< DayaBay::FecChannelId,
DayaBay::FecCalibData
m_fecDataByChannel
std::string m_cableSvcName
Context feeLastContext
Context fecLastContext
Context pmtLastContext
const DbiResultKeyfeeLastResult
const DbiResultKeyfecLastResult
const DbiResultKeypmtLastResult

Friends

friend class ServiceManager

Detailed Description

Definition at line 21 of file DbiCalibDataSvc.h.


Constructor & Destructor Documentation

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 (  ) 

Definition at line 44 of file DbiCalibDataSvc.cc.

00045 {
00046 }


Member Function Documentation

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 }


Member Data Documentation

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.

std::map<DayaBay::RpcSensor, DayaBay::RpcCalibData> DbiCalibDataSvc::m_rpcDataBySensor [private]

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.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:21:49 2011 for DbiDataSvc by doxygen 1.4.7