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