11 from AthenaCommon.Logging
import logging
12 from AthenaCommon.Logging
import log
as topLog
13 topLog.setLevel(logging.WARNING)
14 log = logging.getLogger(
'L1CaloPhase1Monitoring.py')
15 log.setLevel(logging.INFO)
17 from AthenaConfiguration.ComponentFactory
import CompFactory
18 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
19 from AthenaConfiguration.Enums
import LHCPeriod,Format
20 from AthenaCommon
import Constants
24 partition = ispy.IPCPartition(os.getenv(
"TDAQ_PARTITION",
"ATLAS"))
27 flags.Input.Files = []
33 flags.Exec.OutputLevel = Constants.WARNING
34 flags.Exec.InfoMessageComponents = [
"AthenaEventLoopMgr",
"THistSvc",
"PerfMonMTSvc",
"ApplicationMgr",
"AvalancheSchedulerSvc"]
35 flags.Exec.PrintAlgsSequence =
True
39 flags.GeoModel.Run = LHCPeriod.Run3
40 flags.Common.useOnlineLumi =
True
41 flags.DQ.doMonitoring =
True
42 flags.DQ.enableLumiAccess =
False
43 flags.DQ.FileKey =
"" if partition.isValid()
else "EXPERT"
44 flags.Output.HISTFileName = os.getenv(
"L1CALO_ATHENA_JOB_NAME",
"") +
"monitoring.root"
45 flags.DQ.useTrigger =
False
46 flags.Trigger.L1.doCaloInputs =
True
47 flags.Trigger.enableL1CaloPhase1 =
True
49 flags.Trigger.L1.doeFex =
True
50 flags.Trigger.L1.dojFex =
True
51 flags.Trigger.L1.dogFex =
True
52 flags.Trigger.L1.doTopo =
False
55 if partition.isValid():
58 flags.Trigger.doLVL1 =
False
59 flags.Trigger.doHLT =
False
60 from AthenaConfiguration.AutoConfigOnlineRecoFlags
import autoConfigOnlineRecoFlags
63 flags.Trigger.doLVL1 =
True
68 parser = flags.getArgumentParser(epilog=
"""
69 Extra flags are specified after a " -- " and the following are most relevant bool flags for this script:
71 Trigger.enableL1CaloPhase1 : turn on/off the offline simulation [default: True]
72 DQ.doMonitoring : turn on/off the monitoring [default: True]
73 Trigger.L1.doCaloInputs : controls input readout decoding and monitoring [default: True]
74 Trigger.L1.doCalo : controls trex (legacy syst) monitoring [default: True]
75 Trigger.L1.doeFex : controls efex simulation and monitoring [default: True]
76 Trigger.L1.dojFex : controls jfex simulation and monitoring [default: True]
77 Trigger.L1.dogFex : controls gfex simulation and monitoring [default: True]
78 Trigger.L1.doTopo : controls topo simulation and monitoring [default: False]
79 DQ.useTrigger : controls if JetEfficiency monitoring alg is run or not [default: False]
80 PerfMon.doFullMonMT : print info about execution time of algorithms and memory use etc [default: False]
82 E.g. to run just the jFex monitoring, without offline simulation, you can do:
84 athena TrigT1CaloMonitoring/L1CalPhase1Monitoring.py .... -- Trigger.enableL1CaloPhase1=False Trigger.L1.doCaloInputs=False Trigger.L1.doeFex=False Trigger.L1.dogFex=False
86 Further notes: Run with "--evtMax 0" to print flags and ca config, and generate a hanConfig file.
87 Run with "--evtMax 1" to dump StoreGate contents after the first event
92 parser.formatter_class = argparse.RawDescriptionHelpFormatter
93 parser.add_argument(
'--runNumber',default=
None,help=
"specify to select a run number")
94 parser.add_argument(
'--lumiBlock',default=
None,help=
"specify to select a lumiBlock")
95 parser.add_argument(
'--evtNumber',default=
None,nargs=
"+",type=int,help=
"specify to select an evtNumber")
96 parser.add_argument(
'--stream',default=
"*",help=
"stream to lookup files in")
97 parser.add_argument(
'--fexReadoutFilter',action=
'store_true',help=
"If specified, will skip events without fexReadout")
98 parser.add_argument(
'--dbOverrides',default=
None,nargs=
"+",type=str,help=
"specify overrides of COOL database folders in form <folder>=<dbPath>, example: /TRIGGER/L1Calo/V1/Calibration/EfexEnergyCalib=mytest.db ")
99 parser.add_argument(
'--postConfig',default=[],nargs=
"+",type=str,help=
"specify component properties to apply at the end of the config")
100 args = flags.fillFromArgs(parser=parser)
101 if args.runNumber
is not None:
107 from glob
import glob
108 if args.lumiBlock
is None: args.lumiBlock=
"*"
109 log.info(
" ".
join((
"Looking up files in atlastier0 for run",args.runNumber,
"lb =",args.lumiBlock)))
110 flags.Input.Files = []
111 for lb
in args.lumiBlock.split(
","):
113 tryStr = f
"/eos/atlas/atlastier0/rucio/data*/{args.stream}/*{args.runNumber}/*RAW/*lb*.*"
115 tryStr = f
"/eos/atlas/atlastier0/rucio/data*/{args.stream}/*{args.runNumber}/*RAW/*lb{int(lb):04}.*"
116 log.info(
" ".
join((
"Trying",tryStr)))
117 flags.Input.Files += glob(tryStr)
118 log.info(
" ".
join((
"Found",
str(len(flags.Input.Files)),
"files")))
122 if not partition.isValid()
and len(flags.Input.Files)==0:
123 if flags.Exec.MaxEvents==0:
125 flags.Input.Files = [
"/eos/atlas/atlascerngroupdisk/det-l1calo/OfflineSoftware/TestFiles/data24_13p6TeV/data24_13p6TeV.00477048.physics_Main.daq.RAW._lb0821._SFO-20._0001.data"]
127 log.fatal(
"Running in offline mode but no input files provided")
129 elif partition.isValid():
130 log.info(
"Running Online with Partition:",partition.name())
131 standalone = (partition.name()!=
"ATLAS")
132 if standalone : log.info(
"Using local menu because partition is not ATLAS")
135 if len(flags.Input.Files)>0:
136 flags.DQ.Environment =
"user"
139 standalone = ((flags.Input.ProjectName ==
"data_test")
or (re.match(
r"data\d\d_calib", flags.Input.ProjectName)))
140 if standalone :
print(
"Using local menu because project_name=",flags.Input.ProjectName)
141 if flags.Input.isMC : flags.Trigger.triggerConfig=
'FILE'
142 elif flags.Trigger.triggerConfig==
'INFILE':
144 flags.Trigger.triggerConfig=
"DB"
146 if flags.Input.isMC
and flags.Trigger.L1.doCalo:
147 log.info(
"Disabling legacy monitoring because it doesn't work with MC")
148 flags.Trigger.L1.doCalo=
False
151 flags.Trigger.triggerConfig=
'FILE'
154 if flags.Exec.MaxEvents == 0:
156 flags.DQ.doMonitoring=
True
157 flags.Trigger.L1.doCaloInputs=
True
158 flags.Trigger.L1.doeFex=
True
159 flags.Trigger.L1.dojFex=
True
160 flags.Trigger.L1.dogFex=
True
161 flags.Trigger.L1.doTopo=
True
162 flags.DQ.useTrigger=
True
163 flags.Exec.OutputLevel = Constants.INFO
166 if flags.GeoModel.AtlasVersion
is None:
167 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
168 flags.GeoModel.AtlasVersion = defaultGeometryTags.autoconfigure(flags)
170 if not flags.Trigger.L1.doTopo: flags.Trigger.L1.doMuon =
False
172 if flags.Trigger.enableL1CaloPhase1:
175 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorsFromList
176 setupDetectorsFromList(flags,[
'LAr',
'Tile',
'MBTS'] + ([
'RPC',
'TGC',
'MDT']
if flags.Trigger.L1.doMuon
else []),
True)
178 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
181 log.setLevel(logging.INFO)
184 if flags.Exec.MaxEvents == 0: flags.dump(evaluate=
True)
186 if partition.isValid()
and len(flags.Input.Files)==0:
187 from ByteStreamEmonSvc.EmonByteStreamConfig
import EmonByteStreamCfg
189 bsSvc = cfg.getService(
"ByteStreamInputSvc")
190 bsSvc.Partition = partition.name()
191 bsSvc.Key = os.environ.get(
"L1CALO_PTIO_KEY",
"REB" if partition.name()==
"L1CaloStandalone" else "dcm")
192 if partition.name()==
"L1CaloSTF": bsSvc.Key =
"SWROD"
193 bsSvc.KeyCount =
int(os.environ.get(
"L1CALO_PTIO_KEY_COUNT",
"25"))
194 bsSvc.ISServer =
"Histogramming"
195 bsSvc.BufferSize = 10
196 bsSvc.UpdatePeriod = 30
197 bsSvc.Timeout = 240000
198 bsSvc.PublishName = os.getenv(
"L1CALO_ATHENA_JOB_NAME",
"testing")
199 bsSvc.StreamType = os.getenv(
"L1CALO_PTIO_STREAM_TYPE",
"physics")
200 bsSvc.ExitOnPartitionShutdown =
False
201 bsSvc.ClearHistograms =
True
202 bsSvc.GroupName =
"RecExOnline"
204 bsSvc.StreamNames = os.getenv(
"L1CALO_PTIO_STREAM_NAME",
"L1Calo:Main:MinBias:MinBiasOverlay:UPC:EnhancedBias:ZeroBias:HardProbes:Standby:ALFACalib").
split(
":")
205 bsSvc.StreamLogic = os.getenv(
"L1CALO_PTIO_STREAM_LOGIC",
"Or")
if partition.name() !=
"L1CaloStandalone" else "Ignore"
207 bsSvc.LVL1Logic =
"Ignore"
208 elif flags.Input.Format == Format.POOL:
209 log.info(f
"Running Offline on {len(flags.Input.Files)} POOL files")
210 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
213 log.info(f
"Running Offline on {len(flags.Input.Files)} bytestream files")
216 from TriggerJobOpts.TriggerByteStreamConfig
import ByteStreamReadCfg
220 from AthenaMonitoring.AthMonitorCfgHelper
import getDQTHistSvc
224 from TrigConfigSvc.TrigConfigSvcCfg
import L1ConfigSvcCfg,generateL1Menu, createL1PrescalesFileFromMenu,getL1MenuFileName
225 if flags.Trigger.triggerConfig==
"FILE":
230 if os.path.exists(menuFilename):
231 log.info(f
"Using L1Menu: {menuFilename}")
233 log.fatal(f
"L1Menu file does not exist: {menuFilename}")
242 if partition.isValid()
or (flags.Input.Format != Format.POOL
and not flags.Input.isMC):
243 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig
import eFexByteStreamToolCfg, jFexRoiByteStreamToolCfg, jFexInputByteStreamToolCfg, gFexByteStreamToolCfg, gFexInputByteStreamToolCfg
244 if flags.Trigger.L1.doeFex: decoderTools += [cfg.popToolsAndMerge(
eFexByteStreamToolCfg(flags=flags,name=
'eFexBSDecoderTool',TOBs=flags.Trigger.L1.doeFex,xTOBs=flags.Trigger.L1.doeFex,decodeInputs=flags.Trigger.L1.doCaloInputs,multiSlice=
True))]
245 if flags.Trigger.L1.dojFex: decoderTools += [cfg.popToolsAndMerge(
jFexRoiByteStreamToolCfg(flags=flags,name=
"jFexBSDecoderTool",writeBS=
False))]
246 if flags.Trigger.L1.dogFex: decoderTools += [cfg.popToolsAndMerge(
gFexByteStreamToolCfg(flags=flags,name=
"gFexBSDecoderTool",writeBS=
False))]
248 if flags.Trigger.L1.doMuon:
249 from MuonConfig.MuonBytestreamDecodeConfig
import RpcBytestreamDecodeCfg,TgcBytestreamDecodeCfg
252 from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig
import MuonRoIByteStreamToolCfg
256 if flags.Trigger.L1.doCaloInputs:
257 if flags.Trigger.L1.dojFex: decoderTools += [cfg.popToolsAndMerge(
jFexInputByteStreamToolCfg(flags=flags,name=
'jFexInputBSDecoderTool',writeBS=
False))]
258 if flags.Trigger.L1.dogFex: decoderTools += [cfg.popToolsAndMerge(
gFexInputByteStreamToolCfg(flags=flags,name=
'gFexInputBSDecoderTool',writeBS=
False))]
260 if len(decoderTools) > 0:
261 from TrigT1ResultByteStream.TrigT1ResultByteStreamMonitoringConfig
import L1TriggerByteStreamDecoderMonitoringCfg
262 cfg.addEventAlgo(CompFactory.L1TriggerByteStreamDecoderAlg(
263 name=
"L1TriggerByteStreamDecoder",
264 OutputLevel=Constants.ERROR,
265 DecoderTools=decoderTools,
266 ByteStreamMetadataRHKey =
'',
267 MaybeMissingROBs= [id
for tool
in decoderTools
for id
in tool.ROBIDs ]
if partition.name()!=
"ATLAS" or not partition.isValid()
else [],
269 ),sequenceName=
'AthAlgSeq'
273 if flags.Trigger.enableL1CaloPhase1:
274 from L1CaloFEXSim.L1CaloFEXSimCfg
import L1CaloFEXSimCfg
278 cfg.merge(
L1CaloFEXSimCfg(flags,outputSuffix=
"_ReSim" if flags.Input.Format == Format.POOL
else ""))
281 if flags.Trigger.L1.doTopo:
282 from L1TopoSimulation.L1TopoSimulationConfig
import L1TopoSimulationCfg
298 if flags.DQ.doMonitoring:
299 if flags.Trigger.L1.doCalo:
300 from TrigT1CaloMonitoring.PprMonitorAlgorithm
import PprMonitoringConfig
302 from TrigT1CaloMonitoring.PPMSimBSMonitorAlgorithm
import PPMSimBSMonitoringConfig
304 from TrigT1CaloMonitoring.OverviewMonitorAlgorithm
import OverviewMonitoringConfig
308 OverviewMonAlg = cfg.getEventAlgo(
"OverviewMonAlg")
309 OverviewMonAlg.CPMErrorLocation =
""
310 OverviewMonAlg.CPMMismatchLocation =
""
312 if flags.Trigger.L1.doeFex:
313 from TrigT1CaloMonitoring.EfexMonitorAlgorithm
import EfexMonitoringConfig
315 EfexMonAlg = cfg.getEventAlgo(
'EfexMonAlg')
317 EfexMonAlg.eFexEMTobKeyList = [
'L1_eEMRoI',
'L1_eEMxRoI']
318 EfexMonAlg.eFexTauTobKeyList = [
'L1_eTauRoI',
'L1_eTauxRoI']
320 if flags.Input.Format == Format.POOL
or flags.Trigger.enableL1CaloPhase1:
321 for l
in [EfexMonAlg.eFexEMTobKeyList,EfexMonAlg.eFexTauTobKeyList]: l += [x + (
"_ReSim" if flags.Input.Format == Format.POOL
and flags.Trigger.enableL1CaloPhase1
else "Sim")
for x
in l ]
323 if not flags.Input.isMC
and flags.Trigger.enableL1CaloPhase1:
324 from TrigT1CaloMonitoring.EfexSimMonitorAlgorithm
import EfexSimMonitoringConfig
328 from TrigT1CaloMonitoring.EfexMonitorAlgorithm
import EfexMonitoringHistConfig
331 if flags.Trigger.L1.dojFex:
332 from TrigT1CaloMonitoring.JfexMonitorAlgorithm
import JfexMonitoringConfig
334 if not flags.Input.isMC
and flags.Trigger.enableL1CaloPhase1:
335 from TrigT1CaloMonitoring.JfexSimMonitorAlgorithm
import JfexSimMonitoringConfig
337 if flags.Trigger.L1.dogFex:
338 from TrigT1CaloMonitoring.GfexMonitorAlgorithm
import GfexMonitoringConfig
340 if not flags.Input.isMC
and flags.Trigger.enableL1CaloPhase1:
341 from TrigT1CaloMonitoring.GfexSimMonitorAlgorithm
import GfexSimMonitoringConfig
345 if flags.DQ.useTrigger:
346 from TrigT1CaloMonitoring.JetEfficiencyMonitorAlgorithm
import JetEfficiencyMonitoringConfig
349 if flags.Trigger.L1.doTopo:
350 from L1TopoOnlineMonitoring.L1TopoOnlineMonitoringConfig
import Phase1TopoMonitoringCfg
354 if flags.Trigger.L1.doCaloInputs
and not flags.Input.isMC:
355 from TrigT1CaloMonitoring.EfexInputMonitorAlgorithm
import EfexInputMonitoringConfig
357 from TrigT1CaloMonitoring.JfexInputMonitorAlgorithm
import JfexInputMonitoringConfig
359 from TrigT1CaloMonitoring.GfexInputMonitorAlgorithm
import GfexInputMonitoringConfig
362 mainSeq =
"AthAllAlgSeq"
363 if args.fexReadoutFilter:
365 topSeq = cfg.getSequence(
"AthAlgEvtSeq")
366 algSeq = cfg.getSequence(mainSeq)
367 mainSeq =
"New" + mainSeq
369 topSeq.Members = [topSeq.Members[0],CompFactory.AthSequencer(mainSeq),topSeq.Members[-1]]
370 cfg.addEventAlgo(CompFactory.L1IDFilterAlgorithm(),sequenceName=mainSeq)
371 cfg.getSequence(mainSeq).Members += [algSeq]
373 if args.evtNumber
is not None:
374 print(
"filtering events",args.evtNumber)
376 topSeq = cfg.getSequence(
"AthAlgEvtSeq")
377 algSeq = cfg.getSequence(mainSeq)
378 mainSeq =
"New" + mainSeq
380 topSeq.Members = [topSeq.Members[0],CompFactory.AthSequencer(mainSeq),topSeq.Members[-1]]
381 cfg.addEventAlgo(CompFactory.EventNumberFilterAlgorithm(
"EvtNumberFilter",EventNumbers=args.evtNumber),sequenceName=mainSeq)
382 cfg.getSequence(mainSeq).Members += [algSeq]
385 from PerfMonComps.PerfMonCompsConfig
import PerfMonMTSvcCfg
388 from AthenaConfiguration.Utils
import setupLoggingLevels
391 if any([s.name==
"AthenaEventLoopMgr" for s
in cfg.getServices()]): cfg.getService(
"AthenaEventLoopMgr").IntervalInSeconds = 30
392 if any([s.name==
"AvalancheSchedulerSvc" for s
in cfg.getServices()]):
393 cfg.getService(
"AvalancheSchedulerSvc").ShowDataDependencies=
True
395 if type(args.dbOverrides)==list:
396 from IOVDbSvc.IOVDbSvcConfig
import addOverride
400 for override
in args.dbOverrides:
402 folderName,dbPath = override.split(
"=",1)
403 if folderName ==
"":
raise ValueError(
"Cannot parse dbOverride: " + override)
404 if ";dbname=" not in dbPath: dbPath +=
";dbname=CONDBR2"
405 dbPath,dbInst = dbPath.split(
";dbname=")
406 if not os.path.exists(dbPath):
raise ValueError(
"dbOverride file doesn't exist: " + dbPath)
407 if folderName[0] !=
"/": folderName =
"/TRIGGER/L1Calo/V1/Calibration/" + folderName
408 log.info(
" ".
join((
"Overriding COOL folder:",folderName,dbPath,dbInst)))
409 cfg.merge(
addOverride(flags,folder=folderName,db=f
"sqlite://;schema={dbPath};dbname={dbInst}",tag=
""))
413 if flags.Output.AODFileName !=
"":
415 if edmName.endswith(
"Sim")
and flags.Input.Format == Format.POOL: edmName = edmName.replace(
"Sim",
"_ReSim")
416 auxType = edmType.replace(
'Container',
'AuxContainer')
417 return [f
'{edmType}#{edmName}', f
'{auxType}#{edmName}Aux.']
421 if flags.Trigger.L1.doeFex:
422 outputEDM +=
addEDM(
'xAOD::eFexEMRoIContainer' ,
"L1_eEMRoI")
423 outputEDM +=
addEDM(
'xAOD::eFexEMRoIContainer' ,
"L1_eEMRoISim")
424 outputEDM +=
addEDM(
'xAOD::eFexEMRoIContainer' ,
"L1_eEMxRoI")
425 outputEDM +=
addEDM(
'xAOD::eFexEMRoIContainer' ,
"L1_eEMxRoISim")
427 outputEDM +=
addEDM(
'xAOD::eFexTauRoIContainer' ,
"L1_eTauRoI")
428 outputEDM +=
addEDM(
'xAOD::eFexTauRoIContainer' ,
"L1_eTauRoISim")
429 outputEDM +=
addEDM(
'xAOD::eFexTauRoIContainer' ,
"L1_eTauxRoI")
430 outputEDM +=
addEDM(
'xAOD::eFexTauRoIContainer' ,
"L1_eTauxRoISim")
432 if flags.Trigger.L1.dojFex:
433 outputEDM +=
addEDM(
'xAOD::jFexTowerContainer' ,
"L1_jFexDataTowers")
434 outputEDM +=
addEDM(
'xAOD::jFexTowerContainer' ,
"L1_jFexEmulatedTowers")
435 outputEDM +=
addEDM(
'xAOD::jFexSRJetRoIContainer',
'L1_jFexSRJetRoISim')
436 outputEDM +=
addEDM(
'xAOD::jFexLRJetRoIContainer',
'L1_jFexLRJetRoISim')
437 outputEDM +=
addEDM(
'xAOD::jFexTauRoIContainer' ,
'L1_jFexTauRoISim' )
438 outputEDM +=
addEDM(
'xAOD::jFexFwdElRoIContainer',
'L1_jFexFwdElRoISim')
439 outputEDM +=
addEDM(
'xAOD::jFexSumETRoIContainer',
'L1_jFexSumETRoISim')
440 outputEDM +=
addEDM(
'xAOD::jFexMETRoIContainer' ,
'L1_jFexMETRoISim' )
441 outputEDM +=
addEDM(
'xAOD::jFexSRJetRoIContainer',
'L1_jFexSRJetRoI')
442 outputEDM +=
addEDM(
'xAOD::jFexLRJetRoIContainer',
'L1_jFexLRJetRoI')
443 outputEDM +=
addEDM(
'xAOD::jFexTauRoIContainer' ,
'L1_jFexTauRoI' )
444 outputEDM +=
addEDM(
'xAOD::jFexFwdElRoIContainer',
'L1_jFexFwdElRoI')
445 outputEDM +=
addEDM(
'xAOD::jFexSumETRoIContainer',
'L1_jFexSumETRoI')
446 outputEDM +=
addEDM(
'xAOD::jFexMETRoIContainer' ,
'L1_jFexMETRoI' )
448 outputEDM +=
addEDM(
'xAOD::jFexSRJetRoIContainer',
'L1_jFexSRJetxRoI')
449 outputEDM +=
addEDM(
'xAOD::jFexLRJetRoIContainer',
'L1_jFexLRJetxRoI')
450 outputEDM +=
addEDM(
'xAOD::jFexTauRoIContainer' ,
'L1_jFexTauxRoI' )
451 outputEDM +=
addEDM(
'xAOD::jFexFwdElRoIContainer',
'L1_jFexFwdElxRoI')
452 outputEDM +=
addEDM(
'xAOD::jFexSumETRoIContainer',
'L1_jFexSumETxRoI')
453 outputEDM +=
addEDM(
'xAOD::jFexMETRoIContainer' ,
'L1_jFexMETxRoI' )
455 if flags.Trigger.L1.dogFex:
456 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMETComponentsJwoj')
457 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMETComponentsJwojSim')
458 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMHTComponentsJwoj')
459 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMHTComponentsJwojSim')
460 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMSTComponentsJwoj')
461 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMSTComponentsJwojSim')
462 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gScalarEJwoj')
463 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gScalarEJwojSim')
464 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gScalarENoiseCutSim')
465 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gScalarERmsSim')
467 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexLRJetRoI')
468 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexLRJetRoISim')
469 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexSRJetRoI')
470 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexSRJetRoISim')
471 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexRhoRoI')
472 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexRhoRoISim')
476 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
478 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
482 if "MaskedSCCondAlg" in cfg.getCondAlgos(): cfg.getCondAlgo(
"MaskedSCCondAlg").ReloadEveryEvent=flags.Common.isOnline
487 for conf
in args.postConfig:
488 compName,propNameAndVal=conf.split(
".",1)
489 propName,propVal=propNameAndVal.split(
"=",1)
491 for comp
in [c
for c
in cfg._allComponents()]+cfg.getServices():
492 if comp.name==compName:
494 exec(f
"comp.{propNameAndVal}")
497 raise ValueError(f
"postConfig {conf} had no effect ... typo?")
501 if flags.Exec.MaxEvents==0: cfg.printConfig(summariseProps=
True)
502 log.info(
" ".
join((
"Configured Services:",*[svc.name
for svc
in cfg.getServices()])) )
506 if flags.Exec.MaxEvents==1:
508 cfg.getService(
"StoreGateSvc").Dump=
True
509 cfg.getService(
"DetectorStore").Dump=
True
512 if cfg.getService(
"StoreGateSvc").Dump:
513 cfg.getService(
"StoreGateSvc").OutputLevel=3
514 if cfg.getService(
"DetectorStore").Dump:
515 cfg.getService(
"DetectorStore").OutputLevel=3
517 if flags.Exec.MaxEvents==0:
521 from TrigT1CaloMonitoring.LVL1CaloMonitoringConfig
import L1CaloMonitorCfgHelper
522 L1CaloMonitorCfgHelper.printHanConfig()
523 cfg._wasMerged =
True
526 if cfg.run().isFailure():