Back to home page

Project CMSSW displayed by LXR

 
 

    


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) # 'sqlite_file:testExample.db'
0012 options.register ("dblist", '', VarParsing.multiplicity.list, VarParsing.varType.string)
0013 options.register ("frontierloc", 'frontier://FrontierProd/CMS_CONDITIONS', VarParsing.multiplicity.singleton, VarParsing.varType.string) # 'frontier://FrontierDev/CMS_COND_HCAL'
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 #custom help message
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 # extracted from Configuration/Applications/python/ConfigBuilder.py
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         #may specify the reco geometry
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 # specify for which run you would like to get the conditions in the "firstRun"
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     # loads params and es_prefer
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)