Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 import FWCore.ParameterSet.Config as cms
00011 import FWCore.ParameterSet.VarParsing as VarParsing
00012 from elementtree.ElementTree import parse
00013 import sys,os
00014
00015
00016
00017
00018 def usage():
00019
00020 print "Usage: cmsRun loadConditions.py file=FILENAME record=RECORD db=CONNECTSTRING"
00021 print " file=FILE"
00022 print " specify xml file to load to DB"
00023 print
00024 print " record=RECORD"
00025 print " specify record to be loaded (EcalChannelStatus, etc)"
00026 print
00027 print " db=CONNECTSTRING"
00028 print " specify connection string, e.g. sqlite_file=file.db"
00029 print
00030
00031
00032 usage()
00033
00034
00035 options = VarParsing.VarParsing ()
00036 options.register ('file',
00037 "",
00038 VarParsing.VarParsing.multiplicity.singleton,
00039 VarParsing.VarParsing.varType.string,
00040 "xml file to load")
00041
00042 options.register ('record',
00043 "",
00044 VarParsing.VarParsing.multiplicity.singleton,
00045 VarParsing.VarParsing.varType.string,
00046 "record type to load")
00047
00048 options.register ('db',
00049 "",
00050 VarParsing.VarParsing.multiplicity.singleton,
00051 VarParsing.VarParsing.varType.string,
00052 "db connection string")
00053
00054 options.parseArguments()
00055
00056
00057 def readTagAndSince(filename, headertag='EcalCondHeader'):
00058 '''Read tag and since from EcalCondHeader in XML file '''
00059 root = parse(filename).getroot()
00060 header = root.find(headertag)
00061 since = header.findtext('since')
00062 tag = header.findtext('tag')
00063
00064 return tag,since
00065
00066
00067 tag_ , since_ = readTagAndSince(options.file)
00068
00069
00070 analyzer_ = {'EcalGainRatios':'EcalGainRatiosAnalyzer', \
00071 'EcalADCToGeVConstant':'EcalADCToGeVConstantAnalyzer', \
00072 'EcalWeightXtalGroups':'EcalWeightGroupAnalyzer', \
00073 'EcalChannelStatus':'EcalChannelStatusHandler', \
00074 'EcalChannelStatus':'EcalChannelStatusAnalyzer', \
00075 'EcalTBWeights':'EcalTBWeightsAnalyzer', \
00076 'EcalIntercalibConstants':'EcalIntercalibConstantsAnalyzer', \
00077 'EcalIntercalibConstantsMC':'EcalIntercalibConstantsMCAnalyzer', \
00078 'EcalIntercalibErrors':'EcalIntercalibErrorsAnalyzer'
00079 }
00080
00081
00082
00083 process = cms.Process("LoadEcalConditions")
00084
00085 process.source = cms.Source("EmptyIOVSource",
00086 timetype = cms.string('runnumber'),
00087 firstValue = cms.uint64(1),
00088 lastValue = cms.uint64(1),
00089 interval = cms.uint64(1)
00090 )
00091
00092
00093 process.load("CondCore.DBCommon.CondDBCommon_cfi")
00094 process.CondDBCommon.connect = cms.string(options.db)
00095 process.CondDBCommon.DBParameters.authenticationPath = cms.untracked.string('/afs/cern.ch/cms/DB/conddb')
00096
00097 process.PoolDBOutputService = cms.Service("PoolDBOutputService",
00098 process.CondDBCommon,
00099 timetype = cms.untracked.string('runnumber'),
00100 toPut = cms.VPSet(cms.PSet(
00101 record = cms.string(options.record+'Rcd'),
00102 tag = cms.string(tag_)
00103 )),
00104 logconnect= cms.untracked.string('sqlite_file:log.db')
00105 )
00106
00107
00108 process.popconAnalyzer = cms.EDAnalyzer(analyzer_[options.record],
00109 record = cms.string(options.record+'Rcd'),
00110 loggingOn= cms.untracked.bool(True),
00111 SinceAppendMode=cms.bool(True),
00112 Source=cms.PSet(
00113 xmlFile = cms.untracked.string(options.file),
00114 since = cms.untracked.int64(int(since_))
00115
00116 )
00117 )
00118
00119
00120 process.p = cms.Path(process.popconAnalyzer)
00121
00122