Back to home page

Project CMSSW displayed by LXR

 
 

    


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        ## NOTE: There is no PTrackerParameters Rcd in this GT yet
0071        process.load('Geometry.TrackerGeometryBuilder.trackerParameters_cfi')
0072        process.load('Configuration.Geometry.GeometryExtended2021Reco_cff')
0073        ## NOTE: There are no Muon alignement records in the GT yet
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        # Import the required configuration from the CMSSW module
0082        from Configuration.AlCa.autoCond import autoCond  # Ensure autoCond is imported
0083 
0084        # Ensure options.version is defined and set correctly
0085        version_key = 'Run4' + options.version  # This constructs the key for accessing the properties dictionary
0086        print(f"Constructed version key: {version_key}")
0087 
0088        # Check if the key exists in properties for Run4
0089        if version_key in properties['Run4']:
0090           # Get the specific global tag for this version
0091           global_tag_key = properties['Run4'][version_key]['GT']
0092           print(f"Global tag key from properties: {global_tag_key}")
0093 
0094           # Check if this key exists in autoCond
0095           if global_tag_key.replace("auto:", "") in autoCond:
0096              # Set the global tag
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": ## hgcal testbeam
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", # default value
0144                   VarParsing.VarParsing.multiplicity.singleton,
0145                   VarParsing.VarParsing.varType.string,
0146                   "tag info about geometry database conditions")
0147 
0148 options.register ('version',
0149                   defaultVersion, # default value
0150                   VarParsing.VarParsing.multiplicity.singleton,
0151                   VarParsing.VarParsing.varType.string,
0152                   "info about Run4 geometry scenario version")
0153 
0154 options.register ('tgeo',
0155                   False, # default value
0156                   VarParsing.VarParsing.multiplicity.singleton,
0157                   VarParsing.VarParsing.varType.bool,
0158                   "write geometry in TGeo format")
0159 
0160 options.register ('tracker',
0161                   True, # default value
0162                   VarParsing.VarParsing.multiplicity.singleton,
0163                   VarParsing.VarParsing.varType.bool,
0164                   "write Tracker geometry")
0165 
0166 options.register ('muon',
0167                   True, # default value
0168                   VarParsing.VarParsing.multiplicity.singleton,
0169                   VarParsing.VarParsing.varType.bool,
0170                   "write Muon geometry")
0171 
0172 options.register ('calo',
0173                   True, # default value
0174                   VarParsing.VarParsing.multiplicity.singleton,
0175                   VarParsing.VarParsing.varType.bool,
0176                   "write Calo geometry")
0177 
0178 options.register ('timing',
0179                   False, # default value
0180                   VarParsing.VarParsing.multiplicity.singleton,
0181                   VarParsing.VarParsing.varType.bool,
0182                   "write Timing geometry")
0183 
0184 options.register ('out',
0185                   defaultOutputFileName, # default value
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 # Determine version_key based on the value of options.tag
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": #(this leads to crashes in tests ?)
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