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