00001
00002
00003 from GaudiPython import *
00004 from DybPython.DybPythonAlg import DybPythonAlg
00005
00006 Detector = gbl.DayaBay.Detector
00007 ServiceMode = gbl.ServiceMode
00008 Context = gbl.Context
00009 Site = gbl.Site
00010 DetectorId = gbl.DetectorId
00011
00012 CalibPmtSpec = gbl.CalibPmtSpec
00013
00014 class TestAlg(DybPythonAlg):
00015 def __init__(self,name):
00016 DybPythonAlg.__init__(self,name)
00017 self.calibDataSvcName = 'StaticSimDataSvc'
00018 print "Making TestAlg",name
00019
00020 def initialize(self):
00021 status = DybPythonAlg.initialize(self)
00022 print "Init TestAlg",self.name()
00023 if status.isFailure(): return status
00024 self.cableSvc = self.svc('ICableSvc','StaticCableSvc')
00025 self.pmtCalibSvc = self.svc('ICalibDataSvc',self.calibDataSvcName)
00026 print "===========================================================\n\n"
00027
00028 context = Context()
00029 context.SetSite(Site.kAll)
00030
00031 context.SetDetId(DetectorId.kAll)
00032 svcMode = ServiceMode(context,0)
00033 adPmtSensors = self.cableSvc.adPmtSensors(svcMode)
00034 hrdwTypes = ["kUnknown","kPmt8inch","kPmt2inch","kRpc","kFee","kFec","kRot","kRom","kHighVoltage"]
00035 print " number of sensors =",adPmtSensors.size()
00036 print " Sensor Status SpeHigh sigmaSpe SpeLow Toff Tspr Eff PreP AfterP Dark"
00037 for sens in adPmtSensors:
00038 pmtData = self.pmtCalibSvc.pmtCalibData(sens, svcMode)
00039 print ' '.join([ str(elem) for elem in [pmtData.m_pmtId.fullPackedData(),
00040 pmtData.m_status,
00041 pmtData.m_speHigh,
00042 pmtData.m_sigmaSpeHigh,
00043 pmtData.m_speLow,
00044 pmtData.m_timeOffset,
00045 pmtData.m_timeSpread,
00046 pmtData.m_efficiency,
00047 pmtData.m_prePulseProb,
00048 pmtData.m_afterPulseProb,
00049 pmtData.m_darkRate] ])
00050 print "\n\n==========================================================="
00051 return SUCCESS
00052
00053 def execute(self):
00054 print "Executing TestAlg",self.name()
00055 return SUCCESS
00056
00057 def finalize(self):
00058 print "Finalizing TestAlg",self.name()
00059 status = DybPythonAlg.finalize(self)
00060 return status
00061
00062 calibDataSvcName = "StaticCalibDataSvc"
00063
00064 def configure(argv = []):
00065 global calibDataSvcName
00066 import getopt
00067 opts,args = getopt.getopt(argv,"",["svc-name="])
00068 for opt,arg in opts:
00069 if opt == "--svc-name":
00070 calibDataSvcName = arg
00071 import DataSvc
00072 DataSvc.Configure( calibDataSvc = calibDataSvcName )
00073 if calibDataSvcName == 'DbiCalibDataSvc':
00074
00075 print "Loading DBI class: CalibPmtSpec"
00076 CalibPmtSpec = gbl.CalibPmtSpec
00077 return
00078
00079 def run(app):
00080 global calibDataSvcName
00081 app.ExtSvc += [ "StaticCableSvc", calibDataSvcName ]
00082 testAlg = TestAlg("TestAlg")
00083 testAlg.calibDataSvcName = calibDataSvcName
00084 app.addAlgorithm( testAlg )
00085 return