11 from AthenaConfiguration.ComponentFactory
import CompFactory
12 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
13 from AthenaConfiguration.Enums
import LHCPeriod,Format
14 from AthenaCommon
import Constants
18 partition = ispy.IPCPartition(os.getenv(
"TDAQ_PARTITION",
"ATLAS"))
21 flags.Input.Files = []
27 flags.Exec.OutputLevel = Constants.WARNING
28 flags.Exec.InfoMessageComponents = [
"AthenaEventLoopMgr",
"THistSvc",
"PerfMonMTSvc",
"ApplicationMgr"]
29 flags.Exec.PrintAlgsSequence =
True
33 flags.GeoModel.Run = LHCPeriod.Run3
34 flags.Common.useOnlineLumi =
True
35 flags.DQ.doMonitoring =
True
36 flags.DQ.enableLumiAccess =
False
37 flags.DQ.FileKey =
"" if partition.isValid()
else "EXPERT"
38 flags.Output.HISTFileName = os.getenv(
"L1CALO_ATHENA_JOB_NAME",
"") +
"monitoring.root"
39 flags.DQ.useTrigger =
False
40 flags.Trigger.L1.doCaloInputs =
True
41 flags.Trigger.enableL1CaloPhase1 =
True
43 flags.Trigger.L1.doeFex =
True
44 flags.Trigger.L1.dojFex =
True
45 flags.Trigger.L1.dogFex =
True
48 if partition.isValid():
51 flags.Trigger.doLVL1 =
False
52 flags.Trigger.doHLT =
False
53 from AthenaConfiguration.AutoConfigOnlineRecoFlags
import autoConfigOnlineRecoFlags
56 flags.Trigger.doLVL1 =
True
61 parser = flags.getArgumentParser(epilog=
"""
62 Extra flags are specified after a " -- " and the following are most relevant bool flags for this script:
64 Trigger.enableL1CaloPhase1 : turn on/off the offline simulation [default: True]
65 DQ.doMonitoring : turn on/off the monitoring [default: True]
66 Trigger.L1.doCaloInputs : controls input readout decoding and monitoring [default: True]
67 Trigger.L1.doCalo : controls trex (legacy syst) monitoring [default: True]
68 Trigger.L1.doeFex : controls efex simulation and monitoring [default: True]
69 Trigger.L1.dojFex : controls jfex simulation and monitoring [default: True]
70 Trigger.L1.dogFex : controls gfex simulation and monitoring [default: True]
71 DQ.useTrigger : controls if JetEfficiency monitoring alg is run or not [default: False]
72 PerfMon.doFullMonMT : print info about execution time of algorithms and memory use etc [default: False]
74 E.g. to run just the jFex monitoring, without offline simulation, you can do:
76 athena TrigT1CaloMonitoring/L1CalPhase1Monitoring.py .... -- Trigger.enableL1CaloPhase1=False Trigger.L1.doCaloInputs=False Trigger.L1.doeFex=False Trigger.L1.dogFex=False
78 Further notes: Run with "--evtMax 0" to print flags and ca config, and generate a hanConfig file.
79 Run with "--evtMax 1" to dump StoreGate contents after the first event
84 parser.formatter_class = argparse.RawDescriptionHelpFormatter
85 parser.add_argument(
'--runNumber',default=
None,help=
"specify to select a run number")
86 parser.add_argument(
'--lumiBlock',default=
None,help=
"specify to select a lumiBlock")
87 parser.add_argument(
'--evtNumber',default=
None,nargs=
"+",type=int,help=
"specify to select an evtNumber")
88 parser.add_argument(
'--stream',default=
"*",help=
"stream to lookup files in")
89 parser.add_argument(
'--fexReadoutFilter',action=
'store_true',help=
"If specified, will skip events without fexReadout")
90 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 ")
91 parser.add_argument(
'--postConfig',default=[],nargs=
"+",type=str,help=
"specify component properties to apply at the end of the config")
92 args = flags.fillFromArgs(parser=parser)
93 if args.runNumber
is not None:
100 if args.lumiBlock
is None: args.lumiBlock=
"*"
101 print(
"Looking up files in atlastier0 for run",args.runNumber,
"lb =",args.lumiBlock)
102 flags.Input.Files = []
103 for lb
in args.lumiBlock.split(
","):
105 tryStr = f
"/eos/atlas/atlastier0/rucio/data*/{args.stream}/*{args.runNumber}/*RAW/*lb*.*"
107 tryStr = f
"/eos/atlas/atlastier0/rucio/data*/{args.stream}/*{args.runNumber}/*RAW/*lb{int(lb):04}.*"
108 print(
"Trying",tryStr)
109 flags.Input.Files += glob(tryStr)
110 print(
"Found",len(flags.Input.Files),
"files")
114 if not partition.isValid()
and len(flags.Input.Files)==0:
115 print(
"FATAL: Running in offline mode but no input files provided")
117 elif partition.isValid():
118 print(
"Running Online with Partition:",partition.name())
119 standalone = (partition.name()!=
"ATLAS")
120 if standalone :
print(
"Using local menu because partition is not ATLAS")
123 if len(flags.Input.Files)>0:
124 flags.DQ.Environment =
"user"
127 standalone = ((flags.Input.ProjectName ==
"data_test")
or (re.match(
r"data\d\d_calib", flags.Input.ProjectName)))
128 if standalone :
print(
"Using local menu because project_name=",flags.Input.ProjectName)
129 if flags.Input.isMC : flags.Trigger.triggerConfig=
'FILE'
130 elif flags.Trigger.triggerConfig==
'INFILE':
132 flags.Trigger.triggerConfig=
"DB"
135 flags.Trigger.triggerConfig=
'FILE'
138 if flags.Exec.MaxEvents == 0:
140 flags.DQ.doMonitoring=
True
141 flags.Trigger.L1.doCaloInputs=
True
142 flags.Trigger.L1.doeFex=
True
143 flags.Trigger.L1.dojFex=
True
144 flags.Trigger.L1.dogFex=
True
145 flags.DQ.useTrigger=
True
146 flags.Exec.OutputLevel = Constants.INFO
149 if flags.GeoModel.AtlasVersion
is None:
150 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
151 flags.GeoModel.AtlasVersion = defaultGeometryTags.autoconfigure(flags)
153 if flags.Trigger.enableL1CaloPhase1:
156 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorsFromList
159 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
164 if flags.Exec.MaxEvents == 0: flags.dump(evaluate=
True)
166 if partition.isValid()
and len(flags.Input.Files)==0:
167 from ByteStreamEmonSvc.EmonByteStreamConfig
import EmonByteStreamCfg
169 bsSvc = cfg.getService(
"ByteStreamInputSvc")
170 bsSvc.Partition = partition.name()
171 bsSvc.Key = os.environ.get(
"L1CALO_PTIO_KEY",
"REB" if partition.name()==
"L1CaloStandalone" else "dcm")
172 if partition.name()==
"L1CaloSTF": bsSvc.Key =
"SWROD"
173 bsSvc.KeyCount =
int(os.environ.get(
"L1CALO_PTIO_KEY_COUNT",
"25"))
174 bsSvc.ISServer =
"Histogramming"
175 bsSvc.BufferSize = 10
176 bsSvc.UpdatePeriod = 30
177 bsSvc.Timeout = 240000
178 bsSvc.PublishName = os.getenv(
"L1CALO_ATHENA_JOB_NAME",
"testing")
179 bsSvc.StreamType = os.getenv(
"L1CALO_PTIO_STREAM_TYPE",
"physics")
180 bsSvc.ExitOnPartitionShutdown =
False
181 bsSvc.ClearHistograms =
True
182 bsSvc.GroupName =
"RecExOnline"
184 bsSvc.StreamNames = os.getenv(
"L1CALO_PTIO_STREAM_NAME",
"L1Calo:Main:MinBias:MinBiasOverlay:UPC:EnhancedBias:ZeroBias:HardProbes:Standby:ALFACalib").
split(
":")
185 bsSvc.StreamLogic = os.getenv(
"L1CALO_PTIO_STREAM_LOGIC",
"Or")
if partition.name() !=
"L1CaloStandalone" else "Ignore"
187 bsSvc.LVL1Logic =
"Ignore"
188 elif flags.Input.Format == Format.POOL:
189 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
192 print(
"Running Offline on", len(flags.Input.Files),
" bytestream files")
195 from TriggerJobOpts.TriggerByteStreamConfig
import ByteStreamReadCfg
199 from AthenaMonitoring.AthMonitorCfgHelper
import getDQTHistSvc
203 from TrigConfigSvc.TrigConfigSvcCfg
import L1ConfigSvcCfg,generateL1Menu, createL1PrescalesFileFromMenu,getL1MenuFileName
204 if flags.Trigger.triggerConfig==
"FILE":
209 if os.path.exists(menuFilename):
210 print(
"Using L1Menu:",menuFilename)
212 print(
"L1Menu file does not exist:",menuFilename)
221 if partition.isValid()
or (flags.Input.Format != Format.POOL
and not flags.Input.isMC):
222 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig
import eFexByteStreamToolCfg, jFexRoiByteStreamToolCfg, jFexInputByteStreamToolCfg, gFexByteStreamToolCfg, gFexInputByteStreamToolCfg
223 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))]
224 if flags.Trigger.L1.dojFex: decoderTools += [cfg.popToolsAndMerge(
jFexRoiByteStreamToolCfg(flags=flags,name=
"jFexBSDecoderTool",writeBS=
False))]
225 if flags.Trigger.L1.dogFex: decoderTools += [cfg.popToolsAndMerge(
gFexByteStreamToolCfg(flags=flags,name=
"gFexBSDecoderTool",writeBS=
False))]
229 if flags.Trigger.L1.doCaloInputs:
230 if flags.Trigger.L1.dojFex: decoderTools += [cfg.popToolsAndMerge(
jFexInputByteStreamToolCfg(flags=flags,name=
'jFexInputBSDecoderTool',writeBS=
False))]
231 if flags.Trigger.L1.dogFex: decoderTools += [cfg.popToolsAndMerge(
gFexInputByteStreamToolCfg(flags=flags,name=
'gFexInputBSDecoderTool',writeBS=
False))]
233 if len(decoderTools) > 0:
234 from TrigT1ResultByteStream.TrigT1ResultByteStreamMonitoringConfig
import L1TriggerByteStreamDecoderMonitoringCfg
235 cfg.addEventAlgo(CompFactory.L1TriggerByteStreamDecoderAlg(
236 name=
"L1TriggerByteStreamDecoder",
237 OutputLevel=Constants.ERROR,
238 DecoderTools=decoderTools,
239 ByteStreamMetadataRHKey =
'',
240 MaybeMissingROBs= [id
for tool
in decoderTools
for id
in tool.ROBIDs ]
if partition.name()!=
"ATLAS" or not partition.isValid()
else [],
242 ),sequenceName=
'AthAlgSeq'
246 if flags.Trigger.enableL1CaloPhase1:
247 from L1CaloFEXSim.L1CaloFEXSimCfg
import L1CaloFEXSimCfg
251 cfg.merge(
L1CaloFEXSimCfg(flags,outputSuffix=
"_ReSim" if flags.Input.Format == Format.POOL
else ""))
266 if flags.DQ.doMonitoring:
267 if flags.Trigger.L1.doCalo:
268 from TrigT1CaloMonitoring.PprMonitorAlgorithm
import PprMonitoringConfig
270 from TrigT1CaloMonitoring.PPMSimBSMonitorAlgorithm
import PPMSimBSMonitoringConfig
272 from TrigT1CaloMonitoring.OverviewMonitorAlgorithm
import OverviewMonitoringConfig
276 OverviewMonAlg = cfg.getEventAlgo(
"OverviewMonAlg")
277 OverviewMonAlg.CPMErrorLocation =
""
278 OverviewMonAlg.CPMMismatchLocation =
""
280 if flags.Trigger.L1.doeFex:
281 from TrigT1CaloMonitoring.EfexMonitorAlgorithm
import EfexMonitoringConfig
283 EfexMonAlg = cfg.getEventAlgo(
'EfexMonAlg')
285 EfexMonAlg.eFexEMTobKeyList = [
'L1_eEMRoI',
'L1_eEMxRoI']
286 EfexMonAlg.eFexTauTobKeyList = [
'L1_eTauRoI',
'L1_eTauxRoI']
288 if flags.Input.Format == Format.POOL
or flags.Trigger.enableL1CaloPhase1:
289 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 ]
291 if not flags.Input.isMC
and flags.Trigger.enableL1CaloPhase1:
292 from TrigT1CaloMonitoring.EfexSimMonitorAlgorithm
import EfexSimMonitoringConfig
296 from TrigT1CaloMonitoring.EfexMonitorAlgorithm
import EfexMonitoringHistConfig
299 if flags.Trigger.L1.dojFex:
300 from TrigT1CaloMonitoring.JfexMonitorAlgorithm
import JfexMonitoringConfig
302 if not flags.Input.isMC
and flags.Trigger.enableL1CaloPhase1:
303 from TrigT1CaloMonitoring.JfexSimMonitorAlgorithm
import JfexSimMonitoringConfig
305 if flags.Trigger.L1.dogFex:
306 from TrigT1CaloMonitoring.GfexMonitorAlgorithm
import GfexMonitoringConfig
308 if not flags.Input.isMC
and flags.Trigger.enableL1CaloPhase1:
309 from TrigT1CaloMonitoring.GfexSimMonitorAlgorithm
import GfexSimMonitoringConfig
313 if flags.DQ.useTrigger:
314 from TrigT1CaloMonitoring.JetEfficiencyMonitorAlgorithm
import JetEfficiencyMonitoringConfig
318 if flags.Trigger.L1.doCaloInputs
and not flags.Input.isMC:
319 from TrigT1CaloMonitoring.EfexInputMonitorAlgorithm
import EfexInputMonitoringConfig
321 from TrigT1CaloMonitoring.JfexInputMonitorAlgorithm
import JfexInputMonitoringConfig
323 from TrigT1CaloMonitoring.GfexInputMonitorAlgorithm
import GfexInputMonitoringConfig
326 mainSeq =
"AthAllAlgSeq"
327 if args.fexReadoutFilter:
329 topSeq = cfg.getSequence(
"AthAlgEvtSeq")
330 algSeq = cfg.getSequence(mainSeq)
331 mainSeq =
"New" + mainSeq
333 topSeq.Members = [topSeq.Members[0],CompFactory.AthSequencer(mainSeq),topSeq.Members[-1]]
334 cfg.addEventAlgo(CompFactory.L1IDFilterAlgorithm(),sequenceName=mainSeq)
335 cfg.getSequence(mainSeq).Members += [algSeq]
337 if args.evtNumber
is not None:
338 print(
"filtering events",args.evtNumber)
340 topSeq = cfg.getSequence(
"AthAlgEvtSeq")
341 algSeq = cfg.getSequence(mainSeq)
342 mainSeq =
"New" + mainSeq
344 topSeq.Members = [topSeq.Members[0],CompFactory.AthSequencer(mainSeq),topSeq.Members[-1]]
345 cfg.addEventAlgo(CompFactory.EventNumberFilterAlgorithm(
"EvtNumberFilter",EventNumbers=args.evtNumber),sequenceName=mainSeq)
346 cfg.getSequence(mainSeq).Members += [algSeq]
349 from PerfMonComps.PerfMonCompsConfig
import PerfMonMTSvcCfg
352 from AthenaConfiguration.Utils
import setupLoggingLevels
355 if cfg.getService(
"AthenaEventLoopMgr"): cfg.getService(
"AthenaEventLoopMgr").IntervalInSeconds = 30
357 if type(args.dbOverrides)==list:
358 from IOVDbSvc.IOVDbSvcConfig
import addOverride
362 for override
in args.dbOverrides:
364 folderName,dbPath = override.split(
"=",1)
365 if folderName ==
"":
raise ValueError(
"Cannot parse dbOverride: " + override)
366 if ";dbname=" not in dbPath: dbPath +=
";dbname=CONDBR2"
367 dbPath,dbInst = dbPath.split(
";dbname=")
368 if not os.path.exists(dbPath):
raise ValueError(
"dbOverride file doesn't exist: " + dbPath)
369 if folderName[0] !=
"/": folderName =
"/TRIGGER/L1Calo/V1/Calibration/" + folderName
370 print(
"Overriding COOL folder:",folderName,dbPath,dbInst)
371 cfg.merge(
addOverride(flags,folder=folderName,db=f
"sqlite://;schema={dbPath};dbname={dbInst}",tag=
""))
375 if flags.Output.AODFileName !=
"":
377 if edmName.endswith(
"Sim")
and flags.Input.Format == Format.POOL: edmName = edmName.replace(
"Sim",
"_ReSim")
378 auxType = edmType.replace(
'Container',
'AuxContainer')
379 return [f
'{edmType}#{edmName}', f
'{auxType}#{edmName}Aux.']
383 if flags.Trigger.L1.doeFex:
384 outputEDM +=
addEDM(
'xAOD::eFexEMRoIContainer' ,
"L1_eEMRoI")
385 outputEDM +=
addEDM(
'xAOD::eFexEMRoIContainer' ,
"L1_eEMRoISim")
386 outputEDM +=
addEDM(
'xAOD::eFexEMRoIContainer' ,
"L1_eEMxRoI")
387 outputEDM +=
addEDM(
'xAOD::eFexEMRoIContainer' ,
"L1_eEMxRoISim")
389 outputEDM +=
addEDM(
'xAOD::eFexTauRoIContainer' ,
"L1_eTauRoI")
390 outputEDM +=
addEDM(
'xAOD::eFexTauRoIContainer' ,
"L1_eTauRoISim")
391 outputEDM +=
addEDM(
'xAOD::eFexTauRoIContainer' ,
"L1_eTauxRoI")
392 outputEDM +=
addEDM(
'xAOD::eFexTauRoIContainer' ,
"L1_eTauxRoISim")
394 if flags.Trigger.L1.dojFex:
395 outputEDM +=
addEDM(
'xAOD::jFexTowerContainer' ,
"L1_jFexDataTowers")
396 outputEDM +=
addEDM(
'xAOD::jFexTowerContainer' ,
"L1_jFexEmulatedTowers")
397 outputEDM +=
addEDM(
'xAOD::jFexSRJetRoIContainer',
'L1_jFexSRJetRoISim')
398 outputEDM +=
addEDM(
'xAOD::jFexLRJetRoIContainer',
'L1_jFexLRJetRoISim')
399 outputEDM +=
addEDM(
'xAOD::jFexTauRoIContainer' ,
'L1_jFexTauRoISim' )
400 outputEDM +=
addEDM(
'xAOD::jFexFwdElRoIContainer',
'L1_jFexFwdElRoISim')
401 outputEDM +=
addEDM(
'xAOD::jFexSumETRoIContainer',
'L1_jFexSumETRoISim')
402 outputEDM +=
addEDM(
'xAOD::jFexMETRoIContainer' ,
'L1_jFexMETRoISim' )
403 outputEDM +=
addEDM(
'xAOD::jFexSRJetRoIContainer',
'L1_jFexSRJetRoI')
404 outputEDM +=
addEDM(
'xAOD::jFexLRJetRoIContainer',
'L1_jFexLRJetRoI')
405 outputEDM +=
addEDM(
'xAOD::jFexTauRoIContainer' ,
'L1_jFexTauRoI' )
406 outputEDM +=
addEDM(
'xAOD::jFexFwdElRoIContainer',
'L1_jFexFwdElRoI')
407 outputEDM +=
addEDM(
'xAOD::jFexSumETRoIContainer',
'L1_jFexSumETRoI')
408 outputEDM +=
addEDM(
'xAOD::jFexMETRoIContainer' ,
'L1_jFexMETRoI' )
410 outputEDM +=
addEDM(
'xAOD::jFexSRJetRoIContainer',
'L1_jFexSRJetxRoI')
411 outputEDM +=
addEDM(
'xAOD::jFexLRJetRoIContainer',
'L1_jFexLRJetxRoI')
412 outputEDM +=
addEDM(
'xAOD::jFexTauRoIContainer' ,
'L1_jFexTauxRoI' )
413 outputEDM +=
addEDM(
'xAOD::jFexFwdElRoIContainer',
'L1_jFexFwdElxRoI')
414 outputEDM +=
addEDM(
'xAOD::jFexSumETRoIContainer',
'L1_jFexSumETxRoI')
415 outputEDM +=
addEDM(
'xAOD::jFexMETRoIContainer' ,
'L1_jFexMETxRoI' )
417 if flags.Trigger.L1.dogFex:
418 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMETComponentsJwoj')
419 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMETComponentsJwojSim')
420 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMHTComponentsJwoj')
421 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMHTComponentsJwojSim')
422 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMSTComponentsJwoj')
423 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gMSTComponentsJwojSim')
424 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gScalarEJwoj')
425 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gScalarEJwojSim')
426 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gScalarENoiseCutSim')
427 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer',
'L1_gScalarERmsSim')
429 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexLRJetRoI')
430 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexLRJetRoISim')
431 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexSRJetRoI')
432 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexSRJetRoISim')
433 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexRhoRoI')
434 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer',
'L1_gFexRhoRoISim')
438 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
440 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
444 if "MaskedSCCondAlg" in cfg.getCondAlgos(): cfg.getCondAlgo(
"MaskedSCCondAlg").ReloadEveryEvent=flags.Common.isOnline
449 for conf
in args.postConfig:
450 compName,propNameAndVal=conf.split(
".",1)
451 propName,propVal=propNameAndVal.split(
"=",1)
453 for comp
in [c
for c
in cfg._allComponents()]+cfg.getServices():
454 if comp.name==compName:
456 exec(f
"comp.{propNameAndVal}")
459 raise ValueError(f
"postConfig {conf} had no effect ... typo?")
463 if flags.Exec.MaxEvents==0: cfg.printConfig(summariseProps=
True)
464 print(
"Configured Services:",*[svc.name
for svc
in cfg.getServices()])
468 if flags.Exec.MaxEvents==1:
470 cfg.getService(
"StoreGateSvc").Dump=
True
471 cfg.getService(
"DetectorStore").Dump=
True
474 if cfg.getService(
"StoreGateSvc").Dump:
475 cfg.getService(
"StoreGateSvc").OutputLevel=3
476 if cfg.getService(
"DetectorStore").Dump:
477 cfg.getService(
"DetectorStore").OutputLevel=3
479 if flags.Exec.MaxEvents==0:
483 from TrigT1CaloMonitoring.LVL1CaloMonitoringConfig
import L1CaloMonitorCfgHelper
484 L1CaloMonitorCfgHelper.printHanConfig()
487 if cfg.run().isFailure():