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