00001
00002
00003
00004
00005
00006
00007
00008
00009 from DybPython.DybPythonAlg import DybPythonAlg
00010 from GaudiPython import SUCCESS, FAILURE
00011 from GaudiPython import gbl
00012 import GaudiKernel.SystemOfUnits as units
00013
00014 CalibSourceId = gbl.DayaBay.CalibSourceId
00015 RunType = gbl.DayaBay.RunType
00016 SourceType = gbl.DayaBay.Calibration.SourceType
00017
00018
00019 class PrintRunDataAlg(DybPythonAlg):
00020 "Print Run Data Algorithm"
00021 def __init__(self,name):
00022 DybPythonAlg.__init__(self,name)
00023 return
00024
00025 def initialize(self):
00026 status = DybPythonAlg.initialize(self)
00027 if status.isFailure(): return status
00028 self.info("initializing")
00029
00030
00031
00032 self.runDataSvc = self.svc('IRunDataSvc','RunDataSvc')
00033 if self.runDataSvc == None:
00034 self.error("Failed to initialize run data service.")
00035 return FAILURE
00036
00037 return SUCCESS
00038
00039 def execute(self):
00040 self.info("executing")
00041 return SUCCESS
00042
00043 def finalize(self):
00044 self.info("finalizing")
00045
00046 self.info("===========================================================")
00047 runDataList = self.runDataSvc.cachedRunData()
00048 self.info("Service has cached data for %d runs." % len(runDataList))
00049 for runData in runDataList:
00050 self.info(" Run Number: "+str(runData.runNumber()))
00051 self.info(" Run Type: "
00052 +RunType.AsString(runData.runType()))
00053 self.info(" Active Detectors: "
00054 +str([det.detName() for det in runData.detectors()]))
00055 self.info(" Start Time: "+runData.startTime().AsString())
00056 self.info(" End Time: "+runData.endTime().AsString())
00057 self.info(" Calibration Sources:")
00058 for calibSource in runData.calibSources():
00059 self.info(" "+calibSource.id().name())
00060 if calibSource.id().type() == SourceType.kLED:
00061 self.info(" LED Freq [Hz]: "
00062 +str(calibSource.ledFrequency()/units.hertz))
00063 if calibSource.id().isAD():
00064 self.info(" AD Z Position [mm]: "
00065 +str(calibSource.adZPosition()/units.mm))
00066 self.info("")
00067 self.info("===========================================================")
00068 status = DybPythonAlg.finalize(self)
00069 return status
00070
00071
00072
00073
00074 def configure():
00075 return
00076
00077 def run(app):
00078 '''
00079 Configure and add an algorithm to job
00080 '''
00081 app.ExtSvc += ["RunDataSvc"]
00082 printRunDataAlg = PrintRunDataAlg("PrintRunDataAlg")
00083 app.addAlgorithm(printRunDataAlg)
00084 pass
00085