22def initFlags():
23 """
24 Creates a flag container (AthConfigFlags) appropriate for typical
25 Analysis athena applications.
26 :return: flags
27 """
28 from AthenaConfiguration import AthConfigFlags
29 from AthenaConfiguration.AutoConfigFlags import GetFileMD
30 from Campaigns.Utils import Campaign
31 acf=AthConfigFlags.AthConfigFlags()
32
33
35 from AthenaConfiguration.Enums import ProductionStep
36 import argparse
37 acf.addFlag('Exec.OutputLevel',INFO)
38 acf.addFlag('Exec.MaxEvents',-1)
39 acf.addFlag('Exec.SkipEvents',0)
40 acf.addFlag('Exec.DebugStage','', help=argparse.SUPPRESS)
41 acf.addFlag('Exec.FPE',-2)
42
43
44
45 acf.addFlag('Exec.VerboseMessageComponents',[])
46 acf.addFlag('Exec.DebugMessageComponents',[])
47 acf.addFlag('Exec.InfoMessageComponents',[])
48 acf.addFlag('Exec.WarningMessageComponents',[])
49 acf.addFlag('Exec.ErrorMessageComponents',[])
50
51 acf.addFlag('Common.MsgSuppression',True)
52 acf.addFlag('Common.MsgSourceLength',50)
53 acf.addFlag('Common.ProductionStep', ProductionStep.Default, type=ProductionStep, help=argparse.SUPPRESS)
54 acf.addFlag('Common.isOverlay', False, help=argparse.SUPPRESS)
55
56
57 acf.addFlag('Input.Files', ["_ATHENA_GENERIC_INPUTFILE_NAME_",])
58 acf.addFlag('Input.OverrideRunNumber', False, help=argparse.SUPPRESS )
59 acf.addFlag('Input.SecondaryFiles', [], help=argparse.SUPPRESS)
60 acf.addFlag(
'Input.ProcessingTags',
lambda prevFlags : GetFileMD(prevFlags.Input.Files).
get(
"processingTags", []), help=
"expert flag, do not override" )
61 acf.addFlag(
'Input.ProjectName',
lambda prevFlags : GetFileMD(prevFlags.Input.Files).
get(
"project_name",
"data17_13TeV"), help=
"expert flag, do not override")
62 acf.addFlag(
'Input.MCCampaign',
lambda prevFlags : Campaign(GetFileMD(prevFlags.Input.Files).
get(
"mc_campaign",
"")), type=Campaign, help=
"expert flag, do not override")
63
64
65 acf.addFlag('Concurrency.NumProcs', 0, help="0 = disables MP, otherwise is # of processes to use in MP mode")
66 acf.addFlag('Concurrency.NumThreads', 0, help="0 = disables MT, otherwise is # of threads to use in MT mode" )
67 acf.addFlag('Concurrency.NumConcurrentEvents', lambda prevFlags : prevFlags.Concurrency.NumThreads)
68 acf.addFlag('Concurrency.DebugWorkers', False )
69
70
71 acf.addFlag('Output.HISTOutputs', [],help="ROOT output files. Specify in form of 'STREAM:filename.root'")
72 acf.addFlag('Output.TreeAutoFlush', {}, help="{} = automatic for all streams, otherwise {'STREAM': 123}")
73
74 acf.addFlag("PoolSvc.MaxFilesOpen", 0, help=argparse.SUPPRESS)
75
76
77 acf.parser().add_argument('--accessMode',default="POOLAccess",choices={"POOLAccess","ClassAccess"},help="Input file reading mode")
78 acf.parser().add_argument('--postExec',default=None,help="Any postconfig execution required")
79
80
81 return acf
82
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)