File indexing completed on 2025-04-17 02:42:01
0001 import sys
0002 import FWCore.ParameterSet.Config as cms
0003 from FWCore.ParameterSet.VarParsing import VarParsing
0004
0005 options = VarParsing()
0006 options.register ("dumplist", '', VarParsing.multiplicity.list, VarParsing.varType.string)
0007 options.register ("globaltag", '', VarParsing.multiplicity.singleton, VarParsing.varType.string)
0008 options.register ("geometry", '', VarParsing.multiplicity.singleton, VarParsing.varType.string)
0009 options.register ("era", '', VarParsing.multiplicity.singleton, VarParsing.varType.string)
0010 options.register ("run", 1, VarParsing.multiplicity.singleton, VarParsing.varType.int)
0011 options.register ("dbfile", '', VarParsing.multiplicity.singleton, VarParsing.varType.string)
0012 options.register ("dblist", '', VarParsing.multiplicity.list, VarParsing.varType.string)
0013 options.register ("frontierloc", 'frontier://FrontierProd/CMS_CONDITIONS', VarParsing.multiplicity.singleton, VarParsing.varType.string)
0014 options.register ("frontierlist", '', VarParsing.multiplicity.list, VarParsing.varType.string)
0015 options.register ("usehardcode", '', VarParsing.multiplicity.singleton, VarParsing.varType.bool)
0016 options.register ("asciilist", '', VarParsing.multiplicity.list, VarParsing.varType.string)
0017 options.register ("prefix", 'DumpCond', VarParsing.multiplicity.singleton, VarParsing.varType.string)
0018 options.register ("command", '', VarParsing.multiplicity.singleton, VarParsing.varType.string)
0019 options.register ("info", '', VarParsing.multiplicity.singleton, VarParsing.varType.bool)
0020 options.register ("dump", '', VarParsing.multiplicity.singleton, VarParsing.varType.bool)
0021 options.parseArguments()
0022
0023 allconds = [
0024 'Pedestals',
0025 'PedestalWidths',
0026 'EffectivePedestals',
0027 'EffectivePedestalWidths',
0028 'Gains',
0029 'QIEData',
0030 'QIETypes',
0031 'ElectronicsMap',
0032 'ChannelQuality',
0033 'GainWidths',
0034 'RespCorrs',
0035 'TimeCorrs',
0036 'LUTCorrs',
0037 'PFCorrs',
0038 'L1TriggerObjects',
0039 'ZSThresholds',
0040 'ValidationCorrs',
0041 'LutMetadata',
0042 'DcsValues',
0043 'DcsMap',
0044 'TimingParams',
0045 'RecoParams',
0046 'LongRecoParams',
0047 'MCParams',
0048 'FlagHFDigiTimeParams',
0049 'SiPMParameters',
0050 'SiPMCharacteristics',
0051 'TPParameters',
0052 'TPChannelParameters',
0053 'FrontEndMap',
0054 'CalibrationsSet',
0055 'CalibrationWidthsSet',
0056 ]
0057
0058
0059 if options.info:
0060 print("dumplist possibilities:")
0061 print(allconds)
0062 print("dbfile format: sqlite_file:foo.db")
0063 print("frontierloc possibilities: frontier://FrontierProd/CMS_CONDITIONS (default), frontier://FrontierDev/CMS_COND_HCAL, etc.")
0064 print("dblist/frontierlist entry format: HcalPedestalsRcd:hcal_pedestals_fC_v6_mc or HcalPedestalsRcd:effective:HcalPedestals_2018_v2.0_mc_effective for labeled records")
0065 print("asciilist entry format: Pedestals:CondFormats/HcalObjects/data/hcal_pedestals_fC_v5.txt")
0066 print("command can be used to execute extra settings, newline separated, e.g.: process.es_hardcode.useHEUpgrade=cms.bool(True)\\nprocess.es_hardcode.useHFUpgrade=cms.bool(True)")
0067 print("dump will do the equivalent of edmConfigDump: use with python instead of cmsRun")
0068 print("specifying globaltag without the proper geometry may cause errors")
0069
0070 sys.exit(0)
0071
0072 if not options.dumplist:
0073 print("Nothing to do!")
0074 sys.exit(0)
0075
0076 process = cms.Process("DUMP")
0077 if options.era:
0078 from Configuration.StandardSequences.Eras import eras
0079 process = cms.Process("DUMP",getattr(eras,options.era))
0080
0081 process.load("CondCore.CondDB.CondDB_cfi")
0082 process.load('Configuration.StandardSequences.Services_cff')
0083
0084 if options.globaltag:
0085 process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
0086 from Configuration.AlCa.GlobalTag import GlobalTag
0087 process.GlobalTag = GlobalTag(process.GlobalTag, options.globaltag, '')
0088
0089
0090 if options.geometry:
0091 SimGeometryCFF=''
0092 GeometryCFF='Configuration/StandardSequences/GeometryRecoDB_cff'
0093 geometryDBLabel=None
0094 simGeometry=''
0095 def inGeometryKeys(opt):
0096 from Configuration.StandardSequences.GeometryConf import GeometryConf
0097 if opt in GeometryConf:
0098 return GeometryConf[opt]
0099 else:
0100 return opt
0101
0102 geoms=options.geometry.split(',')
0103 if len(geoms)==1: geoms=inGeometryKeys(geoms[0]).split(',')
0104 if len(geoms)==2:
0105
0106 if '/' in geoms[1] or '_cff' in geoms[1]:
0107 GeometryCFF=geoms[1]
0108 else:
0109 GeometryCFF='Configuration/Geometry/Geometry'+geoms[1]+'_cff'
0110
0111 if (geoms[0].startswith('DB:')):
0112 SimGeometryCFF='Configuration/StandardSequences/GeometrySimDB_cff'
0113 geometryDBLabel=geoms[0][3:]
0114 else:
0115 if '/' in geoms[0] or '_cff' in geoms[0]:
0116 SimGeometryCFF=geoms[0]
0117 else:
0118 simGeometry=geoms[0]
0119 SimGeometryCFF='Configuration/Geometry/Geometry'+geoms[0]+'_cff'
0120
0121 if SimGeometryCFF: process.load(SimGeometryCFF)
0122 process.load(GeometryCFF)
0123 if geometryDBLabel:
0124 process.XMLFromDBSource.label = cms.string(geometryDBLabel)
0125
0126 process.prod = cms.EDAnalyzer("HcalDumpConditions",
0127 dump = cms.untracked.vstring(options.dumplist),
0128 outFilePrefix = cms.untracked.string(options.prefix)
0129 )
0130
0131
0132 process.source = cms.Source("EmptySource",
0133 numberEventsInRun = cms.untracked.uint32(1),
0134 firstRun = cms.untracked.uint32(options.run)
0135 )
0136
0137 if options.dbfile and options.dblist:
0138 process.es_dbfile = cms.ESSource("PoolDBESSource",
0139 connect = cms.string(options.dbfile),
0140 toGet = cms.VPSet()
0141 )
0142 for rcd in options.dblist:
0143 rcds = rcd.split(':')
0144 if len(rcds) == 2: process.es_dbfile.toGet.append(cms.PSet(record = cms.string(rcds[0]), tag = cms.string(rcds[1])))
0145 elif len(rcds) == 3: process.es_dbfile.toGet.append(cms.PSet(record = cms.string(rcds[0]), label = cms.untracked.string(rcds[1]), tag = cms.string(rcds[2])))
0146 process.es_prefer_dbfile = cms.ESPrefer('PoolDBESSource','es_dbfile')
0147
0148 if options.frontierloc and options.frontierlist:
0149 process.es_frontier = cms.ESSource("PoolDBESSource",
0150 connect = cms.string(options.frontierloc),
0151 toGet = cms.VPSet()
0152 )
0153 for rcd in options.frontierlist:
0154 rcds = rcd.split(':')
0155 if len(rcds) == 2: process.es_frontier.toGet.append(cms.PSet(record = cms.string(rcds[0]), tag = cms.string(rcds[1])))
0156 elif len(rcds) == 3: process.es_frontier.toGet.append(cms.PSet(record = cms.string(rcds[0]), label = cms.untracked.string(rcds[1]), tag = cms.string(rcds[2])))
0157 process.es_prefer_frontier = cms.ESPrefer('PoolDBESSource','es_frontier')
0158
0159 if options.asciilist:
0160 process.es_ascii = cms.ESSource("HcalTextCalibrations",
0161 input = cms.VPSet()
0162 )
0163 for obj in options.asciilist:
0164 objs = obj.split(':')
0165 if len(objs) != 2: continue
0166 process.es_ascii.input.append(cms.PSet(object = cms.string(objs[0]), file = cms.FileInPath(objs[1])))
0167 process.es_prefer_ascii = cms.ESPrefer('HcalTextCalibrations','es_ascii')
0168
0169 if options.usehardcode:
0170
0171 process.load("CalibCalorimetry.HcalPlugins.Hcal_Conditions_forGlobalTag_cff")
0172 process.es_hardcode.toGet = cms.untracked.vstring(options.dumplist)
0173 process.es_hardcode.toGet.append('GainWidths')
0174
0175 if options.command:
0176 cmds = options.command.split('\\n')
0177 for cmd in cmds:
0178 exec(cmd)
0179
0180 process.maxEvents = cms.untracked.PSet(
0181 input = cms.untracked.int32(1)
0182 )
0183
0184 if options.dump:
0185 print(process.dumpPython())
0186 sys.exit(0)
0187 else:
0188 process.p = cms.Path(process.prod)