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