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