4 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags, isGaudiEnv
5 from AthenaConfiguration.AutoConfigFlags
import GetFileMD, getInitialTimeStampsFromRunNumbers, getRunToTimestampDict, getSpecialConfigurationMetadata, getGeneratorsInfo
6 from AthenaConfiguration.Enums
import BeamType, Format, ProductionStep, BunchStructureSource, Project
7 from Campaigns.Utils
import Campaign
8 from PyUtils.moduleExists
import moduleExists
12 """Add flags category and return True/False on success/failure"""
13 if moduleExists (modName):
14 acf.addFlagsCategory (name, generator)
25 acf.addFlag(
'Exec.OutputLevel', INFO, help=
'Global OutputLevel')
26 acf.addFlag(
'Exec.QuietMode',
True, help=
'Suppress excess output for grid running')
27 acf.addFlag(
'Exec.PrintAlgsSequence',
False, help=
'print algorithm sequence in ApplicationMgr')
28 acf.addFlag(
'Exec.MaxEvents', -1, type=int, help=
'number of events to proceess (-1 for all)')
29 acf.addFlag(
'Exec.SkipEvents', 0, type=int, help=
'number of events to skip')
30 acf.addFlag(
'Exec.FirstEvent', 1, type=int, help=
'first event number when not reading from input file')
31 acf.addFlag(
'Exec.DebugStage',
'', help=
'attach debugger at stage: conf, init, exec, fini')
32 acf.addFlag(
'Exec.Interactive',
"", help=
'interactive prompt at stage: init, exec')
33 acf.addFlag(
'Exec.FPE', 0, help=
'FPE check mode: -2 (no FPE check), -1 (abort with core-dump), 0 (FPE Auditor w/o stack-tace) , >0 (number of stack-traces printed by the job)')
34 acf.addFlag(
'Exec.EventTimeOut', 0, help=
'per-event timeout (in ns) after which the job is aborted (0 means no timeout)')
35 acf.addFlag(
'Exec.EventPrintoutInterval', 1, help=
'interval of event heartbeat printouts from the loop manager')
38 acf.addFlag(
'Exec.VerboseMessageComponents', [], help=
'verbose output for listed components (wildcards)')
39 acf.addFlag(
'Exec.DebugMessageComponents', [], help=
'debug output for listed components (wildcards)')
40 acf.addFlag(
'Exec.InfoMessageComponents', [], help=
'info output for listed components (wildcards)')
41 acf.addFlag(
'Exec.WarningMessageComponents', [], help=
'warning output for listed components (wildcards)')
42 acf.addFlag(
'Exec.ErrorMessageComponents', [], help=
'error output for listed components (wildcards)')
45 acf.addFlag(
'Exec.MTEventService',
False, help=
'use multi-threaded event service')
46 acf.addFlag(
'Exec.MTEventServiceChannel',
'EventService_EventRanges', help=
'name of YAMPL communication channel between AthenaMT and pilot')
49 acf.addFlag(
'Debug.DumpEvtStore',
False, help=
'dump event store on each event')
50 acf.addFlag(
'Debug.DumpDetStore',
False, help=
'dump detector store on each event')
51 acf.addFlag(
'Debug.DumpCondStore',
False, help=
'dump conditions store on each event')
53 acf.addFlag(
'ExecutorSplitting.TotalSteps', 0, help=
'number of steps for pileup overlay')
54 acf.addFlag(
'ExecutorSplitting.Step', -1, help=
'step number of current pileup overlay job')
55 acf.addFlag(
'ExecutorSplitting.TotalEvents', -1, help=
'events per pileup overlay step')
58 acf.addFlag(
'Input.Files', [
"_ATHENA_GENERIC_INPUTFILE_NAME_",], help=
'input files')
59 acf.addFlag(
"Input.FileNentries", -1, help=
'actual number of events in file (filled from runArgs')
60 acf.addFlag(
'Input.SecondaryFiles', [], help=
'secondary input files for DoubleEventSelector')
61 acf.addFlag(
'Input.isMC',
lambda prevFlags :
"IS_SIMULATION" in GetFileMD(prevFlags.Input.Files).
get(
"eventTypes", []), help=
'Monte Carlo input')
62 acf.addFlag(
'Input.OverrideRunNumber',
False, help=
'override run number' )
63 acf.addFlag(
"Input.ConditionsRunNumber", -1, help=
'override HITS file run number with one from a data')
64 acf.addFlag(
'Input.RunNumbers',
lambda prevFlags :
list(
GetFileMD(prevFlags.Input.Files).
get(
"runNumbers", [])), type=list, help=
'run numbers of input files')
65 acf.addFlag(
'Input.MCChannelNumber',
lambda prevFlags :
GetFileMD(prevFlags.Input.Files).
get(
"mc_channel_number", 0), help=
'Monte Carlo channel number')
66 acf.addFlag(
'Input.LumiBlockNumbers',
lambda prevFlags :
list(
GetFileMD(prevFlags.Input.Files).
get(
"lumiBlockNumbers", [])), type=list, help=
'lumi block numbers of input files')
67 acf.addFlag(
'Input.TimeStamps',
lambda prevFlags :
getInitialTimeStampsFromRunNumbers(prevFlags.Input.RunNumbers)
if prevFlags.Input.OverrideRunNumber
else [], type=list, help=
'timestamps of inputs files')
70 acf.addFlag(
"Input.RunAndLumiOverrideList", [], help=
'list of dictionaries to configure EvtIdModifierSvc')
72 acf.addFlag(
"Input.JobNumber", 1, help=
'job number for pileup overlay')
73 acf.addFlag(
'Input.FailOnUnknownCollections',
False, help=
'fail on unknown collections in input load')
75 def _dataYearFromFlags(prevFlags):
76 dataYear =
GetFileMD(prevFlags.Input.Files).
get(
"data_year",
"")
79 if prevFlags.Input.ProjectName.startswith(
"data"):
80 if prevFlags.Input.ProjectName[4:6].isdigit():
81 return 2000 +
int(prevFlags.Input.ProjectName[4:6])
84 acf.addFlag(
'Input.ProjectName',
lambda prevFlags :
GetFileMD(prevFlags.Input.Files).
get(
"project_name",
""), help=
'project name')
85 acf.addFlag(
'Input.DataYear', _dataYearFromFlags, help=
'year of input data')
86 acf.addFlag(
'Input.MCCampaign',
lambda prevFlags : Campaign(
GetFileMD(prevFlags.Input.Files).
get(
"mc_campaign",
"")), type=Campaign, help=
'Monte Carlo campaign')
87 acf.addFlag(
'Input.TriggerStream',
lambda prevFlags :
GetFileMD(prevFlags.Input.Files).
get(
"stream",
"")
if prevFlags.Input.Format == Format.BS
88 else GetFileMD(prevFlags.Input.Files).
get(
"triggerStreamOfFile",
""), help=
'trigger stream name')
89 acf.addFlag(
'Input.Format',
lambda prevFlags : Format.BS
if GetFileMD(prevFlags.Input.Files).
get(
"file_type",
"BS") ==
"BS" else Format.POOL, type=Format, help=
'input format type')
90 acf.addFlag(
'Input.ProcessingTags',
lambda prevFlags :
GetFileMD(prevFlags.Input.Files).
get(
"processingTags", []), help=
'list of stream names in this file')
91 acf.addFlag(
'Input.GeneratorsInfo',
lambda prevFlags :
getGeneratorsInfo(prevFlags), help=
'generator version')
92 acf.addFlag(
'Input.SpecialConfiguration',
lambda prevFlags :
getSpecialConfigurationMetadata(prevFlags), help=
'special configuration options read from input file metadata')
94 def _inputCollections(inputFile):
95 rawCollections = [type_key[1]
for type_key
in GetFileMD(inputFile).
get(
"itemList", [])]
96 collections = [col
for col
in rawCollections
if not col.endswith(
'Aux.')]
99 def _typedInputCollections(inputFile):
100 collections = [
'%s#%s' % type_key
for type_key
in GetFileMD(inputFile).
get(
"itemList", [])]
103 acf.addFlag(
'Input.Collections',
lambda prevFlags : _inputCollections(prevFlags.Input.Files), help=
'input collections')
104 acf.addFlag(
'Input.SecondaryCollections',
lambda prevFlags : _inputCollections(prevFlags.Input.SecondaryFiles), help=
'secondary input collections for overlay')
105 acf.addFlag(
'Input.TypedCollections',
lambda prevFlags : _typedInputCollections(prevFlags.Input.Files), help=
'input collections key#type')
106 acf.addFlag(
'Input.SecondaryTypedCollections',
lambda prevFlags : _typedInputCollections(prevFlags.Input.SecondaryFiles), help=
'secondary input collections key#type')
108 def _metadataItems(inputFile):
111 acf.addFlag(
'Input.MetadataItems',
lambda prevFlags : _metadataItems(prevFlags.Input.Files), help=
'metadata items in input' )
112 acf.addFlag(
'Input.Release',
lambda prevFlags :
GetFileMD(prevFlags.Input.Files).
get(
"AtlasRelease",
""), help=
'release of input file')
113 acf.addFlag(
'Input.AODFixesDone',
lambda prevFlags :
GetFileMD(prevFlags.Input.Files).
get(
"AODFixVersion",
""), help=
'set of already applied AODFixes')
115 acf.addFlag(
'Concurrency.NumProcs', 0, help=
'number of concurrent processes')
116 acf.addFlag(
'Concurrency.NumThreads', 0, help=
'number of threads' )
117 acf.addFlag(
'Concurrency.NumConcurrentEvents',
lambda prevFlags : prevFlags.Concurrency.NumThreads, help=
'number of concurrent events')
118 acf.addFlag(
'Concurrency.DebugWorkers',
False, help=
'stops the worker in bootstrap until SIGUSR1 is received')
119 acf.addFlag(
'Concurrency.NumOffloadThreads', 0, help=
'maximum number of extra threads to use for CPU portion of asynchronous algorithms')
121 acf.addFlag(
'Scheduler.CheckDependencies',
True, help=
'runtime check of algorithm input dependencies')
122 acf.addFlag(
'Scheduler.CheckOutputUsage',
False, help=
'runtime check of algorithm output usage')
123 acf.addFlag(
'Scheduler.ShowDataDeps',
False, help=
'show data dependencies')
124 acf.addFlag(
'Scheduler.ShowDataFlow',
False, help=
'show data flow')
125 acf.addFlag(
'Scheduler.ShowControlFlow',
False, help=
'show data flow')
126 acf.addFlag(
'Scheduler.EnableVerboseViews',
True, help=
'enable verbose view output')
127 acf.addFlag(
'Scheduler.AutoLoadUnmetDependencies',
True, help=
'auto-load unmet data dependencies')
128 acf.addFlag(
'Scheduler.DataDepsGraphFile',
'', help=
'file name containing the data dependency graph [.dot or .md]')
129 acf.addFlag(
'Scheduler.DataDepsGraphAlgPattern',
'.*', help=
'regex pattern for selecting algorithms to be drawn in the data dependency graph')
130 acf.addFlag(
'Scheduler.DataDepsGraphObjectPattern',
'.*', help=
'regex pattern for selecting I/O to be drawn in the data dependency graph')
132 acf.addFlag(
'MP.WorkerTopDir',
'athenaMP_workers', help=
'work directory for MP workers')
133 acf.addFlag(
'MP.OutputReportFile',
'AthenaMPOutputs', help=
'name of MP report file')
134 acf.addFlag(
'MP.Strategy',
'SharedQueue', help=
'event assignment strategy')
135 acf.addFlag(
'MP.CollectSubprocessLogs',
False, help=
'collects log of sub-processes')
136 acf.addFlag(
'MP.PollingInterval', 100, help=
'time interval in milliseconds between subsequent polling of subproceses')
137 acf.addFlag(
'MP.EventsBeforeFork', 0, help=
'number of events to process before forking')
138 acf.addFlag(
'MP.EventRangeChannel',
'EventService_EventRanges', help=
'channel name for communicating event ranges with the pilot')
139 acf.addFlag(
'MP.EvtRangeScattererCaching',
False, help=
'activate extra event caching by the EvtRangeScatterer')
140 acf.addFlag(
'MP.MemSamplingInterval', 0, help=
'time interval in seconds between taking memory samples')
141 acf.addFlag(
'MP.ChunkSize', -1, help=
'size of event chunks in shared queue (-1: auto_flush for LZMA-compressed files, -2: auto_flush for LZMA or ZLIB, -3: auto_flush for LZMA, ZLIB or LZ4, -4: auto_flush)')
142 acf.addFlag(
'MP.ReadEventOrders',
False, help=
'read event order from ASCII file for reproducibility')
143 acf.addFlag(
'MP.EventOrdersFile',
'athenamp_eventorders.txt', help=
'file name for event order')
144 acf.addFlag(
'MP.UseSharedReader',
False, help=
'use shared reader')
145 acf.addFlag(
'MP.UseSharedWriter',
False, help=
'use shared writer')
146 acf.addFlag(
'MP.UseParallelCompression',
True, help=
'enable event compression in workers')
148 acf.addFlag(
'Common.MsgSuppression',
True, help=
'enable log message suppression')
149 acf.addFlag(
'Common.MsgSourceLength', 50, help=
'length of the source-field in the log message format')
150 acf.addFlag(
'Common.ShowMsgStats',
False ,help=
'print message statistics at the end of the job')
152 acf.addFlag(
'Common.isOnline',
False, help=
'job runs in an online environment')
153 acf.addFlag(
'Common.useOnlineLumi',
lambda prevFlags : prevFlags.Common.isOnline, help=
'use online version of luminosity')
154 acf.addFlag(
'Common.isOverlay',
lambda prevFlags: prevFlags.Common.ProductionStep == ProductionStep.Overlay,
155 help=
'enable overlay')
156 acf.addFlag(
'Common.doExpressProcessing',
False, help=
'do express stream processing')
157 acf.addFlag(
'Common.ProductionStep', ProductionStep.Default, type=ProductionStep, help=
'production step')
158 acf.addFlag(
'Common.Project', Project.determine(), type=Project, help=
'current athena software project')
161 acf.addFlag(
'Beam.BunchSpacing', 25, help=
'bunch spacing in nanoseconds')
162 acf.addFlag(
'Beam.Type',
lambda prevFlags :
BeamType(
GetFileMD(prevFlags.Input.Files).
get(
'beam_type',
'collisions')), type=BeamType, help=
'beam type')
163 acf.addFlag(
"Beam.NumberOfCollisions",
lambda prevFlags : 2.
if prevFlags.Beam.Type
is BeamType.Collisions
else 0., help=
'number of pileup collisions')
165 def _configureBeamEnergy(prevFlags):
166 metadata =
GetFileMD(prevFlags.Input.Files)
169 if prevFlags.Input.Format == Format.POOL:
170 return float(metadata.get(
"beam_energy", default))
172 elif prevFlags.Input.Format == Format.BS:
173 if metadata.get(
"eventTypes", [
""])[0] ==
"IS_DATA":
175 if prevFlags.Common.isOnline:
176 from PyUtils.OnlineISConfig
import GetRunType
181 if prevFlags.Beam.Type.value ==
"cosmics":
183 elif prevFlags.Beam.Type.value ==
"singlebeam":
185 elif prevFlags.Beam.Type.value ==
"collisions":
186 projectName = prevFlags.Input.ProjectName
189 if "GeV" in projectName:
197 elif "TeV" in projectName:
198 if "hip5TeV" in projectName:
200 beamEnergy = 1.577 * TeV
201 elif "hip8TeV" in projectName:
203 beamEnergy = 2.51 * TeV
214 if "5TeV" in projectName:
216 beamEnergy = 2.51 * TeV
217 elif projectName.endswith(
"_hi")
or projectName.endswith(
"_hip"):
218 if projectName
in (
"data10_hi",
"data11_hi"):
219 beamEnergy = 1.38 * TeV
220 elif projectName ==
"data12_hi":
221 beamEnergy = 1.577 * TeV
222 elif projectName
in (
"data12_hip",
"data13_hip"):
225 beamEnergy = 2.51 * TeV
226 elif projectName
in (
"data15_hi",
"data18_hi"):
227 beamEnergy = 2.51 * TeV
228 elif projectName ==
"data17_hi":
229 beamEnergy = 2.721 * TeV
230 return beamEnergy
or default
231 elif metadata.get(
"eventTypes", [
""])[0] ==
"IS_SIMULATION":
232 return float(metadata.get(
"beam_energy", default))
236 acf.addFlag(
'Beam.Energy',
lambda prevFlags : _configureBeamEnergy(prevFlags), help=
'beam energy in MeV')
237 acf.addFlag(
'Beam.estimatedLuminosity',
lambda prevFlags : ( 1E33*(prevFlags.Beam.NumberOfCollisions)/2.3 ) *\
238 (25./prevFlags.Beam.BunchSpacing), help=
'luminosity estimated from pileup')
239 acf.addFlag(
'Beam.BunchStructureSource',
lambda prevFlags: BunchStructureSource.MC
if prevFlags.Input.isMC
else BunchStructureSource.TrigConf, help=
'source of bunch structure')
242 acf.addFlag(
'Output.EVNTFileName',
'', help=
'EVNT output file name')
243 acf.addFlag(
'Output.EVNT_TRFileName',
'', help=
'EVNT_TR output file name')
244 acf.addFlag(
'Output.HITSFileName',
'', help=
'HITS output file name')
245 acf.addFlag(
'Output.RDOFileName',
'', help=
'RDO output file name')
246 acf.addFlag(
'Output.RDO_SGNLFileName',
'', help=
'RDO_SGNL output file name')
247 acf.addFlag(
'Output.ESDFileName',
'', help=
'ESD output file name')
248 acf.addFlag(
'Output.AODFileName',
'', help=
'AOD output file name')
249 acf.addFlag(
'Output.HISTFileName',
'', help=
'HIST output file name')
251 acf.addFlag(
'Output.doWriteEVNT',
lambda prevFlags:
bool(prevFlags.Output.EVNTFileName), help=
'write EVNT file')
252 acf.addFlag(
'Output.doWriteEVNT_TR',
lambda prevFlags:
bool(prevFlags.Output.EVNT_TRFileName), help=
'write EVNT_TR file')
253 acf.addFlag(
'Output.doWriteHITS',
lambda prevFlags:
bool(prevFlags.Output.HITSFileName), help=
'write HITS file')
254 acf.addFlag(
'Output.doWriteRDO',
lambda prevFlags:
bool(prevFlags.Output.RDOFileName), help=
'write RDO file')
255 acf.addFlag(
'Output.doWriteRDO_SGNL',
lambda prevFlags:
bool(prevFlags.Output.RDO_SGNLFileName), help=
'write RDO_SGNL file')
256 acf.addFlag(
'Output.doWriteESD',
lambda prevFlags:
bool(prevFlags.Output.ESDFileName), help=
'write ESD file')
257 acf.addFlag(
'Output.doWriteAOD',
lambda prevFlags:
bool(prevFlags.Output.AODFileName), help=
'write AOD file')
258 acf.addFlag(
'Output.doWriteBS',
False, help=
'write bytestream file')
259 acf.addFlag(
'Output.doWriteDAOD',
False, help=
'write at least one DAOD file')
260 acf.addFlag(
'Output.doJiveXML',
False, help=
'write JiveXML file')
262 acf.addFlag(
'Output.OneDataHeaderForm',
False, help=
"Write only a single common DataHeaderForm per stream")
263 acf.addFlag(
'Output.TreeAutoFlush', {}, help=
"dict with auto-flush settings for stream e.g. {'STREAM': 123}")
264 acf.addFlag(
'Output.TemporaryStreams', [], help=
'list of output streams that are marked temporary')
265 acf.addFlag(
'Output.StorageTechnology.EventData',
'ROOTTREEINDEX', help=
'set the underlying POOL storage technology for event data')
266 acf.addFlag(
'Output.StorageTechnology.MetaData',
'ROOTTREE', help=
'set the underlying POOL storage technology for metadata')
271 acf.addFlag(
'TrackingGeometry.MagneticFileMode', 6)
272 acf.addFlag(
'TrackingGeometry.MaterialSource',
'COOL', help=
'material source (COOL, Input or None)')
276 from AthenaConfiguration.DetectorConfigFlags
import createDetectorConfigFlags
278 acf.addFlagsCategory(
"Detector", __detector )
282 from SimulationConfig.SimConfigFlags
import createSimConfigFlags
284 _addFlagsCategory (acf,
"Sim", __simulation,
'SimulationConfig' )
288 from SimulationConfig.TestBeamConfigFlags
import createTestBeamConfigFlags
290 _addFlagsCategory (acf,
"TestBeam", __testbeam,
'SimulationConfig' )
293 def __digitization():
294 from DigitizationConfig.DigitizationConfigFlags
import createDigitizationCfgFlags
300 from OverlayConfiguration.OverlayConfigFlags
import createOverlayConfigFlags
306 from AthenaConfiguration.GeoModelConfigFlags
import createGeoModelConfigFlags
308 acf.addFlagsCategory(
"GeoModel", __geomodel )
312 from RecJobTransforms.RecoConfigFlags
import createRecoConfigFlags
318 from GeneratorConfig.GeneratorConfigFlags
import createGeneratorConfigFlags
324 from IOVDbSvc.IOVDbAutoCfgFlags
import getLastGlobalTag, getDatabaseInstanceDefault
326 def __getTrigTag(flags):
327 from TriggerJobOpts.TriggerConfigFlags
import trigGlobalTag
330 acf.addFlag(
"IOVDb.GlobalTag",
lambda flags :
331 (__getTrigTag(flags)
if flags.Trigger.doLVL1
or flags.Trigger.doHLT
else None)
or
334 acf.addFlag(
"IOVDb.DatabaseInstance", getDatabaseInstanceDefault, help=
'conditions DB instance')
337 acf.addFlag(
"IOVDb.RunToTimestampDict",
lambda prevFlags:
getRunToTimestampDict(), help=
'runNumber to timestamp map')
338 acf.addFlag(
"IOVDb.DBConnection",
lambda prevFlags :
"sqlite://;schema=mycool.db;dbname=" + prevFlags.IOVDb.DatabaseInstance, help=
'default DB connection string')
339 acf.addFlag(
"IOVDb.CrestServer",
"http://crest-undertow-api.web.cern.ch", help=
"CREST server URL")
342 acf.addFlag(
"IOVDb.CleanerRingSize",
lambda prevFlags : 0
if prevFlags.Trigger.doHLT
else 2*
max(1, prevFlags.Concurrency.NumConcurrentEvents), help=
'size of ring-buffer for conditions cleaner')
343 acf.addFlag(
"IOVDb.SqliteInput",
"",help=
"Folders found in this file will be used instead of the production db")
344 acf.addFlag(
"IOVDb.SqliteFolders",(),help=
"Folders listed here will be taken from the IOVDb.SqliteInput file instead of the production db. If empty, all folders found in the file are used.")
346 acf.addFlag(
"PoolSvc.MaxFilesOpen",
lambda prevFlags : 2
if prevFlags.MP.UseSharedReader
else 0, help=
'maximum number of open files')
350 from MagFieldConfig.BFieldConfigFlags
import createBFieldConfigFlags
355 from LArConfiguration.LArConfigFlags
import createLArConfigFlags
360 from TileConfiguration.TileConfigFlags
import createTileConfigFlags
366 from CaloRec.CaloConfigFlags
import createCaloConfigFlags
371 acf.addFlag(
"Random.Engine",
"dSFMT", help=
'random number service ("dSFMT", "Ranlux64", "Ranecu")')
372 acf.addFlag(
"Random.SeedOffset", 0, help=
'seed offset')
375 from TriggerJobOpts.TriggerConfigFlags
import createTriggerFlags
382 acf.addFlag(
'Trigger.doLVL1',
False, help=
'enable L1 simulation')
383 acf.addFlag(
'Trigger.doHLT',
False, help=
'run HLT selection algorithms')
386 from InDetConfig.InDetConfigFlags
import createInDetConfigFlags
391 from InDetConfig.ITkConfigFlags
import createITkConfigFlags
396 from TrkConfig.TrkConfigFlags
import createTrackingConfigFlags
400 def __trackoverlay():
401 from TrackOverlayConfig.TrackOverlayConfigFlags
import createTrackOverlayConfigFlags
406 from ActsConfig.ActsConfigFlags
import createActsConfigFlags
411 from HGTD_Config.HGTD_ConfigFlags
import createHGTD_ConfigFlags
416 from MuonConfig.MuonConfigFlags
import createMuonConfigFlags
420 def __muoncombined():
421 from MuonCombinedConfig.MuonCombinedConfigFlags
import createMuonCombinedConfigFlags
426 from egammaConfig.egammaConfigFlags
import createEgammaConfigFlags
431 from METReconstruction.METConfigFlags
import createMETConfigFlags
436 from JetRecConfig.JetConfigFlags
import createJetConfigFlags
441 from TrackCaloClusterRecTools.UFOConfigFlags
import createUFOConfigFlags
446 from tauRec.TauConfigFlags
import createTauConfigFlags
451 from DiTauRec.DiTauConfigFlags
import createDiTauConfigFlags
456 from eflowRec.PFConfigFlags
import createPFConfigFlags
461 from JetTagConfig.BTaggingConfigFlags
import createBTaggingConfigFlags
466 from HIRecConfig.HIRecConfigFlags
import createHIRecConfigFlags
471 from EventDisplaysOnline.EventDisplaysOnlineFlags
import createOnlineEventDisplayFlags
473 _addFlagsCategory(acf,
"OnlineEventDisplays", __onlineED,
'EventDisplaysOnline' )
476 from AthenaMonitoring.DQConfigFlags
import createDQConfigFlags
482 from PerfMonComps.PerfMonConfigFlags
import createPerfMonConfigFlags
487 from PhysValMonitoring.PhysValFlags
import createPhysValConfigFlags
492 from CaloRingerAlgs.CaloRingerFlags
import createCaloRingerConfigFlags
497 from CaloRecGPU.CaloRecGPUFlags
import createFlagsCaloRecGPU
503 def __egammaDerivation():
504 from DerivationFrameworkEGamma.EGammaDFConfigFlags
import createEGammaDFConfigFlags
506 _addFlagsCategory(acf,
"Derivation.Egamma", __egammaDerivation,
'DerivationFrameworkEGamma' )
509 def __llpDerivation():
510 from DerivationFrameworkLLP.LLPDFConfigFlags
import createLLPDFConfigFlags
512 _addFlagsCategory(acf,
"Derivation.LLP", __llpDerivation,
'DerivationFrameworkLLP' )
516 from AthOnnxComps.OnnxRuntimeFlags
import createOnnxRuntimeFlags
525 collections = flags.Input.Collections
526 if "HLTResult_EF" in collections:
528 elif "TrigNavigation" in collections:
530 elif any(
"HLTNav_Summary" in s
for s
in collections):
532 elif not flags.Input.Collections:
537 return default_version
538 acf.addFlag(
'Trigger.EDMVersion',
lambda prevFlags:
EDMVersion(prevFlags),
539 help=
'Trigger EDM version (determined by input file or set to the version to be produced)')
544 if __name__==
"__main__":
545 from AthenaConfiguration.TestDefaults
import defaultTestFiles
548 if len(sys.argv) > 1:
549 flags.Input.Files = sys.argv[1:]
551 flags.Input.Files = defaultTestFiles.AOD_RUN3_DATA
553 flags.loadAllDynamicFlags()