161def setupGeoR4TestCfg(args, flags = None):
162
163 if flags is None:
164 from AthenaConfiguration.AllConfigFlags import initConfigFlags
165 flags = initConfigFlags()
166 flags.Concurrency.NumThreads = args.threads
167 flags.Concurrency.NumConcurrentEvents = args.threads
168 flags.Exec.MaxEvents = args.nEvents
169 flags.Exec.SkipEvents = args.skipEvents
170 from os import path, system, listdir
171 flags.Input.Files = []
172
174 for fileArg in args.inputFile:
175 if path.isdir(fileArg):
176 flags.Input.Files += [ "{dir}/{file}".format(dir=fileArg, file=y) for y in listdir(fileArg) ]
177 else:
178 if fileArg[fileArg.rfind(".")+1 :]not in ["txt", "conf"]:
179 flags.Input.Files+=[fileArg]
180 else:
181 with open(fileArg) as inStream:
182 flags.Input.Files+=[ line.strip() for line in inStream if line[0]!='#']
183
184 flags.Exec.FPE= 500
185 flags.Exec.EventPrintoutInterval = 500
186
187 if args.defaultGeoFile == "RUN3":
188 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_R3
189 elif args.defaultGeoFile == "RUN4":
190 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_R4
191 elif args.defaultGeoFile == "RUN3MSOnly":
192 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_R3MSOnly
193 elif args.defaultGeoFile == "RUN4MSOnly":
194 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_R4MSOnly
195 elif args.defaultGeoFile == "ITkR3MS":
196 flags.GeoModel.SQLiteDBFullPath = MuonPhaseIITestDefaults.GEODB_ITk_R3MS
197 elif args.geoModelFile.startswith("root://"):
198 if not path.exists("Geometry/{geoTag}.db".format(geoTag=args.geoTag)):
199 print ("Copy geometry file from EOS {source}".format(source = args.geoModelFile))
200 system("mkdir Geometry/")
201 system("xrdcp {source} Geometry/{geoTag}.db".format(source = args.geoModelFile,
202 geoTag=args.geoTag))
203
204 args.geoModelFile = "Geometry/{geoTag}.db".format(geoTag=args.geoTag)
205 else:
206 flags.GeoModel.SQLiteDBFullPath = args.geoModelFile
207
208 flags.GeoModel.SQLiteDB = True
209 configureDefaultTagsCfg(flags)
210
211 if args.passiveMaterialMaps:
212 flags.Muon.trackGeometryMaterialMap = args.passiveMaterialMaps
213
214 flags.Detector.GeometryBpipe = False
215
216 flags.Detector.GeometryBCM = False
217 flags.Detector.GeometryPixel = False
218 flags.Detector.GeometrySCT = False
219 flags.Detector.GeometryTRT = False
220
221 flags.Detector.GeometryPLR = False
222 flags.Detector.GeometryBCMPrime = False
223 flags.Detector.GeometryITkPixel = False
224 flags.Detector.GeometryITkStrip = False
225
226 flags.Detector.GeometryHGTD = False
227
228 flags.Detector.GeometryLAr = False
229 flags.Detector.GeometryTile = False
230 flags.Detector.GeometryMBTS = False
231 flags.Detector.GeometryCalo = False
232
233 flags.Detector.GeometryCSC = False
234 if args.noSTGC:
235 flags.Detector.GeometrysTGC = False
236 if args.noMM:
237 flags.Detector.GeometryMM = False
238 if args.noTgc:
239 flags.Detector.GeometryTGC = False
240 if args.noRpc:
241 flags.Detector.GeometryRPC = False
242 if args.noMdt:
243 flags.Detector.GeometryMDT = False
244
245 flags.Acts.TrackingGeometry.UseBlueprint = True
246
247 flags.Scheduler.CheckDependencies = True
248 flags.Scheduler.ShowDataDeps = True
249 flags.Scheduler.ShowDataFlow = True
250 flags.Scheduler.ShowControlFlow = True
251 flags.Scheduler.EnableVerboseViews = True
252 flags.Scheduler.AutoLoadUnmetDependencies = True
253
254 flags.lock()
255 flags.dump(evaluate = True)
256 cfg = setupServicesCfg(flags)
257
258 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
259 cfg.merge(MuonGeoModelCfg(flags))
260
261 if not flags.Muon.usePhaseIIGeoSetup:
262 print ("WARNING: New Muon plugin is not part of the Geometry file {geoDBFile}".format(geoDBFile=args.geoModelFile))
263 else:
264 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
265 cfg.merge(ActsGeometryContextAlgCfg(flags))
266
267 cfg.getService("MessageSvc").verboseLimit = 10000000
268 cfg.getService("MessageSvc").debugLimit = 10000000
269 cfg.getService("MessageSvc").errorLimit = 10000000
270
271 return flags, cfg
272