196def setupGeoR4TestCfg(args, flags = None):
197
198 if flags is None:
199 from AthenaConfiguration.AllConfigFlags import initConfigFlags
200 flags = initConfigFlags()
201 flags.Concurrency.NumThreads = args.threads
202 flags.Concurrency.NumConcurrentEvents = args.threads
203 flags.Exec.MaxEvents = args.nEvents
204 flags.Exec.SkipEvents = args.skipEvents
205 from os import path, system, listdir
206 flags.Input.Files = []
207
209 for fileArg in args.inputFile:
210 if path.isdir(fileArg):
211 flags.Input.Files += [ "{dir}/{file}".format(dir=fileArg, file=y) for y in listdir(fileArg) ]
212 else:
213 if fileArg[fileArg.rfind(".")+1 :]not in ["txt", "conf"]:
214 flags.Input.Files+=[fileArg]
215 else:
216 with open(fileArg) as inStream:
217
218 if isinstance(inStream, str) and "," in inStream:
219 flags.Input.Files += inStream.split(",")
220 else:
221 flags.Input.Files+=[ line.strip() for line in inStream if line[0]!='#']
222
223 flags.Exec.FPE= 500
224 flags.Exec.EventPrintoutInterval = 500
225
226 if args.defaultGeoFile == "RUN3":
227 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_R3
228 elif args.defaultGeoFile == "RUN4":
229 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_R4
230 elif args.defaultGeoFile == "RUN3MSOnly":
231 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_R3MSOnly
232 elif args.defaultGeoFile == "RUN4MSOnly":
233 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_R4MSOnly
234 elif args.defaultGeoFile == "ITkR3MS":
235 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_ITk_R3MS
236 elif args.geoModelFile.startswith("root://"):
237 if not path.exists("Geometry/{geoTag}.db".format(geoTag=args.geoTag)):
238 print ("Copy geometry file from EOS {source}".format(source = args.geoModelFile))
239 system("mkdir Geometry/")
240 system("xrdcp {source} Geometry/{geoTag}.db".format(source = args.geoModelFile,
241 geoTag=args.geoTag))
242
243 args.geoModelFile = "Geometry/{geoTag}.db".format(geoTag=args.geoTag)
244 else:
245 flags.GeoModel.SQLiteDBFullPath = args.geoModelFile
246
247 flags.GeoModel.SQLiteDB = True
248 configureDefaultTagsCfg(flags)
249
250 if args.passiveMaterialMaps:
251 flags.Muon.trackGeometryMaterialMap = args.passiveMaterialMaps
252
253 flags.Detector.GeometryBpipe = False
254
255 flags.Detector.GeometryBCM = False
256 flags.Detector.GeometryPixel = False
257 flags.Detector.GeometrySCT = False
258 flags.Detector.GeometryTRT = False
259
260 flags.Detector.GeometryPLR = False
261 flags.Detector.GeometryBCMPrime = False
262 flags.Detector.GeometryITkPixel = False
263 flags.Detector.GeometryITkStrip = False
264
265 flags.Detector.GeometryHGTD = False
266
267 flags.Detector.GeometryLAr = False
268 flags.Detector.GeometryTile = False
269 flags.Detector.GeometryMBTS = False
270 flags.Detector.GeometryCalo = False
271
272 flags.Detector.GeometryCSC = False
273 if args.noSTGC:
274 flags.Detector.GeometrysTGC = False
275 if args.noMM:
276 flags.Detector.GeometryMM = False
277 if args.noTgc:
278 flags.Detector.GeometryTGC = False
279 if args.noRpc:
280 flags.Detector.GeometryRPC = False
281 if args.noMdt:
282 flags.Detector.GeometryMDT = False
283
284 try:
285 flags.Acts.TrackingGeometry.UseBlueprint = True
286 except AttributeError: pass
287 flags.Scheduler.CheckDependencies = True
288 flags.Scheduler.ShowDataDeps = True
289 flags.Scheduler.ShowDataFlow = True
290 flags.Scheduler.ShowControlFlow = True
291 flags.Scheduler.EnableVerboseViews = True
292 flags.Scheduler.AutoLoadUnmetDependencies = True
293
294 flags.lock()
295 flags.dump(evaluate = True)
296 cfg = setupServicesCfg(flags)
297
298 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
299 cfg.merge(MuonGeoModelCfg(flags))
300
301 if not flags.Muon.usePhaseIIGeoSetup:
302 print ("WARNING: New Muon plugin is not part of the Geometry file {geoDBFile}".format(geoDBFile=args.geoModelFile))
303 else:
304 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
305 cfg.merge(ActsGeometryContextAlgCfg(flags))
306
307 cfg.getService("MessageSvc").verboseLimit = 10000000
308 cfg.getService("MessageSvc").debugLimit = 10000000
309 cfg.getService("MessageSvc").errorLimit = 10000000
310
311 return flags, cfg
312
313