00001
00002
00003 __all__ = ['Configure']
00004
00005 from DybPython.Tools import realpath
00006
00007 class DataSvcConfigure:
00008 '''
00009 Setup configuration for DataSvc.
00010 '''
00011
00012
00013 def __init__(self):
00014 '''
00015 Setup default configuration of DataSvc.
00016 '''
00017 cableSvcName = "StaticCableSvc"
00018 simDataSvcName = "StaticSimDataSvc"
00019 calibDataSvcName = "StaticCalibDataSvc"
00020
00021 feeCableMapPath = ''
00022 pmtSimDataPath = '$DATASVCROOT/share/pmtDataTable.txt'
00023 feeSimDataPath = '$DATASVCROOT/share/feeDataTable.txt'
00024 pmtCalibDataPath = '$DATASVCROOT/share/pmtCalibTable.txt'
00025 feeCalibDataPath = '$DATASVCROOT/share/feeCalibTable.txt'
00026
00027 self.setCableSvc( cableSvcName )
00028 self.setFeeCableMap( feeCableMapPath )
00029
00030 self.setSimDataSvc( simDataSvcName )
00031 self.setPmtSimData( pmtSimDataPath )
00032 self.setFeeSimData( feeSimDataPath )
00033
00034 self.setCalibDataSvc( calibDataSvcName )
00035 self.setPmtCalibData( pmtCalibDataPath )
00036 self.setFeeCalibData( feeCalibDataPath )
00037 return
00038
00039 def applyArgs(self,args,kwd):
00040 ''' Generic function for setting members based on arguments '''
00041 memberNames = kwd.keys()
00042
00043
00044 for member in memberNames:
00045 value = kwd[member]
00046 if member == "cableSvc":
00047 self.setCableSvc( value )
00048 elif member == "simDataSvc":
00049 self.setSimDataSvc( value )
00050 elif member == "calibDataSvc":
00051 self.setCalibDataSvc( value )
00052 elif member == "feeCableMapPath":
00053 self.setFeeCableMap( value )
00054 elif member == "pmtSimDataPath":
00055 self.setPmtSimData( value )
00056 elif member == "feeSimDataPath":
00057 self.setFeeSimData( value )
00058 elif member == "pmtCalibDataPath":
00059 self.setPmtCalibData( value )
00060 elif member == "feeCalibDataPath":
00061 self.setFeeCalibData( value )
00062 else:
00063 print "Error: DataSvc: Unknown option \"%s\"" % (member)
00064
00065 def setCableSvc(self, cableSvcName):
00066 if cableSvcName == "StaticCableSvc":
00067 from DataSvc.DataSvcConf import StaticCableSvc
00068 self.cableSvc = StaticCableSvc()
00069 elif cableSvcName == "DbiCableSvc":
00070 from DbiDataSvc.DbiDataSvcConf import DbiCableSvc
00071 self.cableSvc = DbiCableSvc()
00072 else:
00073 print "Error: DataSvc: Unknown cable service \"%s\"" % (
00074 cableSvcName)
00075
00076 def setSimDataSvc(self, simDataSvcName):
00077 if simDataSvcName == "StaticSimDataSvc":
00078 from DataSvc.DataSvcConf import StaticSimDataSvc
00079 self.simDataSvc = StaticSimDataSvc()
00080 elif simDataSvcName == "DbiSimDataSvc":
00081 from DbiDataSvc.DbiDataSvcConf import DbiSimDataSvc
00082 self.simDataSvc = DbiSimDataSvc()
00083 else:
00084 print "Error: DataSvc: Unknown sim data service \"%s\"" % (
00085 simDataSvcName)
00086
00087 def setCalibDataSvc(self, calibDataSvcName):
00088 if calibDataSvcName == "StaticCalibDataSvc":
00089 from DataSvc.DataSvcConf import StaticCalibDataSvc
00090 self.calibDataSvc = StaticCalibDataSvc()
00091 elif calibDataSvcName == "DbiCalibDataSvc":
00092 from DbiDataSvc.DbiDataSvcConf import DbiCalibDataSvc
00093 self.calibDataSvc = DbiCalibDataSvc()
00094 else:
00095 print "Error: DataSvc: Unknown calib data service \"%s\"" % (
00096 calibDataSvcName)
00097
00098 def setFeeCableMap(self, feeCableMapPath):
00099 ''' Set the FEE/PMT/Hardware cable connections data file'''
00100
00101 self.cableSvc.FeeCableMap = feeCableMapPath
00102 return
00103
00104 def setPmtSimData(self, pmtSimDataPath):
00105 ''' Set the simulation input parameter data file'''
00106 self.simDataSvc.PmtDataFile = realpath( pmtSimDataPath )
00107 return
00108
00109 def setFeeSimData(self, feeSimDataPath):
00110 ''' Set the simulation input parameter data file'''
00111 self.simDataSvc.FeeDataFile = realpath( feeSimDataPath )
00112 return
00113
00114 def setPmtCalibData(self, pmtCalibDataPath):
00115 ''' Set the calibration input parameter data file'''
00116 self.calibDataSvc.PmtDataFile = realpath( pmtCalibDataPath )
00117 return
00118
00119 def setFeeCalibData(self, feeCalibDataPath):
00120 ''' Set the calibration input parameter data file'''
00121 self.calibDataSvc.FeeDataFile = realpath( feeCalibDataPath )
00122 return
00123
00124 configureObject = None
00125
00126 def Configure(*args,**kwd):
00127 global configureObject
00128
00129 if configureObject == None:
00130 configureObject = DataSvcConfigure()
00131
00132 configureObject.applyArgs(args,kwd)
00133 return configureObject