435 '''Function to call l1calo DQ monitoring algorithms'''
436 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
437 from AthenaConfiguration.Enums import Format
438 import logging
439
440
441 local_logger = logging.getLogger('AthenaMonitoringCfg')
442 info = local_logger.info
443 info('In LVL1CaloMonitoringConfig')
444
445 result = ComponentAccumulator()
446
447
448 if not flags.Trigger.Online.isPartition:
449 if not flags.DQ.triggerDataAvailable:
450 return result
451
452 isData = not flags.Input.isMC
453
454
455 validation=flags.DQ.Steering.LVL1Calo.doValidation
456
457
458
459 if not validation and isData and flags.DQ.Environment not in ('tier0Raw', 'AOD'):
460
461 from TrigT1CaloMonitoring.PprMonitorAlgorithm import PprMonitoringConfig
462 from TrigT1CaloMonitoring.JepJemMonitorAlgorithm import JepJemMonitoringConfig
463
464
465 from AthenaConfiguration.AutoConfigFlags import GetFileMD
466 md = GetFileMD(flags.Input.Files)
467 inputContainsRun3FormatConfigMetadata = ("metadata_items" in md and any(('TriggerMenuJson' in key) for key in md["metadata_items"].keys()))
468 result.merge(PprMonitoringConfig(flags))
469 result.merge(JepJemMonitoringConfig(flags))
470 if flags.Input.Format is not Format.POOL or inputContainsRun3FormatConfigMetadata:
471
472
473
474
475 import eformat
476 detMask=eformat.helper.DetectorMask(f'{md.get("detectorMask",[0x0])[0]:032x}')
477 hasCPM = detMask.is_set(eformat.helper.SubDetector.TDAQ_CALO_CLUSTER_PROC_DAQ)
478 hasJEP = detMask.is_set(eformat.helper.SubDetector.TDAQ_CALO_JET_PROC_DAQ)
479
480 if hasCPM:
481 from TrigT1CaloMonitoring.CpmMonitorAlgorithm import CpmMonitoringConfig
482 from TrigT1CaloMonitoring.CpmSimMonitorAlgorithm import CpmSimMonitoringConfig
483 result.merge(CpmMonitoringConfig(flags))
484 result.merge(CpmSimMonitoringConfig(flags))
485
486 if hasJEP:
487 from TrigT1CaloMonitoring.JepCmxMonitorAlgorithm import JepCmxMonitoringConfig
488 result.merge(JepCmxMonitoringConfig(flags))
489
490 from TrigT1CaloMonitoring.OverviewMonitorAlgorithm import OverviewMonitoringConfig
491 from TrigT1CaloMonitoring.PPMSimBSMonitorAlgorithm import PPMSimBSMonitoringConfig
492 result.merge(PPMSimBSMonitoringConfig(flags))
493 result.merge(OverviewMonitoringConfig(flags))
494
495 if not hasCPM:
496
497 OverviewMonAlg = result.getEventAlgo("OverviewMonAlg")
498 OverviewMonAlg.CPMErrorLocation = ""
499 OverviewMonAlg.CPMMismatchLocation = ""
500
501 if flags.Input.TriggerStream == "physics_Mistimed":
502 from TrigT1CaloMonitoring.MistimedStreamMonitorAlgorithm import MistimedStreamMonitorConfig
503 result.merge(MistimedStreamMonitorConfig(flags))
504
505
506 if flags.Input.Format is Format.BS:
507 from TrigT1CaloByteStream.LVL1CaloRun2ByteStreamConfig import LVL1CaloRun2ReadBSCfg
508 result.merge(LVL1CaloRun2ReadBSCfg(flags))
509
510
511 if flags.Trigger.enableL1CaloPhase1 and flags.Input.Format is not Format.POOL:
512
513
514 from L1CaloFEXSim.L1CaloFEXSimCfg import L1CaloFEXSimCfg
516
517
518 if flags.Trigger.L1.doeFex:
519 from TrigT1CaloMonitoring.EfexInputMonitorAlgorithm import EfexInputMonitoringConfig
520 result.merge(EfexInputMonitoringConfig(flags))
521
522
523 from TrigT1CaloMonitoring.EfexSimMonitorAlgorithm import EfexSimMonitoringConfig
524 result.merge(EfexSimMonitoringConfig(flags))
525
526
527 if flags.Trigger.L1.dogFex:
528
529 from TrigT1CaloMonitoring.GfexInputMonitorAlgorithm import GfexInputMonitoringConfig
530 result.merge(GfexInputMonitoringConfig(flags))
531
532 from TrigT1CaloMonitoring.GfexSimMonitorAlgorithm import GfexSimMonitoringConfig
533 result.merge(GfexSimMonitoringConfig(flags))
534
535
536 if flags.Trigger.L1.dojFex:
537
538 from TrigT1CaloMonitoring.JfexInputMonitorAlgorithm import JfexInputMonitoringConfig
539 result.merge(JfexInputMonitoringConfig(flags))
540
541
542 from TrigT1CaloMonitoring.JfexSimMonitorAlgorithm import JfexSimMonitoringConfig
543 JfexSimMonitoring = JfexSimMonitoringConfig(flags)
544 result.merge(JfexSimMonitoring)
545
546 if flags.Trigger.L1.doTopo and isData:
547
548 from L1TopoSimulation.L1TopoSimulationConfig import L1TopoSimulationCfg
549 result.merge(L1TopoSimulationCfg(flags,readMuCTPI=True,doMonitoring=False, useMuonDecoder=True, writeMuonRoIs = False))
550
551 from L1TopoOnlineMonitoring.L1TopoOnlineMonitoringConfig import Phase1TopoMonitoringCfg
552 result.merge(Phase1TopoMonitoringCfg(flags))
553
554
555 if validation or (isData and flags.DQ.Environment not in ('tier0Raw', 'AOD')):
556
557 if validation:
558
559 from TrigT1CaloMonitoring.L1CaloLegacyEDMMonitorAlgorithm import L1CaloLegacyEDMMonitoringConfig
560 result.merge(L1CaloLegacyEDMMonitoringConfig(flags))
561
562
563 if flags.Trigger.L1.doeFex:
564 from TrigT1CaloMonitoring.EfexMonitorAlgorithm import EfexMonitoringConfig
565 result.merge(EfexMonitoringConfig(flags))
566 from TrigT1CaloMonitoring.EfexMonitorAlgorithm import EfexMonitoringHistConfig
567 result.merge(EfexMonitoringHistConfig(flags,result.getEventAlgo('EfexMonAlg')))
568
569
570 if flags.Trigger.L1.dogFex:
571 from TrigT1CaloMonitoring.GfexMonitorAlgorithm import GfexMonitoringConfig
572 result.merge(GfexMonitoringConfig(flags))
573
574
575 if flags.Trigger.L1.dojFex:
576 from TrigT1CaloMonitoring.JfexMonitorAlgorithm import JfexMonitoringConfig
577 result.merge(JfexMonitoringConfig(flags))
578
579
580 if flags.Trigger.L1.dojFex or flags.Trigger.L1.dogFex:
581 from TrigT1CaloMonitoring.JetEfficiencyMonitorAlgorithm import JetEfficiencyMonitoringConfig
582 result.merge(JetEfficiencyMonitoringConfig(flags))
583
584 result.printConfig( withDetails= True )
585
586 return result
587