00001
00002
00003
00004
00005 from GaudiPython import *
00006 from DybPython.DybPythonAlg import DybPythonAlg
00007
00008 import os
00009 os.environ['DBCONF'] = "offline_db"
00010
00011 Detector = gbl.DayaBay.Detector
00012 ServiceMode = gbl.ServiceMode
00013 Context = gbl.Context
00014 Site = gbl.Site
00015 DetectorId = gbl.DetectorId
00016 SimFlag = gbl.SimFlag
00017 TimeStamp = gbl.TimeStamp
00018
00019 class TestAlg(DybPythonAlg):
00020 def __init__(self,name):
00021 DybPythonAlg.__init__(self,name)
00022 self.cableSvcName = 'DbiCableSvc'
00023 self.calibDataSvcName = 'DbiCalibDataSvc'
00024 print "Making TestAlg",name
00025
00026 def initialize(self):
00027 status = DybPythonAlg.initialize(self)
00028 print "Init TestAlg",self.name()
00029 if status.isFailure(): return status
00030 self.cableSvc = self.svc('ICableSvc',self.cableSvcName)
00031 self.pmtCalibSvc = self.svc('ICalibDataSvc',self.calibDataSvcName)
00032 print "===========================================================\n\n"
00033
00034 context = Context()
00035 context.SetSite(Site.kSAB)
00036 context.SetDetId(DetectorId.kAD1)
00037 context.SetSimFlag(SimFlag.kData)
00038 timeStamp = TimeStamp(2010,8,1,0,0,0)
00039 context.SetTimeStamp(timeStamp);
00040 print context.AsString()
00041 svcMode = ServiceMode(context,0)
00042 adPmtSensors = self.cableSvc.adPmtSensors(svcMode)
00043 hrdwTypes = ["kUnknown","kPmt8inch","kPmt2inch","kRpc","kFee","kFec","kRot","kRom","kHighVoltage"]
00044 print " number of sensors =",adPmtSensors.size()
00045 print " Detector \t Ring \t Colmn \t HrdwType PmtHrdwId \t DAQChannel \t ElecHrdwType \t FEEHrdwId FEEHrdwConnector"
00046 for sens in adPmtSensors:
00047 pmtHrdw = self.cableSvc.pmtHardwareId(sens, svcMode)
00048 chan = self.cableSvc.feeChannelId(sens, svcMode)
00049 feeHrdw = self.cableSvc.feeHardwareId(chan, svcMode)
00050
00051 daqIndex = "%2d %2d" % (chan.board(), chan.connector())
00052 pmtHrdwId = "%4d" % pmtHrdw.id()
00053 print " ",sens.detName(),"\t ",sens.ring(),"\t ",sens.column(),"\t",hrdwTypes[pmtHrdw.type()]," ",pmtHrdwId,"\t ",daqIndex,"\t ",hrdwTypes[feeHrdw.type()],"\t\t ",feeHrdw.boardId(),"\t ",feeHrdw.connector()
00054
00055 print "\n\n==========================================================="
00056
00057 print " Sensor Status SpeHigh sigmaSpe SpeLow Toff Tspr Eff PreP AfterP Dark"
00058 for sens in adPmtSensors:
00059 pmtData = self.pmtCalibSvc.pmtCalibData(sens, svcMode)
00060 print ' '.join([ str(elem) for elem in [pmtData.m_pmtId.fullPackedData(),
00061 pmtData.m_status,
00062 pmtData.m_speHigh,
00063 pmtData.m_sigmaSpeHigh,
00064 pmtData.m_speLow,
00065 pmtData.m_timeOffset,
00066 pmtData.m_timeSpread,
00067 pmtData.m_efficiency,
00068 pmtData.m_prePulseProb,
00069 pmtData.m_afterPulseProb,
00070 pmtData.m_darkRate] ])
00071 print "\n\n==========================================================="
00072 return SUCCESS
00073
00074 def execute(self):
00075 print "Executing TestAlg",self.name()
00076 return SUCCESS
00077
00078 def finalize(self):
00079 print "Finalizing TestAlg",self.name()
00080 status = DybPythonAlg.finalize(self)
00081 return status
00082
00083 cableSvcName = "DbiCableSvc"
00084 pmtCalibSvcName = "DbiCalibDataSvc"
00085
00086 def configure(argv = []):
00087 global cableSvcName
00088 import getopt
00089 opts,args = getopt.getopt(argv,"",["cableSvc-name=","calibSvc-name="])
00090 for opt,arg in opts:
00091 if opt == "--cableSvc-name":
00092 cableSvcName = arg
00093 if opt == "--calibSvc-name":
00094 calibSvcName = arg
00095 import DataSvc
00096 DataSvc.Configure( cableSvc = cableSvcName, calibDataSvcName = pmtCalibSvcName )
00097 return
00098
00099 def run(app):
00100 global cableSvcName
00101 global pmtCalibSvcName
00102 app.ExtSvc += [ cableSvcName ]
00103 app.ExtSvc += [ pmtCalibSvcName ]
00104 testAlg = TestAlg("TestAlg")
00105 testAlg.cableSvcName = cableSvcName
00106 testAlg.pmtCalibSvcName = pmtCalibSvcName
00107 app.addAlgorithm( testAlg )
00108 return