6'''@file DQTestingDriver.py
10@brief Driver script to run DQ with new-style configuration on an ESD/AOD
13if __name__==
'__main__':
15 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
16 from AthenaConfiguration.ComponentFactory
import CompFactory
17 from AthenaConfiguration.Enums
import Format, LHCPeriod
19 flags = initConfigFlags()
20 parser = flags.getArgumentParser()
21 parser.add_argument(
'--preExec', help=
'Code to execute before locking configs')
22 parser.add_argument(
'--postExec', help=
'Code to execute after setup')
23 parser.add_argument(
'--dqOffByDefault', action=
'store_true',
24 help=
'Set all DQ steering flags to False, user must then switch them on again explicitly')
26 parser.add_argument(
'--inputFiles',
27 help=
'Comma-separated list of input files (alias for --filesInput)')
29 parser.add_argument(
'--maxEvents', type=int,
30 help=
'Maximum number of events to process (alias for --evtMax)')
31 parser.add_argument(
'--printDetailedConfig', action=
'store_true',
32 help=
'Print detailed Athena configuration')
35 parser.set_defaults(threads=1)
36 args, _ = parser.parse_known_args()
39 flags.Input.Files = [
'/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/AthenaMonitoring/q431/21.0/f946/myESD.pool.root']
40 flags.Output.HISTFileName =
'ExampleMonitorOutput.root'
41 if args.dqOffByDefault:
42 from AthenaMonitoring.DQConfigFlags
import allSteeringFlagsOff
43 allSteeringFlagsOff(flags)
44 flags.fillFromArgs(parser=parser)
47 from AthenaCommon.Logging
import log
48 from AthenaCommon
import Constants
50 log.setLevel(getattr(Constants, args.loglevel))
54 if args.inputFiles
is not None:
55 flags.Input.Files = args.inputFiles.split(
',')
57 if args.maxEvents
is not None:
58 flags.Exec.MaxEvents = args.maxEvents
60 if flags.Input.Format
is Format.BS:
61 if flags.DQ.Environment
not in (
'tier0',
'tier0Raw',
'online'):
62 log.warning(
'Reading RAW file, but DQ.Environment set to %s',
64 log.warning(
'Will proceed but best guess is this is an error')
65 log.info(
'Will schedule reconstruction, as best we know')
67 if flags.DQ.Environment
in (
'tier0',
'tier0Raw',
'online'):
68 log.warning(
'Reading POOL file, but DQ.Environment set to %s',
70 log.warning(
'Will proceed but best guess is this is an error')
74 from AthenaMonitoring.DQConfigFlags
import allSteeringFlagsOff
75 log.info(
'Executing preExec: %s', args.preExec)
78 if flags.GeoModel.Run < LHCPeriod.Run4:
80 flags.Detector.GeometryPixel =
True
81 flags.Detector.GeometrySCT =
True
82 flags.Detector.GeometryTRT =
True
83 if flags.hasCategory(
"DQ.Steering")
and flags.hasCategory(
"Detector"):
84 if flags.hasCategory(
"DQ.Steering.InDet"):
85 if (flags.hasFlag(
"DQ.Steering.InDet.doAlignMon")
and flags.DQ.Steering.InDet.doAlignMon)
or \
86 (flags.hasFlag(
"DQ.Steering.InDet.doGlobalMon")
and flags.DQ.Steering.InDet.doGlobalMon)
or \
87 (flags.hasFlag(
"DQ.Steering.InDet.doPerfMon")
and flags.DQ.Steering.InDet.doPerfMon):
88 flags.Detector.GeometryID =
True
90 flags.Detector.EnableITk =
True
91 flags.Detector.EnableITkPixel =
True
92 flags.Detector.GeometryITkPixel =
True
93 flags.Detector.EnableITkStrip =
True
94 flags.Detector.GeometryITkStrip =
True
95 flags.Detector.GeometryITk =
True
97 log.info(
'FINAL CONFIG FLAGS SETTINGS FOLLOW')
98 if args.loglevel
is None or getattr(Constants, args.loglevel) <= Constants.INFO:
103 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
104 cfg = MainServicesCfg(flags)
106 if flags.Input.Format
is Format.BS:
108 from CaloRec.CaloRecoConfig
import CaloRecoCfg
109 cfg.merge(CaloRecoCfg(flags))
111 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
112 cfg.merge(PoolReadCfg(flags))
115 from AthenaMonitoring.AthenaMonitoringCfg
import AthenaMonitoringCfg
116 dq = AthenaMonitoringCfg(flags)
120 if flags.Concurrency.NumThreads > 0:
121 from AthenaConfiguration.ComponentAccumulator
import ConfigurationError
122 for condalg, alg
in [(
"PixelDetectorElementCondAlg",
"ForceIDConditionsAlg")]:
124 cfg.getCondAlgo(condalg)
125 except ConfigurationError:
128 beginseq = cfg.getSequence(
"AthBeginSeq")
129 beginseq.Members.append(CompFactory.getComp(alg)())
133 log.info(
'Executing postExec: %s', args.postExec)
136 cfg.printConfig(withDetails=args.printDetailedConfig)
139 sys.exit(0
if sc.isSuccess()
else 1)