File indexing completed on 2024-12-01 23:40:16
0001 import FWCore.ParameterSet.Config as cms
0002 import sys, os
0003 import FWCore.ParameterSet.VarParsing as VarParsing
0004 from FWCore.Utilities.Enumerate import Enumerate
0005 from Configuration.Geometry.dictRun4Geometry import detectorVersionDict
0006
0007 varType = Enumerate ("Run1 2015 2017 2021 Run4 MaPSA")
0008 defaultVersion=str();
0009
0010 def help():
0011 print("Usage: cmsRun dumpFWRecoGeometry_cfg.py tag=TAG ")
0012 print(" tag=tagname")
0013 print(" identify geometry condition database tag")
0014 print(" ", varType.keys())
0015 print("")
0016 print(" version=versionNumber")
0017 print(" scenario version from Run4 dictionary")
0018 print("")
0019 print(" tgeo=bool")
0020 print(" dump in TGeo format to browse in geometry viewer")
0021 print(" import this in Fireworks with option --sim-geom-file")
0022 print("")
0023 print(" tracker=bool")
0024 print(" include Tracker subdetectors")
0025 print("")
0026 print(" muon=bool")
0027 print(" include Muon subdetectors")
0028 print("")
0029 print(" calo=bool")
0030 print(" include Calo subdetectors")
0031 print("")
0032 print(" timing=bool")
0033 print(" include Timing subdetectors")
0034 print("")
0035 print("")
0036 os._exit(1);
0037
0038 def versionCheck(ver):
0039 if ver == "":
0040 print("Please, specify Run4 scenario version\n")
0041 print(sorted([x[1] for x in detectorVersionDict.items()]))
0042 print("")
0043 help()
0044
0045 def recoGeoLoad(score, properties):
0046 print("Loading configuration for tag ", options.tag ,"...\n")
0047
0048 if score == "Run1":
0049 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0050 from Configuration.AlCa.autoCond import autoCond
0051 process.GlobalTag.globaltag = autoCond['run1_mc']
0052 process.load("Configuration.StandardSequences.GeometryDB_cff")
0053
0054 elif score == "2015":
0055 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0056 from Configuration.AlCa.autoCond import autoCond
0057 process.GlobalTag.globaltag = autoCond['run2_mc']
0058 process.load("Configuration.StandardSequences.GeometryDB_cff")
0059
0060 elif score == "2017":
0061 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0062 from Configuration.AlCa.autoCond import autoCond
0063 process.GlobalTag.globaltag = autoCond['upgrade2017']
0064 process.load('Configuration.Geometry.GeometryExtended2017Reco_cff')
0065
0066 elif score == "2021":
0067 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0068 from Configuration.AlCa.autoCond import autoCond
0069 process.GlobalTag.globaltag = autoCond['upgrade2021']
0070
0071 process.load('Geometry.TrackerGeometryBuilder.trackerParameters_cfi')
0072 process.load('Configuration.Geometry.GeometryExtended2021Reco_cff')
0073
0074 process.DTGeometryESModule.applyAlignment = cms.bool(False)
0075 process.CSCGeometryESModule.applyAlignment = cms.bool(False)
0076
0077 elif "Run4" in score:
0078 versionCheck(options.version)
0079 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0080
0081
0082 from Configuration.AlCa.autoCond import autoCond
0083
0084
0085 version_key = 'Run4' + options.version
0086 print(f"Constructed version key: {version_key}")
0087
0088
0089 if version_key in properties['Run4']:
0090
0091 global_tag_key = properties['Run4'][version_key]['GT']
0092 print(f"Global tag key from properties: {global_tag_key}")
0093
0094
0095 if global_tag_key.replace("auto:", "") in autoCond:
0096
0097 from Configuration.AlCa.GlobalTag import GlobalTag
0098 process.GlobalTag = GlobalTag(process.GlobalTag, global_tag_key, '')
0099 else:
0100 raise KeyError(f"Global tag key '{global_tag_key}' not found in autoCond.")
0101 else:
0102 raise KeyError(f"Version key '{version_key}' not found in properties['Run4'].")
0103 process.load('Configuration.Geometry.GeometryExtendedRun4'+options.version+'Reco_cff')
0104 process.trackerGeometry.applyAlignment = cms.bool(False)
0105
0106 elif score == "MaPSA":
0107 process.load('Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff')
0108 process.load('Geometry.TrackerCommonData.mapsaGeometryXML_cfi')
0109 process.load('Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cfi')
0110 process.load('Geometry.TrackerNumberingBuilder.trackerTopology_cfi')
0111 process.load('Geometry.TrackerGeometryBuilder.trackerParameters_cfi')
0112 process.load('Geometry.TrackerGeometryBuilder.trackerGeometry_cfi')
0113 process.trackerGeometry.applyAlignment = cms.bool(False)
0114 process.load('RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi')
0115
0116 process.load('Geometry.CommonTopologies.bareGlobalTrackingGeometry_cfi')
0117
0118 elif score == "HGCTB160":
0119 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0120 from Configuration.AlCa.autoCond import autoCond
0121 process.GlobalTag.globaltag = autoCond['mc']
0122 process.load('Geometry.HGCalTBCommonData.hgcalTBParametersInitialization_cfi')
0123 process.load('Geometry.HGCalTBCommonData.hgcalTBNumberingInitialization_cfi')
0124 process.load('Geometry.CaloEventSetup.HGCalTBTopology_cfi')
0125 process.load('Geometry.HGCalGeometry.HGCalTBGeometryESProducer_cfi')
0126 process.load('Geometry.CaloEventSetup.CaloTopology_cfi')
0127 process.load('Geometry.CaloEventSetup.CaloGeometryBuilder_cfi')
0128 process.CaloGeometryBuilder = cms.ESProducer(
0129 "CaloGeometryBuilder",
0130 SelectedCalos = cms.vstring("HGCalEESensitive")
0131 )
0132 process.load("SimG4CMS.HGCalTestBeam.HGCalTB160XML_cfi")
0133
0134 else:
0135 help()
0136
0137
0138 options = VarParsing.VarParsing ()
0139
0140 defaultOutputFileName="cmsRecoGeom.root"
0141
0142 options.register ('tag',
0143 "2017",
0144 VarParsing.VarParsing.multiplicity.singleton,
0145 VarParsing.VarParsing.varType.string,
0146 "tag info about geometry database conditions")
0147
0148 options.register ('version',
0149 defaultVersion,
0150 VarParsing.VarParsing.multiplicity.singleton,
0151 VarParsing.VarParsing.varType.string,
0152 "info about Run4 geometry scenario version")
0153
0154 options.register ('tgeo',
0155 False,
0156 VarParsing.VarParsing.multiplicity.singleton,
0157 VarParsing.VarParsing.varType.bool,
0158 "write geometry in TGeo format")
0159
0160 options.register ('tracker',
0161 True,
0162 VarParsing.VarParsing.multiplicity.singleton,
0163 VarParsing.VarParsing.varType.bool,
0164 "write Tracker geometry")
0165
0166 options.register ('muon',
0167 True,
0168 VarParsing.VarParsing.multiplicity.singleton,
0169 VarParsing.VarParsing.varType.bool,
0170 "write Muon geometry")
0171
0172 options.register ('calo',
0173 True,
0174 VarParsing.VarParsing.multiplicity.singleton,
0175 VarParsing.VarParsing.varType.bool,
0176 "write Calo geometry")
0177
0178 options.register ('timing',
0179 False,
0180 VarParsing.VarParsing.multiplicity.singleton,
0181 VarParsing.VarParsing.varType.bool,
0182 "write Timing geometry")
0183
0184 options.register ('out',
0185 defaultOutputFileName,
0186 VarParsing.VarParsing.multiplicity.singleton,
0187 VarParsing.VarParsing.varType.string,
0188 "Output file name")
0189
0190 options.parseArguments()
0191
0192 from Configuration.PyReleaseValidation.upgradeWorkflowComponents import upgradeProperties as properties
0193
0194 if options.tag == "Run4" or options.tag == "MaPSA":
0195 prop_key = 'Run4'
0196 version_key = options.tag + options.version
0197 elif options.tag == "2017" or options.tag == "2021":
0198 prop_key = 2017
0199 version_key = options.tag
0200 else:
0201 prop_key = None
0202 version_key = None
0203
0204 if(prop_key and version_key):
0205 print(f"Constructed version key: {version_key}")
0206 era_key = properties[prop_key][str(version_key)]['Era']
0207 print(f"Constructed era key: {era_key}")
0208 from Configuration.StandardSequences.Eras import eras
0209 era = getattr(eras, era_key)
0210 process = cms.Process("DUMP",era)
0211 else:
0212 process = cms.Process("DUMP")
0213 process.add_(cms.Service("InitRootHandlers", ResetRootErrHandler = cms.untracked.bool(False)))
0214 process.source = cms.Source("EmptySource")
0215 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(1))
0216
0217
0218 recoGeoLoad(options.tag,properties)
0219
0220 if ( options.tgeo == True):
0221 if (options.out == defaultOutputFileName ):
0222 options.out = "cmsTGeoRecoGeom-" + str(options.tag) + (f"_{options.version}" if options.version else "") + ".root"
0223 process.add_(cms.ESProducer("FWTGeoRecoGeometryESProducer",
0224 Tracker = cms.untracked.bool(options.tracker),
0225 Muon = cms.untracked.bool(options.muon),
0226 Calo = cms.untracked.bool(options.calo),
0227 Timing = cms.untracked.bool(options.timing)))
0228 process.dump = cms.EDAnalyzer("DumpFWTGeoRecoGeometry",
0229 tagInfo = cms.untracked.string(options.tag),
0230 outputFileName = cms.untracked.string(options.out)
0231 )
0232 else:
0233 if (options.out == defaultOutputFileName ):
0234 options.out = "cmsRecoGeom-" + str(options.tag) + (f"_{options.version}" if options.version else "") + ".root"
0235 process.add_(cms.ESProducer("FWRecoGeometryESProducer",
0236 Tracker = cms.untracked.bool(options.tracker),
0237 Muon = cms.untracked.bool(options.muon),
0238 Calo = cms.untracked.bool(options.calo),
0239 Timing = cms.untracked.bool(options.timing)))
0240 process.dump = cms.EDAnalyzer("DumpFWRecoGeometry",
0241 level = cms.untracked.int32(1),
0242 tagInfo = cms.untracked.string(options.tag),
0243 outputFileName = cms.untracked.string(options.out)
0244 )
0245
0246 print("Dumping geometry in " , options.out, "\n");
0247 process.p = cms.Path(process.dump)
0248
0249