Skip to content
Snippets Groups Projects
ItemDef.py 165 KiB
Newer Older
#!/usr/bin/env python
# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
#
# Disable flake8 checking due to the use of 'exec':
# flake8: noqa
#

from collections import defaultdict as ddict
import re, sys
import traceback

from ..Base.L1MenuFlags import L1MenuFlags
from AthenaCommon.Logging import logging
log = logging.getLogger(__name__)

# The trigger types
from ..Base.Limits import Limits
from ..Base.Logic import Logic, Not
from ..Base.Items import MenuItem, meta_d
from ..Base.Thresholds import TopoThreshold
from ..Base.CTPCondition import ThrCondition, InternalTrigger  # noqa: F401
from .TriggerTypeDef import TT
from .ItemDef_run4 import ItemDef_run4
from future.utils import with_metaclass



class ItemDef:
    """
    Defines any items that might be needed in Run2
    """

    otherTopoNames = ddict(list)

    @staticmethod
        class d(with_metaclass(meta_d)): pass
        # ... and make them accessible by their name
        for thr in tc.getDefinedThresholds():
            setattr(d, thr.getVarName(), ThrCondition(thr))
            if isinstance(thr, TopoThreshold):
                ItemDef.otherTopoNames[thr.getVarName().split('_',1)[-1]].append( thr.getVarName() )
        # InternalTriggers
        for i in range( Limits.NumBunchgroups ):
            setattr (d, "BGRP%i"%i,  InternalTrigger('BGRP%i'%i))

        for i in range( Limits.NumRndmTriggers ):
            setattr (d, "RNDM%i"%i, InternalTrigger('RNDM%i'%i))
        return d

    @staticmethod
    def registerItems(tc, menuName):
        """Register L1 items for further use"""

        # dear Menu Experts, please note that it is only necessary to
        # check the menu name if a certain item needs to be defined
        # differently in different menus

        # define local flag for menu version
        isV8 = '_v8' in menuName or 'run3_v1' in menuName
        isHIV5 = 'HI_v5' in menuName
        isPhaseII = '_PhaseII' in menuName

        d = ItemDef.threshold_conditions(tc)

        # Setting up bunch group and BPTX conditions
        physcond            = d.BGRP0 & d.BGRP1
        calibcond           = d.BGRP0 & d.BGRP2
        cosmiccond          = d.BGRP0 & d.BGRP3
        unpaired_isocond    = d.BGRP0 & d.BGRP4 # unpaired isolated (satellite bunches)
        unpaired_nonisocond = d.BGRP0 & d.BGRP5 # unpaired non-isolated (parasitic bunches)
        firstempty          = d.BGRP0 & d.BGRP6
        bgrp7cond           = d.BGRP0 & d.BGRP7 # No unpaired anymore
        bgrp9cond           = d.BGRP0 & d.BGRP9
        bgrp11cond          = d.BGRP0 & d.BGRP11
        bgrp12cond          = d.BGRP0 & d.BGRP12
        bgrp13cond          = d.BGRP0 & d.BGRP13 #UNPAIREDB1
        bgrp14cond          = d.BGRP0 & d.BGRP14 #UNPAIREDB2
        bgrp10cond          = d.BGRP0 & d.BGRP10
        firstintrain        = d.BGRP0 & d.BGRP8
        physcond_or_unpaired_isocond    = d.BGRP0 & (d.BGRP1 | d.BGRP4)
        # partition 1
        #bgrpcond1           = d.BGRP0 & d.BGRP11
        #calibcond1          = d.BGRP0 & d.BGRP12
        #bgrpcond2           = d.BGRP0 & d.BGRP14


        MenuItem.currentPartition = 1

        # ZDC

        # old Run-3 configurations 
        #ZDC_A_C = d.ZDC_A & d.ZDC_C
        #VZDC_A_C = Not(d.ZDC_A) & Not(d.ZDC_C)

        # new ZDC configuration for Run-3 (ATR-24734)
        ZDC_comb0 = Not(d.ZDC_2) & Not(d.ZDC_1) & Not(d.ZDC_0) # this means no signal! to be used ONLY in add with other inputs
        ZDC_comb1 = Not(d.ZDC_2) & Not(d.ZDC_1) & d.ZDC_0
        ZDC_comb2 = Not(d.ZDC_2) & d.ZDC_1      & Not(d.ZDC_0)
        ZDC_comb3 = Not(d.ZDC_2) & d.ZDC_1      & d.ZDC_0
        ZDC_comb4 = d.ZDC_2      & Not(d.ZDC_1) & Not(d.ZDC_0)
        ZDC_comb5 = d.ZDC_2      & Not(d.ZDC_1) & d.ZDC_0
        ZDC_comb6 = d.ZDC_2      & d.ZDC_1      & Not(d.ZDC_0)
        ZDC_comb7 = d.ZDC_2      & d.ZDC_1      & d.ZDC_0

        # combined signals for heavy ion runs
        PHYS_1TO4ZDC_A_VZDC_C      = ZDC_comb4
        PHYS_VZDC_A_1TO4ZDC_C      = ZDC_comb6
        PHYS_1TO4ZDC_A_1TO4ZDC_C   = ZDC_comb1
        PHYS_5ZDC_A_VZDC_C         = ZDC_comb5
        PHYS_VZDC_A_5ZDC_C         = ZDC_comb7
        PHYS_ZDC_1TO4XOR5          = ZDC_comb2
        PHYS_5ZDC_A_5ZDC_C         = ZDC_comb3

        PHYS_ZDC_A_VZDC_C          = d.ZDC_2 & Not(d.ZDC_1)
        PHYS_VZDC_A_ZDC_C          = d.ZDC_2 & d.ZDC_1
        PHYS_ZDC_XOR4              = d.ZDC_2 & Not(d.ZDC_0)
        PHYS_ZDC_5XOR              = d.ZDC_2 & d.ZDC_0
        PHYS_1ZDC_NZDC             = Not(d.ZDC_2) & ( d.ZDC_1 | d.ZDC_0 ) & Not( d.ZDC_1 & d.ZDC_0)
        #ATR-26984 refine ZDC_A and ZDC_C logic
        ZDC_A     = ( Not(d.ZDC_2) & ( d.ZDC_1 | d.ZDC_0 ) ) | ( d.ZDC_2 & Not(d.ZDC_1) )
        ZDC_C     = d.ZDC_1 | (d.ZDC_0 & Not(d.ZDC_2) )
        ZDC_A_C   = Not(d.ZDC_2) & ( d.ZDC_1 | d.ZDC_0 )
        ZDC_AND   = ZDC_A_C
        VZDC_AORC = Not(ZDC_A) | Not(ZDC_C)
        # ZDC configuration for LHCf+ZDC special run in Sep. 2022
        # rename existing ZDC configuration to match request in ATR-26051
        ZDC_VETO          = ZDC_comb0
        ZDC_XOR_E1_E3     = ZDC_comb1
        ZDC_XOR_E2        = ZDC_comb2
        ZDC_E1_AND_E1     = ZDC_comb3
        ZDC_E1_AND_E2ORE3 = ZDC_comb4
        ZDC_E2_AND_E2     = ZDC_comb5
        ZDC_E2_AND_E3     = ZDC_comb6
        ZDC_E3_AND_E3     = ZDC_comb7
        # (additional) combined ZDC signals for LHCf+ZDC special run
        ZDC_OR = Not(ZDC_VETO)
        ZDC_A_AND_C = d.ZDC_2 | (d.ZDC_1 & d.ZDC_0)
        MenuItem('L1_EM3'       ).setLogic( d.EM3        & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM12'      ).setLogic( d.EM12       & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15'      ).setLogic( d.EM15       & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM10VH'    ).setLogic( d.EM10VH     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM20VH'    ).setLogic( d.EM20VH     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM18VHI'   ).setLogic( d.EM18VHI    & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI'   ).setLogic( d.EM15VHI    & physcond).setTriggerType( TT.calo )
        #heavy-ions ATR-27791
        MenuItem('L1_EM10'      ).setLogic( d.EM10       & physcond).setTriggerType( TT.calo )
        MenuItem('L1_2EM15'      ).setLogic( d.EM15.x(2)       & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM1'      ).setLogic( d.eEM1       & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM2'      ).setLogic( d.eEM2       & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM5'      ).setLogic( d.eEM5       & physcond).setTriggerType( TT.calo )
Daniele Zanzi's avatar
Daniele Zanzi committed
        MenuItem('L1_eEM7'      ).setLogic( d.eEM7       & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM9'      ).setLogic( d.eEM9       & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM10L'    ).setLogic( d.eEM10L     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM12'     ).setLogic( d.eEM12      & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM12L'    ).setLogic( d.eEM12L     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM15'     ).setLogic( d.eEM15      & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM18'     ).setLogic( d.eEM18      & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM18L'    ).setLogic( d.eEM18L     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM18M'    ).setLogic( d.eEM18M     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM22M'    ).setLogic( d.eEM22M     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM24L'    ).setLogic( d.eEM24L     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM24VM'   ).setLogic( d.eEM24VM    & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM26'     ).setLogic( d.eEM26      & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM26L'    ).setLogic( d.eEM26L     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM26M'    ).setLogic( d.eEM26M     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM26T'    ).setLogic( d.eEM26T     & physcond).setTriggerType( TT.calo ) 
        MenuItem('L1_eEM28M'    ).setLogic( d.eEM28M     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM40L'    ).setLogic( d.eEM40L     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM5_EMPTY'        ).setLogic(d.eEM5 & cosmiccond      ).setTriggerType( TT.calo )
        MenuItem('L1_eEM9_EMPTY'        ).setLogic(d.eEM9 & cosmiccond      ).setTriggerType( TT.calo )
        MenuItem('L1_2eEM9_EMPTY'       ).setLogic(d.eEM9.x(2) & cosmiccond ).setTriggerType( TT.calo )
        MenuItem('L1_eEM9_UNPAIRED_ISO' ).setLogic(d.eEM9 & unpaired_isocond).setTriggerType( TT.calo )
        MenuItem('L1_eEM15_EMPTY'       ).setLogic(d.eEM15 & cosmiccond     ).setTriggerType( TT.calo )
        MenuItem('L1_eEM22A'    ).setLogic( d.eEM22A     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM22C'    ).setLogic( d.eEM22C     & physcond).setTriggerType( TT.calo )

        MenuItem('L1_2eEM12').setLogic(d.eEM12.x(2) & physcond).setTriggerType(TT.calo) #heavy ions, ATR-26333
        MenuItem('L1_2eEM12L').setLogic(d.eEM12L.x(2) & physcond).setTriggerType(TT.calo) #heavy ions, ATR-26333
        MenuItem('L1_2eEM18').setLogic(d.eEM18.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM18L').setLogic(d.eEM18L.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM18M').setLogic(d.eEM18M.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM24L').setLogic(d.eEM24L.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3eEM12L').setLogic(d.eEM12L.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM24L_3eEM12L').setLogic(d.eEM24L & d.eEM12L.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM40L_2eEM18L').setLogic(d.eEM40L & d.eEM18L.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM9').setLogic(d.eEM9.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J15p23ETA49' ).setLogic( d.J1523ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J15p24ETA49' ).setLogic( d.J1524ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J15p31ETA49' ).setLogic( d.J1531ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J20p28ETA31' ).setLogic( d.J2028ETA31 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J20p31ETA49' ).setLogic( d.J2031ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J30p31ETA49' ).setLogic( d.J3031ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J40p0ETA25'  ).setLogic( d.J400ETA25  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J50p31ETA49' ).setLogic( d.J5031ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J70p31ETA49' ).setLogic( d.J7031ETA49 & physcond).setTriggerType(TT.calo)

        MenuItem('L1_J15p0ETA25'  ).setLogic( d.J150ETA25 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J20p0ETA28'  ).setLogic( d.J200ETA28 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J25p0ETA23'  ).setLogic( d.J250ETA23 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J35p0ETA23'  ).setLogic( d.J350ETA23 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J20p0ETA49'  ).setLogic( d.J200ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J30p0ETA49'  ).setLogic( d.J300ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J25p0ETA23_2J15p31ETA49'  ).setLogic( d.J250ETA23 & d.J1531ETA49.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_EM3_EMPTY'          ).setLogic(d.EM3 & cosmiccond).setTriggerType( TT.calo )
        MenuItem('L1_EM7_EMPTY'          ).setLogic(d.EM7 & cosmiccond).setTriggerType( TT.calo )
        MenuItem('L1_EM7_FIRSTEMPTY'     ).setLogic(d.EM7 & firstempty).setTriggerType( TT.calo )
        MenuItem('L1_eEM9_FIRSTEMPTY'     ).setLogic(d.eEM9 & firstempty).setTriggerType( TT.calo )
        MenuItem('L1_J10_VTE100'         ).setLogic( d.J10  & Not(d.TE100) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_J10_VTE200'         ).setLogic( d.J10  & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_J10_VTE300'         ).setLogic( d.J10  & Not(d.TE300) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_J12_VTE100'         ).setLogic( d.J12  & Not(d.TE100) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_J12_VTE200'         ).setLogic( d.J12  & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        # L1 items for IDCalibPEB,  IDCalib in heavy ion collisions, ATR-26405
        MenuItem('L1_J100_VTE200'        ).setLogic( d.J100 & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_J30_VTE200'         ).setLogic( d.J30  & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_XE35_VTE200'        ).setLogic( d.XE35 & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_XE50_VTE200'        ).setLogic( d.XE50 & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_VTE200'             ).setLogic( Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE20_VTE200'        ).setLogic( d.TE20 & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE50_VTE200'        ).setLogic( d.TE50 & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE5_VTE200'         ).setLogic( d.TE5  & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE5_VTE100'         ).setLogic( d.TE5  & Not(d.TE100) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE5_VTE50'          ).setLogic( d.TE5  & Not(d.TE50)  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE5_VTE20'          ).setLogic( d.TE5  & Not(d.TE20)  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE4_VTE200'         ).setLogic( d.TE4  & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE4_VTE100'         ).setLogic( d.TE4  & Not(d.TE100) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE4_VTE50'          ).setLogic( d.TE4  & Not(d.TE50)  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE3_VTE50'          ).setLogic( d.TE3  & Not(d.TE50)  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TE3_VTE200'         ).setLogic( d.TE3  & Not(d.TE200)  & physcond).setTriggerType( TT.calo )

        MenuItem('L1_TE4_VTE200_EMPTY'   ).setLogic( d.TE4  & Not(d.TE200) & cosmiccond).setTriggerType( TT.calo )
        MenuItem('L1_TE5_VTE200_EMPTY'   ).setLogic( d.TE5  & Not(d.TE200) & cosmiccond).setTriggerType( TT.calo )
        #HI phase-1
        # additional L1_GAP items defined using jTEFWDA or JTEFWDC

        GAPA = Not(d.jTEFWDA5)
        GAPC = Not(d.jTEFWDC5)
        GAPAC = Not(d.jTEFWDA5) & Not(d.jTEFWDC5)

        MenuItem('L1_GAP_A').setLogic( GAPA & physcond).setTriggerType(TT.calo)
        MenuItem('L1_GAP_C').setLogic( GAPC & physcond).setTriggerType(TT.calo)
        MenuItem('L1_GAP_AANDC').setLogic( GAPAC  & physcond).setTriggerType(TT.calo)

        MenuItem('L1_eEM1_VjTE200').setLogic( d.eEM1      & Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM1_jTE3_VjTE200').setLogic( d.eEM1 & d.jTE3 &    Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM1_jTE3_VjTE200_EMPTY').setLogic( d.eEM1 & d.jTE3   & Not(d.jTE200) & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_eEM1_jTE4_VjTE200').setLogic( d.eEM1 & d.jTE4 &    Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM1_jTE4_VjTE200_GAP_AANDC').setLogic( d.eEM1 & d.jTE4 &    Not(d.jTE200) & GAPAC & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM1_jTE4_VjTE200_EMPTY').setLogic( d.eEM1 & d.jTE4   & Not(d.jTE200) & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_eEM2_VjTE200').setLogic( d.eEM2      & Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM2_jTE3_VjTE200').setLogic( d.eEM2 & d.jTE3    & Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM2_jTE4_VjTE200').setLogic( d.eEM2 & d.jTE4    & Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM2_jTE4_VjTE200_GAP_AANDC').setLogic( d.eEM2 & d.jTE4    & Not(d.jTE200) & GAPAC  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM5_VjTE200').setLogic( d.eEM5      & Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM5_VjTE200_GAP_AANDC').setLogic( d.eEM5      & Not(d.jTE200) & GAPAC & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM1_VjTE200').setLogic( d.eEM1.x(2)      & Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM2_VjTE200').setLogic( d.eEM2.x(2)      & Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM1_VjTE200_EMPTY').setLogic( d.eEM1.x(2)      & Not(d.jTE200) & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM1_VjTE200_UNPAIRED_ISO').setLogic( d.eEM1.x(2)      & Not(d.jTE200) & unpaired_isocond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM1_VjTE200_UNPAIRED_NONISO').setLogic( d.eEM1.x(2)      & Not(d.jTE200) & unpaired_nonisocond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM1_VjTE200_GAP_AANDC').setLogic( d.eEM1.x(2)      & Not(d.jTE200) & GAPAC  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM9_VjTE200').setLogic( d.eEM9      & Not(d.jTE200) & physcond).setTriggerType(TT.calo)
        #mixed items: eEM + legacy TE (ATR-22067), HI run 2023
        MenuItem('L1_eEM1_TE4_VTE200').setLogic( d.eEM1 & d.TE4  &   Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM2_TE4_VTE200').setLogic( d.eEM2 & d.TE4  &   Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM1_TE4_VTE200_EMPTY').setLogic( d.eEM1 & d.TE4   & Not(d.TE200) & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_eEM1_VTE200').setLogic( d.eEM1      & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM1_VTE200').setLogic( d.eEM1.x(2)      & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2eEM2_VTE200').setLogic( d.eEM2.x(2)      & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM1_VZDC_A_VZDC_C_VTE100' ).setLogic( d.eEM1 & PHYS_VZDC_A_VZDC_C & Not(d.TE100)  & physcond)
        MenuItem('L1_eEM1_ZDC_XOR4_VTE100' ).setLogic( d.eEM1 & PHYS_ZDC_XOR4 & Not(d.TE100)   & physcond)
        MenuItem('L1_eEM2_VZDC_A_VZDC_C_VTE100' ).setLogic( d.eEM2 & PHYS_VZDC_A_VZDC_C & Not(d.TE100)  & physcond)
        MenuItem('L1_eEM2_ZDC_XOR4_VTE100' ).setLogic( d.eEM2 & PHYS_ZDC_XOR4 & Not(d.TE100) &  physcond)
        MenuItem('L1_eEM9_VTE200').setLogic( d.eEM9      & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_VjTE200_GAP_A'         ).setLogic(  Not(d.jTE200) & GAPA  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_VjTE200_GAP_C'         ).setLogic(  Not(d.jTE200) & GAPC  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_jTE3_VjTE200_GAP_A'         ).setLogic( d.jTE3  & Not(d.jTE200) & GAPA  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_jTE3_VjTE200_GAP_C'         ).setLogic( d.jTE3  & Not(d.jTE200) & GAPC  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_jTE5_VjTE200'         ).setLogic( d.jTE5  & Not(d.jTE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_jTE5_VjTE200_GAP_A'         ).setLogic( d.jTE5  & Not(d.jTE200) & GAPA  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_jTE5_VjTE200_GAP_C'         ).setLogic( d.jTE5  & Not(d.jTE200) & GAPC  & physcond).setTriggerType( TT.calo )

        MenuItem('L1_NSW_MONITOR').setLogic(d.NSWMon & physcond ).setTriggerType(TT.nsw)

        # MUON ctpid=[0x20;0x2f]
        # RUn3 thresholds
        MenuItem('L1_MU3V'       ).setLogic( d.MU3V       & physcond).setTriggerType(TT.muon) # ~ Run2 MU4 eff
        MenuItem('L1_MU5VF'      ).setLogic( d.MU5VF      & physcond).setTriggerType(TT.muon) # ~ Run2 MU6
        MenuItem('L1_MU8F'       ).setLogic( d.MU8F       & physcond).setTriggerType(TT.muon) # ~ Run2 MU10
        MenuItem('L1_MU8VF'      ).setLogic( d.MU8VF      & physcond).setTriggerType(TT.muon) # ~ Run2 MU11
        MenuItem('L1_MU14FCH'    ).setLogic( d.MU14FCH    & physcond).setTriggerType(TT.muon) # ~ Run2 MU20
        MenuItem('L1_MU14FCHR'   ).setLogic( d.MU14FCHR   & physcond).setTriggerType(TT.muon) # ~ Run2 MU21

        MenuItem('L1_MU3VF'      ).setLogic( d.MU3VF      & physcond).setTriggerType(TT.muon) # ~ Run2 MU4 rate
        MenuItem('L1_MU8FC'      ).setLogic( d.MU8FC      & physcond).setTriggerType(TT.muon) # Backup MU8F
        MenuItem('L1_MU8VFC'     ).setLogic( d.MU8VFC     & physcond).setTriggerType(TT.muon) # Backup MU8VF
        MenuItem('L1_MU15VFCH'   ).setLogic( d.MU15VFCH   & physcond).setTriggerType(TT.muon) # 

        MenuItem('L1_MU10BOM'    ).setLogic( d.MU10BOM    & physcond).setTriggerType(TT.muon) # Barrel-only close-by muons
        MenuItem('L1_MU20VFC'    ).setLogic( d.MU20VFC    & physcond).setTriggerType(TT.muon) # alignment with toroid off

        MenuItem('L1_MU10BO'     ).setLogic( d.MU10BO     & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU4BOM'     ).setLogic( d.MU4BOM     & physcond).setTriggerType(TT.muon) # Barrel-only close-by muons 
        MenuItem('L1_MU12BOM'    ).setLogic( d.MU12BOM    & physcond).setTriggerType(TT.muon) # Barrel-only close-by muons  

        # test items
        MenuItem('L1_MU3VC'      ).setLogic( d.MU3VC    & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU4BO'      ).setLogic( d.MU4BO    & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3EOF'     ).setLogic( d.MU3EOF   & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU8FH'      ).setLogic( d.MU8FH    & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU8EOF'     ).setLogic( d.MU8EOF   & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU9VF'      ).setLogic( d.MU9VF    & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU9VFC'     ).setLogic( d.MU9VFC   & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU12FCH'    ).setLogic( d.MU12FCH  & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU14EOF'    ).setLogic( d.MU14EOF  & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU15VFCHR'  ).setLogic( d.MU15VFCHR & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU18VFCH'   ).setLogic( d.MU18VFCH & physcond).setTriggerType(TT.muon)

        MenuItem('L1_2MU3V'        ).setLogic( d.MU3V.x(2)             & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU3VF'       ).setLogic( d.MU3VF.x(2)            & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU5VF'       ).setLogic( d.MU5VF.x(2)            & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU8F'        ).setLogic( d.MU8F.x(2)             & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU8VF'       ).setLogic( d.MU8VF.x(2)            & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU14FCH'     ).setLogic( d.MU14FCH.x(2)          & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU5VF_2MU3V'  ).setLogic( d.MU5VF & d.MU3V.x(2)   & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU5VF_2MU3VF' ).setLogic( d.MU5VF & d.MU3VF.x(2)  & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU8F_2MU3V'   ).setLogic( d.MU8F & d.MU3V.x(2)    & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU8F_2MU5VF'  ).setLogic( d.MU8F & d.MU5VF.x(2)   & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU8VF_2MU5VF' ).setLogic( d.MU8VF & d.MU5VF.x(2)  & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU5VF_3MU3V'  ).setLogic( d.MU5VF & d.MU3V.x(3)   & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU5VF_3MU3VF' ).setLogic( d.MU5VF & d.MU3VF.x(3)  & physcond).setTriggerType(TT.muon)
        MenuItem('L1_3MU3V'        ).setLogic( d.MU3V.x(3)             & physcond).setTriggerType(TT.muon)
        MenuItem('L1_3MU3VF'       ).setLogic( d.MU3VF.x(3)            & physcond).setTriggerType(TT.muon)
        MenuItem('L1_3MU5VF'       ).setLogic( d.MU5VF.x(3)            & physcond).setTriggerType(TT.muon)
        MenuItem('L1_4MU3V'        ).setLogic( d.MU3V.x(4)             & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU5VF_3MU3V' ).setLogic( d.MU5VF.x(2) & d.MU3V.x(3)   & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU14FCH_OVERLAY').setLogic( d.MU14FCH.x(2)       & physcond).setTriggerType(TT.zerobs)
        MenuItem('L1_LLPDPHI-jXE40-jJ40').setLogic( d.TOPO_0DPHI10_jXE40delay_jJ40s & physcond)
        MenuItem('L1_MU3V_VTE10' ).setLogic( d.MU3V      & Not(d.TE10) & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU3V_VTE10').setLogic( d.MU3V.x(2) & Not(d.TE10) & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU3V_VTE50').setLogic( d.MU3V.x(2) & Not(d.TE50) & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE10'  ).setLogic( d.MU3V      & d.TE10 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE20'  ).setLogic( d.MU3V      & d.TE20 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE30'  ).setLogic( d.MU3V      & d.TE30 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE40'  ).setLogic( d.MU3V      & d.TE40 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE50'  ).setLogic( d.MU3V      & d.TE50 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE70'  ).setLogic( d.MU3V      & d.TE70 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE90'  ).setLogic( d.MU3V      & d.TE90 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE120' ).setLogic( d.MU3V      & d.TE120 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE160' ).setLogic( d.MU3V      & d.TE160 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE10p24ETA49' ).setLogic( d.MU3V  & d.TE1024ETA49 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE15p24ETA49' ).setLogic( d.MU3V  & d.TE1524ETA49 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE20p24ETA49' ).setLogic( d.MU3V  & d.TE2024ETA49 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE25p24ETA49' ).setLogic( d.MU3V  & d.TE2524ETA49 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE30p24ETA49' ).setLogic( d.MU3V  & d.TE3024ETA49 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE35p24ETA49' ).setLogic( d.MU3V  & d.TE3524ETA49 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_TE40p24ETA49' ).setLogic( d.MU3V  & d.TE4024ETA49 & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_VTE50' ).setLogic( d.MU3V     & Not(d.TE50) & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_VTE200' ).setLogic( d.MU3V    & Not(d.TE200) & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU5VF_VTE50').setLogic( d.MU5VF    & Not(d.TE50) & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_UNPAIRED_ISO'   ).setLogic(d.MU3V  & unpaired_isocond   ).setTriggerType( TT.muon )
        MenuItem('L1_MU3V_UNPAIRED_NONISO').setLogic(d.MU3V  & unpaired_nonisocond).setTriggerType( TT.muon )
        MenuItem('L1_MU3V_EMPTY'          ).setLogic(d.MU3V  & cosmiccond).setTriggerType( TT.muon )
        MenuItem('L1_MU5VF_EMPTY'         ).setLogic(d.MU5VF & cosmiccond).setTriggerType( TT.muon )
        MenuItem('L1_MU3V_FIRSTEMPTY'     ).setLogic(d.MU3V  & firstempty).setTriggerType( TT.muon )
        MenuItem('L1_MU5VF_FIRSTEMPTY'    ).setLogic(d.MU5VF & firstempty).setTriggerType( TT.muon )
        MenuItem('L1_MU8F_EMPTY'          ).setLogic(d.MU8F  & cosmiccond).setTriggerType( TT.muon )
        MenuItem('L1_MU8VF_EMPTY'         ).setLogic(d.MU8VF & cosmiccond).setTriggerType( TT.muon )
        MenuItem('L1_MU14FCH_FIRSTEMPTY'  ).setLogic(d.MU14FCH  & firstempty).setTriggerType(TT.muon)
        MenuItem('L1_MU14FCH_EMPTY'       ).setLogic(d.MU14FCH  & cosmiccond).setTriggerType(TT.muon)
        MenuItem('L1_MU14FCH_UNPAIRED_ISO').setLogic(d.MU14FCH  & unpaired_isocond).setTriggerType(TT.muon)
        MenuItem('L1_MU14FCHR_FIRSTEMPTY' ).setLogic(d.MU14FCHR & firstempty).setTriggerType(TT.muon)
        MenuItem('L1_2MU3V_EMPTY'           ).setLogic(d.MU3V.x(2)  & cosmiccond).setTriggerType( TT.muon )
        MenuItem('L1_2MU5VF_UNPAIRED_ISO'   ).setLogic(d.MU5VF.x(2) & unpaired_isocond).setTriggerType( TT.muon )
        MenuItem('L1_2MU5VF_UNPAIRED_NONISO').setLogic(d.MU5VF.x(2) & unpaired_nonisocond).setTriggerType( TT.muon )
        MenuItem('L1_2MU5VF_EMPTY'          ).setLogic(d.MU5VF.x(2) & cosmiccond).setTriggerType( TT.muon )
        MenuItem('L1_2MU5VF_FIRSTEMPTY'     ).setLogic(d.MU5VF.x(2) & firstempty).setTriggerType( TT.muon )
        # HI - phase-1
        MenuItem('L1_MU3V_VjTE50'  ).setLogic( d.MU3V      & Not(d.jTE50) & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU5VF_VjTE50').setLogic( d.MU5VF    & Not(d.jTE50) & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2MU3V_VjTE50').setLogic( d.MU3V.x(2) & Not(d.jTE50) & physcond).setTriggerType(TT.muon)
        MenuItem('L1_MU3V_VjTE50_GAP_AANDC'  ).setLogic( d.MU3V      &  Not(d.jTE50) & GAPAC  & physcond).setTriggerType(TT.muon)
        

        MenuItem('L1_EM3_MU14FCH'    ).setLogic( d.EM3        & d.MU14FCH  & physcond).setTriggerType(TT.muon)
        MenuItem('L1_2eEM10L_MU8F'   ).setLogic( d.eEM10L.x(2) & d.MU8F     & physcond).setTriggerType(TT.muon)
        MenuItem('L1_eEM18L_MU8F'    ).setLogic( d.eEM18L     & d.MU8F     & physcond).setTriggerType(TT.muon)

        # TAU ctpid=[0x40:0x4f]
        MenuItem('L1_TAU2'  ).setLogic( d.HA2   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU3'  ).setLogic( d.HA3   & physcond).setTriggerType( TT.calo )
        # ATR-19359
        MenuItem('L1_TAU5'  ).setLogic( d.HA5   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_2TAU5' ).setLogic( d.HA5.x(2)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_TAU6'  ).setLogic( d.HA6   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU8'  ).setLogic( d.HA8   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_2TAU8' ).setLogic( d.HA8.x(2)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_TAU12'  ).setLogic( d.HA12  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU12IL').setLogic( d.HA12IL & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU12IM').setLogic( d.HA12IM & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU12IT').setLogic( d.HA12IT & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU12I' ).setLogic( d.HA12I & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU15'  ).setLogic( d.HA15  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20'  ).setLogic( d.HA20  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IL').setLogic( d.HA20IL  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IM').setLogic( d.HA20IM  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IT').setLogic( d.HA20IT  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20A' ).setLogic( d.HA20A  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20C' ).setLogic( d.HA20C  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU25'  ).setLogic( d.HA25  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU25IT').setLogic( d.HA25IT  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU25IM').setLogic( d.HA25IM  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU30'  ).setLogic( d.HA30  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU40'  ).setLogic( d.HA40  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU60'  ).setLogic( d.HA60  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU100' ).setLogic( d.HA100  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU90'  ).setLogic( d.HA90  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU8_UNPAIRED_ISO'   ).setLogic( d.HA8   & unpaired_isocond ).setTriggerType( TT.calo )
        MenuItem('L1_TAU8_UNPAIRED_NONISO').setLogic( d.HA8   & unpaired_nonisocond ).setTriggerType( TT.calo )
        MenuItem('L1_TAU8_EMPTY'          ).setLogic( d.HA8   & cosmiccond ).setTriggerType( TT.calo )
        MenuItem('L1_TAU8_FIRSTEMPTY'     ).setLogic( d.HA8   & firstempty ).setTriggerType( TT.calo )
        MenuItem('L1_TAU12_UNPAIRED_ISO'   ).setLogic( d.HA12   & unpaired_isocond ).setTriggerType( TT.calo )
        MenuItem('L1_TAU12_UNPAIRED_NONISO').setLogic( d.HA12   & unpaired_nonisocond ).setTriggerType( TT.calo )
        MenuItem('L1_TAU12_EMPTY'          ).setLogic( d.HA12  & cosmiccond ).setTriggerType( TT.calo )
        MenuItem('L1_TAU12_FIRSTEMPTY'     ).setLogic( d.HA12   & firstempty ).setTriggerType( TT.calo )
        MenuItem('L1_TAU30_EMPTY'          ).setLogic( d.HA30   & cosmiccond ).setTriggerType( TT.calo )
        MenuItem('L1_TAU30_UNPAIRED_ISO'   ).setLogic( d.HA30  & unpaired_isocond ).setTriggerType( TT.calo )
        MenuItem('L1_TAU40_EMPTY'          ).setLogic( d.HA40   & cosmiccond ).setTriggerType( TT.calo )
        MenuItem('L1_TAU40_UNPAIRED_ISO'   ).setLogic( d.HA40  & unpaired_isocond ).setTriggerType( TT.calo )
        MenuItem('L1_eTAU1'  ).setLogic( d.eTAU1   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU12'  ).setLogic( d.eTAU12   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU20'  ).setLogic( d.eTAU20   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU20L' ).setLogic( d.eTAU20L  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU20M' ).setLogic( d.eTAU20M  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_jTAU1'  ).setLogic( d.jTAU1   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_jTAU20'  ).setLogic( d.jTAU20   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_jTAU30'  ).setLogic( d.jTAU30   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_jTAU30M' ).setLogic( d.jTAU30M  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_cTAU12M' ).setLogic( d.cTAU12M  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_cTAU20M' ).setLogic( d.cTAU20M  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU30'  ).setLogic( d.eTAU30   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_cTAU30M' ).setLogic( d.cTAU30M  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU35'  ).setLogic( d.eTAU35   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_cTAU35M' ).setLogic( d.cTAU35M  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU40HM').setLogic( d.eTAU40HM & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU40HT').setLogic( d.eTAU40HT & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU60HM').setLogic( d.eTAU60HM & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU80HL').setLogic( d.eTAU80HL & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU60HL').setLogic( d.eTAU60HL & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU60'  ).setLogic( d.eTAU60   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU80'  ).setLogic( d.eTAU80   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU140' ).setLogic( d.eTAU140  & physcond).setTriggerType( TT.calo )

        MenuItem('L1_eTAU12_EMPTY').setLogic(d.eTAU12 & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_eTAU12_FIRSTEMPTY').setLogic(d.eTAU12 & firstempty).setTriggerType(TT.calo)
        MenuItem('L1_eTAU12_UNPAIRED_ISO').setLogic(d.eTAU12 & unpaired_isocond).setTriggerType(TT.calo)
        MenuItem('L1_eTAU60_EMPTY').setLogic(d.eTAU60 & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_eTAU60_UNPAIRED_ISO').setLogic(d.eTAU60 & unpaired_isocond).setTriggerType(TT.calo)

        MenuItem('L1_cTAU30M_2cTAU20M').setLogic(d.cTAU30M & d.cTAU20M.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_cTAU35M_2cTAU30M').setLogic(d.cTAU35M & d.cTAU30M.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eTAU80_2eTAU60').setLogic(d.eTAU80 & d.eTAU60.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_cTAU30M_2cTAU20M_4jJ30p0ETA25').setLogic(d.cTAU30M & d.cTAU20M.x(2) & d.jJ300ETA25.x(4) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_cTAU35M_2cTAU30M_2jJ55_3jJ50').setLogic(d.cTAU35M & d.cTAU30M.x(2) & d.jJ55.x(2) & d.jJ50.x(3) & physcond).setTriggerType(TT.calo)
        # ATR-29439
        MenuItem('L1_cTAU30M_2cTAU20M_3jJ30p0ETA25').setLogic(d.cTAU30M & d.cTAU20M.x(2) & d.jJ300ETA25.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2TAU1_VTE50' ).setLogic( d.HA1.x(2)      & Not(d.TE50) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2TAU2_VTE50' ).setLogic( d.HA2.x(2)      & Not(d.TE50) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2TAU3_VTE50' ).setLogic( d.HA3.x(2)      & Not(d.TE50) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2TAU2_VTE100').setLogic( d.HA2.x(2)      & Not(d.TE100) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2TAU3_VTE100').setLogic( d.HA3.x(2)      & Not(d.TE100) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2TAU1_VTE200').setLogic( d.HA1.x(2)      & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2TAU2_VTE200').setLogic( d.HA2.x(2)      & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2TAU3_VTE200').setLogic( d.HA3.x(2)      & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_TAU1_VTE200'    ).setLogic( d.HA1  & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU1_TE3_VTE200').setLogic( d.HA1  & d.TE3    & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_TAU1_TE4_VTE200').setLogic( d.HA1  & d.TE4    & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_TAU2_TE3_VTE200').setLogic( d.HA2  & d.TE3    & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_TAU2_TE4_VTE200').setLogic( d.HA2  & d.TE4    & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_TAU1_TE5_VTE200').setLogic( d.HA1  & d.TE5    & Not(d.TE200) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_TAU1_VTE200_EMPTY'   ).setLogic( d.HA1  & Not(d.TE200) & cosmiccond).setTriggerType( TT.calo )
        MenuItem('L1_TAU1_TE3_VTE200_EMPTY'   ).setLogic( d.HA1 & d.TE3  & Not(d.TE200) & cosmiccond).setTriggerType( TT.calo )
        MenuItem('L1_TAU2_TE3_VTE200_EMPTY'   ).setLogic( d.HA2 & d.TE3 & Not(d.TE200) & cosmiccond).setTriggerType( TT.calo )
        MenuItem('L1_TAU1_TE4_VTE200_EMPTY'   ).setLogic( d.HA1 & d.TE4  & Not(d.TE200) & cosmiccond).setTriggerType( TT.calo )
        MenuItem('L1_TAU2_TE4_VTE200_EMPTY'   ).setLogic( d.HA2 & d.TE4 & Not(d.TE200) & cosmiccond).setTriggerType( TT.calo )
        MenuItem('L1_2TAU1_VTE200_EMPTY').setLogic( d.HA1.x(2)      & Not(d.TE200) & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_2TAU1_VTE200_UNPAIRED_ISO').setLogic( d.HA1.x(2)      & Not(d.TE200) & unpaired_isocond ).setTriggerType(TT.calo)
        MenuItem('L1_2TAU1_VTE200_UNPAIRED_NONISO').setLogic( d.HA1.x(2)      & Not(d.TE200) & unpaired_nonisocond ).setTriggerType(TT.calo)
        MenuItem('L1_TAU8_VTE200'    ).setLogic( d.HA8  & Not(d.TE200) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU8_VTE200_EMPTY'    ).setLogic( d.HA8  & Not(d.TE200) & cosmiccond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20_2TAU12'  ).setLogic( d.HA20 & d.HA12.x(2)  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20_2TAU12I' ).setLogic( d.HA20 & d.HA12I.x(2) &  physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU40_2TAU20IM' ).setLogic( d.HA40 & d.HA20IM.x(2) &  physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IM_2TAU12IM' ).setLogic( d.HA20IM & d.HA12IM.x(2) &  physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12'               ).setLogic( d.EM15VHI & d.HA12.x(2)  	& physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12IL'             ).setLogic( d.EM15VHI & d.HA12IL.x(2)	& physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12IM'             ).setLogic( d.EM15VHI & d.HA12IM.x(2)	& physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_TAU40_2TAU15'         ).setLogic( d.EM15VHI & d.HA40 & d.HA15.x(2)   & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12I_J25_2J15_3J12').setLogic( d.EM15VHI & d.HA12I.x(2)  & d.J25 & d.J15.x(2) & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12IM_J25_3J12'    ).setLogic( d.EM15VHI & d.HA12IM.x(2)  & d.J25 & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12IL_J25_3J12'    ).setLogic( d.EM15VHI & d.HA12IL.x(2)  & d.J25 & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12_J25_3J12'      ).setLogic( d.EM15VHI & d.HA12.x(2)  & d.J25 & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12IM_4J12'        ).setLogic( d.EM15VHI & d.HA12IM.x(2) & d.J12.x(4) & physcond).setTriggerType( TT.calo )
        #Phase-I mixed tau
        MenuItem('L1_eEM18M_2eTAU20M'             ).setLogic( d.eEM18M & d.eTAU20M.x(2)	& physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_eTAU20M'                ).setLogic( d.MU8F   & d.eTAU20M	& physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_cTAU20M'                ).setLogic( d.MU8F   & d.cTAU20M	& physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_eTAU20M_jJ55_2jJ30'     ).setLogic( d.MU8F   & d.eTAU20M      & d.jJ55      & d.jJ30.x(2) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_eTAU20M_3jJ30'          ).setLogic( d.MU8F   & d.eTAU20M	& d.jJ30.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_cTAU20M_3jJ30'          ).setLogic( d.MU8F   & d.eTAU20M	& d.jJ30.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM18M_2eTAU20M_jJ55_3jJ30'  ).setLogic( d.eEM18M & d.eTAU20M.x(2) & d.jJ55      & d.jJ30.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_eTAU30M'                ).setLogic( d.MU8F   & d.eTAU30M      & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_cTAU30M'                ).setLogic( d.MU8F   & d.cTAU30M	& physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU30M_2eTAU20M_jJ55_2jJ50_3jJ30').setLogic( d.eTAU30M & d.eTAU20M.x(2) & d.jJ55 & d.jJ50.x(2) & d.jJ30.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU35M_2eTAU30M'            ).setLogic( d.eTAU35M & d.eTAU30M.x(2) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU30M_2jJ50_jXE90'         ).setLogic( d.eTAU30M & d.jJ50.x(2)    & d.jXE90     &  physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM18M_2eTAU20M_jXE70'       ).setLogic( d.eEM18M  & d.eTAU20M.x(2) & d.jXE70     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM18M_2cTAU20M_jXE70'       ).setLogic( d.eEM18M  & d.cTAU20M.x(2) & d.jXE70     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM18M_2eTAU20M_4jJ30'       ).setLogic( d.eEM18M  & d.eTAU20M.x(2) & d.jJ30.x(4) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eEM18M_2cTAU20M_4jJ30'       ).setLogic( d.eEM18M  & d.cTAU20M.x(2) & d.jJ30.x(4) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_eTAU20M_jXE70'          ).setLogic( d.MU8F    & d.eTAU20M      & d.jXE70     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_cTAU20M_jXE70'          ).setLogic( d.MU8F    & d.cTAU20M	 & d.jXE70     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU30M_2eTAU20M_jXE70'      ).setLogic( d.eTAU30M & d.eTAU20M.x(2) & d.jXE70     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU60_2eTAU20M_jXE80'       ).setLogic( d.eTAU60  & d.eTAU20M.x(2) & d.jXE80     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_eTAU60_2cTAU20M_jXE80'       ).setLogic( d.eTAU60  & d.cTAU20M.x(2) & d.jXE80     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12'       ).setLogic( d.MU8F  & d.HA12          & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12IM'     ).setLogic( d.MU8F  & d.HA12IM        & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU20'       ).setLogic( d.MU8F  & d.HA20          & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU20IM'     ).setLogic( d.MU8F  & d.HA20IM        & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8VF_TAU20IM'    ).setLogic( d.MU8VF & d.HA20IM        & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU14FCH_TAU12IM'      ).setLogic( d.MU14FCH & d.HA12IM & physcond).setTriggerType( TT.calo)
        MenuItem('L1_MU8F_TAU12_J25_2J12'  ).setLogic( d.MU8F & d.HA12 & d.J25 & d.J12.x(2)     & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12IM_J25_2J12').setLogic( d.MU8F & d.HA12IM & d.J25 & d.J12.x(2)    & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12IM_3J12'    ).setLogic( d.MU8F & d.HA12IM & d.J12.x(3)    & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU25IM_2TAU20IM_2J25_3J20').setLogic( d.HA25IM & d.HA20IM.x(2)     & d.J25.x(2)  & d.J20.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20_2TAU12I_J25_2J15_3J12'   ).setLogic( d.HA20 & d.HA12I.x(2)     & d.J25 & d.J15.x(2) & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20_2TAU12_J25_2J20_3J12'    ).setLogic( d.HA20 & d.HA12.x(2)     & d.J25 & d.J20.x(2) & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IM_2TAU12IM_J25_2J20_3J12').setLogic( d.HA20IM & d.HA12IM.x(2)     & d.J25 & d.J20.x(2) & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IL_2TAU12IL_J25_2J20_3J12').setLogic( d.HA20IL & d.HA12IL.x(2)     & d.J25 & d.J20.x(2) & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU25IT_2TAU12IT_2J25_3J12').setLogic( d.HA25IT & d.HA12IT.x(2)     & d.J25.x(2)  & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU25IM_2TAU12IM_J25_3J12' ).setLogic( d.HA25IM & d.HA12IM.x(2) & d.J25 & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU25IM_2TAU20IM').setLogic( d.HA25IM & d.HA20IM.x(2)  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IM_2TAU12IM_4J12'     ).setLogic( d.HA20IM & d.HA12IM.x(2)  & d.J12.x(4) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IM_2TAU12IM_4J12p0ETA25').setLogic( d.HA20IM & d.HA12IM.x(2)  & d.J120ETA25.x(4) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IM_2TAU12IM_4J12p0ETA28').setLogic( d.HA20IM & d.HA12IM.x(2)  & d.J120ETA28.x(4) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU60_2TAU40'                ).setLogic( d.HA60 & d.HA40.x(2)  & physcond).setTriggerType( TT.calo )
        MenuItem('L1_2TAU12I_TAU20_J25_2J15_3J12' ).setLogic( d.HA12I.x(2)   & d.HA20  & d.J25 & d.J15.x(2) & d.J12.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_2TAU20IM_3J20'  ).setLogic(  d.HA20IM.x(2) & d.J20.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_2TAU20IM_J25_3J20'  ).setLogic(  d.HA20IM.x(2) & d.J25 & d.J20.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20_2J20_XE45'              ).setLogic( d.HA20    & d.J20.x(2)   & d.XE45 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IM_2J20_XE45'            ).setLogic( d.HA20IM    & d.J20.x(2)   & d.XE45 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU25_2J20_XE45'              ).setLogic( d.HA25      & d.J20.x(2)   & d.XE45 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20_2TAU12_XE35'            ).setLogic( d.HA20    & d.HA12.x(2)  & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IM_2TAU12IM_XE35'        ).setLogic( d.HA20IM  & d.HA12IM.x(2)  & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IL_2TAU12IL_XE35'        ).setLogic( d.HA20IL  & d.HA12IL.x(2)  & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IT_2TAU12IT_XE35'        ).setLogic( d.HA20IT  & d.HA12IT.x(2)  & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20IM_2TAU12IM_XE40'        ).setLogic( d.HA20IM  & d.HA12IM.x(2)  & d.XE40 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU40_2TAU12IM_XE40'          ).setLogic( d.HA40  & d.HA12IM.x(2)  & d.XE40 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12I_XE35'             ).setLogic( d.MU8F    & d.HA12I      & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12_XE35'              ).setLogic( d.MU8F    & d.HA12       & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12IL_XE35'            ).setLogic( d.MU8F    & d.HA12IL     & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12IM_XE35'            ).setLogic( d.MU8F    & d.HA12IM     & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12IT_XE35'            ).setLogic( d.MU8F    & d.HA12IT     & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_MU8F_TAU12IM_XE40'            ).setLogic( d.MU8F    & d.HA12IM     & d.XE40 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_TAU20I_2TAU12I_XE35'          ).setLogic( d.HA20I   & d.HA12I.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_TAU20IM_2TAU15_J25_2J20_3J15').setLogic( d.EM15VHI  &  d.HA20IM  &  d.HA15.x(2) &  d.J25  & d.J20.x(2) & d.J15.x(3) & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12I_XE35'          ).setLogic( d.EM15VHI  & d.HA12I.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12IM_XE35'         ).setLogic( d.EM15VHI  & d.HA12IM.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12IL_XE35'         ).setLogic( d.EM15VHI  & d.HA12IL.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
        MenuItem('L1_EM15VHI_2TAU12_XE35'           ).setLogic( d.EM15VHI  & d.HA12.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )

        # MenuItem('L1_EM15HI_TAU20IM_2TAU15_J25_2J20_3J15').setLogic( d.EM15HI  &  d.HA20IM  &  d.HA15.x(2) &  d.J25  & d.J20.x(2) & d.J15.x(3) & physcond).setTriggerType( TT.calo )
        # MenuItem('L1_EM15HI_2TAU12I_XE35'          ).setLogic( d.EM15HI  & d.HA12I.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
        # MenuItem('L1_EM15HI_2TAU12IM_XE35'         ).setLogic( d.EM15HI  & d.HA12IM.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
        # MenuItem('L1_EM15HI_2TAU12IL_XE35'         ).setLogic( d.EM15HI  & d.HA12IL.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
        # MenuItem('L1_EM15HI_2TAU12_XE35'           ).setLogic( d.EM15HI  & d.HA12.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )

        # JET ctpid=[0x60:0x7f]
        MenuItem('L1_J5'   ).setLogic( d.J5   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J10'  ).setLogic( d.J10  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J12'  ).setLogic( d.J12  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J15'  ).setLogic( d.J15  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J20'  ).setLogic( d.J20  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J25'  ).setLogic( d.J25  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J30'  ).setLogic( d.J30  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J35'  ).setLogic( d.J35  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J40'  ).setLogic( d.J40  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J50'  ).setLogic( d.J50  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J60'  ).setLogic( d.J60  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J75'  ).setLogic( d.J75  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J75A' ).setLogic( d.J75A & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J75C' ).setLogic( d.J75C & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J85'  ).setLogic( d.J85  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J100' ).setLogic( d.J100 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J120' ).setLogic( d.J120 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J150' ).setLogic( d.J150 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J175' ).setLogic( d.J175 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J250' ).setLogic( d.J250 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J400' ).setLogic( d.J400 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J400_LAR' ).setLogic( d.J400 & physcond).setTriggerType(TT.lardigital) # ATR-22344
        MenuItem('L1_jJ15p30ETA49'  ).setLogic( d.jJ1530ETA49  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ20'          ).setLogic( d.jJ20         & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ20p30ETA49'  ).setLogic( d.jJ2030ETA49  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ30'                    ).setLogic( d.jJ30  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ30_EMPTY'              ).setLogic( d.jJ30  & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_jJ30_FIRSTEMPTY'         ).setLogic( d.jJ30  & firstempty).setTriggerType(TT.calo)
        MenuItem('L1_jJ30_UNPAIRED_ISO'       ).setLogic( d.jJ30  & unpaired_isocond).setTriggerType(TT.calo)
        MenuItem('L1_jJ30_UNPAIRED_NONISO'    ).setLogic( d.jJ30  & unpaired_nonisocond).setTriggerType(TT.calo)
        MenuItem('L1_jJ30_BGRP12'             ).setLogic( d.jJ30  & bgrp12cond).setTriggerType(TT.calo)
        MenuItem('L1_jJ30_UNPAIREDB1'         ).setLogic( d.jJ30  & bgrp13cond).setTriggerType(TT.calo)
        MenuItem('L1_jJ30_UNPAIREDB2'         ).setLogic( d.jJ30  & bgrp14cond).setTriggerType(TT.calo)
        MenuItem('L1_jJ30p0ETA25'   ).setLogic( d.jJ300ETA25   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ40'          ).setLogic( d.jJ40         & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ40p0ETA25'   ).setLogic( d.jJ400ETA25   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ40p30ETA49'  ).setLogic( d.jJ4030ETA49  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ40p30ETA49_UNPAIRED_ISO').setLogic( d.jJ4030ETA49  & unpaired_isocond).setTriggerType(TT.calo)
        MenuItem('L1_jJ50'          ).setLogic( d.jJ50         & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ50p30ETA49'  ).setLogic( d.jJ5030ETA49  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ55'          ).setLogic( d.jJ55         & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ55p0ETA23'   ).setLogic( d.jJ550ETA23   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ60'          ).setLogic( d.jJ60         & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ60p30ETA49'  ).setLogic( d.jJ6030ETA49  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ60p30ETA49_EMPTY'            ).setLogic( d.jJ6030ETA49  & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_jJ60p30ETA49_UNPAIRED_ISO'     ).setLogic( d.jJ6030ETA49  & unpaired_isocond).setTriggerType(TT.calo)
        MenuItem('L1_jJ60p30ETA49_UNPAIRED_NONISO'  ).setLogic( d.jJ6030ETA49  & unpaired_nonisocond).setTriggerType(TT.calo)
        MenuItem('L1_jJ70p0ETA23'   ).setLogic( d.jJ700ETA23   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ80'          ).setLogic( d.jJ80         & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ80p0ETA25'   ).setLogic( d.jJ800ETA25   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ85p0ETA21'   ).setLogic( d.jJ850ETA21   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ90'          ).setLogic( d.jJ90         & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ90_UNPAIRED_ISO'       ).setLogic( d.jJ90 & unpaired_isocond).setTriggerType(TT.calo)
        MenuItem('L1_jJ90_UNPAIRED_NONISO'    ).setLogic( d.jJ90 & unpaired_nonisocond).setTriggerType(TT.calo)
        MenuItem('L1_jJ90_2jJ80p0ETA25_3jJ40p0ETA25').setLogic( d.jJ90 & d.jJ800ETA25.x(2) & d.jJ400ETA25.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ90p30ETA49'  ).setLogic( d.jJ9030ETA49  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ125'         ).setLogic( d.jJ125        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ125p30ETA49' ).setLogic( d.jJ12530ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ140'         ).setLogic( d.jJ140        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ160'         ).setLogic( d.jJ160        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ160_FIRSTEMPTY').setLogic( d.jJ160      & firstempty).setTriggerType(TT.calo)
        MenuItem('L1_jJ180'         ).setLogic( d.jJ180        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ500'         ).setLogic( d.jJ500        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ500_LAR'     ).setLogic( d.jJ500        & physcond).setTriggerType(TT.lardigital) # ATR-22344

        MenuItem('L1_4jJ40'         ).setLogic( d.jJ40.x(4)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3jJ55p0ETA23'  ).setLogic( d.jJ550ETA23.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_4jJ40p0ETA25'  ).setLogic( d.jJ400ETA25.x(4) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_6jJ40'         ).setLogic( d.jJ40.x(6)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_5jJ40p0ETA25'  ).setLogic( d.jJ400ETA25.x(5) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_4jJ50'         ).setLogic( d.jJ50.x(4)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3jJ90'         ).setLogic( d.jJ90.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3jJ70p0ETA23'  ).setLogic( d.jJ700ETA23.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ140_3jJ60'   ).setLogic( d.jJ140 & d.jJ60.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ80p0ETA25_2jJ55_jJ50p30ETA49' ).setLogic( d.jJ800ETA25 & d.jJ55.x(2) & d.jJ5030ETA49   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ55p0ETA23_2jJ40p30ETA49'      ).setLogic( d.jJ550ETA23 & d.jJ4030ETA49.x(2)            & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ80p0ETA25_2jJ40p30ETA49'      ).setLogic( d.jJ800ETA25 & d.jJ4030ETA49.x(2)            & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ85p0ETA21_3jJ40p0ETA25'       ).setLogic( d.jJ850ETA21 & d.jJ400ETA25.x(3)             & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3jJ40p0ETA25'  ).setLogic( d.jJ400ETA25.x(3) & physcond).setTriggerType(TT.calo)

        MenuItem('L1_jJ60_EMPTY'     ).setLogic( d.jJ60 & cosmiccond ).setTriggerType(TT.calo)
        MenuItem('L1_jJ60_FIRSTEMPTY').setLogic( d.jJ60 & firstempty ).setTriggerType(TT.calo)

        MenuItem('L1_MU3V_jJ20'      ).setLogic( d.MU3V & d.jJ20    & physcond).setTriggerType(TT.calo) # added temporarily 
        MenuItem('L1_MU3V_jJ30'      ).setLogic( d.MU3V & d.jJ30    & physcond).setTriggerType(TT.calo) # added temporarily 
        MenuItem('L1_MU3V_jJ40'      ).setLogic( d.MU3V & d.jJ40    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_jJ50'      ).setLogic( d.MU3V & d.jJ50    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_jJ60'      ).setLogic( d.MU3V & d.jJ60    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU5VF_jJ80'      ).setLogic( d.MU5VF & d.jJ80  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jLJ60'         ).setLogic( d.jLJ60        & physcond).setTriggerType(TT.calo) # Not in commissioning
        MenuItem('L1_jLJ80'         ).setLogic( d.jLJ80        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jLJ100'        ).setLogic( d.jLJ100       & physcond).setTriggerType(TT.calo) # Not in commissioning
        MenuItem('L1_jLJ120'        ).setLogic( d.jLJ120       & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jLJ140'        ).setLogic( d.jLJ140       & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jLJ160'        ).setLogic( d.jLJ160       & physcond).setTriggerType(TT.calo) # Not in commissioning
        MenuItem('L1_jLJ180'        ).setLogic( d.jLJ180       & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jLJ200'        ).setLogic( d.jLJ200       & physcond).setTriggerType(TT.calo) # Not in commissioning
        MenuItem('L1_gJ20p0ETA25'         ).setLogic( d.gJ200ETA25        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gJ20p25ETA49'         ).setLogic( d.gJ2025ETA49        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gJ20p0ETA25_EMPTY'         ).setLogic( d.gJ200ETA25        & cosmiccond).setTriggerType(TT.calo)
        MenuItem('L1_gJ50p0ETA25'         ).setLogic( d.gJ500ETA25        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gJ100p0ETA25'        ).setLogic( d.gJ1000ETA25       & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gJ400p0ETA25'        ).setLogic( d.gJ4000ETA25       & physcond).setTriggerType(TT.calo)

        MenuItem('L1_gLJ80p0ETA25'         ).setLogic( d.gLJ800ETA25        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gLJ100p0ETA25'        ).setLogic( d.gLJ1000ETA25       & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gLJ140p0ETA25'        ).setLogic( d.gLJ1400ETA25       & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gLJ160p0ETA25'        ).setLogic( d.gLJ1600ETA25       & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jEM20'         ).setLogic( d.jEM20        & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jEM20M'        ).setLogic( d.jEM20M       & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J10p31ETA49').setLogic( d.J1031ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J75p31ETA49').setLogic( d.J7531ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J10_UNPAIRED_ISO'   ).setLogic( d.J10 & unpaired_isocond   ).setTriggerType(TT.calo)
        MenuItem('L1_J10_UNPAIRED_NONISO').setLogic( d.J10 & unpaired_nonisocond).setTriggerType(TT.calo)
        MenuItem('L1_J10_EMPTY'          ).setLogic( d.J10 & cosmiccond ).setTriggerType(TT.calo)
        MenuItem('L1_J10_FIRSTEMPTY'     ).setLogic( d.J10 & firstempty ).setTriggerType(TT.calo)
        MenuItem('L1_J12_UNPAIRED_ISO'    ).setLogic( d.J12 & unpaired_isocond   ).setTriggerType(TT.calo)
        MenuItem('L1_J12_UNPAIRED_NONISO' ).setLogic( d.J12 & unpaired_nonisocond).setTriggerType(TT.calo)
        MenuItem('L1_J12_EMPTY'           ).setLogic( d.J12 & cosmiccond ).setTriggerType(TT.calo)
        MenuItem('L1_J12_FIRSTEMPTY'      ).setLogic( d.J12 & firstempty ).setTriggerType(TT.calo)
        MenuItem('L1_J12_UNPAIREDB1'      ).setLogic( d.J12 & bgrp13cond  ).setTriggerType(TT.calo)
        MenuItem('L1_J12_UNPAIREDB2'      ).setLogic( d.J12 & bgrp14cond).setTriggerType(TT.calo)
        MenuItem('L1_J50_UNPAIRED_ISO'    ).setLogic( d.J50 & unpaired_isocond   ).setTriggerType(TT.calo)
        MenuItem('L1_J50_UNPAIRED_NONISO' ).setLogic( d.J50 & unpaired_nonisocond).setTriggerType(TT.calo)
        MenuItem('L1_J12_BGRP12'        ).setLogic( d.J12 & bgrp12cond ).setTriggerType(TT.calo)
        MenuItem('L1_J30p31ETA49_BGRP12').setLogic( d.J3031ETA49 & bgrp12cond ).setTriggerType(TT.calo)
        MenuItem('L1_J30_EMPTY'     ).setLogic( d.J30 & cosmiccond ).setTriggerType(TT.calo)
        MenuItem('L1_J30_FIRSTEMPTY').setLogic( d.J30 & firstempty ).setTriggerType(TT.calo)
        MenuItem('L1_J10p31ETA49_EMPTY').setLogic( d.J1031ETA49 & cosmiccond ).setTriggerType(TT.calo)
        MenuItem('L1_J15p31ETA49_UNPAIRED_ISO').setLogic( d.J1531ETA49 & unpaired_isocond).setTriggerType(TT.calo)
        MenuItem('L1_J30p31ETA49_EMPTY'          ).setLogic( d.J3031ETA49 & cosmiccond ).setTriggerType(TT.calo)
        MenuItem('L1_J30p31ETA49_FIRSTEMPTY'     ).setLogic( d.J3031ETA49 & firstempty ).setTriggerType(TT.calo)
        MenuItem('L1_J30p31ETA49_UNPAIRED_ISO'   ).setLogic( d.J3031ETA49 & unpaired_isocond   ).setTriggerType(TT.calo)
        MenuItem('L1_J30p31ETA49_UNPAIRED_NONISO').setLogic( d.J3031ETA49 & unpaired_nonisocond   ).setTriggerType(TT.calo)
        MenuItem('L1_J100_FIRSTEMPTY').setLogic( d.J100 & firstempty ).setTriggerType(TT.calo)
        MenuItem('L1_2J25p31ETA49'  ).setLogic( d.J2531ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2J15'   ).setLogic( d.J15.x(2)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J15_J15p31ETA49' ).setLogic( d.J15 & d.J1531ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J20_J20p31ETA49' ).setLogic( d.J20 & d.J2031ETA49 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J10'   ).setLogic( d.J10.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J15'   ).setLogic( d.J15.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J20'   ).setLogic( d.J20.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J40'   ).setLogic( d.J40.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J50'   ).setLogic( d.J50.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J75'   ).setLogic( d.J75.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_4J10'   ).setLogic( d.J10.x(4)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_4J15'   ).setLogic( d.J15.x(4)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_4J20'   ).setLogic( d.J20.x(4)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_4J20p0ETA49').setLogic( d.J200ETA49.x(4) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_4J30'   ).setLogic( d.J30.x(4)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_6J15'   ).setLogic( d.J15.x(6)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J75_3J20' ).setLogic( d.J75 & d.J20.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J85_3J30' ).setLogic( d.J85 & d.J30.x(3)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J30p0ETA49_2J20p0ETA49'      ).setLogic( d.J300ETA49 & d.J200ETA49.x(2)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J15p0ETA25_2J15p31ETA49'     ).setLogic( d.J150ETA25 & d.J1531ETA49.x(2)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J40p0ETA25_2J15p31ETA49'     ).setLogic( d.J400ETA25 & d.J1531ETA49.x(2)    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J40p0ETA25_2J25_J20p31ETA49' ).setLogic( d.J400ETA25 & d.J25.x(2) & d.J2031ETA49   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J40p0ETA25_2J30_J20p31ETA49' ).setLogic( d.J400ETA25 & d.J30.x(2) & d.J2031ETA49   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J45p0ETA21_3J15p0ETA25'      ).setLogic( d.J450ETA21 & d.J150ETA25.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J50_2J40p0ETA25_3J15p0ETA25' ).setLogic( d.J50 & d.J400ETA25.x(2) & d.J150ETA25.x(3) & physcond).setTriggerType(TT.calo)

        MenuItem('L1_4J17p0ETA22' ).setLogic( d.J170ETA22.x(4) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J25p0ETA23' ).setLogic( d.J250ETA23.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J35p0ETA23' ).setLogic( d.J350ETA23.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J15p0ETA25' ).setLogic( d.J150ETA25.x(3) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_4J15p0ETA25' ).setLogic( d.J150ETA25.x(4) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_5J15p0ETA25' ).setLogic( d.J150ETA25.x(5) & physcond).setTriggerType(TT.calo)

        if ('Physics_HI_run3_v' in menuName or 'MC_HI_run3_v' in menuName):
            MenuItem('L1_ZB', ctpid=240).setLogic(d.ZB_J75  & physcond).setTriggerType(TT.zerobs)
            MenuItem('L1_ZB', ctpid=240).setLogic(d.ZB_EM15 & physcond).setTriggerType(TT.zerobs)
        # Phase-I ZeroBias trigger for commissioning
        # TODO: When established, replace legacy logic above with corresponding
        # Phase-I seeds
        # Unlike legacy ZeroBias, the delay logic is in the CTP firmware, so
        # we provide the seed rather than a dedicated threshold
        # LAr Saturation
        MenuItem('L1_LArSaturation').setLogic( d.LArSaturation & physcond ).setTriggerType(TT.calo)
        
        if ('Physics_HI_run3_v' in menuName or 'MC_HI_run3_v' in menuName):
            MenuItem('L1_ZeroBias').setLogic( d.ZeroBiasB & physcond ).setTriggerType(TT.zerobs)
        else:
            MenuItem('L1_ZeroBias').setLogic( d.ZeroBiasA & physcond ).setTriggerType(TT.zerobs)

        # combined jet - xe
        MenuItem('L1_J40_XE50').setLogic( d.J40 & d.XE50 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jJ80_jXE100').setLogic( d.jJ80 & d.jXE100 & physcond).setTriggerType(TT.calo)        
        MenuItem('L1_J40p0ETA25_XE50').setLogic( d.J400ETA25 & d.XE50 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J75_XE40' ).setLogic( d.J75 & d.XE40 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J75_XE50' ).setLogic( d.J75 & d.XE50 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2J15_XE55').setLogic( d.J15.x(2) & d.XE55 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2J40_XE45').setLogic( d.J40.x(2) & d.XE45 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2J50_XE40').setLogic( d.J50.x(2) & d.XE40 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J40_XE60' ).setLogic( d.J40 & d.XE60 & physcond).setTriggerType(TT.calo)
        #MenuItem('L1_jJ80_jXE120').setLogic( d.jJ80 & d.jXE120 & physcond).setTriggerType(TT.calo)        
        MenuItem('L1_J30p0ETA49_XE50').setLogic( d.J300ETA49 & d.XE50 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_3J15p0ETA25_XE40').setLogic( d.J150ETA25.x(3) & d.XE40 & physcond).setTriggerType(TT.calo)
        # ATR-27250 Duplicate multijet-seeded triggers to jFEX
        MenuItem('L1_3jJ40p0ETA25_jXE80').setLogic( d.jJ400ETA25.x(3) & d.jXE80 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2jJ90_jXE80').setLogic( d.jJ90.x(2) & d.jXE80 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2jJ40_jXE110').setLogic( d.jJ40.x(2) & d.jXE110 & physcond).setTriggerType(TT.calo)
        # combined em - jet
        MenuItem('L1_EM18VHI_3J20' ).setLogic( d.EM18VHI  & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_EM20VH_3J20' ).setLogic( d.EM20VH  & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
        # combined em - jet Phase-1 ATR-28761
        MenuItem('L1_eEM22M_3jJ50' ).setLogic( d.eEM22M  & d.jJ50.x(3)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM24L_3jJ50' ).setLogic( d.eEM24L  & d.jJ50.x(3)  & physcond).setTriggerType(TT.calo)

        #MenuItem('L1_EM13VH_3J20' ).setLogic( d.EM13VH  & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
        ### ATR-15524
        #MenuItem('L1_EM18VH_3J20' ).setLogic( d.EM18VH  & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
        ### ATR-28443 test eEMX{} + {{3,4jJY{}}} L1 seeds
        MenuItem('L1_eEM22M_3jJ40p0ETA25' ).setLogic( d.eEM22M & d.jJ400ETA25.x(3)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_eEM22M_4jJ30p0ETA25' ).setLogic( d.eEM22M & d.jJ300ETA25.x(4)  & physcond).setTriggerType(TT.calo)
        # combined mu - jet
        MenuItem('L1_MU3V_J12'   ).setLogic( d.MU3V & d.J12    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_J15'   ).setLogic( d.MU3V & d.J15    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU5VF_J20'  ).setLogic( d.MU5VF & d.J20    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU5VF_J30p0ETA49_2J20p0ETA49').setLogic( d.MU5VF & d.J300ETA49 & d.J200ETA49.x(2) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU5VF_J40'  ).setLogic( d.MU5VF & d.J40    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU5VF_J75'  ).setLogic( d.MU5VF & d.J75    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_3J15'  ).setLogic( d.MU3V & d.J15.x(3)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_3J20'  ).setLogic( d.MU3V & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_J20'   ).setLogic( d.MU3V & d.J20    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_J30'   ).setLogic( d.MU3V & d.J30    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_J50'   ).setLogic( d.MU3V & d.J50    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU8F_3J20'    ).setLogic( d.MU8F & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU8F_2J20'    ).setLogic( d.MU8F & d.J20.x(2)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU8F_2J15_J20').setLogic( d.MU8F & d.J15.x(2) & d.J20  & physcond).setTriggerType(TT.calo)

        MenuItem('L1_MU8F_3jJ50'    ).setLogic( d.MU8F & d.jJ50.x(3)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU8F_2jJ50'    ).setLogic( d.MU8F & d.jJ50.x(2)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU8F_2jJ40_jJ50').setLogic( d.MU8F & d.jJ40.x(2) & d.jJ50  & physcond).setTriggerType(TT.calo)
        
        MenuItem('L1_MU14FCH_J50'  ).setLogic( d.MU14FCH & d.J50  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_XE60'      ).setLogic( d.MU3V & d.XE60  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2MU3V_XE60'     ).setLogic( d.MU3V.x(2) & d.XE60  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2MU3V_J40_XE50' ).setLogic( d.MU3V.x(2) & d.J40 & d.XE50  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU3V_J50_XE40'  ).setLogic( d.MU3V & d.J50 & d.XE40  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2MU3V_J40_XE20' ).setLogic( d.MU3V.x(2) & d.J40 & d.XE20  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU14FCH_J40' ).setLogic( d.MU14FCH & d.J40 & physcond).setTriggerType(TT.calo) ## ATR-14377
        MenuItem('L1_MU14FCH_XE30').setLogic( d.MU14FCH & d.XE30 & physcond).setTriggerType(TT.calo) ## ATR-14377
        MenuItem('L1_MU14FCH_XE40').setLogic( d.MU14FCH & d.XE40 & physcond).setTriggerType(TT.calo) ## ATR-19376
        MenuItem('L1_MU14FCH_jJ80' ).setLogic( d.MU14FCH & d.jJ80 & physcond).setTriggerType(TT.calo) 
        MenuItem('L1_MU14FCH_jXE70').setLogic( d.MU14FCH & d.jXE70 & physcond).setTriggerType(TT.calo) 
        MenuItem('L1_MU14FCH_jJ90' ).setLogic( d.MU14FCH & d.jJ90 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_MU14FCH_jXE80').setLogic( d.MU14FCH & d.jXE80 & physcond).setTriggerType(TT.calo)        
        MenuItem('L1_J15_NZ' ).setLogic( d.J15      & Not(ZDC_AND) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2J15_NZ').setLogic( d.J15.x(2) & Not(ZDC_AND) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_J15_NL' ).setLogic( d.J15      & Not(d.LUCID_A) & Not(d.LUCID_C) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_2J15_NL').setLogic( d.J15.x(2) & Not(d.LUCID_A) & Not(d.LUCID_C) & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE35').setLogic( d.XE35 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE40').setLogic( d.XE40 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE45').setLogic( d.XE45 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE50').setLogic( d.XE50 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE55').setLogic( d.XE55 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE60').setLogic( d.XE60 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE70').setLogic( d.XE70 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE80').setLogic( d.XE80 & physcond).setTriggerType(TT.calo)
        #MenuItem('L1_gXERHO70'  ).setLogic( d.gXERHO70   & physcond).setTriggerType(TT.calo)
        #MenuItem('L1_gXERHO100' ).setLogic( d.gXERHO100  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gXENC70'   ).setLogic( d.gXENC70    & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gXENC100'  ).setLogic( d.gXENC100   & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gXEJWOJ60' ).setLogic( d.gXEJWOJ60  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gXEJWOJ70' ).setLogic( d.gXEJWOJ70  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gXEJWOJ80' ).setLogic( d.gXEJWOJ80  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gXEJWOJ100').setLogic( d.gXEJWOJ100 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gXEJWOJ110').setLogic( d.gXEJWOJ110 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gXEJWOJ120').setLogic( d.gXEJWOJ120 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gXEJWOJ500').setLogic( d.gXEJWOJ500 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_gMHT500').setLogic( d.gMHT500 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXE60' ).setLogic( d.jXE60  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXE70' ).setLogic( d.jXE70  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXE80' ).setLogic( d.jXE80  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXE90' ).setLogic( d.jXE90  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXE100').setLogic( d.jXE100 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXE110').setLogic( d.jXE110 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXE120').setLogic( d.jXE120 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXE500').setLogic( d.jXE500 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXEC100'    ).setLogic( d.jXEC100 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jXEPerf100' ).setLogic( d.jXEPerf100 & physcond).setTriggerType(TT.calo)
        #ATR-28670- Combined jet - xe
        MenuItem('L1_jJ80_jXE120' ).setLogic( d.jJ80 & d.jXE120 & physcond).setTriggerType(TT.calo)

        MenuItem('L1_gTE200'     ).setLogic( d.gTE200 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE200'     ).setLogic( d.jTE200 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTEC200'    ).setLogic( d.jTEC200 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTEFWD100'  ).setLogic( d.jTEFWD100 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTEFWDA100' ).setLogic( d.jTEFWDA100 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTEFWDC100' ).setLogic( d.jTEFWDC100 & physcond).setTriggerType(TT.calo)
        # additional jTE items for 2023 heavy ion runs
        MenuItem('L1_jTE3'     ).setLogic( d.jTE3  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE4'     ).setLogic( d.jTE4  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE5'     ).setLogic( d.jTE5  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE10'     ).setLogic( d.jTE10  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE20'     ).setLogic( d.jTE20  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE50'     ).setLogic( d.jTE50  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE100'     ).setLogic( d.jTE100  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE600'     ).setLogic( d.jTE600  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE1500'    ).setLogic( d.jTE1500 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE3000'    ).setLogic( d.jTE3000 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE6500'    ).setLogic( d.jTE6500 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE7000'    ).setLogic( d.jTE7000 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE7500'    ).setLogic( d.jTE7500 & physcond).setTriggerType(TT.calo)
        # additional VjTE items for 2023 heavy ion runs
        MenuItem('L1_VjTE10'    ).setLogic( Not(d.jTE10)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_VjTE50'    ).setLogic( Not(d.jTE50)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_VjTE200'    ).setLogic( Not(d.jTE200)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_VjTE600'    ).setLogic( Not(d.jTE600)  & physcond).setTriggerType(TT.calo)
        MenuItem('L1_jTE50_VjTE600'    ).setLogic(  d.jTE50  & Not(d.jTE600)  & physcond).setTriggerType(TT.calo)

        MenuItem('L1_XE10').setLogic( d.XE10 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE20').setLogic( d.XE20 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE25').setLogic( d.XE25 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE30').setLogic( d.XE30 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE65').setLogic( d.XE65 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE75').setLogic( d.XE75 & physcond).setTriggerType(TT.calo)
        MenuItem('L1_XE150').setLogic( d.XE150 & physcond).setTriggerType(TT.calo)