CMS 3D CMS Logo

dumpRecoGeometry_cfg.py
Go to the documentation of this file.
1 from __future__ import print_function
2 import FWCore.ParameterSet.Config as cms
3 import sys, os
4 import FWCore.ParameterSet.VarParsing as VarParsing
5 from FWCore.Utilities.Enumerate import Enumerate
6 from Configuration.Geometry.dict2026Geometry import detectorVersionDict
7 
8 varType = Enumerate ("Run1 2015 2017 2021 2026 MaPSA")
9 defaultVersion=str();
10 
11 def help():
12  print("Usage: cmsRun dumpFWRecoGeometry_cfg.py tag=TAG ")
13  print(" tag=tagname")
14  print(" identify geometry condition database tag")
15  print(" ", varType.keys())
16  print("")
17  print(" version=versionNumber")
18  print(" scenario version from 2026 dictionary")
19  print("")
20  print(" tgeo=bool")
21  print(" dump in TGeo format to browse in geometry viewer")
22  print(" import this in Fireworks with option --sim-geom-file")
23  print("")
24  print(" tracker=bool")
25  print(" include Tracker subdetectors")
26  print("")
27  print(" muon=bool")
28  print(" include Muon subdetectors")
29  print("")
30  print(" calo=bool")
31  print(" include Calo subdetectors")
32  print("")
33  print(" timing=bool")
34  print(" include Timing subdetectors")
35  print("")
36  print("")
37  os._exit(1);
38 
39 def versionCheck(ver):
40  if ver == "":
41  print("Please, specify 2026 scenario version\n")
42  print(sorted([x[1] for x in detectorVersionDict.items()]))
43  print("")
44  help()
45 
46 def recoGeoLoad(score, properties):
47  print("Loading configuration for tag ", options.tag ,"...\n")
48 
49  if score == "Run1":
50  process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
51  from Configuration.AlCa.autoCond import autoCond
52  process.GlobalTag.globaltag = autoCond['run1_mc']
53  process.load("Configuration.StandardSequences.GeometryDB_cff")
54 
55  elif score == "2015":
56  process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
57  from Configuration.AlCa.autoCond import autoCond
58  process.GlobalTag.globaltag = autoCond['run2_mc']
59  process.load("Configuration.StandardSequences.GeometryDB_cff")
60 
61  elif score == "2017":
62  process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
63  from Configuration.AlCa.autoCond import autoCond
64  process.GlobalTag.globaltag = autoCond['upgrade2017']
65  process.load('Configuration.Geometry.GeometryExtended2017Reco_cff')
66 
67  elif score == "2021":
68  process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
69  from Configuration.AlCa.autoCond import autoCond
70  process.GlobalTag.globaltag = autoCond['upgrade2021']
71 
72  process.load('Geometry.TrackerGeometryBuilder.trackerParameters_cfi')
73  process.load('Configuration.Geometry.GeometryExtended2021Reco_cff')
74 
75  process.DTGeometryESModule.applyAlignment = cms.bool(False)
76  process.CSCGeometryESModule.applyAlignment = cms.bool(False)
77 
78  elif "2026" in score:
79  versionCheck(options.version)
80  process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
81 
82  # Import the required configuration from the CMSSW module
83  from Configuration.AlCa.autoCond import autoCond # Ensure autoCond is imported
84 
85  # Ensure options.version is defined and set correctly
86  version_key = '2026' + options.version # This constructs the key for accessing the properties dictionary
87  print(f"Constructed version key: {version_key}")
88 
89  # Check if the key exists in properties for 2026
90  if version_key in properties[2026]:
91  # Get the specific global tag for this version
92  global_tag_key = properties[2026][version_key]['GT']
93  print(f"Global tag key from properties: {global_tag_key}")
94 
95  # Check if this key exists in autoCond
96  if global_tag_key.replace("auto:", "") in autoCond:
97  # Set the global tag
98  from Configuration.AlCa.GlobalTag import GlobalTag
99  process.GlobalTag = GlobalTag(process.GlobalTag, global_tag_key, '')
100  else:
101  raise KeyError(f"Global tag key '{global_tag_key}' not found in autoCond.")
102  else:
103  raise KeyError(f"Version key '{version_key}' not found in properties[2026].")
104  process.load('Configuration.Geometry.GeometryExtended2026'+options.version+'Reco_cff')
105  process.trackerGeometry.applyAlignment = cms.bool(False)
106 
107  elif score == "MaPSA":
108  process.load('Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff')
109  process.load('Geometry.TrackerCommonData.mapsaGeometryXML_cfi')
110  process.load('Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cfi')
111  process.load('Geometry.TrackerNumberingBuilder.trackerTopology_cfi')
112  process.load('Geometry.TrackerGeometryBuilder.trackerParameters_cfi')
113  process.load('Geometry.TrackerGeometryBuilder.trackerGeometry_cfi')
114  process.trackerGeometry.applyAlignment = cms.bool(False)
115  process.load('RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi')
116 
117  process.load('Geometry.CommonTopologies.bareGlobalTrackingGeometry_cfi')
118 
119  elif score == "HGCTB160":
120  process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
121  from Configuration.AlCa.autoCond import autoCond
122  process.GlobalTag.globaltag = autoCond['mc']
123  process.load('Geometry.HGCalTBCommonData.hgcalTBParametersInitialization_cfi')
124  process.load('Geometry.HGCalTBCommonData.hgcalTBNumberingInitialization_cfi')
125  process.load('Geometry.CaloEventSetup.HGCalTBTopology_cfi')
126  process.load('Geometry.HGCalGeometry.HGCalTBGeometryESProducer_cfi')
127  process.load('Geometry.CaloEventSetup.CaloTopology_cfi')
128  process.load('Geometry.CaloEventSetup.CaloGeometryBuilder_cfi')
129  process.CaloGeometryBuilder = cms.ESProducer(
130  "CaloGeometryBuilder",
131  SelectedCalos = cms.vstring("HGCalEESensitive")
132  )
133  process.load("SimG4CMS.HGCalTestBeam.HGCalTB160XML_cfi")
134 
135  else:
136  help()
137 
138 
140 
141 defaultOutputFileName="cmsRecoGeom.root"
142 
143 options.register ('tag',
144  "2017", # default value
145  VarParsing.VarParsing.multiplicity.singleton,
146  VarParsing.VarParsing.varType.string,
147  "tag info about geometry database conditions")
148 
149 options.register ('version',
150  defaultVersion, # default value
151  VarParsing.VarParsing.multiplicity.singleton,
152  VarParsing.VarParsing.varType.string,
153  "info about 2026 geometry scenario version")
154 
155 options.register ('tgeo',
156  False, # default value
157  VarParsing.VarParsing.multiplicity.singleton,
158  VarParsing.VarParsing.varType.bool,
159  "write geometry in TGeo format")
160 
161 options.register ('tracker',
162  True, # default value
163  VarParsing.VarParsing.multiplicity.singleton,
164  VarParsing.VarParsing.varType.bool,
165  "write Tracker geometry")
166 
167 options.register ('muon',
168  True, # default value
169  VarParsing.VarParsing.multiplicity.singleton,
170  VarParsing.VarParsing.varType.bool,
171  "write Muon geometry")
172 
173 options.register ('calo',
174  True, # default value
175  VarParsing.VarParsing.multiplicity.singleton,
176  VarParsing.VarParsing.varType.bool,
177  "write Calo geometry")
178 
179 options.register ('timing',
180  False, # default value
181  VarParsing.VarParsing.multiplicity.singleton,
182  VarParsing.VarParsing.varType.bool,
183  "write Timing geometry")
184 
185 options.register ('out',
186  defaultOutputFileName, # default value
187  VarParsing.VarParsing.multiplicity.singleton,
188  VarParsing.VarParsing.varType.string,
189  "Output file name")
190 
191 options.parseArguments()
192 
193 from Configuration.PyReleaseValidation.upgradeWorkflowComponents import upgradeProperties as properties
194 # Determine version_key based on the value of options.tag
195 if options.tag == "2026" or options.tag == "MaPSA":
196  prop_key = 2026
197  version_key = options.tag + options.version
198 elif options.tag == "2017" or options.tag == "2021": #(this leads to crashes in tests ?)
199  prop_key = 2017
200  version_key = options.tag
201 else:
202  prop_key = None
203  version_key = None
204 
205 if(prop_key and version_key):
206  print(f"Constructed version key: {version_key}")
207  era_key = properties[prop_key][str(version_key)]['Era']
208  print(f"Constructed era key: {era_key}")
209  from Configuration.StandardSequences.Eras import eras
210  era = getattr(eras, era_key)
211  process = cms.Process("DUMP",era)
212 else:
213  process = cms.Process("DUMP")
214 process.add_(cms.Service("InitRootHandlers", ResetRootErrHandler = cms.untracked.bool(False)))
215 process.source = cms.Source("EmptySource")
216 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(1))
217 
218 
219 recoGeoLoad(options.tag,properties)
220 
221 if ( options.tgeo == True):
222  if (options.out == defaultOutputFileName ):
223  options.out = "cmsTGeoRecoGeom-" + str(options.tag) + ".root"
224  process.add_(cms.ESProducer("FWTGeoRecoGeometryESProducer",
225  Tracker = cms.untracked.bool(options.tracker),
226  Muon = cms.untracked.bool(options.muon),
227  Calo = cms.untracked.bool(options.calo),
228  Timing = cms.untracked.bool(options.timing)))
229  process.dump = cms.EDAnalyzer("DumpFWTGeoRecoGeometry",
230  tagInfo = cms.untracked.string(options.tag),
231  outputFileName = cms.untracked.string(options.out)
232  )
233 else:
234  if (options.out == defaultOutputFileName ):
235  options.out = "cmsRecoGeom-" + str(options.tag) + ".root"
236  process.add_(cms.ESProducer("FWRecoGeometryESProducer",
237  Tracker = cms.untracked.bool(options.tracker),
238  Muon = cms.untracked.bool(options.muon),
239  Calo = cms.untracked.bool(options.calo),
240  Timing = cms.untracked.bool(options.timing)))
241  process.dump = cms.EDAnalyzer("DumpFWRecoGeometry",
242  level = cms.untracked.int32(1),
243  tagInfo = cms.untracked.string(options.tag),
244  outputFileName = cms.untracked.string(options.out)
245  )
246 
247 print("Dumping geometry in " , options.out, "\n");
248 process.p = cms.Path(process.dump)
249 
250 
def recoGeoLoad(score, properties)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
DQM-only workflow on AOD input: for HLT.
#define str(s)
if(threadIdxLocalY==0 &&threadIdxLocalX==0)