From 51e0f99b12d3c915954cbde34fe7e93584f88f92 Mon Sep 17 00:00:00 2001
From: Lidija Zivkovic <lidija.zivkovic@cern.ch>
Date: Wed, 5 Aug 2020 07:33:53 +0000
Subject: [PATCH] ATR-21624 - adaptin L1 including L1topo in such a way that v8
 and new ideas are propageted to master

---
 .../LVL1MenuConfig/L1TopoMenu/Menu_LS2_v1.py  |  251 +--
 .../LVL1MenuConfig/L1TopoMenu/TopoAlgoDef.py  | 1815 ++++++++---------
 .../python/LVL1MenuConfig/LVL1Menu/ItemDef.py |   48 +-
 .../LVL1MenuConfig/LVL1Menu/Menu_LS2_v1.py    | 1388 ++++---------
 .../LVL1MenuConfig/LVL1Menu/ThresholdDef.py   |   69 +-
 5 files changed, 1489 insertions(+), 2082 deletions(-)

diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/L1TopoMenu/Menu_LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/L1TopoMenu/Menu_LS2_v1.py
index 02f114a943d..76f404101f7 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/L1TopoMenu/Menu_LS2_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/L1TopoMenu/Menu_LS2_v1.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 def defineMenu():
     """
@@ -8,199 +8,80 @@ def defineMenu():
 
     """
     
+ 
     from ..L1Topo.L1TopoFlags import L1TopoFlags
     from ..L1Topo.TopoOutput import TopoOutput
-    from TriggerJobOpts.TriggerFlags import TriggerFlags
-
-    # if this flag is True for mc v7: produce xml with full v7 menu
-    # if this flag is False for physics v7: produce xml with v7 new items removed, so to match with FW 
-    mcv7_flag = True
-
-    if 'Physics_pp_v7' in TriggerFlags.triggerMenuSetup() or 'Physics_pp_v6' in TriggerFlags.triggerMenuSetup() or 'HI' in TriggerFlags.triggerMenuSetup():
-        mcv7_flag = False
-
-    newalgos_onlyinv6 = [
-#          TopoOutput( algoname='15MINDPHI-EM12s6-XE0',                        module=0, fpga=0, clock=1, firstbit=14 ),#v6n        
-#          TopoOutput( algoname='15MINDPHI-EM15s6-XE0',                        module=0, fpga=0, clock=1, firstbit=15 ),#v6n
-#          TopoOutput( algoname='35MT-EM12s6-XE0',                             module=0, fpga=0, clock=1, firstbit=13 ),#v6n
-#          TopoOutput( algoname='DISAMB-0DR28-EM15his2-TAU12abi',              module=0, fpga=1, clock=0, firstbit=15 ),#v6n
-#          TopoOutput( algoname='LATE-MU10s1',                                  module=1, fpga=0, clock=1, firstbit=10 ),#v6n
-#          TopoOutput( algoname='SC111-CJ15ab.ETA26',                          module=1, fpga=1, clock=0, firstbit=11 ),#v6n
-#          TopoOutput( algoname='SC85-CJ15ab.ETA26',                           module=1, fpga=1, clock=0, firstbit=12 ),#v6n
-#          TopoOutput( algoname='10MINDPHI-AJ20s2-XE50',                       module=1, fpga=0, clock=1, firstbit=9 ),#v6n
-
-#          TopoOutput( algoname='0DR22-2MU6ab',                                module=1, fpga=0, clock=0, firstbit=10 ),#v6diff
-#          TopoOutput( algoname='7INVM15-2MU4ab',                              module=0, fpga=1, clock=0, firstbit=5 ),#v6diff 
-#          TopoOutput( algoname='0DR22-MU6ab-MU4ab',                           module=1, fpga=1, clock=1, firstbit=10 ), #v6diff
- #         TopoOutput( algoname='0DR15-2MU4ab',                                module=1, fpga=0, clock=1, firstbit=0 ), #v6diff
-  #        TopoOutput( algoname='0DR24-2MU4ab',                                module=1, fpga=0, clock=1, firstbit=2 ),#v6diff
-#          TopoOutput( algoname='INVM_EMs6',                                   module=0, fpga=0, clock=0, firstbit=11 ), # 3bits
-#          TopoOutput( algoname='100RATIO-0MATCH-TAU30si2-EMall',              module=0, fpga=0, clock=1, firstbit=7 ),
+#    from TriggerJobOpts.TriggerFlags import TriggerFlags
 
-#          TopoOutput( algoname='2INVM9-2MU4ab',                               module=0, fpga=1, clock=1, firstbit=2 ),  #v6 new
-#          TopoOutput( algoname='2INVM9-MU6ab-MU4ab',                          module=0, fpga=1, clock=1, firstbit=3 ),  #v6 new
-#          TopoOutput( algoname='0DR25-TAU20abi-TAU12abi',                     module=0, fpga=1, clock=0, firstbit=14 ), #v6 new
-#          TopoOutput( algoname='1DISAMB-J25ab-0DR25-TAU20abi-TAU12abi',       module=1, fpga=0, clock=1, firstbit=8 ), #v6 new 
-#          TopoOutput( algoname='0DR15-2MU6ab',                                module=1, fpga=0, clock=1, firstbit=11 ), #v6 new
-#          TopoOutput( algoname='10MINDPHI-J20s2-XE30',                        module=1, fpga=0, clock=1, firstbit=12 ),  #v6 new
-#          TopoOutput( algoname='DISAMB-30INVM-EM20his2-TAU12ab',              module=0, fpga=1, clock=1, firstbit=0 ),  #v6 new
-#          TopoOutput( algoname='400INVM9999-AJ30s6.ETA31-AJ20s6.31ETA49',     module=0, fpga=1, clock=1, firstbit=1 ),  #v6 new
-        ]
-
-    newalgos_onlyinv5 = [
-#        TopoOutput( algoname='2DR15-CMU6ab-CMU4ab',                         module=1, fpga=0, clock=0, firstbit=10 ),#v6diff
-#        TopoOutput( algoname='4INVM8-ONEBARREL-MU6ab-MU4ab',                module=0, fpga=1, clock=0, firstbit=5 ),#v6diff 
-#        TopoOutput( algoname='2DR15-ONEBARREL-MU6ab-MU4ab',                 module=1, fpga=1, clock=1, firstbit=10 ), #v6diff
-#        TopoOutput( algoname='2INVM999-CMU6ab-CMU4ab',                      module=1, fpga=0, clock=1, firstbit=0 ), #v6diff
-#        TopoOutput( algoname='4INVM8-CMU6ab-CMU4ab',                        module=1, fpga=0, clock=1, firstbit=2 ),#v6diff
-#        TopoOutput( algoname='INVM_EMall',                                  module=0, fpga=0, clock=0, firstbit=11 ), # 3bits
-#        TopoOutput( algoname='210RATIO-0MATCH-TAU30si2-EMall',              module=0, fpga=0, clock=1, firstbit=7 ),
-    ]
     
     L1TopoFlags.algos = [
+    
         
         # module: 0, FPGA: 0
-        TopoOutput( algoname='INVM_AJ_HighMass',                            module=0, fpga=0, clock=0, firstbit=0 ), # need 4bits 
-        TopoOutput( algoname='INVM_AJ_LowMass',                             module=0, fpga=0, clock=0, firstbit=4 ), # 4 bits 
-        TopoOutput( algoname='HT150-J20s5.ETA31',                           module=0, fpga=0, clock=0, firstbit=9 ),
-        TopoOutput( algoname='HT190-J15s5.ETA21',                           module=0, fpga=0, clock=0, firstbit=10 ),
-        TopoOutput( algoname='05MINDPHI-EM12s6-XE0',                        module=0, fpga=0, clock=0, firstbit=14 ),#v6
-#        TopoOutput( algoname='10MINDPHI-EM12s6-XE0',                        module=0, fpga=0, clock=0, firstbit=15 ),#v6
-        TopoOutput( algoname='05MINDPHI-EM15s6-XE0',                        module=0, fpga=0, clock=1, firstbit=0 ),
-        TopoOutput( algoname='25MT-EM12s6-XE0',                             module=0, fpga=0, clock=1, firstbit=1 ),#v6
-#        TopoOutput( algoname='30MT-EM12s6-XE0',                             module=0, fpga=0, clock=1, firstbit=2 ),#v6
-        TopoOutput( algoname='35MT-EM15s6-XE0',                             module=0, fpga=0, clock=1, firstbit=3 ),
-#        TopoOutput( algoname='0DETA10-Js1-Js2',                             module=0, fpga=0, clock=1, firstbit=4 ),
-#        TopoOutput( algoname='10MINDPHI-Js2-XE50',                          module=0, fpga=0, clock=1, firstbit=5 ),
-        TopoOutput( algoname='10MINDPHI-J20s2-XE50',                        module=0, fpga=0, clock=1, firstbit=6 ),
-        TopoOutput( algoname='100RATIO-0MATCH-TAU30si2-EMall',              module=0, fpga=0, clock=1, firstbit=7 ),
-        TopoOutput( algoname='NOT-0MATCH-TAU30si2-EMall',                   module=0, fpga=0, clock=1, firstbit=8 ), 
-        TopoOutput( algoname='LAR-EM50s1',                                  module=0, fpga=0, clock=1, firstbit=9 ), 
-        TopoOutput( algoname='LAR-J100s1',                                  module=0, fpga=0, clock=1, firstbit=10 ), 
-        TopoOutput( algoname='NOT-02MATCH-EM10s1-AJj15all.ETA49',           module=0, fpga=0, clock=1, firstbit=11 ), 
-#        TopoOutput( algoname='05RATIO-XE0-SUM0-EM10s1-HT0-AJj15all.ETA49',  module=0, fpga=0, clock=1, firstbit=12 ), 
-        TopoOutput( algoname='15MINDPHI-EM12s6-XE0',                        module=0, fpga=0, clock=1, firstbit=14 ),#v6n        
-        TopoOutput( algoname='15MINDPHI-EM15s6-XE0',                        module=0, fpga=0, clock=1, firstbit=15 ),#v6n
-        TopoOutput( algoname='35MT-EM12s6-XE0',                             module=0, fpga=0, clock=1, firstbit=13 ),#v6n
-        
-        # module: 0, FPGA: 1
-#        TopoOutput( algoname='1DISAMB-TAU20ab-J20ab',                       module=0, fpga=1, clock=0, firstbit=0 ), 
-#        TopoOutput( algoname='DISAMB-EM15abhi-TAU12abi',                    module=0, fpga=1, clock=0, firstbit=1 ),
-        TopoOutput( algoname='1DISAMB-EM15his2-TAU12abi-J25ab',             module=0, fpga=1, clock=0, firstbit=2 ), 
-        TopoOutput( algoname='1DISAMB-J25ab-0DR28-EM15his2-TAU12abi',       module=0, fpga=1, clock=0, firstbit=3 ),
-#        TopoOutput( algoname='4INVM8-2MU6ab',                               module=0, fpga=1, clock=0, firstbit=4 ), 
-        TopoOutput( algoname='2INVM9-2MU6ab',                               module=0, fpga=1, clock=0, firstbit=4 ),#v6
-#        TopoOutput( algoname='2INVM999-ONEBARREL-MU6ab-MU4ab',              module=0, fpga=1, clock=0, firstbit=5 ), 
-#        TopoOutput( algoname='4INVM8-ONEBARREL-MU6ab-MU4ab',                module=0, fpga=1, clock=0, firstbit=6 ),
-        TopoOutput( algoname='2INVM8-ONEBARREL-MU6ab-MU4ab',                module=0, fpga=1, clock=0, firstbit=6 ),#v6
-#        TopoOutput( algoname='5DETA99-5DPHI99-2MU4ab',                      module=0, fpga=1, clock=0, firstbit=7 ), 
-        TopoOutput( algoname='5DETA99-5DPHI99-MU6ab-MU4ab',                 module=0, fpga=1, clock=0, firstbit=8 ), 
-        TopoOutput( algoname='5DETA99-5DPHI99-2MU6ab',                      module=0, fpga=1, clock=0, firstbit=9 ), 
-        TopoOutput( algoname='1DISAMB-TAU20abi-TAU12abi-J25ab',             module=0, fpga=1, clock=0, firstbit=10 ),
-        TopoOutput( algoname='0DR28-MU10ab-TAU12abi',                       module=0, fpga=1, clock=0, firstbit=11 ),
-        TopoOutput( algoname='0DETA20-0DPHI20-TAU20abi-TAU12abi',           module=0, fpga=1, clock=0, firstbit=12 ),
-#        TopoOutput( algoname='DISAMB-EM15abhi-TAU40ab',                     module=0, fpga=1, clock=0, firstbit=13 ), 
-        TopoOutput( algoname='DISAMB-0DR28-EM15his2-TAU12abi',              module=0, fpga=1, clock=0, firstbit=15 ),#v6n
+        TopoOutput( algoname='0DR25-TAU20abi-TAU12abi',                     module=0, fpga=0, clock=0, firstbit=0 ),
+        TopoOutput( algoname='0DR28-TAU20abi-TAU12abi',                     module=0, fpga=0, clock=0, firstbit=1 ),
+        TopoOutput( algoname='2DISAMB-J25ab-0DR25-TAU20abi-TAU12abi',       module=0, fpga=0, clock=0, firstbit=2 ),
+        TopoOutput( algoname='2DISAMB-J25ab-0DR28-TAU20abi-TAU12abi',       module=0, fpga=0, clock=0, firstbit=3 ),
+        TopoOutput( algoname='INVM_DPHI_NFF',                               module=0, fpga=0, clock=0, firstbit=4 ), # 4 bits
+        TopoOutput( algoname='0INVM10-3MU4ab',                              module=0, fpga=0, clock=0, firstbit=9 ),
 
-        TopoOutput( algoname='DISAMB-30INVM-EM20his2-TAU12ab',              module=0, fpga=1, clock=1, firstbit=0 ),  #v6 new
-        TopoOutput( algoname='400INVM9999-AJ30s6.ETA31-AJ20s6.31ETA49',     module=0, fpga=0, clock=0, firstbit=15 ),  #v6 new
 
-        TopoOutput( algoname='0DR22-2MU6ab',                                module=0, fpga=1, clock=1, firstbit=4 ),#v6
-        TopoOutput( algoname='7INVM15-2MU4ab',                              module=0, fpga=1, clock=1, firstbit=5 ),#v6
-        TopoOutput( algoname='0DR22-MU6ab-MU4ab',                           module=0, fpga=1, clock=1, firstbit=6 ),#v6
-        TopoOutput( algoname='0DR15-2MU4ab',                                module=0, fpga=1, clock=1, firstbit=7 ),#v6
-        TopoOutput( algoname='0DR24-2MU4ab',                                module=0, fpga=1, clock=1, firstbit=8 ),#v6
-        TopoOutput( algoname='0DR15-2MU6ab',                                module=0, fpga=1, clock=1, firstbit=9 ), #v6 new
-        TopoOutput( algoname='2INVM9-2MU4ab',                               module=0, fpga=1, clock=1, firstbit=10 ),  #v6 new
-        TopoOutput( algoname='2INVM9-MU6ab-MU4ab',                          module=0, fpga=1, clock=1, firstbit=11 ),  #v6 new       
-        TopoOutput( algoname='INVM_EMs6',                                   module=0, fpga=0, clock=0, firstbit=11 ), # 3bits
- 
-        # module: 1, FPGA: 0        
-        TopoOutput( algoname='05MINDPHI-AJj10s6-XE0',                       module=1, fpga=0, clock=0, firstbit=0 ),#v6
-        TopoOutput( algoname='10MINDPHI-AJj10s6-XE0',                       module=1, fpga=0, clock=0, firstbit=1 ),#v6
-        TopoOutput( algoname='15MINDPHI-AJj10s6-XE0',                       module=1, fpga=0, clock=0, firstbit=2 ),#v6
-        TopoOutput( algoname='0DR04-MU4ab-CJ15ab',                          module=1, fpga=0, clock=0, firstbit=3 ), 
-        TopoOutput( algoname='0DR04-MU4ab-CJ20ab',                          module=1, fpga=0, clock=0, firstbit=4 ),
-        TopoOutput( algoname='0DR04-MU4ab-CJ30ab',                          module=1, fpga=0, clock=0, firstbit=5 ),
-        TopoOutput( algoname='0DR04-MU6ab-CJ20ab',                          module=1, fpga=0, clock=0, firstbit=6 ),
-        TopoOutput( algoname='0DR04-MU6ab-CJ25ab',                          module=1, fpga=0, clock=0, firstbit=7 ),
-        TopoOutput( algoname='10MINDPHI-CJ20ab-XE50',                       module=1, fpga=0, clock=0, firstbit=8 ),
-#        TopoOutput( algoname='2DR15-2CMU4ab',                               module=1, fpga=0, clock=0, firstbit=9 ),
-        TopoOutput( algoname='0DR24-2CMU4ab',                               module=1, fpga=0, clock=0, firstbit=9 ),#v6
-#        TopoOutput( algoname='2DR15-CMU6ab-CMU4ab',                         module=1, fpga=0, clock=0, firstbit=10 ),
-        TopoOutput( algoname='MULT-CMU4ab',                                 module=1, fpga=0, clock=0, firstbit=11 ), # 2bits
-        TopoOutput( algoname='MULT-CMU6ab',                                 module=1, fpga=0, clock=0, firstbit=13 ), # 2bits
-#        TopoOutput( algoname='2INVM999-2CMU4ab',                            module=1, fpga=0, clock=0, firstbit=15 ), 
-#        TopoOutput( algoname='1INVM19-2CMU4ab',                             module=1, fpga=0, clock=0, firstbit=15 ),#v6
-#        TopoOutput( algoname='2INVM999-CMU6ab-CMU4ab',                      module=1, fpga=0, clock=1, firstbit=0 ), 
-#        TopoOutput( algoname='4INVM8-2CMU4ab',                              module=1, fpga=0, clock=1, firstbit=1 ),
-#        TopoOutput( algoname='2INVM8-2CMU4ab',                              module=1, fpga=0, clock=1, firstbit=1 ),#v6
-#        TopoOutput( algoname='4INVM8-CMU6ab-CMU4ab',                        module=1, fpga=0, clock=1, firstbit=2 ),
-#        TopoOutput( algoname='0DETA04-0DPHI03-EM8abi-MU10ab',               module=1, fpga=0, clock=1, firstbit=3 ),
-         TopoOutput( algoname='0DETA04-EM8abi-MU10ab',                       module=1, fpga=0, clock=1, firstbit=3 ), #ATR-14282
-         TopoOutput( algoname='0DPHI03-EM8abi-MU10ab',                       module=1, fpga=0, clock=1, firstbit=6 ),
-
-#        TopoOutput( algoname='0DETA04-0DPHI03-EM15abi-MUab',                module=1, fpga=0, clock=1, firstbit=4 ),
-         TopoOutput( algoname='0DETA04-EM15abi-MUab',                       module=1, fpga=0, clock=1, firstbit=4 ), #ATR-14282
-         TopoOutput( algoname='0DPHI03-EM15abi-MUab',                       module=1, fpga=0, clock=1, firstbit=8 ),
-
-#        TopoOutput( algoname='2DR15-CMU4ab-MU4ab',                          module=1, fpga=0, clock=1, firstbit=5 ),
-        TopoOutput( algoname='0DR24-CMU4ab-MU4ab',                          module=1, fpga=0, clock=1, firstbit=5 ),#v6
-#        TopoOutput( algoname='2INVM999-CMU4ab-MU4ab',                       module=1, fpga=0, clock=1, firstbit=6 ), 
-#        TopoOutput( algoname='1INVM19-CMU4ab-MU4ab',                        module=1, fpga=0, clock=1, firstbit=6 ),#v6
-#        TopoOutput( algoname='4INVM8-CMU4ab-MU4ab',                         module=1, fpga=0, clock=1, firstbit=7 ),         
-        TopoOutput( algoname='2INVM8-CMU4ab-MU4ab',                         module=1, fpga=0, clock=1, firstbit=7 ),#v6
-
-        TopoOutput( algoname='0DR25-TAU20abi-TAU12abi',                     module=1, fpga=1, clock=1, firstbit=10 ), #v6 new
-        TopoOutput( algoname='10MINDPHI-AJ20s2-XE50',                       module=1, fpga=0, clock=1, firstbit=9 ),#v6n
-        TopoOutput( algoname='LATE-MU10s1',                                  module=1, fpga=0, clock=1, firstbit=10 ),#v6n
-        TopoOutput( algoname='1DISAMB-J25ab-0DR25-TAU20abi-TAU12abi',       module=1, fpga=1, clock=1, firstbit=11 ), #v6 new 
-#          TopoOutput( algoname='0DR15-2MU6ab',                                module=1, fpga=0, clock=1, firstbit=11 ), #v6 new
-        TopoOutput( algoname='10MINDPHI-J20s2-XE30',                        module=0, fpga=0, clock=1, firstbit=5 ),  #v6 new
-
-
-        # module: 1, FPGA: 1        
-        TopoOutput( algoname='KF-XE-AJall',                                 module=1, fpga=1, clock=0, firstbit=0 ), # 6 bits        
-        TopoOutput( algoname='0MATCH-4AJ20.ETA31-4AJj15.ETA31',             module=1, fpga=1, clock=0, firstbit=6 ),
-        TopoOutput( algoname='HT190-AJ15all.ETA21',                         module=1, fpga=1, clock=0, firstbit=7 ),
-        TopoOutput( algoname='HT150-AJ20all.ETA31',                         module=1, fpga=1, clock=0, firstbit=8 ),
-        TopoOutput( algoname='HT150-AJj15all.ETA49',                        module=1, fpga=1, clock=0, firstbit=9 ),
-        TopoOutput( algoname='HT20-AJj15all.ETA49',                         module=1, fpga=1, clock=0, firstbit=10 ),
-        TopoOutput( algoname='SC111-CJ15ab.ETA26',                          module=1, fpga=0, clock=1, firstbit=11 ),#v6n
-        TopoOutput( algoname='SC85-CJ15ab.ETA26',                           module=1, fpga=0, clock=1, firstbit=12 ),#v6n
-        TopoOutput( algoname='05RATIO-XE0-HT0-AJj15all.ETA49',              module=1, fpga=1, clock=0, firstbit=13 ), 
-#        TopoOutput( algoname='08RATIO-XE0-HT0-AJj15all.ETA49',              module=1, fpga=1, clock=0, firstbit=14 ), 
-        TopoOutput( algoname='90RATIO2-XE0-HT0-AJj15all.ETA49',             module=1, fpga=1, clock=0, firstbit=15 ),
-        TopoOutput( algoname='250RATIO2-XE0-HT0-AJj15all.ETA49',            module=1, fpga=1, clock=1, firstbit=0 ),
-        TopoOutput( algoname='10MINDPHI-J20ab-XE50',                        module=1, fpga=1, clock=1, firstbit=1 ), 
-        TopoOutput( algoname='0DR28-TAU20abi-TAU12abi',                     module=1, fpga=1, clock=1, firstbit=2 ),
-        TopoOutput( algoname='1DISAMB-J25ab-0DR28-TAU20abi-TAU12abi',       module=1, fpga=1, clock=1, firstbit=3 ), 
-        TopoOutput( algoname='1DISAMB-TAU12abi-J25ab',                      module=1, fpga=1, clock=1, firstbit=4 ), 
-        TopoOutput( algoname='0DR10-MU10ab-MU6ab',                          module=1, fpga=1, clock=1, firstbit=5 ),  
-        TopoOutput( algoname='2DR99-2MU4ab',                                module=1, fpga=1, clock=1, firstbit=6 ), 
-#        TopoOutput( algoname='2DR15-2MU4ab',                                module=1, fpga=1, clock=1, firstbit=7 ),
-        TopoOutput( algoname='0DR34-2MU4ab',                                module=1, fpga=1, clock=1, firstbit=7 ), #v6
-        TopoOutput( algoname='2DR15-2MU6ab',                                module=1, fpga=1, clock=1, firstbit=8 ), 
-#        TopoOutput( algoname='2DR15-MU6ab-MU4ab',                           module=1, fpga=1, clock=1, firstbit=9 ), 
-        TopoOutput( algoname='0DR15-MU6ab-MU4ab',                           module=1, fpga=1, clock=1, firstbit=9 ), #v6
-#        TopoOutput( algoname='2DR15-ONEBARREL-MU6ab-MU4ab',                 module=1, fpga=1, clock=1, firstbit=10 ),
-#        TopoOutput( algoname='2INVM999-2MU4ab',                             module=1, fpga=1, clock=1, firstbit=11 ),
-#        TopoOutput( algoname='1INVM19-2MU4ab',                              module=1, fpga=1, clock=1, firstbit=11 ), #v6
-#        TopoOutput( algoname='2INVM999-MU6ab-MU4ab',                        module=1, fpga=1, clock=1, firstbit=12 ),
-        TopoOutput( algoname='8INVM15-MU6ab-MU4ab',                         module=1, fpga=1, clock=1, firstbit=12 ), #v6
-#        TopoOutput( algoname='2INVM999-2MU6ab',                             module=1, fpga=1, clock=1, firstbit=13 ),
-        TopoOutput( algoname='8INVM15-2MU6ab',                              module=1, fpga=1, clock=1, firstbit=13 ), #v6
-#        TopoOutput( algoname='4INVM8-2MU4ab',                               module=1, fpga=1, clock=1, firstbit=14 ), 
-        TopoOutput( algoname='2INVM8-2MU4ab',                               module=1, fpga=1, clock=1, firstbit=14 ), #v6
-# ATR-15197        TopoOutput( algoname='2INVM9-2MU4ab',                               module=1, fpga=1, clock=1, firstbit=14 ), #v6
-#        TopoOutput( algoname='4INVM8-MU6ab-MU4ab',                          module=1, fpga=1, clock=1, firstbit=15 ), 
-        TopoOutput( algoname='2INVM8-MU6ab-MU4ab',                          module=1, fpga=1, clock=1, firstbit=15 ), #v6
-# ATR-15197        TopoOutput( algoname='2INVM9-MU6ab-MU4ab',                          module=1, fpga=1, clock=1, firstbit=15 ), #v6
-        ]
+    
 
 
-    if mcv7_flag:
-        L1TopoFlags.algos +=  newalgos_onlyinv6
-    else:
-        L1TopoFlags.algos +=  newalgos_onlyinv5 
+        # module: 0, FPGA: 1
+        TopoOutput( algoname='KF-XE-AJall',                                 module=0, fpga=1, clock=0, firstbit=0 ), # 6 bits
+        TopoOutput( algoname='ZAFB_DPHI',                                   module=0, fpga=1, clock=0, firstbit=6 ), # 2 bits
+        TopoOutput( algoname='CEP_CJ',                                      module=0, fpga=1, clock=0, firstbit=8 ), # 2 bits
+        TopoOutput( algoname='INVM_EMs6',                                   module=0, fpga=1, clock=0, firstbit=10 ), # 3bits to 2 bits
+        TopoOutput( algoname='27DPHI32-EMs1-EMs6',                          module=0, fpga=1, clock=0, firstbit=12 ),
+
+
+        # module: 1, FPGA: 0
+        TopoOutput( algoname='HT190-J15s5.ETA21',                           module=1, fpga=0, clock=0, firstbit=0 ),
+        TopoOutput( algoname='0DR03-EM7ab-CJ15ab',                          module=1, fpga=0, clock=0, firstbit=1 ),
+        TopoOutput( algoname='INVM_NFF',                                    module=1, fpga=0, clock=0, firstbit=2 ), # 4 bits to 1 bit
+        TopoOutput( algoname='INVM_AJ_HighMass',                            module=1, fpga=0, clock=0, firstbit=3 ), # 4bits to 1 bit
+        TopoOutput( algoname='INVM_AJ_LowMass',                             module=1, fpga=0, clock=0, firstbit=4 ), # 4 bits to 1 bit
+        TopoOutput( algoname='HT150-J20s5.ETA31',                           module=1, fpga=0, clock=0, firstbit=5 ),
+        TopoOutput( algoname='400INVM9999-AJ30s6.ETA31-AJ20s6.31ETA49',     module=1, fpga=0, clock=0, firstbit=6 ),
+        TopoOutput( algoname='10MINDPHI-J20s2-XE30',                        module=1, fpga=0, clock=0, firstbit=7 ),
+        TopoOutput( algoname='10MINDPHI-J20s2-XE50',                        module=1, fpga=0, clock=0, firstbit=8 ),
+        TopoOutput( algoname='SC111-CJ15ab.ETA26',                          module=1, fpga=0, clock=0, firstbit=9 ),
+        TopoOutput( algoname='0DETA20-J50s1-Js2',                           module=1, fpga=0, clock=0, firstbit=10 ),
+        TopoOutput( algoname='2DISAMB-J25ab-0DR28-EM15his2-TAU12abi',       module=1, fpga=0, clock=0, firstbit=11 ),
+        TopoOutput( algoname='0INVM9-EM7ab-EMab',                           module=1, fpga=0, clock=0, firstbit=12 ),
+        TopoOutput( algoname='2DISAMB-TAU12abi-J25ab',                      module=1, fpga=0, clock=0, firstbit=13 ),
+
+        # module: 1, FPGA: 1
+
+        TopoOutput( algoname='DISAMB-30INVM-EM20his2-TAU12ab',              module=1, fpga=1, clock=0, firstbit=0 ),
+        TopoOutput( algoname='100RATIO-0MATCH-TAU30si2-EMall',              module=1, fpga=1, clock=0, firstbit=1 ),
+        TopoOutput( algoname='NOT-0MATCH-TAU30si1-EMall',                   module=1, fpga=1, clock=0, firstbit=2 ),
+        TopoOutput( algoname='LATE-MU10s1',                                 module=1, fpga=1, clock=0, firstbit=3 ),
+        TopoOutput( algoname='MULT-CMU4ab',                                 module=1, fpga=1, clock=0, firstbit=4 ),#2bits
+        TopoOutput( algoname='MULT-CMU6ab',                                 module=1, fpga=1, clock=0, firstbit=6 ),#2bits        
+        TopoOutput( algoname='0DR15-2MU6ab',                                module=1, fpga=1, clock=0, firstbit=8 ),
+        TopoOutput( algoname='8INVM15-0DR22-2MU6ab',                        module=1, fpga=1, clock=0, firstbit=9 ),
+
+        TopoOutput( algoname='8INVM15-0DR22-MU6ab-MU4ab',                   module=1, fpga=1, clock=1, firstbit=0 ),
+        TopoOutput( algoname='2INVM9-0DR15-MU6ab-MU4ab',                    module=1, fpga=1, clock=1, firstbit=1 ),
+        TopoOutput( algoname='2INVM9-0DR15-2MU4ab',                         module=1, fpga=1, clock=1, firstbit=2 ),
+        TopoOutput( algoname='2INVM9-2DR15-2MU6ab',                         module=1, fpga=1, clock=1, firstbit=3 ),
+        TopoOutput( algoname='5DETA99-5DPHI99-2MU4ab',                      module=1, fpga=1, clock=1, firstbit=4 ),
+        TopoOutput( algoname='5DETA99-5DPHI99-MU6ab-MU4ab',                 module=1, fpga=1, clock=1, firstbit=5 ),
+        TopoOutput( algoname='5DETA99-5DPHI99-2MU6ab',                      module=1, fpga=1, clock=1, firstbit=6 ),
+        TopoOutput( algoname='0DETA04-EM8abi-MU10ab',                       module=1, fpga=1, clock=1, firstbit=7 ),
+        TopoOutput( algoname='0DPHI03-EM8abi-MU10ab',                       module=1, fpga=1, clock=1, firstbit=8 ),
+#maybe for combination part next two can be useful
+        TopoOutput( algoname='0DETA04-EM15abi-MUab',                        module=1, fpga=1, clock=1, firstbit=9 ),
+        TopoOutput( algoname='0DPHI03-EM15abi-MUab',                        module=1, fpga=1, clock=1, firstbit=10 ),
+        TopoOutput( algoname='0INVM70-27DPHI32-EM10his1-EM10his6',          module=1, fpga=1, clock=1, firstbit=11 ),
+        TopoOutput( algoname='0INVM70-27DPHI32-EM12his1-EM12his6',          module=1, fpga=1, clock=1, firstbit=12 ),
+        TopoOutput( algoname='0INVM10-0DR15-EM8abi-MU10ab',                 module=1, fpga=1, clock=1, firstbit=13 ),
+        TopoOutput( algoname='0INVM10-0DR15-EM12abi-MU6ab',                 module=1, fpga=1, clock=1, firstbit=14 ),
+        TopoOutput( algoname='8INVM15-2CMU4ab',                             module=1, fpga=1, clock=1, firstbit=15 ),
+
+    ]      
+        
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/L1TopoMenu/TopoAlgoDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/L1TopoMenu/TopoAlgoDef.py
index c2643edc0f1..219dd755baa 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/L1TopoMenu/TopoAlgoDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/L1TopoMenu/TopoAlgoDef.py
@@ -15,31 +15,26 @@ import L1TopoHardware.L1TopoHardware as HW
 
 
 class TopoAlgoDef(object):
-
+    
     @staticmethod
     def registerTopoAlgos(tm):
         currentAlgoId = 0
-
+        
         _etamax = 49
         _minet = 0
-        usev7 = False
-
-        if '_v7' in TriggerFlags.triggerMenuSetup():
-            usev7 = True
-        if 'LS2_v' in TriggerFlags.triggerMenuSetup() or 'run3_v1' in TriggerFlags.triggerMenuSetup():
-            usev7 = True
-        
+ 
         _emscale_for_decision = 2 # global scale for EM, TAU        
         if hasattr(TriggerFlags, 'useRun1CaloEnergyScale'):
             if TriggerFlags.useRun1CaloEnergyScale :
                 _emscale_for_decision=1     
-                log.info("Changed mscale_for_decision %s for Run1CaloEnergyScale", _emscale_for_decision)
+                log.info("Changed mscale_for_decision %s for Run1CaloEnergyScale" % _emscale_for_decision)
 
         alg = AlgConf.ClusterNoSort( name = 'EMall', inputs = 'ClusterTobArray', outputs = 'EMall', algoId = currentAlgoId) ; currentAlgoId += 1
         alg.addgeneric('InputWidth', HW.InputWidthEM)
         alg.addgeneric('OutputWidth', HW.InputWidthEM)
         alg.addvariable('IsoMask', 0)
         tm.registerAlgo(alg)  
+
                                 
         alg = AlgConf.ClusterSelect( name = 'TAUabi', inputs = 'ClusterTobArray', outputs = 'TAUabi', algoId = currentAlgoId ); currentAlgoId += 1
         alg.addgeneric('InputWidth',  HW.InputWidthTAU)
@@ -52,6 +47,7 @@ class TopoAlgoDef(object):
         alg.addgeneric('DoIsoCut', 1)
         tm.registerAlgo(alg) 
 
+
         alg = AlgConf.ClusterSelect( name = 'EMabi', inputs = 'ClusterTobArray', outputs = 'EMabi', algoId = currentAlgoId ); currentAlgoId += 1
         alg.addgeneric('InputWidth',  HW.InputWidthEM)
         alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectEM ) 
@@ -63,6 +59,7 @@ class TopoAlgoDef(object):
         alg.addgeneric('DoIsoCut', 1)
         tm.registerAlgo(alg) 
 
+
         alg = AlgConf.ClusterSelect( name = 'EMabhi', inputs = 'ClusterTobArray', outputs = 'EMabhi', algoId = currentAlgoId ); currentAlgoId += 1
         alg.addgeneric('InputWidth',  HW.InputWidthEM)
         alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectEM ) 
@@ -73,6 +70,7 @@ class TopoAlgoDef(object):
         alg.addvariable('MaxEta', _etamax)
         alg.addgeneric('DoIsoCut', 1)
         tm.registerAlgo(alg) 
+
         
         alg = AlgConf.ClusterSelect( name = 'TAUab', inputs = 'ClusterTobArray', outputs = 'TAUab', algoId = currentAlgoId ); currentAlgoId += 1
         alg.addgeneric('InputWidth',  HW.InputWidthTAU)
@@ -85,6 +83,7 @@ class TopoAlgoDef(object):
         alg.addgeneric('DoIsoCut', 0)
         tm.registerAlgo(alg) 
 
+
         alg = AlgConf.ClusterSort( name = 'EMs', inputs = 'ClusterTobArray', outputs = 'EMs', algoId = currentAlgoId ); currentAlgoId += 1
         alg.addgeneric('InputWidth', HW.InputWidthEM)
         alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortEM)
@@ -95,6 +94,7 @@ class TopoAlgoDef(object):
         alg.addgeneric('DoIsoCut', '0')
         #alg.addgeneric('DoEtaCut', '1')
         tm.registerAlgo(alg) 
+
         
         alg = AlgConf.ClusterSort( name = 'EMshi', inputs = 'ClusterTobArray', outputs = 'EMshi', algoId = currentAlgoId ); currentAlgoId += 1
         alg.addgeneric('InputWidth', HW.InputWidthEM)
@@ -106,7 +106,8 @@ class TopoAlgoDef(object):
         alg.addgeneric('DoIsoCut', '1')
         #alg.addgeneric('DoEtaCut', '1')
         tm.registerAlgo(alg)
-                
+
+
         alg = AlgConf.ClusterSort( name = 'TAUsi', inputs = 'ClusterTobArray', outputs = 'TAUsi', algoId = currentAlgoId ); currentAlgoId += 1
         alg.addgeneric('InputWidth', HW.InputWidthTAU)
         alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortTAU)
@@ -117,6 +118,7 @@ class TopoAlgoDef(object):
         alg.addgeneric('DoIsoCut', '1')
         #alg.addgeneric('DoEtaCut', '1')
         tm.registerAlgo(alg)
+
         
         alg = AlgConf.JetNoSort( name = 'AJall', inputs = 'JetTobArray', outputs = 'AJall', algoId = currentAlgoId ) ; currentAlgoId += 1
         alg.addgeneric('InputWidth', HW.InputWidthJET)
@@ -124,13 +126,16 @@ class TopoAlgoDef(object):
         alg.addgeneric('JetSize', HW.DefaultJetSize)
         tm.registerAlgo(alg)
 
+
         alg = AlgConf.JetNoSort( name = 'AJjall', inputs = 'JetTobArray', outputs = 'AJjall', algoId = currentAlgoId ) ; currentAlgoId += 1
         alg.addgeneric('InputWidth', HW.InputWidthJET)
         alg.addgeneric('OutputWidth', HW.InputWidthJET)
         alg.addgeneric('JetSize', 1 if HW.DefaultJetSize.value==2 else 2)
         tm.registerAlgo(alg)
 
+
         # for 0MATCH-4AJ20-4AJj15
+
         alg = AlgConf.JetNoSortMatch( name = 'AJMatchall', inputs = 'JetTobArray', outputs = 'AJMatchall', algoId = currentAlgoId ) ; currentAlgoId += 1
         alg.addgeneric('InputWidth', HW.InputWidthJET)
         alg.addgeneric('OutputWidth', HW.InputWidthJET)
@@ -139,18 +144,21 @@ class TopoAlgoDef(object):
         alg.addvariable('MinET2', 20) # 8x8
         tm.registerAlgo(alg)        
 
-
         # ab J lists:
-        for jet_type in ['J', 'CJ']:
+        for jet_type in ['J', 'CJ', 'FJ']:
             jetabseta = _etamax
             _minet = 25
+            _mineta=0
             if jet_type=='J':
                 jetabseta = 31
                 _minet = 20
             elif jet_type=='CJ':
                 jetabseta = 26 
                 _minet = 15
-            
+            elif jet_type=='FJ':
+                _mineta = 31
+                _minet = 15
+
             alg = AlgConf.JetSelect( name = jet_type+'ab', inputs = 'JetTobArray', outputs = jet_type+'ab', algoId = currentAlgoId ); currentAlgoId += 1
 
             alg.addgeneric('InputWidth', HW.InputWidthJET)
@@ -158,7 +166,7 @@ class TopoAlgoDef(object):
             alg.addgeneric('OutputWidth', HW.OutputWidthSelectJET)
             alg.addgeneric('JetSize', HW.DefaultJetSize.value)
             alg.addvariable('MinET', _minet)  
-            alg.addvariable('MinEta', 0)
+            alg.addvariable('MinEta', _mineta)
             alg.addvariable('MaxEta', jetabseta)
             alg.addgeneric('DoEtaCut', 1)
             tm.registerAlgo(alg) 
@@ -173,17 +181,44 @@ class TopoAlgoDef(object):
         alg.addvariable('MaxEta', _etamax)
         alg.addgeneric('DoEtaCut', 0)
         tm.registerAlgo(alg) 
+
+
+        #input list needed for ATR-18824
+        alg = AlgConf.JetSort( name = 'FJjs23ETA49', inputs = 'JetTobArray', outputs = 'FJjs23ETA49', algoId = currentAlgoId); currentAlgoId += 1
+
+        alg.addgeneric('InputWidth',  HW.InputWidthJET)
+        alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortJET )
+        alg.addgeneric('OutputWidth', HW.OutputWidthSortJET )
+        alg.addgeneric('JetSize', 1 if HW.DefaultJetSize.value==2 else 2)
+        alg.addvariable('MinEta', 23)
+        alg.addvariable('MaxEta', _etamax)
+        alg.addgeneric('DoEtaCut', 1)
+        tm.registerAlgo(alg)
+            
         
+        alg = AlgConf.JetSort( name = 'CJsETA21', inputs = 'JetTobArray', outputs = 'CJsETA21', algoId = currentAlgoId); currentAlgoId += 1
+        alg.addgeneric('InputWidth',  HW.InputWidthJET)
+        alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortJET )
+        alg.addgeneric('OutputWidth', HW.OutputWidthSortJET )
+        alg.addgeneric('JetSize', HW.DefaultJetSize.value)
+        alg.addvariable('MinEta', 0)
+        alg.addvariable('MaxEta', 21)
+        tm.registerAlgo(alg)
+
         # Sorted J lists:
-        for jet_type in ['AJ']:
+        for jet_type in ['AJ', 'FJ']:
             jetabseta = _etamax
             _minet = 25
+            _mineta = 0
             if jet_type=='J':
                 jetabseta = 31
                 _minet = 20
             elif jet_type=='CJ':
                 jetabseta = 26 
                 _minet = 15
+            elif jet_type=='FJ':
+                _mineta = 31
+                _minet = 15
                 
             alg = AlgConf.JetSort( name = jet_type+'s', inputs = 'JetTobArray', outputs = jet_type+'s', algoId = currentAlgoId ); currentAlgoId += 1
 
@@ -191,12 +226,15 @@ class TopoAlgoDef(object):
             alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortJET )
             alg.addgeneric('OutputWidth', HW.OutputWidthSortJET )
             alg.addgeneric('JetSize', HW.DefaultJetSize.value) 
-            alg.addvariable('MinEta', 0)
+            alg.addvariable('MinEta', _mineta)
             alg.addvariable('MaxEta', jetabseta)
-            alg.addgeneric('DoEtaCut', 0)
+            if jet_type=='FJ':
+                alg.addgeneric('DoEtaCut', 1)
+            else:
+                alg.addgeneric('DoEtaCut', 0)
             tm.registerAlgo(alg) 
 
-        for jet_type in ['J']:
+        for jet_type in ['J','CJ']:
             jetabseta = _etamax
             _minet = 25
             if jet_type=='J':
@@ -217,18 +255,21 @@ class TopoAlgoDef(object):
             alg.addgeneric('DoEtaCut', 1)
             tm.registerAlgo(alg)
 
+
         alg = AlgConf.METNoSort( name = 'XENoSort', inputs = 'MetTobArray', outputs = 'XENoSort', algoId = currentAlgoId ); currentAlgoId += 1
 
         alg.addgeneric('InputWidth', HW.InputWidthMET)
         alg.addgeneric('OutputWidth', HW.OutputWidthMET)
         tm.registerAlgo(alg)
+
                 
         alg = AlgConf.MetSort( name = 'XE', inputs = 'MetTobArray', outputs = 'XE', algoId = currentAlgoId ); currentAlgoId += 1
         alg.addgeneric('InputWidth', HW.InputWidthMET)
         alg.addgeneric('OutputWidth', HW.OutputWidthMET)
         tm.registerAlgo(alg)
+
         
-        alg = AlgConf.MuonSelect( name = 'MUab', inputs = 'MuonTobArray', outputs = 'MUab', algoId = currentAlgoId ); currentAlgoId += 1                                      
+        alg = AlgConf.MuonSelect( name = 'MUab', inputs = 'MuonTobArray', outputs = 'MUab', algoId = currentAlgoId ); currentAlgoId += 1
 
         alg.addgeneric('InputWidth', HW.InputWidthMU)
         alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectMU )
@@ -238,6 +279,18 @@ class TopoAlgoDef(object):
         alg.addvariable('MaxEta', 25)
         tm.registerAlgo(alg)            
 
+
+        alg = AlgConf.MuonSort( name = 'MUs', inputs = 'MuonTobArray', outputs = 'MUs', algoId = currentAlgoId ); currentAlgoId += 1
+
+        alg.addgeneric('InputWidth', HW.InputWidthMU)
+        alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortMU )
+        alg.addgeneric('OutputWidth', HW.OutputWidthSortMU)
+#        alg.addvariable('MinET', 4)
+        alg.addvariable('MinEta', 0)
+        alg.addvariable('MaxEta', 25)
+        tm.registerAlgo(alg)
+
+
         alg = AlgConf.MuonSelect( name = 'CMUab', inputs = 'MuonTobArray', outputs = 'CMUab', algoId = currentAlgoId ); currentAlgoId += 1                                     
 
         alg.addgeneric('InputWidth', HW.InputWidthMU)
@@ -248,6 +301,7 @@ class TopoAlgoDef(object):
         alg.addvariable('MaxEta', 10)
         tm.registerAlgo(alg)
 
+
         alg = AlgConf.MuonSort_1BC( name = 'LMUs', inputs = 'LateMuonTobArray', outputs = 'LMUs', algoId = currentAlgoId ); currentAlgoId += 1
         #alg = AlgConf.MuonSort_1BC( name = 'LMUs', inputs = 'MuonTobArray', outputs = 'LMUs', algoId = currentAlgoId ); currentAlgoId += 1
 
@@ -258,6 +312,7 @@ class TopoAlgoDef(object):
         alg.addvariable('MinEta', 0)
         alg.addvariable('MaxEta', 25)
         tm.registerAlgo(alg)
+
         
         # Abbreviated lists:
         alg = AlgConf.ClusterSelect( name = 'EMab', inputs = 'ClusterTobArray', outputs = 'EMab', algoId = currentAlgoId ); currentAlgoId += 1
@@ -265,13 +320,14 @@ class TopoAlgoDef(object):
         alg.addgeneric('InputWidth',  HW.InputWidthEM)
         alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectEM ) 
         alg.addgeneric('OutputWidth', HW.OutputWidthSelectEM)
-        alg.addvariable('MinET', 8)
+        alg.addvariable('MinET', 5)
         alg.addvariable('IsoMask', 0)                
         alg.addvariable('MinEta', 0)
         alg.addvariable('MaxEta', _etamax)
-        #alg.addgeneric('DoIsoCut', 1)
+        alg.addgeneric('DoIsoCut', 0)
         tm.registerAlgo(alg) 
         
+
         # All lists:
 
         alg = AlgConf.ClusterNoSort( name = 'TAUall', inputs = 'ClusterTobArray', outputs = 'TAUall', algoId = currentAlgoId) ; currentAlgoId += 1                                         
@@ -281,23 +337,22 @@ class TopoAlgoDef(object):
         alg.addvariable('IsoMask', 0)
         tm.registerAlgo(alg)
 
+
         alg = AlgConf.MuonNoSort( name = 'MUall', inputs = 'MuonTobArray', outputs = 'MUall',algoId = currentAlgoId) ; currentAlgoId += 1                                      
 
         alg.addgeneric('InputWidth', HW.InputWidthMU)
         alg.addgeneric('OutputWidth', HW.InputWidthMU)
         tm.registerAlgo(alg)
+
                 
         # Decision algorithms
         currentAlgoId = 0
         
-
-
-
-        # VBF items    
+        # VBF items
         for x in [
-            {"algoname": 'INVM_AJ_HighMass', "Threlist": [ 900, 800, 700, 500 ], "maxInvm": 9999, "otype" : "AJ", "ocut1" : 30, "olist" : "s", "nleading1" : 6, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 20, "nleading2" : 6},
-            {"algoname": 'INVM_AJ_LowMass',  "Threlist": [ 400, 300, 200, 100 ], "maxInvm": 9999, "otype" : "AJ", "ocut1" : 30, "olist" : "s", "nleading1" : 6, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 20, "nleading2" : 6},
-            ]:
+                {"algoname": 'INVM_AJ_HighMass', "Threlist": [ 700], "maxInvm": 9999, "otype" : "AJ", "ocut1" : 30, "olist" : "s", "nleading1" : 6, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 20, "nleading2" : 6},
+                {"algoname": 'INVM_AJ_LowMass',  "Threlist": [ 300], "maxInvm": 9999, "otype" : "AJ", "ocut1" : 30, "olist" : "s", "nleading1" : 6, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 20, "nleading2" : 6}
+        ]:
 
             class d : pass
             for k in x:
@@ -305,111 +360,54 @@ class TopoAlgoDef(object):
 
             inputList = d.otype + d.olist
             toponames=[]
+            
 
-            for minInvm in d.Threlist:
+            for minInvm in d.Threlist:  
                 toponame = "%iINVM%i-%s%s%s%s-%s%s%s%s"  % (minInvm, d.maxInvm,
-                                                            d.otype, str(d.ocut1) , d.olist, str(d.nleading1) if d.olist=="s" else "",
-                                                            d.otype, str(d.ocut2) , d.olist, str(d.nleading2) if d.olist=="s" else "")   
+                                                            d.otype, str(d.ocut1) , d.olist, str(d.nleading1) if d.olist=="s" else "",     
+                                                            d.otype, str(d.ocut2) , d.olist, str(d.nleading2) if d.olist=="s" else "")     
                 toponames.append(toponame)
-                
-            alg = AlgConf.InvariantMassInclusive1( name = d.algoname, inputs = inputList, outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1
 
-            alg.addgeneric('InputWidth', d.inputwidth1)
-            alg.addgeneric('MaxTob', d.nleading1)
+            alg = AlgConf.InvariantMassInclusive1( name = d.algoname, inputs = inputList, outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1  
+
+            alg.addgeneric('InputWidth', d.inputwidth1)      
+            alg.addgeneric('MaxTob', d.nleading1)            
             alg.addgeneric('NumResultBits', len(toponames))
 
-            for bitid, minInvm in enumerate(d.Threlist): 
-                alg.addvariable('MinET1', d.ocut1, bitid)
-                alg.addvariable('MinET2', d.ocut2, bitid)
-                alg.addvariable('MinMSqr', minInvm * minInvm, bitid)
-                alg.addvariable('MaxMSqr', d.maxInvm * d.maxInvm, bitid)
+            for bitid, minInvm in enumerate(d.Threlist):     
+                alg.addvariable('MinET1', d.ocut1, bitid)    
+                alg.addvariable('MinET2', d.ocut2, bitid)    
+                alg.addvariable('MinMSqr', minInvm * minInvm, bitid)  
+                alg.addvariable('MaxMSqr', d.maxInvm * d.maxInvm, bitid)  
 
             tm.registerAlgo(alg)
 
 
-        # dimu INVM items
-
-        listofalgos=[
-
-            #{"minInvm": 1, "maxInvm": 19, "mult": 2, "otype1" : "MU", "ocut1": 4, "olist" : "ab", "otype2" : "",  "ocut2" : 0, "onebarrel": 0},#1INVM19-2MU4ab 
-            {"minInvm": 2, "maxInvm": 8, "mult": 2, "otype1" : "MU", "ocut1": 4, "olist" : "ab", "otype2" : "",  "ocut2" : 0, "onebarrel": 0}, #2INVM8-2MU4ab 
-            {"minInvm": 2, "maxInvm": 9, "mult": 2, "otype1" : "MU", "ocut1": 4, "olist" : "ab", "otype2" : "",  "ocut2" : 0, "onebarrel": 0}, #2INVM9-2MU4ab 
-            {"minInvm": 8, "maxInvm": 15, "mult": 1, "otype1" : "MU", "ocut1": 6, "olist" : "ab", "otype2" : "MU","ocut2" : 4, "onebarrel": 0}, #8INVM15-MU6ab-MU4ab
-            {"minInvm": 2, "maxInvm": 8, "mult": 1, "otype1" : "MU", "ocut1": 6, "olist" : "ab", "otype2" : "MU","ocut2" : 4, "onebarrel": 0}, #2INVM8-MU6ab-MU4ab
-            {"minInvm": 2, "maxInvm": 9, "mult": 1, "otype1" : "MU", "ocut1": 6, "olist" : "ab", "otype2" : "MU","ocut2" : 4, "onebarrel": 0}, #2INVM9-MU6ab-MU4ab
-            {"minInvm": 8, "maxInvm": 15, "mult": 2, "otype1" : "MU", "ocut1": 6, "olist" : "ab", "otype2" : "",  "ocut2" : 0, "onebarrel": 0}, #8INVM15-2MU6ab
-            {"minInvm": 2, "maxInvm": 9, "mult": 2, "otype1" : "MU", "ocut1": 6, "olist" : "ab", "otype2" : "",  "ocut2" : 0, "onebarrel": 0},  #2INVM9-2MU6ab 
-            {"minInvm": 7, "maxInvm": 15, "mult": 2, "otype1" : "MU", "ocut1": 4, "olist" : "ab", "otype2" : "",  "ocut2" : 0, "onebarrel": 0}, #7INVM15-2MU4ab 
-
-            ]
-
-        for x in listofalgos:
-            class d : pass
-            for k in x:
-                setattr (d, k, x[k])
-
-            obj1 = "%s%s%s%s" % ((str(d.mult) if d.mult>1 else ""), d.otype1, str(d.ocut1), d.olist)
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist)
-            toponame = "%iINVM%i-%s%s%s"  % (d.minInvm, d.maxInvm, "ONEBARREL-" if d.onebarrel==1 else "", obj1, "" if d.mult>1 else obj2)
-
-            log.debug("Define %s", toponame)
-
-
-            inputList = [d.otype1 + d.olist] if (d.mult>1 or d.otype1==d.otype2) else [d.otype1 + d.olist, d.otype2 + d.olist]
-            algoname = AlgConf.InvariantMassInclusive1 if (d.mult>1 or d.otype1==d.otype2) else AlgConf.InvariantMassInclusive2
-            alg = algoname( name = toponame,  inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-
-            if (d.mult>1 or d.otype1==d.otype2):
-                alg.addgeneric('InputWidth', HW.OutputWidthSelectMU) 
-                alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
-                alg.addgeneric('RequireOneBarrel', d.onebarrel)
-            else:
-                alg.addgeneric('InputWidth1', HW.OutputWidthSelectMU)
-                alg.addgeneric('InputWidth2', HW.OutputWidthSelectMU) 
-                alg.addgeneric('MaxTob1', HW.OutputWidthSelectMU)
-                alg.addgeneric('MaxTob2', HW.OutputWidthSelectMU)
-
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut1)
-            alg.addvariable('MinET2', d.ocut2 if d.ocut2>0 else d.ocut1)
-            alg.addvariable('MinMSqr', d.minInvm * d.minInvm)
-            alg.addvariable('MaxMSqr', d.maxInvm * d.maxInvm)
-            tm.registerAlgo(alg)
-
 
         # dimu DR items
-        listofalgos=[  
-            {"minDr": 2, "maxDr": 99, "mult": 2, "otype1" : "MU" ,"ocut1": 4,  "olist" : "ab", "otype2" : "",   "ocut2": 4, "onebarrel": 0}, # SM Y  x
-            {"minDr": 0, "maxDr": 10, "mult": 1, "otype1" : "MU" ,"ocut1": 10, "olist" : "ab", "otype2" : "MU", "ocut2": 6, "onebarrel": 0}, # Exotic LFV x 
-            {"minDr": 2, "maxDr": 15, "mult": 2, "otype1" : "MU" ,"ocut1": 6,  "olist" : "ab", "otype2" : "",   "ocut2": 6, "onebarrel": 0},   #x
-            {"minDr": 0, "maxDr": 15, "mult": 2, "otype1" : "MU" ,"ocut1": 4,  "olist" : "ab", "otype2" : "",   "ocut2": 4, "onebarrel": 0}, #0DR15-2MU4ab
-            {"minDr": 0, "maxDr": 15, "mult": 1, "otype1" : "MU", "ocut1": 6,  "olist" : "ab", "otype2" : "MU", "ocut2": 4, "onebarrel": 0}, #0DR15-MU6ab-MU4ab
-            {"minDr": 0, "maxDr": 34, "mult": 2, "otype1" : "MU" ,"ocut1": 4,  "olist" : "ab", "otype2" : "",   "ocut2": 4, "onebarrel": 0}, #0DR34-2MU4ab 
-            {"minDr": 0, "maxDr": 24, "mult": 2, "otype1" : "MU" ,"ocut1": 4,  "olist" : "ab", "otype2" : "",   "ocut2": 4, "onebarrel": 0}, #0DR24-2MU4ab 
-            {"minDr": 0, "maxDr": 22, "mult": 2, "otype1" : "MU" ,"ocut1": 6,  "olist" : "ab", "otype2" : "",   "ocut2": 6, "onebarrel": 0}, #0DR22-2MU6ab
-            {"minDr": 0, "maxDr": 22, "mult": 1, "otype1" : "MU", "ocut1": 6,  "olist" : "ab", "otype2" : "MU", "ocut2": 4, "onebarrel": 0}, #0DR22-MU6ab-MU4ab
-            {"minDr": 0, "maxDr": 15, "mult": 2, "otype1" : "MU", "ocut1": 6,  "olist" : "ab", "otype2" : "",   "ocut2": 6, "onebarrel": 0}, #0DR15-2MU6ab  
-            ]
+        listofalgos=[
+            {"minDr": 0, "maxDr": 15, "mult": 2, "otype1" : "MU", "ocut1": 6,  "olist" : "ab", "otype2" : "",   "ocut2": 6, "onebarrel": 0}, #0DR15-2MU6ab        
+        ]
 
         for x in listofalgos:
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
+                
+            obj1 = "%s%s%s%s" % ((str(d.mult) if d.mult>1 else ""), d.otype1, str(d.ocut1), d.olist)    
+            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist)                                    
+            toponame = "%iDR%i-%s%s%s"  % (d.minDr, d.maxDr, "ONEBARREL-" if d.onebarrel==1 else "", obj1, "" if d.mult>1 else obj2)  # noqa: F821
 
-            obj1 = "%s%s%s%s" % ((str(d.mult) if d.mult>1 else ""), d.otype1, str(d.ocut1), d.olist)
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist)
-            toponame = "%iDR%i-%s%s%s"  % (d.minDr, d.maxDr, "ONEBARREL-" if d.onebarrel==1 else "", obj1, "" if d.mult>1 else obj2)
-
-            log.debug("Define %s", toponame)
+            log.info("Define %s" % toponame)
 
-            inputList = [d.otype1 + d.olist] if (d.mult>1 or d.otype1==d.otype2) else [d.otype1 + d.olist, d.otype2 + d.olist]
-            algoname = AlgConf.DeltaRSqrIncl1 if (d.mult>1 or d.otype1==d.otype2) else AlgConf.DeltaRSqrIncl2
+            inputList = [d.otype1 + d.olist] if (d.mult>1 or d.otype1==d.otype2) else [d.otype1 + d.olist, d.otype2 + d.olist]    
+            algoname = AlgConf.DeltaRSqrIncl1 if (d.mult>1 or d.otype1==d.otype2) else AlgConf.DeltaRSqrIncl2         
             alg = algoname( name = toponame,  inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-
-            if (d.mult>1 or d.otype1==d.otype2):
+ 
+            if (d.mult>1 or d.otype1==d.otype2):  
                 alg.addgeneric('InputWidth', HW.OutputWidthSelectMU)
                 alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
-                alg.addgeneric('RequireOneBarrel', d.onebarrel)
+                alg.addgeneric('RequireOneBarrel', d.onebarrel)  
             else:
                 alg.addgeneric('InputWidth1', HW.OutputWidthSelectMU)
                 alg.addgeneric('InputWidth2', HW.OutputWidthSelectMU) 
@@ -418,358 +416,404 @@ class TopoAlgoDef(object):
 
 
             alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut1)
-            alg.addvariable('MinET2', d.ocut2)
-            alg.addvariable('DeltaRMin', d.minDr*d.minDr)
-            alg.addvariable('DeltaRMax', d.maxDr*d.maxDr)
+            alg.addvariable('MinET1', d.ocut1)            
+            alg.addvariable('MinET2', d.ocut2)            
+            alg.addvariable('DeltaRMin', d.minDr*d.minDr)   
+            alg.addvariable('DeltaRMax', d.maxDr*d.maxDr)   
             tm.registerAlgo(alg)
-        
 
             
         # deta-dphi with ab+ab
-        for x in [     
-            #{"minDeta": 5, "maxDeta": 99, "minDphi": 5, "maxDphi": 99, "mult": 2, "otype1" : "MU", "ocut1": 4, "olist1" : "ab", "nleading1": HW.OutputWidthSelectMU, "otype2" : "", "ocut2": 4, "olist2": "", "nleading2": HW.OutputWidthSelectMU},
-            {"minDeta": 5, "maxDeta": 99, "minDphi": 5, "maxDphi": 99, "mult": 1, "otype1" : "MU", "ocut1": 6, "olist1" : "ab", "nleading1": HW.OutputWidthSelectMU, "otype2" : "MU", "ocut2": 4, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU},
-            {"minDeta": 5, "maxDeta": 99, "minDphi": 5, "maxDphi": 99, "mult": 2, "otype1" : "MU", "ocut1": 6, "olist1" : "ab", "nleading1": HW.OutputWidthSelectMU, "otype2" : "", "ocut2": 6, "olist2": "", "nleading2": HW.OutputWidthSelectMU},
+        for x in [
+                {"minDeta": 5, "maxDeta": 99, "minDphi": 5, "maxDphi": 99, "mult": 2, "otype1" : "MU", "ocut1": 4, "olist1" : "ab", "nleading1": HW.OutputWidthSelectMU, "otype2" : "", "ocut2": 4, "olist2": "", "nleading2": HW.OutputWidthSelectMU}, #5DETA99-5DPHI99-2MU4ab
             ]:
-            
+
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            obj1 = "%s%s%s%s" % ((str(d.mult) if d.mult>1 else ""), d.otype1, str(d.ocut1), d.olist1)
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2) if d.ocut2>0 else "", d.olist2)
-            toponame = "%sDETA%s-%sDPHI%s-%s%s"  % (d.minDeta, d.maxDeta, d.minDphi, d.maxDphi, obj1, "" if d.mult>1 else obj2)
+            obj1 = "%s%s%s%s" % ((str(d.mult) if d.mult>1 else ""), d.otype1, str(d.ocut1), d.olist1)  
+            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2) if d.ocut2>0 else "", d.olist2)  
+            toponame = "%sDETA%s-%sDPHI%s-%s%s"  % (d.minDeta, d.maxDeta, d.minDphi, d.maxDphi, obj1, "" if d.mult>1 else obj2)  
             
-            log.debug("Define %s", toponame)
+            log.info("Define %s" % toponame)
             
-            inputList = [d.otype1 + d.olist1] if (d.mult>1 or d.otype1==d.otype2) else [d.otype1 + d.olist1, d.otype2 + d.olist2]
-            algoname = AlgConf.DeltaEtaPhiIncl1 if (d.mult>1 or d.otype1==d.otype2) else AlgConf.DeltaEtaPhiIncl2            
+            inputList = [d.otype1 + d.olist1] if (d.mult>1 or d.otype1==d.otype2) else [d.otype1 + d.olist1, d.otype2 + d.olist2]    
+            algoname = AlgConf.DeltaEtaPhiIncl1 if (d.mult>1 or d.otype1==d.otype2) else AlgConf.DeltaEtaPhiIncl2        
             alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
             alg.addgeneric('NumResultBits', 1)                        
 
             
-            if (d.mult>1 or d.otype1==d.otype2):
-                alg.addgeneric('InputWidth', d.nleading1)
-                alg.addgeneric('MaxTob', d.nleading1)
-                alg.addvariable('MinET1', d.ocut1)
-                alg.addvariable('MinET2', d.ocut2)
-                alg.addvariable('MinDeltaEta', d.minDeta)
-                alg.addvariable('MaxDeltaEta', d.maxDeta)
-                alg.addvariable('MinDeltaPhi', d.minDphi)
-                alg.addvariable('MaxDeltaPhi', d.maxDphi)
+            if (d.mult>1 or d.otype1==d.otype2):  # noqa: F821
+                alg.addgeneric('InputWidth', d.nleading1)  # noqa: F821
+                alg.addgeneric('MaxTob', d.nleading1)      # noqa: F821
+                alg.addvariable('MinET1', d.ocut1)         # noqa: F821
+                alg.addvariable('MinET2', d.ocut2)         # noqa: F821
+                alg.addvariable('MinDeltaEta', d.minDeta)  # noqa: F821
+                alg.addvariable('MaxDeltaEta', d.maxDeta)  # noqa: F821
+                alg.addvariable('MinDeltaPhi', d.minDphi)  # noqa: F821
+                alg.addvariable('MaxDeltaPhi', d.maxDphi)  # noqa: F821
             else:
-                alg.addgeneric('InputWidth1', d.nleading1)
-                alg.addgeneric('InputWidth2', d.nleading2)
-                alg.addgeneric('MaxTob1', d.nleading1)
-                alg.addgeneric('MaxTob2', d.nleading2)
-                alg.addvariable('DeltaEtaMin', d.minDeta)
-                alg.addvariable('DeltaEtaMax', d.maxDeta)
-                alg.addvariable('DeltaPhiMin', d.minDphi)
-                alg.addvariable('DeltaPhiMax', d.maxDphi)
-                alg.addvariable('MinET1', d.ocut1)
-                alg.addvariable('MinET2', d.ocut2)
+                alg.addgeneric('InputWidth1', d.nleading1) # noqa: F821
+                alg.addgeneric('InputWidth2', d.nleading2) # noqa: F821
+                alg.addgeneric('MaxTob1', d.nleading1)     # noqa: F821
+                alg.addgeneric('MaxTob2', d.nleading2)     # noqa: F821
+                alg.addvariable('DeltaEtaMin', d.minDeta)  # noqa: F821
+                alg.addvariable('DeltaEtaMax', d.maxDeta)  # noqa: F821
+                alg.addvariable('DeltaPhiMin', d.minDphi)  # noqa: F821
+                alg.addvariable('DeltaPhiMax', d.maxDphi)  # noqa: F821
+                alg.addvariable('MinET1', d.ocut1)         # noqa: F821
+                alg.addvariable('MinET2', d.ocut2)         # noqa: F821
             
             tm.registerAlgo(alg)
 
 
-
         algolist=[
-               {"minDr": 0, "maxDr": 28, "otype1" : "MU" ,"ocut1": 10, "olist1" : "ab", "nleading1": HW.OutputWidthSelectMU, "inputwidth1": HW.OutputWidthSelectMU, "otype2" : "TAU", "ocut2": 12, "olist2" : "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU},   # 0DR28-MU10ab-TAU12abi
-               {"minDr": 0, "maxDr": 28, "otype1" : "TAU" ,"ocut1": 20, "olist1" : "abi","nleading1": HW.OutputWidthSelectTAU, "inputwidth1": HW.OutputWidthSelectTAU,"otype2" : "TAU", "ocut2": 12, "olist2" : "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU}, # 0DR28-TAU20abi-TAU12abi
-               {"minDr": 0, "maxDr": 25, "otype1" : "TAU" ,"ocut1": 20, "olist1" : "abi","nleading1": HW.OutputWidthSelectTAU, "inputwidth1": HW.OutputWidthSelectTAU,"otype2" : "TAU", "ocut2": 12, "olist2" : "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU}, #	0DR25-TAU20abi-TAU12abi
-            ] 
+            {"minDr": 0, "maxDr": 28, "otype1" : "TAU" ,"ocut1": 20, "olist1" : "abi","nleading1": HW.OutputWidthSelectTAU, "inputwidth1": HW.OutputWidthSelectTAU,"otype2" : "TAU", "ocut2": 12, "olist2" : "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU}, # 0DR28-TAU20abi-TAU12abi
+            {"minDr": 0, "maxDr": 25, "otype1" : "TAU" ,"ocut1": 20, "olist1" : "abi","nleading1": HW.OutputWidthSelectTAU, "inputwidth1": HW.OutputWidthSelectTAU,"otype2" : "TAU", "ocut2": 12, "olist2" : "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU}, #        0DR25-TAU20abi-TAU12abi
+        ]
 
 
         for x in algolist:
-
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            obj1 = "%s%s%s" % (d.otype1, str(d.ocut1), d.olist1)
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2)
-            toponame = "%iDR%i-%s%s"  % (d.minDr, d.maxDr, obj1, obj2)
 
-            log.debug("Define %s", toponame)
+            obj1 = "%s%s%s" % (d.otype1, str(d.ocut1), d.olist1)       
+            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2)      
+            toponame = "%iDR%i-%s%s"  % (d.minDr, d.maxDr, obj1, obj2) 
+
+            log.info("Define %s" % toponame)
             
-            inputList = [d.otype1 + d.olist1] if d.otype1==d.otype2 else [d.otype1 + d.olist1, d.otype2 + d.olist2]
-            algoname = AlgConf.DeltaRSqrIncl1 if d.otype1==d.otype2 else AlgConf.DeltaRSqrIncl2
+            inputList = [d.otype1 + d.olist1] if d.otype1==d.otype2 else [d.otype1 + d.olist1, d.otype2 + d.olist2] 
+            algoname = AlgConf.DeltaRSqrIncl1 if d.otype1==d.otype2 else AlgConf.DeltaRSqrIncl2         
             alg = algoname( name = toponame,  inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
 
                             
-            if d.otype1==d.otype2:
-                alg.addgeneric('InputWidth', d.inputwidth1)
-                alg.addgeneric('MaxTob', d.nleading1)
+            if d.otype1==d.otype2: 
+                alg.addgeneric('InputWidth', d.inputwidth1)   
+                alg.addgeneric('MaxTob', d.nleading1)         
             else:
-                alg.addgeneric('InputWidth1', d.inputwidth1)
-                alg.addgeneric('InputWidth2', d.inputwidth2) 
-                alg.addgeneric('MaxTob1', d.nleading1)
-                alg.addgeneric('MaxTob2', d.nleading2)
+                alg.addgeneric('InputWidth1', d.inputwidth1)  
+                alg.addgeneric('InputWidth2', d.inputwidth2)  
+                alg.addgeneric('MaxTob1', d.nleading1)        
+                alg.addgeneric('MaxTob2', d.nleading2)        
+
             alg.addgeneric('NumResultBits', 1)
 
-            if d.otype1==d.otype2:
-                alg.addvariable('MinET1', d.ocut1)
-                alg.addvariable('MinET2', d.ocut2)
-                alg.addvariable('DeltaRMin', d.minDr*d.minDr)
-                alg.addvariable('DeltaRMax', d.maxDr*d.maxDr)
+            if d.otype1==d.otype2:  
+                alg.addvariable('MinET1', d.ocut1) 
+                alg.addvariable('MinET2', d.ocut2) 
+                alg.addvariable('DeltaRMin', d.minDr*d.minDr) 
+                alg.addvariable('DeltaRMax', d.maxDr*d.maxDr) 
             else:
-                alg.addvariable('MinET1', d.ocut1, 0)
-                alg.addvariable('MinET2', d.ocut2, 0)
-                alg.addvariable('DeltaRMin', d.minDr*d.minDr, 0)
-                alg.addvariable('DeltaRMax', d.maxDr*d.maxDr, 0)
+                alg.addvariable('MinET1', d.ocut1, 0) 
+                alg.addvariable('MinET2', d.ocut2, 0) 
+                alg.addvariable('DeltaRMin', d.minDr*d.minDr, 0) 
+                alg.addvariable('DeltaRMax', d.maxDr*d.maxDr, 0) 
                 
             tm.registerAlgo(alg)        
-
             
         # (ATR-8194) L1Topo HT Trigger
-        for x in [            
-            {"minHT": 150, "otype" : "J", "ocut" : 20, "olist" : "s",   "nleading" : 5, "inputwidth": HW.OutputWidthSortJET, "oeta" : 31},
-            {"minHT": 190, "otype" : "J", "ocut" : 15, "olist" : "s",   "nleading" : 5, "inputwidth": HW.OutputWidthSortJET, "oeta" : 21},
-            {"minHT": 190, "otype" : "AJ", "ocut" : 15, "olist" : "all", "nleading" : HW.InputWidthJET, "inputwidth": HW.InputWidthJET, "oeta" : 21},
-            {"minHT": 150, "otype" : "AJ", "ocut" : 20, "olist" : "all", "nleading" : HW.InputWidthJET, "inputwidth": HW.InputWidthJET, "oeta" : 31},
-            {"minHT": 150, "otype" : "AJj","ocut" : 15, "olist" : "all", "nleading" : HW.InputWidthJET, "inputwidth": HW.InputWidthJET, "oeta" : 49},
-            {"minHT": 20,  "otype" : "AJj","ocut" : 15,  "olist" : "all", "nleading" : HW.InputWidthJET, "inputwidth": HW.InputWidthJET, "oeta" : 49},
-            ]:
-            
+        algoList = [
+            {"minHT": 150, "otype" : "J", "ocut" : 20, "olist" : "s",   "nleading" : 5, "inputwidth": HW.OutputWidthSortJET, "oeta" : 31}, #HT150-J20s5.ETA31
+            {"minHT": 190, "otype" : "J", "ocut" : 15, "olist" : "s",   "nleading" : 5, "inputwidth": HW.OutputWidthSortJET, "oeta" : 21}, #HT190-J15s5.ETA21
+            ]
+        for x in algoList:
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
+             
                 
-            toponame = "HT%d-%s%s%s%s.ETA%s" % (d.minHT, d.otype, str(d.ocut), d.olist, str(d.nleading) if d.olist=="s" else "", str(d.oeta))
+            toponame = "HT%d-%s%s%s%s.ETA%s" % (d.minHT, d.otype, str(d.ocut), d.olist, str(d.nleading) if d.olist=="s" else "", str(d.oeta)) 
             
-            log.debug("Define %s", toponame)
+            log.info("Define %s" % toponame)
             
-            inputList = d.otype + d.olist
+            inputList = d.otype + d.olist 
 
             alg = AlgConf.JetHT( name = toponame, inputs = inputList, outputs = [toponame], algoId = currentAlgoId ); currentAlgoId += 1
 
 
-            alg.addgeneric('InputWidth', d.inputwidth)
-            alg.addgeneric('MaxTob', d.nleading)        
-            alg.addgeneric('NumRegisters', 2 if d.olist=="all" else 0)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET', d.ocut)                        
+            alg.addgeneric('InputWidth', d.inputwidth)   # noqa: F821
+            alg.addgeneric('MaxTob', d.nleading)         # noqa: F821
+            alg.addgeneric('NumRegisters', 2 if d.olist=="all" else 0) # noqa: F821
+            alg.addgeneric('NumResultBits', 1) # noqa: F821
+            alg.addvariable('MinET', d.ocut)     # noqa: F821                    
             alg.addvariable('MinEta', 0)
-            alg.addvariable('MaxEta', d.oeta)            
-            alg.addvariable('MinHt', d.minHT) 
-            tm.registerAlgo(alg)  
+            alg.addvariable('MaxEta', d.oeta)    # noqa: F821
+            alg.addvariable('MinHt', d.minHT)    # noqa: F821
+            tm.registerAlgo(alg)
+
+            
+        # INVM_EM for Jpsi
+        invm_map = {"algoname": 'INVM_EMs6' , "ocutlist": [ 7, 12 ], "minInvm": 1, "maxInvm": 5, "otype" : "EM", "olist" : "s", "nleading" : 1, "inputwidth": HW.OutputWidthSortEM}
 
-        # INVM_EM for Jpsi    
-        invm_map = {"algoname": 'INVM_EMs6' , "ocutlist": [ 0, 7, 12 ], "minInvm": 1, "maxInvm": 5, "otype" : "EM", "olist" : "s", "nleading" : 1, "inputwidth": HW.OutputWidthSortEM}
         for x in [ invm_map,
             ]:
-            
+
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            inputList = d.otype + d.olist
+
+            inputList = d.otype + d.olist  # noqa: F821
             toponames=[]
 
-            for ocut in d.ocutlist:
-                toponame = "%iINVM%i-%s%s%s%s-EMs6"   % (d.minInvm, d.maxInvm, d.otype, str(ocut) if ocut > 0 else "", d.olist, str(d.nleading) if d.olist=="s" else "")
+            for ocut in d.ocutlist:      # noqa: F821
+                toponame = "%iINVM%i-%s%s%s%s-EMs6"   % (d.minInvm, d.maxInvm, d.otype, str(ocut) if ocut > 0 else "", d.olist, str(d.nleading) if d.olist=="s" else "")          # noqa: F821
                 toponames.append(toponame)
 
-            alg = AlgConf.InvariantMassInclusive2( name = d.algoname, inputs = [inputList, 'EMs'], outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1    
+            alg = AlgConf.InvariantMassInclusive2( name = d.algoname, inputs = [inputList, 'EMs'], outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1     # noqa: F821
 
 
-            alg.addgeneric('InputWidth1', d.inputwidth)
+            alg.addgeneric('InputWidth1', d.inputwidth) # noqa: F821
             #alg.addgeneric('InputWidth2', HW.InputWidthEM)
             alg.addgeneric('InputWidth2', HW.OutputWidthSortEM)
-            alg.addgeneric('MaxTob1', d.nleading)
+            alg.addgeneric('MaxTob1', d.nleading)       # noqa: F821
             #alg.addgeneric('MaxTob2', HW.InputWidthEM)
             alg.addgeneric('MaxTob2', HW.OutputWidthSortEM)
             alg.addgeneric('NumResultBits', len(toponames))
 
-            for bitid, ocut in enumerate(d.ocutlist):
+            for bitid, ocut in enumerate(d.ocutlist): # noqa: F821
                 alg.addvariable('MinET1', ocut, bitid)
                 alg.addvariable('MinET2', 0, bitid)
-                alg.addvariable('MinMSqr', (d.minInvm * _emscale_for_decision)*(d.minInvm * _emscale_for_decision), bitid)                
-                alg.addvariable('MaxMSqr', (d.maxInvm * _emscale_for_decision)*(d.maxInvm * _emscale_for_decision), bitid)
-                
+                alg.addvariable('MinMSqr', (d.minInvm * _emscale_for_decision)*(d.minInvm * _emscale_for_decision), bitid)        # noqa: F821
+                alg.addvariable('MaxMSqr', (d.maxInvm * _emscale_for_decision)*(d.maxInvm * _emscale_for_decision), bitid)        # noqa: F821
+
             tm.registerAlgo(alg)
+            
+            
+        # VBF deta    
+
+        algoList = [
+            {"minDeta": 0,  "maxDeta": 20, "otype" : "J",  "ocut1" : 50,  "olist" : "s", "nleading1" : 1, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 0, "nleading2": 2}, #0DETA20-J50s1-Js2
+        ]
+  
 
-        # W T&P: MINDPHI(J, XE0), (EM, XE0)
+        for x in algoList:
+            class d : pass
+            for k in x:
+                setattr (d, k, x[k])
+            
+  
+            toponame = "%iDETA%i-%s%s%s%s-%s%s%s%s"  % (d.minDeta, d.maxDeta,  # noqa: F821
+                                                        d.otype, str(d.ocut1) if d.ocut1 > 0 else "", d.olist, str(d.nleading1) if d.olist=="s" else "", # noqa: F821
+                                                        d.otype, str(d.ocut2) if d.ocut2 > 0 else "", d.olist, str(d.nleading2) if d.olist=="s" else "") # noqa: F821
+            
+            log.info("Define %s" % toponame)
+            inputList = d.otype + d.olist # noqa: F821
+            
+            alg = AlgConf.DeltaEtaIncl1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
 
 
-        alglist = [
-            {"minDPhi":  5, "otype" : "AJj", "ocut" : 10, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortJET},
-            {"minDPhi": 10, "otype" : "AJj", "ocut" : 10, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortJET},
-            {"minDPhi": 15, "otype" : "AJj", "ocut" : 10, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortJET},
-            {"minDPhi":  5, "otype" : "EM",  "ocut" : 12, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortEM},#new
-            #{"minDPhi": 10, "otype" : "EM",  "ocut" : 12, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortEM},#new
-            {"minDPhi":  5, "otype" : "EM",  "ocut" : 15, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortEM},#same
-            ]
 
-        for x in alglist:
+            alg.addgeneric('InputWidth', d.inputwidth1)  # noqa: F821
+            alg.addgeneric('MaxTob', d.nleading2)        # noqa: F821
+            alg.addgeneric('NumResultBits', 1)                        
+            alg.addvariable('MinET1', str(d.ocut1), 0)   # noqa: F821
+            alg.addvariable('MinET2', str(d.ocut2), 0)   # noqa: F821
+            alg.addvariable('MinDeltaEta', d.minDeta, 0) # noqa: F821
+            alg.addvariable('MaxDeltaEta', d.maxDeta, 0) # noqa: F821
+            tm.registerAlgo(alg)
             
+        # ZH Trigger
+        supportedalgolist = [
+            {"minDPhi": 10, "otype" : "J", "ocut" : 20, "olist" : "s", "nleading" : 2, "inputwidth": HW.OutputWidthSortJET, "ocut2": 30 }, #10MINDPHI-J20s2-XE30
+            {"minDPhi": 10, "otype" : "J", "ocut" : 20, "olist" : "s", "nleading" : 2, "inputwidth": HW.OutputWidthSortJET, "ocut2": 50 }, #10MINDPHI-J20s2-XE50
+        ] 
+
+
+        for x in supportedalgolist:
+
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
-                
-            toponame = "%02dMINDPHI-%s%s%s%s-XE0"  % (d.minDPhi, d.otype, str(d.ocut) if d.ocut > 0 else "", d.olist, str(d.nleading) if d.olist=="s" else "")
-            log.debug("Define %s", toponame)
-
-            inputList = d.otype + d.olist
-
-            alg = AlgConf.MinDeltaPhiIncl2( name = toponame, inputs = [ inputList, 'XE'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
+            
+                 
+            toponame = "%iMINDPHI-%s%s%s%s-XE%i"  % (d.minDPhi, d.otype, str(d.ocut) if d.ocut > 0 else "", d.olist, str(d.nleading) if d.olist=="s" else "",d.ocut2) # noqa: F821
+            log.info("Define %s" % toponame)
+            
+            inputList = d.otype + d.olist # noqa: F821
 
+            alg = AlgConf.MinDeltaPhiIncl2( name = toponame, inputs = [inputList, 'XE'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
 
-            alg.addgeneric('InputWidth1', d.inputwidth)
-            alg.addgeneric('InputWidth2', 1) 
-            alg.addgeneric('MaxTob1', d.nleading)
+            alg.addgeneric('InputWidth1', d.inputwidth) # noqa: F821
+            alg.addgeneric('InputWidth2', 1)  
+            alg.addgeneric('MaxTob1', d.nleading)       # noqa: F821
             alg.addgeneric('MaxTob2', 1)
             alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut)
-            alg.addvariable('MinET2', 0)
-            alg.addvariable('DeltaPhiMin', d.minDPhi, 0)
+            alg.addvariable('MinET1', d.ocut)           # noqa: F821
+            alg.addvariable('MinET2', d.ocut2)          # noqa: F821
+            alg.addvariable('DeltaPhiMin', d.minDPhi, 0)# noqa: F821
             tm.registerAlgo(alg)
+            
 
-        # W T&P MT
 
-        alglistmt = [
-            {"minMT": 25, "otype" : "EM", "ocut" : 12, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortEM},
-            #{"minMT": 30, "otype" : "EM", "ocut" : 12, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortEM},
-            {"minMT": 35, "otype" : "EM", "ocut" : 15, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortEM},
-            ]
-        for x in alglistmt:
+            
+
+        # LFV DETA ATR-14282 
+        algoList = [
+            {"minDeta": 0, "maxDeta": "04", "mult": 1, "otype1" : "EM", "ocut1": 8, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 10, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU}, #0DETA04-EM8abi-MU10ab
+            {"minDeta": 0, "maxDeta": "04", "mult": 1, "otype1" : "EM", "ocut1": 15, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 0, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU}, #0DETA04-EM15abi-MUab
+        ]
+
+        for x in algoList:
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            toponame = "%iMT-%s%s%s%s-XE0"  % (d.minMT, d.otype, str(d.ocut) if d.ocut > 0 else "", d.olist, str(d.nleading) if d.olist=="s" else "")
-            log.debug("Define %s", toponame)
-
-            inputList = d.otype + d.olist
-            
-            alg = AlgConf.TransverseMassInclusive1( name = toponame, inputs = [ inputList, 'XE'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
+ 
+            toponame = "%sDETA%s-%s%s%s-%s%s%s"  % (d.minDeta, d.maxDeta, d.otype1, str(d.ocut1), d.olist1, d.otype2, str(d.ocut2) if d.ocut2>0 else "", d.olist2) # noqa: F821
+ 
+            log.info("Define %s" % toponame)
 
+            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2] # noqa: F821
+            alg = AlgConf.DeltaEtaIncl2( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
+            alg.addgeneric('NumResultBits', 1)
 
+            alg.addgeneric('InputWidth1', d.nleading1)   # noqa: F821
+            alg.addgeneric('InputWidth2', d.nleading2)   # noqa: F821
+            alg.addgeneric('MaxTob1', d.nleading1)       # noqa: F821
+            alg.addgeneric('MaxTob2', d.nleading2)       # noqa: F821
+            alg.addvariable('MinET1', d.ocut1, 0)        # noqa: F821
+            alg.addvariable('MinET2', d.ocut2, 0)        # noqa: F821
+            alg.addvariable('MinDeltaEta', d.minDeta, 0) # noqa: F821
+            alg.addvariable('MaxDeltaEta', d.maxDeta, 0) # noqa: F821
 
-            alg.addgeneric('InputWidth', HW.OutputWidthSortEM)
-            alg.addgeneric('MaxTob', str(d.nleading))
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', str(d.ocut))
-            alg.addvariable('MinET2', 0)
-            alg.addvariable('MinMTSqr', d.minMT*d.minMT)                        
             tm.registerAlgo(alg)
 
-            
-        # VBF deta     
-        for x in [
-            #{"minDeta": 0,  "maxDeta": 10, "otype" : "J",  "ocut1" : 0,  "olist" : "s", "nleading1" : 1, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 0, "nleading2": 2},
-            ]:
+  
+        #EMU dphi
+        algoList = [
+            {"minDphi": 0, "maxDphi": "03", "mult": 1, "otype1" : "EM", "ocut1": 8, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 10, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU}, #0DPHI03-EM8abi-MU10ab
+            {"minDphi": 0, "maxDphi": "03", "mult": 1, "otype1" : "EM", "ocut1": 15, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 0, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU}, #0DPHI03-EM15abi-MUab
+        ]
+ 
 
+        for x in algoList:
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            toponame = "%iDETA%i-%s%s%s%s-%s%s%s%s"  % (d.minDeta, d.maxDeta,
-                                                        d.otype, str(d.ocut1) if d.ocut1 > 0 else "", d.olist, str(d.nleading1) if d.olist=="s" else "",
-                                                        d.otype, str(d.ocut2) if d.ocut2 > 0 else "", d.olist, str(d.nleading2) if d.olist=="s" else "")
-            
-            log.debug("Define %s", toponame)
-            inputList = d.otype + d.olist
             
-            alg = AlgConf.DeltaEtaIncl1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
-
+            toponame = "%sDPHI%s-%s%s%s-%s%s%s"  % (d.minDphi, d.maxDphi, d.otype1, str(d.ocut1), d.olist1, d.otype2, str(d.ocut2) if d.ocut2>0 else "", d.olist2) # noqa: F821
+ 
+            log.info("Define %s" % toponame)
 
+            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2] # noqa: F821
+            alg = AlgConf.DeltaPhiIncl2( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
+            alg.addgeneric('NumResultBits', 1)
+            
+            alg.addgeneric('InputWidth1', d.nleading1)   # noqa: F821
+            alg.addgeneric('InputWidth2', d.nleading2)   # noqa: F821
+            alg.addgeneric('MaxTob1', d.nleading1)       # noqa: F821
+            alg.addgeneric('MaxTob2', d.nleading2)       # noqa: F821
+            alg.addvariable('MinET1', d.ocut1, 0)        # noqa: F821
+            alg.addvariable('MinET2', d.ocut2, 0)        # noqa: F821
+            alg.addvariable('MinDeltaPhi', d.minDphi, 0) # noqa: F821
+            alg.addvariable('MaxDeltaPhi', d.maxDphi, 0) # noqa: F821
 
-            alg.addgeneric('InputWidth', d.inputwidth1)
-            alg.addgeneric('MaxTob', d.nleading2)
-            alg.addgeneric('NumResultBits', 1)                        
-            alg.addvariable('MinET1', str(d.ocut1), 0)            
-            alg.addvariable('MinET2', str(d.ocut2), 0)
-            alg.addvariable('MinDeltaEta', d.minDeta, 0)
-            alg.addvariable('MaxDeltaEta', d.maxDeta, 0)
             tm.registerAlgo(alg)
             
-        # ZH Trigger
+  
+            
+        # RATIO MATCH dedicated to Exotic 
+        toponame = '100RATIO-0MATCH-TAU30si2-EMall'
+        alg = AlgConf.RatioMatch( name = toponame, inputs = [ 'TAUsi', 'EMall'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
+        alg.addgeneric('InputWidth1', HW.OutputWidthSortTAU)
+        alg.addgeneric('InputWidth2', HW.InputWidthEM)      
+        alg.addgeneric('MaxTob1', 2)
+        alg.addgeneric('MaxTob2', HW.InputWidthEM)
+        alg.addgeneric('NumResultBits', 1)
+        alg.addvariable('MinET1', 30)
+        alg.addvariable('MinET2',  0)
+        alg.addvariable('Ratio', 100, 0)
+        tm.registerAlgo(alg)        
 
-        supportedalgolist = [
-               #{"minDPhi": 10, "otype" : "J", "ocut" : 0,  "olist" : "s", "nleading" : 2, "inputwidth": HW.OutputWidthSortJET, "ocut2": 50 },
-               {"minDPhi": 10, "otype" : "J", "ocut" : 20, "olist" : "s", "nleading" : 2, "inputwidth": HW.OutputWidthSortJET, "ocut2": 50 },
-               {"minDPhi": 10, "otype" : "J", "ocut" : 20, "olist" : "ab", "nleading" : HW.OutputWidthSelectJET, "inputwidth": HW.OutputWidthSelectJET, "ocut2": 50},
-               {"minDPhi": 10, "otype" : "CJ","ocut" : 20, "olist" : "ab", "nleading" : HW.OutputWidthSelectJET, "inputwidth": HW.OutputWidthSelectJET, "ocut2": 50},
-               {"minDPhi": 10, "otype" : "J", "ocut" : 20, "olist" : "s", "nleading" : 2, "inputwidth": HW.OutputWidthSortJET, "ocut2": 30 }, # NEW
-            ]
+        # NOT MATCH dedicated to Exotic
+        toponame = 'NOT-0MATCH-TAU30si1-EMall'
+        alg = AlgConf.NotMatch( name = toponame, inputs = [ 'TAUsi', 'EMall'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
+        alg.addgeneric('InputWidth1', HW.OutputWidthSortTAU)
+        alg.addgeneric('InputWidth2', HW.InputWidthEM)
+        alg.addgeneric('MaxTob1', 1)
+        alg.addgeneric('MaxTob2', HW.InputWidthEM)
+        alg.addgeneric('NumResultBits', 1)
+        alg.addvariable('MinET1', 30)
+        alg.addvariable('MinET2', 0)
+        alg.addvariable('EtaMin1', 0)
+        alg.addvariable('EtaMax1', 49)
+        alg.addvariable('EtaMin2', 0)
+        alg.addvariable('EtaMax2', 49)
+        alg.addvariable('DRCut', 0)
+        tm.registerAlgo(alg)        
 
-        for x in supportedalgolist:
-            
+        # MULT-BIT
+        for x in [
+            {"otype1" : "CMU" ,"ocut1": 4, "olist1" : "ab", "nleading1": HW.OutputWidthSelectMU, "inputwidth1": HW.OutputWidthSelectMU}, #MULT-CMU4ab
+            {"otype1" : "CMU" ,"ocut1": 6, "olist1" : "ab", "nleading1": HW.OutputWidthSelectMU, "inputwidth1": HW.OutputWidthSelectMU}, #MULT-CMU6ab
+            ]:
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
-                
-            toponame = "%iMINDPHI-%s%s%s%s-XE%i"  % (d.minDPhi, d.otype, str(d.ocut) if d.ocut > 0 else "", d.olist, str(d.nleading) if d.olist=="s" else "",d.ocut2)
-            log.debug("Define %s", toponame)
-            
-            inputList = d.otype + d.olist
 
-            alg = AlgConf.MinDeltaPhiIncl2( name = toponame, inputs = [inputList, 'XE'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
+            
+                  
+            toponame = "MULT-%s%s%s" % (d.otype1, str(d.ocut1), d.olist1) # noqa: F821
+            toponames = [toponame+"[0]", toponame+"[1]"]
+            log.info("Define %s" % toponames)
+            
+            inputList = [d.otype1 + d.olist1]  # noqa: F821
+            alg = AlgConf.Multiplicity( name = toponame,  inputs = inputList, outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1
+            
+            alg.addgeneric('InputWidth', d.inputwidth1) # noqa: F821
+            alg.addgeneric('NumResultBits', 2)
+            alg.addvariable('MinET', d.ocut1-1) # for MU threshold -1   # noqa: F821
+            tm.registerAlgo(alg)        
 
-            alg.addgeneric('InputWidth1', d.inputwidth)
-            alg.addgeneric('InputWidth2', 1)  
-            alg.addgeneric('MaxTob1', d.nleading)
-            alg.addgeneric('MaxTob2', 1)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut)
-            alg.addvariable('MinET2', d.ocut2)
-            alg.addvariable('DeltaPhiMin', d.minDPhi, 0)
-            tm.registerAlgo(alg)
 
+        # DISAMB 2 lists
+        algolist=[
+            {"disamb": 2, "otype1" : "TAU", "ocut1": 12, "olist1" : "abi", "nleading1": HW.OutputWidthSelectTAU, "otype2" : "J", "ocut2": 25, "olist2": "ab", "nleading2": HW.OutputWidthSelectJET}, #1DISAMB-TAU12abi-J25ab
+        ]
             
-        # added for muon-jet:
-        for x in [  
-            {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 4,  "olist1" : "ab", "otype2" : "CJ", "ocut2": 15, "olist2" : "ab"},
-            {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 4,  "olist1" : "ab", "otype2" : "CJ", "ocut2": 30, "olist2" : "ab"},
-            {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 6,  "olist1" : "ab", "otype2" : "CJ", "ocut2": 20, "olist2" : "ab"},
-            {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 6,  "olist1" : "ab", "otype2" : "CJ", "ocut2": 25, "olist2" : "ab"},
-            {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 4,  "olist1" : "ab", "otype2" : "CJ", "ocut2": 20, "olist2" : "ab"} 
-            ]:
+        for x in algolist :
 
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            toponame = "%iDR%02d-%s%s%s-%s%s%s"  % (d.minDr, d.maxDr, d.otype1, str(d.ocut1), d.olist1, d.otype2, str(d.ocut2), d.olist2)
-            log.debug("Define %s", toponame)
+     
+ 
+            obj1 = "%s%s%s"  % (d.otype1, str(d.ocut1), d.olist1) # noqa: F821
+            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2) # noqa: F821
+            toponame = "%sDISAMB-%s%s"  % ( d.disamb if d.disamb>0 else "", obj1, obj2) # noqa: F821
             
-            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
-
-            alg = AlgConf.DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-
-            alg.addgeneric('InputWidth1', HW.OutputWidthSelectMU)
-            alg.addgeneric('InputWidth2', HW.OutputWidthSelectJET)
-            alg.addgeneric('MaxTob1', HW.OutputWidthSelectMU)
-            alg.addgeneric('MaxTob2', HW.OutputWidthSelectJET)
-            alg.addgeneric('NumResultBits', 1)                        
-            alg.addvariable('MinET1', d.ocut1, 0)
-            alg.addvariable('MinET2', d.ocut2, 0)
-            alg.addvariable('DeltaRMin', d.minDr*d.minDr, 0)
-            alg.addvariable('DeltaRMax', d.maxDr*d.maxDr, 0)
-            tm.registerAlgo(alg)
+            log.info("Define %s" % toponame)
             
-        # dimu INVM items
+            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2] # noqa: F821
+            alg = AlgConf.DisambiguationIncl2( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
+            alg.addgeneric('InputWidth1', d.nleading1 if d.olist1.find("ab")>=0 else -1000) # noqa: F821
+            alg.addgeneric('InputWidth2', d.nleading2 if d.olist2.find("ab")>=0 else -1000)  # noqa: F821
+            alg.addgeneric('MaxTob1', d.nleading1) # noqa: F821
+            alg.addgeneric('MaxTob2', d.nleading2) # noqa: F821
+            alg.addgeneric('NumResultBits', 1)
+            alg.addgeneric('ClusterOnly', 1 if (d.otype1=="EM" and d.otype2=="TAU") or (d.otype1=="TAU" and d.otype2=="EM") else 0 ) # noqa: F821
+            alg.addgeneric('ApplyDR', 0)
+            alg.addvariable('MinET1', d.ocut1) # noqa: F821
+            alg.addvariable('MinET2', d.ocut2) # noqa: F821
+            alg.addvariable('DisambDRSqrMin', d.disamb*d.disamb) # noqa: F821
+            tm.registerAlgo(alg)
+        
+        # DISAMB 3 lists with DR cut to 2nd and 3rd lists Lidija
 
         algolist=[
-                #            {"minInvm": 2, "maxInvm": 999, "mult": 2, "otype1" : "CMU","ocut1": 4, "olist" : "ab", "otype2" :"", "ocut2" : 0, "onebarrel": 0},
-                #            {"minInvm": 2, "maxInvm": 999, "mult": 1, "otype1" : "CMU","ocut1": 4, "olist" : "ab", "otype2" :"MU", "ocut2" : 4, "onebarrel": 0},
-                #            {"minInvm": 2, "maxInvm": 999, "mult": 1, "otype1" : "MU", "ocut1": 6, "olist" : "ab", "otype2" :"MU", "ocut2" : 4, "onebarrel": 1},
-                #            {"minInvm": 2, "maxInvm": 999, "mult": 1, "otype1" : "CMU","ocut1": 6, "olist" : "ab", "otype2" :"CMU","ocut2" : 4, "onebarrel": 0},
-
-
-                #            {"minInvm": 4, "maxInvm": 8, "mult": 2, "otype1" : "CMU","ocut1": 4, "olist" : "ab", "otype2" : "",  "ocut2" : 0, "onebarrel": 0},
-                #            {"minInvm": 4, "maxInvm": 8, "mult": 1, "otype1" : "CMU","ocut1": 4, "olist" : "ab", "otype2" : "MU","ocut2" : 4, "onebarrel": 0},
-                #            {"minInvm": 4, "maxInvm": 8, "mult": 1, "otype1" : "MU", "ocut1": 6, "olist" : "ab", "otype2" : "MU","ocut2" : 4, "onebarrel": 1},
-                #            {"minInvm": 4, "maxInvm": 8, "mult": 1, "otype1" : "CMU","ocut1": 6, "olist" : "ab", "otype2" : "CMU","ocut2": 4, "onebarrel": 0},
-                #SX
-                #{"minInvm": 1, "maxInvm": 19, "mult": 1, "otype1" : "CMU","ocut1": 4, "olist" : "ab", "otype2" :"MU", "ocut2" : 4, "onebarrel": 0}, #1INVM19-CMU4ab-MU4ab
-                {"minInvm": 2, "maxInvm": 8, "mult": 1, "otype1" : "CMU","ocut1": 4, "olist" : "ab", "otype2" :"MU", "ocut2" : 4, "onebarrel": 0}, #2INVM8-CMU4ab-MU4ab
-                #{"minInvm": 1, "maxInvm": 19, "mult": 2, "otype1" : "CMU","ocut1": 4, "olist" : "ab", "otype2" :"", "ocut2" : 0, "onebarrel": 0}, #1INVM19-2CMU4ab
-                #{"minInvm": 2, "maxInvm": 8, "mult": 2, "otype1" : "CMU","ocut1": 4, "olist" : "ab", "otype2" :"", "ocut2" : 0, "onebarrel": 0}, #2INVM8-2CMU4ab
-                {"minInvm": 2, "maxInvm": 8, "mult": 1, "otype1" : "MU", "ocut1": 6, "olist" : "ab", "otype2" : "MU","ocut2" : 4, "onebarrel": 1}, #2INVM8-ONEBARREL-MU6ab-MU4ab
-            ]
+            {"disamb": 2, "otype1" : "TAU",  "ocut1": 20, "olist1": "abi","nleading1": HW.OutputWidthSelectTAU, "inputwidth1": HW.OutputWidthSelectTAU, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU, "otype3" : "J", "ocut3": 25, "olist3": "ab", "nleading3": HW.OutputWidthSelectJET, "inputwidth3": HW.OutputWidthSelectJET, "drcutmin": 0, "drcutmax": 25}, # 2DISAMB-J25ab-0DR25-TAU20abi-TAU12abi
+            {"disamb": 2, "otype1" : "EM",  "ocut1": 15, "olist1": "shi","nleading1": 2, "inputwidth1": HW.OutputWidthSortEM, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU, "otype3" : "J", "ocut3": 25, "olist3": "ab", "nleading3": HW.OutputWidthSelectJET, "inputwidth3": HW.OutputWidthSelectJET, "drcutmin": 0, "drcutmax": 28}, #2DISAMB-J25ab-0DR28-EM15his2-TAU12abi
+            {"disamb": 2, "otype1" : "TAU",  "ocut1": 20, "olist1": "abi","nleading1": HW.OutputWidthSelectTAU, "inputwidth1": HW.OutputWidthSelectTAU, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU, "otype3" : "J", "ocut3": 25, "olist3": "ab", "nleading3": HW.OutputWidthSelectJET, "inputwidth3": HW.OutputWidthSelectJET, "drcutmin": 0, "drcutmax": 28}, # 2DISAMB-J25ab-0DR28-TAU20abi-TAU12abi
+
+        ]
+       
 
         for x in algolist:
 
@@ -777,725 +821,642 @@ class TopoAlgoDef(object):
             for k in x:
                 setattr (d, k, x[k])
 
-            obj1 = "%s%s%s%s" % ((str(d.mult) if d.mult>1 else ""), d.otype1, str(d.ocut1), d.olist)
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist)
-            toponame = "%iINVM%i-%s%s%s"  % (d.minInvm, d.maxInvm, "ONEBARREL-" if d.onebarrel==1 else "", obj1, "" if d.mult>1 else obj2)
-
-            log.debug("Define %s", toponame)
-
-
-            inputList = [d.otype1 + d.olist] if (d.mult>1 or d.otype1==d.otype2) else [d.otype1 + d.olist, d.otype2 + d.olist]
-            algoname = AlgConf.InvariantMassInclusive1 if (d.mult>1 or d.otype1==d.otype2) else AlgConf.InvariantMassInclusive2
-            alg = algoname( name = toponame,  inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-            if (d.mult>1 or d.otype1==d.otype2):
-                alg.addgeneric('InputWidth', HW.OutputWidthSelectMU) 
-                alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
-                alg.addgeneric('RequireOneBarrel', d.onebarrel)
-            else:
-                alg.addgeneric('InputWidth1', HW.OutputWidthSelectMU)
-                alg.addgeneric('InputWidth2', HW.OutputWidthSelectMU) 
-                alg.addgeneric('MaxTob1', HW.OutputWidthSelectMU)
-                alg.addgeneric('MaxTob2', HW.OutputWidthSelectMU)
+ 
+            obj1 = "-%s%s%s"  % (d.otype1, str(d.ocut1), d.olist1.replace('shi','his') + (str(d.nleading1) if d.olist1.find('s')>=0 else ""))  # noqa: F821
+            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2.replace('shi','his') + (str(d.nleading2) if d.olist2.find('s')>=0 else "")) # noqa: F821
+            obj3 = "%s%s%s" % (d.otype3, str(d.ocut3), d.olist3) # noqa: F821
+            toponame = "%sDISAMB-%s-%dDR%d%s%s"  % ( str(d.disamb) if d.disamb>0 else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)  # noqa: F821
 
+            log.info("Define %s" % toponame)
+            
+            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]  # noqa: F821
+            alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
+            alg.addgeneric('InputWidth1', d.inputwidth1) # noqa: F821
+            alg.addgeneric('InputWidth2', d.inputwidth2) # noqa: F821
+            alg.addgeneric('InputWidth3', d.inputwidth3) # noqa: F821
+            alg.addgeneric('MaxTob1', d.nleading1) # noqa: F821
+            alg.addgeneric('MaxTob2', d.nleading2) # noqa: F821
+            alg.addgeneric('MaxTob3', d.nleading3) # noqa: F821
             alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut1)
-            alg.addvariable('MinET2', d.ocut2 if d.ocut2>0 else d.ocut1)
-            alg.addvariable('MinMSqr', d.minInvm * d.minInvm)
-            alg.addvariable('MaxMSqr', d.maxInvm * d.maxInvm)
-            tm.registerAlgo(alg)
-
-        # dimu DR items
-        algolist=[#            {"minDr": 2, "maxDr": 15, "mult": 1, "otype1" : "CMU","ocut1": 4,  "olist" : "ab", "otype2" : "MU", "ocut2": 4, "onebarrel": 0},
-                #            {"minDr": 2, "maxDr": 15, "mult": 2, "otype1" : "CMU","ocut1": 4,  "olist" : "ab", "otype2" : "",   "ocut2": 4, "onebarrel": 0},
-                #            {"minDr": 2, "maxDr": 15, "mult": 1, "otype1" : "MU", "ocut1": 6,  "olist" : "ab", "otype2" : "MU","ocut2": 4, "onebarrel": 1},            
-                #            {"minDr": 2, "maxDr": 15, "mult": 1, "otype1" : "CMU","ocut1": 6,  "olist" : "ab", "otype2" : "CMU","ocut2": 4, "onebarrel": 0},
-
-                #SX
-                {"minDr": 0, "maxDr": 24, "mult": 2, "otype1" : "CMU","ocut1": 4,  "olist" : "ab", "otype2" : "",   "ocut2": 4, "onebarrel": 0}, #0DR24-2CMU4ab
-                {"minDr": 0, "maxDr": 24, "mult": 1, "otype1" : "CMU","ocut1": 4,  "olist" : "ab", "otype2" : "MU","ocut2": 4, "onebarrel": 0}, #0DR24-CMU4ab-MU4ab  
-            ]
-
-        for x in algolist : 
-            class d : pass
-            for k in x:
-                setattr (d, k, x[k])
-
-            obj1 = "%s%s%s%s" % ((str(d.mult) if d.mult>1 else ""), d.otype1, str(d.ocut1), d.olist)
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist)
-            toponame = "%iDR%i-%s%s%s"  % (d.minDr, d.maxDr, "ONEBARREL-" if d.onebarrel==1 else "", obj1, "" if d.mult>1 else obj2)
-
-            log.debug("Define %s", toponame)
-
-            inputList = [d.otype1 + d.olist] if (d.mult>1 or d.otype1==d.otype2) else [d.otype1 + d.olist, d.otype2 + d.olist]
-            algoname = AlgConf.DeltaRSqrIncl1 if (d.mult>1 or d.otype1==d.otype2) else AlgConf.DeltaRSqrIncl2
-            alg = algoname( name = toponame,  inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-            if (d.mult>1 or d.otype1==d.otype2):
-                alg.addgeneric('InputWidth', HW.OutputWidthSelectMU)
-                alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
-                alg.addgeneric('RequireOneBarrel', d.onebarrel)
-            else:
-                alg.addgeneric('InputWidth1', HW.OutputWidthSelectMU)
-                alg.addgeneric('InputWidth2', HW.OutputWidthSelectMU) 
-                alg.addgeneric('MaxTob1', HW.OutputWidthSelectMU)
-                alg.addgeneric('MaxTob2', HW.OutputWidthSelectMU)
-
+            alg.addvariable('MinET1', d.ocut1, 0) # noqa: F821
+            alg.addvariable('MinET2', d.ocut2, 0) # noqa: F821
+            alg.addvariable('MinET3', d.ocut3, 0) # noqa: F821
+            alg.addvariable('DisambDRSqrMin', d.drcutmin*d.drcutmin, 0) # noqa: F821
+            alg.addvariable('DisambDRSqrMax', d.drcutmax*d.drcutmax, 0) # noqa: F821
+            alg.addvariable('DisambDRSqr', d.disamb*d.disamb, 0) # noqa: F821
+            tm.registerAlgo(alg)            
 
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut1)
-            alg.addvariable('MinET2', d.ocut2)
-            alg.addvariable('DeltaRMin', d.minDr*d.minDr)
-            alg.addvariable('DeltaRMax', d.maxDr*d.maxDr)
-            tm.registerAlgo(alg)
 
 
-        # deta-dphi with ab+ab
-        if usev7:
-            algoList = [
-               {"minDeta": 0, "maxDeta": 20, "minDphi": 0, "maxDphi": 20, "mult": 1, "otype1" : "TAU", "ocut1": 20, "olist1" : "abi", "nleading1": HW.OutputWidthSelectTAU, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU},
-            ]
-        else:
-            algoList = [
-               {"minDeta": 0, "maxDeta": "04", "minDphi": 0, "maxDphi": "03", "mult": 1, "otype1" : "EM", "ocut1": 8, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 10, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU},
-               {"minDeta": 0, "maxDeta": "04", "minDphi": 0, "maxDphi": "03", "mult": 1, "otype1" : "EM", "ocut1": 15, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 0, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU},
-               {"minDeta": 0, "maxDeta": 20, "minDphi": 0, "maxDphi": 20, "mult": 1, "otype1" : "TAU", "ocut1": 20, "olist1" : "abi", "nleading1": HW.OutputWidthSelectTAU, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU},
-            ]
+        #
+        xemap = [{"etcut": 0, "Threlist": [ 40, 50, 55, 60, 65, 75 ]}]
+        for x in xemap:
 
-        for x in algoList:                 
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            obj1 = "%s%s%s%s" % ((str(d.mult) if d.mult>1 else ""), d.otype1, str(d.ocut1), d.olist1)
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2) if d.ocut2>0 else "", d.olist2)
-            toponame = "%sDETA%s-%sDPHI%s-%s%s"  % (d.minDeta, d.maxDeta, d.minDphi, d.maxDphi, obj1, "" if d.mult>1 else obj2)
-            
-            log.debug("Define %s", toponame)
-            
-            inputList = [d.otype1 + d.olist1] if (d.mult>1 or d.otype1==d.otype2) else [d.otype1 + d.olist1, d.otype2 + d.olist2]
-            algoname = AlgConf.DeltaEtaPhiIncl1 if (d.mult>1 or d.otype1==d.otype2) else AlgConf.DeltaEtaPhiIncl2
-            
-            alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-            alg.addgeneric('NumResultBits', 1)                        
+                
+            log.info("Define %s" % toponame)
             
-            if (d.mult>1 or d.otype1==d.otype2):
-                alg.addgeneric('InputWidth', d.nleading1)
-                alg.addgeneric('MaxTob', d.nleading1)
-                alg.addvariable('MinET1', d.ocut1, 0)
-                alg.addvariable('MinET2', d.ocut2, 0)
-                alg.addvariable('MinDeltaEta', d.minDeta, 0)
-                alg.addvariable('MaxDeltaEta', d.maxDeta, 0)
-                alg.addvariable('MinDeltaPhi', d.minDphi, 0)
-                alg.addvariable('MaxDeltaPhi', d.maxDphi, 0)
-            else:
-                alg.addgeneric('InputWidth1', d.nleading1)
-                alg.addgeneric('InputWidth2', d.nleading2)
-                alg.addgeneric('MaxTob1', d.nleading1)
-                alg.addgeneric('MaxTob2', d.nleading2)
-                alg.addvariable('MinET1', d.ocut1, 0)
-                alg.addvariable('MinET2', d.ocut2, 0)
-                alg.addvariable('DeltaEtaMin', d.minDeta, 0)
-                alg.addvariable('DeltaEtaMax', d.maxDeta, 0)
-                alg.addvariable('DeltaPhiMin', d.minDphi, 0)
-                alg.addvariable('DeltaPhiMax', d.maxDphi, 0)
+            inputList = ['XENoSort', 'AJall']
+            toponames=[]
 
+            for minxe in d.Threlist:  # noqa: F821
+                toponames.append("KF-XE%s-AJall"  % (minxe))
+            
+            alg = AlgConf.KalmanMETCorrection( name = "KF-XE-AJall", inputs = inputList, outputs = toponames, algoId = currentAlgoId ); currentAlgoId += 1
+            alg.addgeneric('InputWidth', HW.InputWidthJET)
+            alg.addgeneric('NumResultBits', len(toponames))
+            alg.addvariable('MinET', 0)
+            for bitid,minxe in enumerate(d.Threlist):  # noqa: F821
+                alg.addvariable('KFXE', str(minxe), bitid)
             
             tm.registerAlgo(alg)
 
-        # LFV DETA ATR-14282
-        if usev7:
-            algoList = [
-                {"minDeta": 0, "maxDeta": "04", "mult": 1, "otype1" : "EM", "ocut1": 8, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 10, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU},
-                {"minDeta": 0, "maxDeta": "04", "mult": 1, "otype1" : "EM", "ocut1": 15, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 0, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU},
-                ]
-        else:
-            algoList = []
-
-        for x in algoList:
+             
+        # LATE MUON : LATE-MU10s1
+        for x in [     
+             {"otype" : "LATE-MU", "ocut" : 10, "inputwidth": HW.NumberOfDelayedMuons},
+            ]:
 
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            toponame = "%sDETA%s-%s%s%s-%s%s%s"  % (d.minDeta, d.maxDeta, d.otype1, str(d.ocut1), d.olist1, d.otype2, str(d.ocut2) if d.ocut2>0 else "", d.olist2)
- 
-            log.debug("Define %s", toponame)
 
-            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
-            alg = AlgConf.DeltaEtaIncl2( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-            alg.addgeneric('NumResultBits', 1)
+    
+            toponame = "%s%ss1"  % ( d.otype, str(d.ocut) ) # noqa: F821
 
-            alg.addgeneric('InputWidth1', d.nleading1)
-            alg.addgeneric('InputWidth2', d.nleading2)
-            alg.addgeneric('MaxTob1', d.nleading1)
-            alg.addgeneric('MaxTob2', d.nleading2)
-            alg.addvariable('MinET1', d.ocut1, 0)
-            alg.addvariable('MinET2', d.ocut2, 0)
-            alg.addvariable('MinDeltaEta', d.minDeta, 0)
-            alg.addvariable('MaxDeltaEta', d.maxDeta, 0)
+            log.info("Define %s" % toponame)
 
-            tm.registerAlgo(alg)
+            inputList = 'LMUs'
 
-        if usev7:
-            algoList = [
-                {"minDphi": 0, "maxDphi": "03", "mult": 1, "otype1" : "EM", "ocut1": 8, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 10, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU},
-                {"minDphi": 0, "maxDphi": "03", "mult": 1, "otype1" : "EM", "ocut1": 15, "olist1" : "abi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "MU", "ocut2": 0, "olist2": "ab", "nleading2": HW.OutputWidthSelectMU},
-                ]
-        else:
-            algoList = []
+            alg = AlgConf.EtCut( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+            alg.addgeneric('InputWidth', d.inputwidth)  # noqa: F821
+            alg.addgeneric('MaxTob', 1)
+            alg.addgeneric('NumResultBits', 1)
+            alg.addvariable('MinET', str(d.ocut)) # noqa: F821
+            tm.registerAlgo(alg)
+            
 
+        # (ATR-12748) fat jet trigger with Simple Cone algo
+        algoList = [
+            {"minHT": 111, "otype" : "CJ", "ocut" : 15, "olist" : "ab", "nleading" : HW.OutputWidthSelectJET, "inputwidth": HW.OutputWidthSelectJET, "oeta" : 26}, #SC111-CJ15ab.ETA26
+        ]
         for x in algoList:
 
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
-            
-            toponame = "%sDPHI%s-%s%s%s-%s%s%s"  % (d.minDphi, d.maxDphi, d.otype1, str(d.ocut1), d.olist1, d.otype2, str(d.ocut2) if d.ocut2>0 else "", d.olist2)
- 
-            log.debug("Define %s", toponame)
 
-            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
-            alg = AlgConf.DeltaPhiIncl2( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-            alg.addgeneric('NumResultBits', 1)
-            
-            alg.addgeneric('InputWidth1', d.nleading1)
-            alg.addgeneric('InputWidth2', d.nleading2)
-            alg.addgeneric('MaxTob1', d.nleading1)
-            alg.addgeneric('MaxTob2', d.nleading2)
-            alg.addvariable('MinET1', d.ocut1, 0)
-            alg.addvariable('MinET2', d.ocut2, 0)
-            alg.addvariable('MinDeltaPhi', d.minDphi, 0)
-            alg.addvariable('MaxDeltaPhi', d.maxDphi, 0)
 
-            tm.registerAlgo(alg)
+            toponame = "SC%d-%s%s%s%s.ETA%s" % (d.minHT, d.otype, str(d.ocut), d.olist, str(d.nleading) if d.olist=="s" else "", str(d.oeta)) # noqa: F821
 
-            
-        # JetMatch
-        toponame = "0MATCH-4AJ20.ETA31-4AJj15.ETA31"
-        alg = AlgConf.MultiplicityCustom( name = toponame, inputs = [ 'AJMatchall' ], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
-        alg.addgeneric('InputWidth', HW.InputWidthJET)
-        alg.addgeneric('NumResultBits', 1)
-        alg.addvariable('MinET', 0)
-        alg.addvariable('MinEta', 0)
-        alg.addvariable('MaxEta', 31)
-        alg.addvariable('MinMultiplicity', 4)
-        tm.registerAlgo(alg)
-        
-        # NoMatch for W T&P
-        toponame = "NOT-02MATCH-EM10s1-AJj15all.ETA49"
-        alg = AlgConf.NotMatch( name = toponame, inputs = [ 'EMs', 'AJjall'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
-        alg.addgeneric('InputWidth1', HW.OutputWidthSortEM)
-        alg.addgeneric('InputWidth2', HW.InputWidthJET)
-        alg.addgeneric('MaxTob1', 1)
-        alg.addgeneric('MaxTob2', HW.InputWidthJET)
-        alg.addgeneric('NumResultBits', 1)
-        alg.addvariable('MinET1', 10)
-        alg.addvariable('MinET2', 15)
-        alg.addvariable('EtaMin1', 0)
-        alg.addvariable('EtaMax1', 49)
-        alg.addvariable('EtaMin2', 0)
-        alg.addvariable('EtaMax2', 49)
-        alg.addvariable('DRCut', 4)
-        tm.registerAlgo(alg)
+            log.info("Define %s" % toponame)
 
-        # RATIO SUM for W T&P 
-        #toponame = "05RATIO-XE0-SUM0-EM10s1-HT0-AJj15all.ETA49"
-        #alg = AlgConf.RatioSum( name = toponame, inputs = ['XE', 'AJjall', 'EMs'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
-        #alg.addgeneric('InputWidth1', 1)
-        #alg.addgeneric('InputWidth2', HW.InputWidthJET) 
-        #alg.addgeneric('InputWidth3', HW.OutputWidthSortEM) 
-        #alg.addgeneric('MaxTob1', 1)
-        #alg.addgeneric('MaxTob2', HW.InputWidthJET)
-        #alg.addgeneric('MaxTob3', 1)
-        #alg.addgeneric('NumResultBits', 1)
-        #alg.addgeneric('UseCluster05Granularity', 1)
-        #alg.addvariable('MinET2', 15)
-        #alg.addvariable('EtaMin2', 0)
-        #alg.addvariable('EtaMax2', 49)
-        #alg.addvariable('MinET3', 10)
-        #alg.addvariable('EtaMin3', 0)
-        #alg.addvariable('EtaMax3', 49)
-        #alg.addvariable('MinMET', 0)
-        #alg.addvariable('HT', 0)
-        #alg.addvariable('SUM', 0)
-        #alg.addvariable('Ratio', 5, 0)
-        #tm.registerAlgo(alg)
-
-        # RATIO for W T&P
-        for x in [
-            {"minRatio": 5, "ocut" : 15, "Ratio": "RATIO"},
-            #{"minRatio": 8, "ocut" : 15, "Ratio": "RATIO"},
-            {"minRatio": 90, "ocut" : 15, "Ratio": "RATIO2"},
-            {"minRatio": 250, "ocut" : 15, "Ratio": "RATIO2"},
-            ]:
-            
-            class d : pass
-            for k in x:
-                setattr (d, k, x[k])
-                
-            toponame = "%02d%s-XE0-HT0-AJj%sall.ETA49"  % (d.minRatio, d.Ratio, str(d.ocut))
-            log.debug("Define %s", toponame)
-            
-            alg = AlgConf.Ratio( name = toponame, inputs = ['XE', 'AJjall'], outputs = [ toponame ], algoId = currentAlgoId ) 
-            currentAlgoId += 1
-            alg.addgeneric('InputWidth1', 1) 
-            alg.addgeneric('InputWidth2', HW.InputWidthJET) 
-            alg.addgeneric('MaxTob1', 1)
-            alg.addgeneric('MaxTob2', HW.InputWidthJET)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addgeneric('isXE2', 1 if d.Ratio=="RATIO2" else 0)
-            alg.addvariable('MinET2', str(d.ocut))
-            alg.addvariable('EtaMin', 0)
-            alg.addvariable('EtaMax', 49)
-            alg.addvariable('MinET1', 0)                        
-            alg.addvariable('HT', 0)
-            alg.addvariable('Ratio', str(d.minRatio))
-            tm.registerAlgo(alg)
+            inputList = d.otype + d.olist # noqa: F821
 
-            
-        # RATIO MATCH dedicated to Exotic 
-        toponame = '100RATIO-0MATCH-TAU30si2-EMall'
-        alg = AlgConf.RatioMatch( name = toponame, inputs = [ 'TAUsi', 'EMall'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
-        alg.addgeneric('InputWidth1', HW.OutputWidthSortTAU)
-        alg.addgeneric('InputWidth2', HW.InputWidthEM)      
-        alg.addgeneric('MaxTob1', 2)
-        alg.addgeneric('MaxTob2', HW.InputWidthEM)
-        alg.addgeneric('NumResultBits', 1)
-        alg.addvariable('MinET1', 30)
-        alg.addvariable('MinET2',  0)
-        alg.addvariable('Ratio', 100, 0)
-        tm.registerAlgo(alg)        
+            alg = AlgConf.SimpleCone( name = toponame, inputs = inputList, outputs = [toponame], algoId = currentAlgoId ); currentAlgoId += 1
 
 
-        # NOT MATCH dedicated to Exotic
-        toponame = 'NOT-0MATCH-TAU30si2-EMall'
-        alg = AlgConf.NotMatch( name = toponame, inputs = [ 'TAUsi', 'EMall'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
-        alg.addgeneric('InputWidth1', HW.OutputWidthSortTAU)
-        alg.addgeneric('InputWidth2', HW.InputWidthEM)
-        alg.addgeneric('MaxTob1', 2)
-        alg.addgeneric('MaxTob2', HW.InputWidthEM)
-        alg.addgeneric('NumResultBits', 1)
-        alg.addvariable('MinET1', 30)
-        alg.addvariable('MinET2', 0)
-        alg.addvariable('EtaMin1', 0)
-        alg.addvariable('EtaMax1', 49)
-        alg.addvariable('EtaMin2', 0)
-        alg.addvariable('EtaMax2', 49)
-        alg.addvariable('DRCut', 0)
-        tm.registerAlgo(alg)        
+            alg.addgeneric('InputWidth', d.inputwidth) # noqa: F821
+            alg.addvariable('MinET', d.ocut)           # noqa: F821       
+            alg.addvariable('MinSumET', d.minHT)       # noqa: F821
+            alg.addvariable('MaxRSqr', 10*10)                        
+            tm.registerAlgo(alg)  
 
-        # MULT-BIT
+        # DISAMB-INVM
         for x in [
-            {"otype1" : "CMU" ,"ocut1": 4, "olist1" : "ab", "nleading1": HW.OutputWidthSelectMU, "inputwidth1": HW.OutputWidthSelectMU},
-            {"otype1" : "CMU" ,"ocut1": 6, "olist1" : "ab", "nleading1": HW.OutputWidthSelectMU, "inputwidth1": HW.OutputWidthSelectMU},
-            ]:
+                {"disamb": 0, "minInvm": 30, "maxInvm": 9999,"otype1" : "EM",  "ocut1": 20, "olist1": "shi","nleading1": 2, "inputwidth1": HW.OutputWidthSortEM, "otype2" : "TAU", "ocut2": 12, "olist2": "ab", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU}, # DISAMB-30INVM-EM20his2-TAU12ab
+        ]:
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
-                
-            toponame = "MULT-%s%s%s" % (d.otype1, str(d.ocut1), d.olist1)
-            toponames = [toponame+"[0]", toponame+"[1]"]
-            log.debug("Define %s", toponames)
+
             
-            inputList = [d.otype1 + d.olist1] 
-            alg = AlgConf.Multiplicity( name = toponame,  inputs = inputList, outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1
+            obj1 = "%s%s%s"  % (d.otype1, str(d.ocut1), d.olist1.replace('shi','his') + (str(d.nleading1) if d.olist1.find('s')>=0 else "")) # noqa: F821
+            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2) # noqa: F821
+            toponame = "%sDISAMB-%iINVM%s-%s%s"  % ( d.disamb if d.disamb>0 else "", d.minInvm, str(d.maxInvm) if d.maxInvm<9999 else "", obj1, obj2)       # noqa: F821    
             
-            alg.addgeneric('InputWidth', d.inputwidth1)
-            alg.addgeneric('NumResultBits', 2)
-            alg.addvariable('MinET', d.ocut1-1) # for MU threshold -1 
-            tm.registerAlgo(alg)        
+            log.info("Define %s" % toponame)
+            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]      # noqa: F821         
+            #alg = AlgConf.DisambiguationInvariantMass2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId); currentAlgoId += 1
+            alg = AlgConf.DisambiguationInvmIncl2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId); currentAlgoId += 1
             
-        
-        # DISAMB 2 lists
-        for x in [     
-            {"disamb": 1, "otype1" : "TAU", "ocut1": 12, "olist1" : "abi", "nleading1": HW.OutputWidthSelectTAU, "otype2" : "J", "ocut2": 25, "olist2": "ab", "nleading2": HW.OutputWidthSelectJET},
-            #{"disamb": 0, "otype1" : "EM",  "ocut1": 15, "olist1" : "abhi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "TAU", "ocut2": 40, "olist2": "ab", "nleading2": HW.OutputWidthSelectTAU},
-            #{"disamb": 1, "otype1" : "TAU", "ocut1": 20, "olist1" : "ab", "nleading1": HW.OutputWidthSelectTAU,  "otype2" : "J", "ocut2": 20, "olist2": "ab", "nleading2": HW.OutputWidthSelectJET},
-            #{"disamb": 0, "otype1" : "EM",  "ocut1": 15, "olist1" : "abhi", "nleading1": HW.OutputWidthSelectEM, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU},
-            ]:
+            alg.addgeneric('InputWidth1', d.inputwidth1) # noqa: F821
+            alg.addgeneric('InputWidth2', d.inputwidth2) # noqa: F821
+            alg.addgeneric('MaxTob1', d.nleading1) # noqa: F821
+            alg.addgeneric('MaxTob2', d.nleading2) # noqa: F821
+            alg.addgeneric('NumResultBits', 1)
             
+            alg.addvariable('MinET1', d.ocut1) # noqa: F821
+            alg.addvariable('MinET2', d.ocut2) # noqa: F821
+            alg.addvariable('MinMSqr', d.minInvm * d.minInvm) # noqa: F821
+            alg.addvariable('MaxMSqr', d.maxInvm * d.maxInvm) # noqa: F821
+        
+            tm.registerAlgo(alg)
+
+        #
+        for x in [
+            {  "minInvm": 400, "maxInvm": 9999, "otype1" : "AJ", "ocut1": 30, "olist1" : "s", "nleading1" : 6, "inputwidth1": HW.OutputWidthSortJET, "otype2" : "AJ", "ocut2": 20, "olist2" : "s", "nleading2" : 6, "inputwidth2": HW.OutputWidthSortJET, "applyEtaCut":1, "minEta1": 0 ,"maxEta1": 31 , "minEta2": 31 ,"maxEta2": 49 , }, #400INVM9999-AJ30s6.ETA31-AJ20s6.31ETA49
+        ]:
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            obj1 = "%s%s%s"  % (d.otype1, str(d.ocut1), d.olist1)
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2)
-            toponame = "%sDISAMB-%s%s"  % ( d.disamb if d.disamb>0 else "", obj1, obj2)
-            
-            log.debug("Define %s", toponame)
+
+            obj1 = "%s%s%s.%sETA%i"  % (d.otype1, str(d.ocut1), d.olist1 + (str(d.nleading1) if d.olist1.find('s')>=0 else ""),str(d.minEta1) if d.minEta1>0 else "", d.maxEta1) # noqa: F821
+            obj2 = "-%s%s%s.%sETA%i"  % (d.otype2, str(d.ocut2), d.olist2 + (str(d.nleading2) if d.olist2.find('s')>=0 else ""),str(d.minEta2) if d.minEta2>0 else "", d.maxEta2) # noqa: F821
             
-            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
-            alg = AlgConf.DisambiguationIncl2( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-            alg.addgeneric('InputWidth1', d.nleading1 if d.olist1.find("ab")>=0 else -1000)
-            alg.addgeneric('InputWidth2', d.nleading2 if d.olist2.find("ab")>=0 else -1000) 
-            alg.addgeneric('MaxTob1', d.nleading1)
-            alg.addgeneric('MaxTob2', d.nleading2)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addgeneric('ClusterOnly', 1 if (d.otype1=="EM" and d.otype2=="TAU") or (d.otype1=="TAU" and d.otype2=="EM") else 0 )
-            alg.addgeneric('ApplyDR', 0)
-            alg.addvariable('MinET1', d.ocut1)
-            alg.addvariable('MinET2', d.ocut2)
-            alg.addvariable('DisambDRSqrMin', d.disamb*d.disamb)
-            tm.registerAlgo(alg)
+            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2] # noqa: F821
         
-        # DISAMB 3 lists
-        for x in [     
-            {"disamb": 1, "otype1" : "EM",  "ocut1": 15, "olist1": "shi","nleading1": 2, "inputwidth1": HW.OutputWidthSortEM, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU, "otype3" : "J", "ocut3": 25, "olist3": "ab", "nleading3": HW.OutputWidthSelectJET, "inputwidth3": HW.OutputWidthSelectJET},
-            {"disamb": 1, "otype1" : "TAU", "ocut1": 20, "olist1": "abi","nleading1": HW.OutputWidthSelectTAU, "inputwidth1": HW.OutputWidthSelectTAU, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU, "otype3" : "J", "ocut3": 25, "olist3": "ab", "nleading3": HW.OutputWidthSelectTAU, "inputwidth3": HW.OutputWidthSelectJET}, 
-            ]:
-            
-            class d : pass
-            for k in x:
-                setattr (d, k, x[k])
-
-            obj1 = "%s%s%s"  % (d.otype1, str(d.ocut1), d.olist1.replace('shi','his') + (str(d.nleading1) if d.olist1.find('s')>=0 else ""))
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2.replace('shi','his') + (str(d.nleading2) if d.olist2.find('s')>=0 else ""))
-            obj3 = "-%s%s%s" % (d.otype3, str(d.ocut3), d.olist3)
-            toponame = "%sDISAMB-%s%s%s"  % ( d.disamb if d.disamb>0 else "", obj1, obj2, obj3)
+            toponame = "%iINVM%i-%s%s"   % (d.minInvm, d.maxInvm, obj1, obj2) # noqa: F821
+            alg = AlgConf.InvariantMassInclusive2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId); currentAlgoId += 1    
+        
+        
+            alg.addgeneric('InputWidth1', d.inputwidth1) # noqa: F821
+            alg.addgeneric('InputWidth2', d.inputwidth2) # noqa: F821
+            alg.addgeneric('MaxTob1', d.nleading1) # noqa: F821
+            alg.addgeneric('MaxTob2', d.nleading2) # noqa: F821
+            alg.addgeneric('NumResultBits', 1)
+            if (d.applyEtaCut>0): # noqa: F821
+                alg.addgeneric('ApplyEtaCut', d.applyEtaCut) # noqa: F821
             
-            log.debug("Define %s", toponame)
+            alg.addvariable('MinET1', d.ocut1) # noqa: F821
+            alg.addvariable('MinET2', d.ocut2) # noqa: F821
+            alg.addvariable('MinMSqr', d.minInvm * d.minInvm ) # noqa: F821
+            alg.addvariable('MaxMSqr', d.maxInvm * d.maxInvm ) # noqa: F821
+            if (d.applyEtaCut>0): # noqa: F821
+                alg.addvariable('MinEta1', d.minEta1) # noqa: F821
+                alg.addvariable('MaxEta1', d.maxEta1) # noqa: F821
+                alg.addvariable('MinEta2', d.minEta2) # noqa: F821
+                alg.addvariable('MaxEta2', d.maxEta2) # noqa: F821
             
-            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
-            alg = AlgConf.DisambiguationIncl3( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-            alg.addgeneric('InputWidth1', d.inputwidth1)
-            alg.addgeneric('InputWidth2', d.inputwidth2)
-            alg.addgeneric('InputWidth3', d.inputwidth3)
-            alg.addgeneric('MaxTob1', d.nleading1)
-            alg.addgeneric('MaxTob2', d.nleading2)
-            alg.addgeneric('MaxTob3', d.nleading3)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addgeneric('ApplyDR', 0)
-            alg.addvariable('MinET1', d.ocut1, 0)
-            alg.addvariable('MinET2', d.ocut2, 0)
-            alg.addvariable('MinET3', d.ocut3, 0)
-            alg.addvariable('DisambDRSqr', d.disamb*d.disamb, 0) # DisambDR
-            tm.registerAlgo(alg)         
+            tm.registerAlgo(alg)
 
-        # DISAMB 3 lists with DR cut to 2nd and 3rd lists
 
-        algolist=[
-               {"disamb": 1, "otype1" : "EM",  "ocut1": 15, "olist1": "shi","nleading1": 2, "inputwidth1": HW.OutputWidthSortEM, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU, "otype3" : "J", "ocut3": 25, "olist3": "ab", "nleading3": HW.OutputWidthSelectJET, "inputwidth3": HW.OutputWidthSelectJET, "drcutmin": 0, "drcutmax": 28}, 
-               {"disamb": 1, "otype1" : "TAU",  "ocut1": 20, "olist1": "abi","nleading1": HW.OutputWidthSelectTAU, "inputwidth1": HW.OutputWidthSelectTAU, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU, "otype3" : "J", "ocut3": 25, "olist3": "ab", "nleading3": HW.OutputWidthSelectJET, "inputwidth3": HW.OutputWidthSelectJET, "drcutmin": 0, "drcutmax": 28}, # 1DISAMB-J25ab-0DR28-TAU20abi-TAU12abi
-               {"disamb": 1, "otype1" : "TAU",  "ocut1": 20, "olist1": "abi","nleading1": HW.OutputWidthSelectTAU, "inputwidth1": HW.OutputWidthSelectTAU, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU, "otype3" : "J", "ocut3": 25, "olist3": "ab", "nleading3": HW.OutputWidthSelectJET, "inputwidth3": HW.OutputWidthSelectJET, "drcutmin": 0, "drcutmax": 25}, # 1DISAMB-J25ab-0DR25-TAU20abi-TAU12abi
-            ]
-
-        for x in algolist:
+        #  0INVM9-EM7ab-EMab 
+        for x in [
+            {"minInvm" : 0, "maxInvm": 9, "otype" : "EM", "ocut1" : 7, "olist" : "ab", "inputwidth": HW.OutputWidthSelectEM, "ocut2" : 0},
+            ]:
 
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            obj1 = "-%s%s%s"  % (d.otype1, str(d.ocut1), d.olist1.replace('shi','his') + (str(d.nleading1) if d.olist1.find('s')>=0 else ""))
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2.replace('shi','his') + (str(d.nleading2) if d.olist2.find('s')>=0 else ""))
-            obj3 = "%s%s%s" % (d.otype3, str(d.ocut3), d.olist3)
-            toponame = "%sDISAMB-%s-%dDR%d%s%s"  % ( str(d.disamb) if d.disamb>0 else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)
+ 		
+            inputList = d.otype + d.olist # noqa: F821
+            toponame = "%iINVM%i-%s%s%s-%s%s"  % (d.minInvm, d.maxInvm,                                                    # noqa: F821
+                                                  d.otype, str(d.ocut1) , d.olist,     # noqa: F821
+                                                  d.otype, d.olist)     # noqa: F821 
 
-            log.debug("Define %s", toponame)
-            
-            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
-            alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-            alg.addgeneric('InputWidth1', d.inputwidth1)
-            alg.addgeneric('InputWidth2', d.inputwidth2)
-            alg.addgeneric('InputWidth3', d.inputwidth3)
-            alg.addgeneric('MaxTob1', d.nleading1)
-            alg.addgeneric('MaxTob2', d.nleading2)
-            alg.addgeneric('MaxTob3', d.nleading3)
+            alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId); currentAlgoId += 1  # noqa: F821
+            alg.addgeneric('InputWidth', d.inputwidth)      # noqa: F821
+            alg.addgeneric('MaxTob', HW.OutputWidthSelectEM)            # noqa: F821
             alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut1, 0)
-            alg.addvariable('MinET2', d.ocut2, 0)
-            alg.addvariable('MinET3', d.ocut3, 0)
-            alg.addvariable('DisambDRSqrMin', d.drcutmin*d.drcutmin, 0)
-            alg.addvariable('DisambDRSqrMax', d.drcutmax*d.drcutmax, 0)
-            alg.addvariable('DisambDRSqr', d.disamb*d.disamb, 0)
-            tm.registerAlgo(alg)            
 
+            alg.addvariable('MinET1', d.ocut1)    # noqa: F821
+            alg.addvariable('MinET2', d.ocut2)    # noqa: F821
+            alg.addvariable('MinMSqr', (d.minInvm * _emscale_for_decision)*(d.minInvm * _emscale_for_decision))        # noqa: F821
+            alg.addvariable('MaxMSqr', (d.maxInvm * _emscale_for_decision)*(d.maxInvm * _emscale_for_decision))        # noqa: F821
 
-        # LAR  0<eta<1.4 and 9/16pi<phi<11/16pi for FE crate IO6 
-        for x in [     
-            {"minEta": 0, "maxEta": 15, "minPhi": 16, "maxPhi": 23, "otype" : "EM", "ocut" : 20, "inputwidth": HW.OutputWidthSortEM},
-            {"minEta": 0, "maxEta": 14, "minPhi": 16, "maxPhi": 23, "otype" : "J", "ocut" : 100, "inputwidth": HW.OutputWidthSortJET}, 
+            tm.registerAlgo(alg)
+
+
+
+        # added for b-phys, 0DR03-EM7ab-CJ15ab
+        for x in [  
+            {"minDr": 0, "maxDr": 3, "otype1" : "EM" ,"ocut1": 7,  "olist1" : "ab", "otype2" : "CJ", "ocut2": 15, "olist2" : "ab"} 
             ]:
 
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            toponame = "LAR-%s%ss1"  % ( d.otype, str(d.ocut) if not d.otype=="EM" else "50" )
-            
-            log.debug("Define %s", toponame)
-            
-            inputList = d.otype + 's'
-            
-            alg = AlgConf.LAr( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
-            alg.addgeneric('InputWidth', d.inputwidth) 
-            alg.addgeneric('MaxTob', 1)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET', str(d.ocut))
-            alg.addvariable('EtaMin', d.minEta)
-            alg.addvariable('EtaMax', d.maxEta)
-            alg.addvariable('PhiMin', d.minPhi)
-            alg.addvariable('PhiMax', d.maxPhi)
+
+            toponame = "%iDR%02d-%s%s%s-%s%s%s"  % (d.minDr, d.maxDr, d.otype1, str(d.ocut1), d.olist1, d.otype2, str(d.ocut2), d.olist2) # noqa: F821
+            log.info("Define %s" % toponame)
+
+            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2] # noqa: F821
+
+            alg = AlgConf.DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
+
+            alg.addgeneric('InputWidth1', HW.OutputWidthSelectEM)
+            alg.addgeneric('InputWidth2', HW.OutputWidthSelectJET)
+            alg.addgeneric('MaxTob1', HW.OutputWidthSelectEM)
+            alg.addgeneric('MaxTob2', HW.OutputWidthSelectJET)
+            alg.addgeneric('NumResultBits', 1)                        
+            alg.addvariable('MinET1', d.ocut1, 0) # noqa: F821
+            alg.addvariable('MinET2', d.ocut2, 0) # noqa: F821
+            alg.addvariable('DeltaRMin', d.minDr*d.minDr, 0) # noqa: F821
+            alg.addvariable('DeltaRMax', d.maxDr*d.maxDr, 0) # noqa: F821
             tm.registerAlgo(alg)
 
 
+        # VBF items INVM_NFF
+        invm_nff_map = {"algoname": 'INVM_NFF', "Threlist": [ 500 ], "maxInvm": 9999, "otype1" : "J", "ocut1" : 30, "olist1" : "s", "nleading1" : 6, "inputwidth": HW.OutputWidthSortJET,  "otype2" : "AJ", "ocut2" : 20, "olist2" : "s", "nleading2" : 6 }
+
 
 
-        xemap = {"etcut": 0, "Threlist": [ 40, 50, 55, 60, 65, 75 ]}
-        for x in [ 
-            xemap,
+        for x in [ invm_nff_map,
             ]:
-                
+
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
-            
-            log.debug("Define %s", toponame)
-            
-            inputList = ['XENoSort', 'AJall']
-            toponames=[]
 
-            for minxe in d.Threlist:
-                toponames.append("KF-XE%s-AJall"  % (minxe))
             
-            alg = AlgConf.KalmanMETCorrection( name = "KF-XE-AJall", inputs = inputList, outputs = toponames, algoId = currentAlgoId ); currentAlgoId += 1
-            alg.addgeneric('InputWidth', HW.InputWidthJET)
-            alg.addgeneric('NumResultBits', len(toponames))
-            alg.addvariable('MinET', 0)
-            for bitid,minxe in enumerate(d.Threlist):
-                alg.addvariable('KFXE', str(minxe), bitid)
-            
-            tm.registerAlgo(alg)
+            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]      # noqa: F821       
+            toponames=[]
 
-        # W T&P: MINDPHI(J, XE0), (EM, XE0)
 
-        alglist = [
-            {"minDPhi": 15, "otype" : "EM",  "ocut" : 12, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortEM},
-            {"minDPhi": 15, "otype" : "EM",  "ocut" : 15, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortEM},
-            ]
+            for minInvm in d.Threlist:  # noqa: F821
+                toponame = "%iINVM%i-%s%s%s%s-%s%s%s%s"  % (minInvm, d.maxInvm,                          
+                                                            d.otype1, str(d.ocut1) , d.olist1, str(d.nleading1) if d.olist1=="s" else "",
+                                                            d.otype2, str(d.ocut2) , d.olist2, str(d.nleading2) if d.olist2=="s" else "") 
+                toponames.append(toponame)
 
-        for x in alglist:
-            
-            class d : pass
-            for k in x:
-                setattr (d, k, x[k])
                 
-            toponame = "%02dMINDPHI-%s%s%s%s-XE0"  % (d.minDPhi, d.otype, str(d.ocut) if d.ocut > 0 else "", d.olist, str(d.nleading) if d.olist=="s" else "")
-            log.debug("Define %s", toponame)
-
-            inputList = d.otype + d.olist
+            alg = AlgConf.InvariantMassInclusive2( name = d.algoname, inputs = inputList, outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1     # noqa: F821
 
-            alg = AlgConf.MinDeltaPhiIncl2( name = toponame, inputs = [ inputList, 'XE'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
 
+            alg.addgeneric('InputWidth1', d.inputwidth) # noqa: F821
+            alg.addgeneric('InputWidth2', d.inputwidth) # noqa: F821
+            alg.addgeneric('MaxTob1', d.nleading1)       # noqa: F821
+            alg.addgeneric('MaxTob2', d.nleading2)# noqa: F821
+            alg.addgeneric('NumResultBits', len(toponames))
 
-            alg.addgeneric('InputWidth1', d.inputwidth)
-            alg.addgeneric('InputWidth2', 1) 
-            alg.addgeneric('MaxTob1', d.nleading)
-            alg.addgeneric('MaxTob2', 1)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut)
-            alg.addvariable('MinET2', 0)
-            alg.addvariable('DeltaPhiMin', d.minDPhi, 0)
+            for bitid, minInvm in enumerate(d.Threlist): # noqa: F821
+                alg.addvariable('MinET1', d.ocut1, bitid)# noqa: F821
+                alg.addvariable('MinET2', d.ocut2, bitid)# noqa: F821
+                alg.addvariable('MinMSqr', minInvm*minInvm , bitid)        # noqa: F821         
+                alg.addvariable('MaxMSqr', d.maxInvm *d.maxInvm , bitid)        # noqa: F821
+                
             tm.registerAlgo(alg)
 
-            
-        # W T&P MT
 
-        alglistmt = [
-            {"minMT": 35, "otype" : "EM", "ocut" : 12, "olist" : "s", "nleading" : 6, "inputwidth": HW.OutputWidthSortEM},
-            ]
-        for x in alglistmt:
+        # Axion 2EM DPHI  
+        #27DPHI32-EMs1-EMs6
+        algoList = [
+            {"minDphi": 27,  "maxDphi": 32, "otype" : "EM",  "ocut1" : 0,  "olist" : "s", "nleading1" : 1, "inputwidth1": HW.OutputWidthSortEM, "ocut2" : 0, "nleading2": 6},
+        ]
+
+        for x in algoList:
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            toponame = "%iMT-%s%s%s%s-XE0"  % (d.minMT, d.otype, str(d.ocut) if d.ocut > 0 else "", d.olist, str(d.nleading) if d.olist=="s" else "")
-            log.debug("Define %s", toponame)
-
-            inputList = d.otype + d.olist
             
-            alg = AlgConf.TransverseMassInclusive1( name = toponame, inputs = [ inputList, 'XE'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
+            toponame = "%iDPHI%i-%s%s%s%s-%s%s%s%s"  % (d.minDphi, d.maxDphi,  # noqa: F821
+                                                        d.otype, str(d.ocut1) if d.ocut1 > 0 else "", d.olist, str(d.nleading1) if d.olist=="s" else "", # noqa: F821
+                                                        d.otype, str(d.ocut2) if d.ocut2 > 0 else "", d.olist, str(d.nleading2) if d.olist=="s" else "") # noqa: F821
+            
+            log.info("Define %s" % toponame)
+            inputList = d.otype + d.olist # noqa: F821
+            
+            alg = AlgConf.DeltaPhiIncl1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+
+            alg.addgeneric('InputWidth', d.inputwidth1) # noqa: F821
+            alg.addgeneric('MaxTob', d.nleading2)       # noqa: F821 
+            alg.addgeneric('NumResultBits', 1)                        
+            alg.addvariable('MinET1', d.ocut1 if d.ocut1 > 0 else 3, 0) # noqa: F821   
+            alg.addvariable('MinET2', d.ocut2 if d.ocut2 > 0 else 3, 0) # noqa: F821  
+            alg.addvariable('MinDeltaPhi', d.minDphi, 0) # noqa: F821
+            alg.addvariable('MaxDeltaPhi', d.maxDphi, 0) # noqa: F821
+            tm.registerAlgo(alg)
 
 
+        # VBF items INVM_NFF + DPHI
+        NFFDphimap = [{"minInvm": 400 , "maxInvm": 9999, "minDphi": 0, "maxDphiList": [26, 24, 22, 20], "otype1" : "J", "ocut1" : 30, "olist1" : "s", "nleading1" : 6, "inputwidth": HW.OutputWidthSortJET,  "otype2" : "AJ", "ocut2" : 20, "olist2" : "s", "nleading2" : 6 }]
 
-            alg.addgeneric('InputWidth', HW.OutputWidthSortEM)
-            alg.addgeneric('MaxTob', str(d.nleading))
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', str(d.ocut))
-            alg.addvariable('MinET2', 0)
-            alg.addvariable('MinMTSqr', d.minMT*d.minMT)                        
-            tm.registerAlgo(alg)
-            
-        # DISAMB 2 lists with DR cut between objects in two lists
 
-        for x in [     
-            {"disamb": 0, "otype1" : "EM",  "ocut1": 15, "olist1": "shi","nleading1": 2, "inputwidth1": HW.OutputWidthSortEM, "otype2" : "TAU", "ocut2": 12, "olist2": "abi", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU, "drcutmin": 0, "drcutmax": 28},
-            ]:
+        for x in NFFDphimap:
 
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            obj1 = "-%s%s%s"  % (d.otype1, str(d.ocut1), d.olist1.replace('shi','his') + (str(d.nleading1) if d.olist1.find('s')>=0 else ""))
-            obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2.replace('shi','his') + (str(d.nleading2) if d.olist2.find('s')>=0 else ""))
-            toponame = "%sDISAMB-%dDR%d%s%s"  % ( str(d.disamb) if d.disamb>0 else "", d.drcutmin, d.drcutmax, obj1, obj2)
 
-            log.debug("Define %s", toponame)
+            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]      # noqa: F821       
+            toponames=[]
 
-            inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
-            alg = AlgConf.DisambiguationDRIncl2( name = toponame, inputs = inputList, outputs = [ toponame ], algoId = currentAlgoId); currentAlgoId += 1
-            alg.addgeneric('InputWidth1', d.inputwidth1)
-            alg.addgeneric('InputWidth2', d.inputwidth2)
-            alg.addgeneric('MaxTob1', d.nleading1)
-            alg.addgeneric('MaxTob2', d.nleading2)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut1, 0)
-            alg.addvariable('MinET2', d.ocut2, 0)
-            alg.addvariable('DisambDRSqrMin', d.drcutmin*d.drcutmin, 0)
-            alg.addvariable('DisambDRSqrMax', d.drcutmax*d.drcutmax, 0)
-            tm.registerAlgo(alg)   
+            for maxDphi in d.maxDphiList:  # noqa: F821
+                toponames.append ("%iINVM%i-%iDPHI%i-%s%s%s%s-%s%s%s%s"  % (d.minInvm, d.maxInvm, d.minDphi, maxDphi,
+                                                                 d.otype1, str(d.ocut1) , d.olist1, str(d.nleading1) if d.olist1=="s" else "", 
+                                                                 d.otype2, str(d.ocut2) , d.olist2, str(d.nleading2) if d.olist2=="s" else ""))
 
-        # ZH Trigger
+            alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = 'INVM_DPHI_NFF', inputs = inputList, outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1     # noqa: F821
 
-        supportedalgolist = [
-            {"minDPhi": 10, "otype" : "AJ", "ocut" : 20,  "olist" : "s", "nleading" : 2, "inputwidth": HW.OutputWidthSortJET},
-        ]            
-        for x in supportedalgolist:
-            
-            class d : pass
-            for k in x:
-                setattr (d, k, x[k])
-                
-            toponame = "%iMINDPHI-%s%s%s%s-XE50"  % (d.minDPhi, d.otype, str(d.ocut) if d.ocut > 0 else "", d.olist, str(d.nleading) if d.olist=="s" else "")
-            log.debug("Define %s", toponame)
-            
-            inputList = d.otype + d.olist
 
-            alg = AlgConf.MinDeltaPhiIncl2( name = toponame, inputs = [inputList, 'XE'], outputs = [ toponame ], algoId = currentAlgoId ); currentAlgoId += 1
+            alg.addgeneric('InputWidth1', d.inputwidth) # noqa: F821
+            alg.addgeneric('InputWidth2', d.inputwidth) # noqa: F821
+            alg.addgeneric('MaxTob1', d.nleading1)       # noqa: F821
+            alg.addgeneric('MaxTob2', d.nleading2)# noqa: F821
+            alg.addgeneric('NumResultBits',  len(toponames))
+            for bitid,maxDphi in enumerate(d.maxDphiList):  # noqa: F821
+                alg.addvariable('MinET1', d.ocut1, bitid)# noqa: F821
+                alg.addvariable('MinET2', d.ocut2, bitid)# noqa: F821
+                alg.addvariable('MinMSqr', d.minInvm*d.minInvm , bitid)        # noqa: F821         
+                alg.addvariable('MaxMSqr', d.maxInvm*d.maxInvm , bitid)        # noqa: F821
+                alg.addvariable('MinDeltaPhi', d.minDphi, bitid) # noqa: F821
+                alg.addvariable('MaxDeltaPhi', maxDphi, bitid) # noqa: F821
 
-            alg.addgeneric('InputWidth1', d.inputwidth)
-            alg.addgeneric('InputWidth2', 1)  
-            alg.addgeneric('MaxTob1', d.nleading)
-            alg.addgeneric('MaxTob2', 1)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET1', d.ocut)
-            alg.addvariable('MinET2', 50)
-            alg.addvariable('DeltaPhiMin', d.minDPhi, 0)
             tm.registerAlgo(alg)
-                
-        # LATE MUON
-        for x in [     
-            #{"otype" : "LATE-MU", "ocut" : 10, "inputwidth": HW.OutputWidthSortMU},
-            {"otype" : "LATE-MU", "ocut" : 10, "inputwidth": HW.NumberOfDelayedMuons},
-            ]:
-
-            class d : pass
-            for k in x:
-                setattr (d, k, x[k])
 
-            toponame = "%s%ss1"  % ( d.otype, str(d.ocut) )
 
-            log.debug("Define %s", toponame)
-
-            inputList = 'LMUs'
+        #ATR-19355  
+        toponame = "0INVM10-3MU4ab"      # noqa: F821
+        log.info("Define %s" % toponame)
+    
+        inputList = 'MUab'
+        
+        alg = AlgConf.InvariantMassThreeTOBsIncl( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+        alg.addgeneric('InputWidth', HW.OutputWidthSelectMU)
+        alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
+        alg.addgeneric('NumResultBits', 1)
+        alg.addvariable('MinMSqr', 0)
+        alg.addvariable('MaxMSqr', 10*10)
+        alg.addvariable('MinET1', 4)
+        tm.registerAlgo(alg)
+        
 
-            alg = AlgConf.EtCut( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
-            alg.addgeneric('InputWidth', d.inputwidth) 
-            alg.addgeneric('MaxTob', 1)
-            alg.addgeneric('NumResultBits', 1)
-            alg.addvariable('MinET', str(d.ocut))
-            tm.registerAlgo(alg)
-            
 
-        # (ATR-12748) fat jet trigger with Simple Cone algo
-        for x in [            
-            {"minHT": 111, "otype" : "CJ", "ocut" : 15, "olist" : "ab", "nleading" : HW.OutputWidthSelectJET, "inputwidth": HW.OutputWidthSelectJET, "oeta" : 26},
-            {"minHT": 85, "otype" : "CJ", "ocut" : 15, "olist" : "ab", "nleading" : HW.OutputWidthSelectJET, "inputwidth": HW.OutputWidthSelectJET, "oeta" : 26},                
-            ]:
+        #ATR-18815
+ #       toponame = "0INVM10-0DR15-EM8abi-MU10ab"
+ #       log.info("Define %s" % toponame)
+        
+#        inputList = ['EMabi','MUab']
+        
+#        alg = AlgConf.InvariantMassInclusive2DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+#        alg.addgeneric('InputWidth1', HW.OutputWidthSelectEM)
+#        alg.addgeneric('InputWidth2', HW.OutputWidthSelectMU)
+#        alg.addgeneric('MaxTob1', HW.OutputWidthSortEM)
+#        alg.addgeneric('MaxTob2', HW.OutputWidthSelectMU)
+#        alg.addgeneric('NumResultBits', 1)
+#        alg.addvariable('MinMSqr', 0)
+#        alg.addvariable('MaxMSqr', 10*10*_emscale_for_decision) # Fix to add emscale
+#        alg.addvariable('MinET1', 8)
+#        alg.addvariable('MinET2', 10)
+#        alg.addgeneric('ApplyEtaCut', 0)
+#        alg.addvariable('MinEta1', 0)
+#        alg.addvariable('MinEta2', 0)
+#        alg.addvariable('MaxEta1', 9999)
+#        alg.addvariable('MaxEta2', 9999)
+#        alg.addvariable('DeltaRMin', 0)
+#        alg.addvariable('DeltaRMax', 15*15)
+#        tm.registerAlgo(alg)
+#        
+#        #ATR-18815
+#        toponame = "0INVM10-0DR15-EM12abi-MU6ab"
+#        log.info("Define %s" % toponame)
+#        
+#        inputList = ['EMabi','MUab']
+#        
+#        alg = AlgConf.InvariantMassInclusive2DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+#        alg.addgeneric('InputWidth1', HW.OutputWidthSelectEM)
+#        alg.addgeneric('InputWidth2', HW.OutputWidthSelectMU)
+#        alg.addgeneric('MaxTob1', HW.OutputWidthSortEM)
+#        alg.addgeneric('MaxTob2', HW.OutputWidthSelectMU)
+#        alg.addgeneric('NumResultBits', 1)
+#        alg.addvariable('MinMSqr', 0)
+#        alg.addvariable('MaxMSqr', 10*10*_emscale_for_decision) # Fix to add emscale
+#        alg.addvariable('MinET1', 12)
+#        alg.addvariable('MinET2', 6)
+#        alg.addgeneric('ApplyEtaCut', 0)
+#        alg.addvariable('MinEta1', 0)
+#        alg.addvariable('MinEta2', 0)
+#        alg.addvariable('MaxEta1', 9999)
+#        alg.addvariable('MaxEta2', 9999)
+#        alg.addvariable('DeltaRMin', 0)
+#        alg.addvariable('DeltaRMax', 15*15)
+#        tm.registerAlgo(alg)
+#        
+
+
+        #ATR-18824 ZAFB-DPHI
+        
+        ZAFBDphimap = [
+            {"minInvm": 60 ,"maxInvm": 9999, "minDphiList": [4, 25], "maxDphi": 32, "minEta2": 23, "maxEta2": 49, "inputwidth1": HW.OutputWidthSortEM, "otype1" : "EM", "ocut1" : 15, "olist1" : "abhi", "nleading1" : HW.OutputWidthSortEM, "inputwidth2": HW.OutputWidthSortJET,  "ocut2" : 15,"nleading2" : 6}
+        ]
 
+        for x in ZAFBDphimap:
             class d : pass
             for k in x:
                 setattr (d, k, x[k])
 
-            toponame = "SC%d-%s%s%s%s.ETA%s" % (d.minHT, d.otype, str(d.ocut), d.olist, str(d.nleading) if d.olist=="s" else "", str(d.oeta))
 
-            log.debug("Define %s", toponame)
+            inputList = [d.otype1 + d.olist1, 'FJjs23ETA49']      # noqa: F821       
+            toponames=[]
+            
+            for minDphi in d.minDphiList:  # noqa: F821
+                toponames.append ("%iINVM%i-%02dDPHI%i-%s%s%s%s-FJj%ss%s%iETA%i"  % (d.minInvm, d.maxInvm, minDphi, d.maxDphi, d.otype1, str(d.ocut1) , d.olist1, str(d.nleading1) if d.olist1=="s" else "",  str(d.ocut2) , str(d.nleading2) , d.minEta2, d.maxEta2))  
+            
 
-            inputList = d.otype + d.olist
+            alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = 'ZAFB_DPHI', inputs = inputList, outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1     # noqa: F821
+
+
+            alg.addgeneric('InputWidth1', d.inputwidth1) # noqa: F821
+            alg.addgeneric('InputWidth2', d.inputwidth2) # noqa: F821
+            alg.addgeneric('MaxTob1', d.nleading1)       # noqa: F821
+            alg.addgeneric('MaxTob2', d.nleading2)# noqa: F821
+            alg.addgeneric('NumResultBits',  len(toponames))
+            alg.addgeneric('ApplyEtaCut', 1)
+            alg.addvariable('MinEta1', 0)
+            alg.addvariable('MaxEta1', 9999)
+            alg.addvariable('MinEta2', 23)
+            alg.addvariable('MaxEta2', 49)
+            for bitid,minDphi in enumerate(d.minDphiList):  # noqa: F821
+                alg.addvariable('MinET1', d.ocut1, bitid)# noqa: F821
+                alg.addvariable('MinET2', d.ocut2, bitid)# noqa: F821
+                alg.addvariable('MinMSqr', d.minInvm*d.minInvm*_emscale_for_decision , bitid)        # noqa: F821 #ATR-18824 only one factor is needed as there is one EM object         
+                alg.addvariable('MaxMSqr', d.maxInvm*d.maxInvm*_emscale_for_decision , bitid)        # noqa: F821 #ATR-18824 only one factor is needed as there is one EM object
+                alg.addvariable('MinDeltaPhi', minDphi, bitid) # noqa: F821
+                alg.addvariable('MaxDeltaPhi', d.maxDphi, bitid) # noqa: F821
 
-            alg = AlgConf.SimpleCone( name = toponame, inputs = inputList, outputs = [toponame], algoId = currentAlgoId ); currentAlgoId += 1
+            tm.registerAlgo(alg)
 
+        #ATR-19302: not included for now
+        toponame = "0INVM70-27DPHI32-EM10his1-EM10his6"
+        log.info("Define %s" % toponame)
+        inputList = ['EMshi','EMshi']
+        alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+        alg.addgeneric('InputWidth1', HW.OutputWidthSortEM)
+        alg.addgeneric('InputWidth2', HW.OutputWidthSortEM)
+        alg.addgeneric('MaxTob1', 1)
+        alg.addgeneric('MaxTob2', 6)
+        alg.addgeneric('NumResultBits', 1)
+        alg.addvariable('MinMSqr', 0)
+        alg.addvariable('MaxMSqr', (70*_emscale_for_decision)*(70*_emscale_for_decision))
+        alg.addvariable('MinET1', 10)
+        alg.addvariable('MinET2', 10)
+        alg.addgeneric('ApplyEtaCut', 1)
+        alg.addvariable('MinEta1', 0)
+        alg.addvariable('MaxEta1', 9999)
+        alg.addvariable('MinEta2', 0)
+        alg.addvariable('MaxEta2', 9999)
+        alg.addvariable('MinDeltaPhi', 27)
+        alg.addvariable('MaxDeltaPhi', 32)
+        tm.registerAlgo(alg)
 
-            alg.addgeneric('InputWidth', d.inputwidth)
-            alg.addvariable('MinET', d.ocut)                        
-            alg.addvariable('MinSumET', d.minHT)
-            alg.addvariable('MaxRSqr', 10*10)                        
-            tm.registerAlgo(alg)  
+        
+        toponame = "0INVM70-27DPHI32-EM12his1-EM12his6"
+        log.info("Define %s" % toponame)
+        inputList = ['EMshi','EMshi']
+        alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+        alg.addgeneric('InputWidth1', HW.OutputWidthSortEM)
+        alg.addgeneric('InputWidth2', HW.OutputWidthSortEM)
+        alg.addgeneric('MaxTob1', 1)
+        alg.addgeneric('MaxTob2', 6)
+        alg.addgeneric('NumResultBits', 1)
+        alg.addvariable('MinMSqr', 0)
+        alg.addvariable('MaxMSqr', (70*_emscale_for_decision)*(70*_emscale_for_decision))
+        alg.addvariable('MinET1', 10)
+        alg.addvariable('MinET2', 12)
+        alg.addgeneric('ApplyEtaCut', 1)
+        alg.addvariable('MinEta1', 0)
+        alg.addvariable('MaxEta1', 9999)
+        alg.addvariable('MinEta2', 0)
+        alg.addvariable('MaxEta2', 9999)
+        alg.addvariable('MinDeltaPhi', 27)
+        alg.addvariable('MaxDeltaPhi', 32)
+        tm.registerAlgo(alg)
 
-        # DISAMB-INVM
 
-        for x in [
-                {"disamb": 0, "minInvm": 30, "maxInvm": 9999,"otype1" : "EM",  "ocut1": 20, "olist1": "shi","nleading1": 2, "inputwidth1": HW.OutputWidthSortEM, "otype2" : "TAU", "ocut2": 12, "olist2": "ab", "nleading2": HW.OutputWidthSelectTAU, "inputwidth2": HW.OutputWidthSelectTAU}, # DISAMB-30INVM-EM20his2-TAU12ab
-                ]:
-            
-                class d : pass
-                for k in x:
-                    setattr (d, k, x[k])
-
-                obj1 = "%s%s%s"  % (d.otype1, str(d.ocut1), d.olist1.replace('shi','his') + (str(d.nleading1) if d.olist1.find('s')>=0 else ""))
-                obj2 = "-%s%s%s" % (d.otype2, str(d.ocut2), d.olist2)
-                toponame = "%sDISAMB-%iINVM%s-%s%s"  % ( d.disamb if d.disamb>0 else "", d.minInvm, str(d.maxInvm) if d.maxInvm<9999 else "", obj1, obj2)          
-
-                log.debug("Define %s", toponame)
-                inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]               
-                #alg = AlgConf.DisambiguationInvariantMass2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId); currentAlgoId += 1
-                alg = AlgConf.DisambiguationInvmIncl2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId); currentAlgoId += 1
-
-                alg.addgeneric('InputWidth1', d.inputwidth1)
-                alg.addgeneric('InputWidth2', d.inputwidth2)
-                alg.addgeneric('MaxTob1', d.nleading1)
-                alg.addgeneric('MaxTob2', d.nleading2)
-                alg.addgeneric('NumResultBits', 1)
-            
-                alg.addvariable('MinET1', d.ocut1)
-                alg.addvariable('MinET2', d.ocut2)
-                alg.addvariable('MinMSqr', d.minInvm * d.minInvm)
-                alg.addvariable('MaxMSqr', d.maxInvm * d.maxInvm)
-                
-                tm.registerAlgo(alg)
+        #ATR-19720, L1_BPH-8M15-0DR22-2MU6
+#        toponame = "8INVM15-0DR22-2MU6ab"
+#        log.info("Define %s" % toponame)
+#        
+#        inputList = ['MUab']
+#        
+#        alg = AlgConf.InvariantMassInclusive1DeltaRSqrIncl1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+#        alg.addgeneric('InputWidth', HW.OutputWidthSelectMU)
+#        alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
+#        alg.addgeneric('NumResultBits', 1)
+#        alg.addvariable('MinMSqr', 8*8)
+#        alg.addvariable('MaxMSqr', 15*15)
+#        alg.addvariable('MinET1', 6)
+#        alg.addvariable('MinET2', 6)
+#        alg.addvariable('DeltaRMin', 0)
+#        alg.addvariable('DeltaRMax', 22*22)
+#        tm.registerAlgo(alg)
+#        
+#        #ATR-19720, L1_BPH-2M9-2DR15-2MU6
+#        toponame = "2INVM9-2DR15-2MU6ab"
+#        log.info("Define %s" % toponame)
+#    
+#        inputList = ['MUab']
+#    
+#        alg = AlgConf.InvariantMassInclusive1DeltaRSqrIncl1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+#        alg.addgeneric('InputWidth', HW.OutputWidthSelectMU)
+#        alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
+#        alg.addgeneric('NumResultBits', 1)
+#        alg.addvariable('MinMSqr', 2*2)
+#        alg.addvariable('MaxMSqr', 9*9)
+#        alg.addvariable('MinET1', 6)
+#        alg.addvariable('MinET2', 6)
+#        alg.addvariable('DeltaRMin', 2*2)
+#        alg.addvariable('DeltaRMax', 15*15)
+#        tm.registerAlgo(alg)
+#
+#        #ATR-19720, L1_BPH-2M9-0DR15-MU6MU4
+#        toponame = "2INVM9-0DR15-MU6ab-MU4ab"
+#        log.info("Define %s" % toponame)
+#        
+#        inputList = ['MUab']
+#        
+#        alg = AlgConf.InvariantMassInclusive1DeltaRSqrIncl1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+#        alg.addgeneric('InputWidth', HW.OutputWidthSelectMU)
+#        alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
+#        alg.addgeneric('NumResultBits', 1)
+#        alg.addvariable('MinMSqr', 2*2)
+#        alg.addvariable('MaxMSqr', 9*9)
+#        alg.addvariable('MinET1', 6)
+#        alg.addvariable('MinET2', 4)
+#        alg.addvariable('DeltaRMin', 0)
+#        alg.addvariable('DeltaRMax', 15*15)
+#        tm.registerAlgo(alg)
+#        
+#        #ATR-19720, L1_BPH-8M15-0DR22-MU6MU4-BO
+#        toponame = "8INVM15-0DR22-MU6ab-MU4ab"
+#        log.info("Define %s" % toponame)
+#        
+#        inputList = ['MUab']
+#        
+#        alg = AlgConf.InvariantMassInclusive1DeltaRSqrIncl1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+#        alg.addgeneric('InputWidth', HW.OutputWidthSelectMU)
+#        alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
+#        alg.addgeneric('NumResultBits', 1)
+#        alg.addvariable('MinMSqr', 8*8)
+#        alg.addvariable('MaxMSqr', 15*15)
+#        alg.addvariable('MinET1', 6)
+#        alg.addvariable('MinET2', 4)
+#        alg.addvariable('DeltaRMin', 0)
+#        alg.addvariable('DeltaRMax', 22*22)
+#        tm.registerAlgo(alg)
+#
+#        #ATR-19720, L1_BPH-2M9-0DR15-2MU4
+#        
+#        toponame = "2INVM9-0DR15-2MU4ab"
+#        log.info("Define %s" % toponame)
+#   
+#        inputList = ['MUab']
+#
+#        alg = AlgConf.InvariantMassInclusive1DeltaRSqrIncl1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+#        alg.addgeneric('InputWidth', HW.OutputWidthSelectMU)
+#        alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
+#        alg.addgeneric('NumResultBits', 1)
+#        alg.addvariable('MinMSqr', 2*2)
+#        alg.addvariable('MaxMSqr', 9*9)
+#        alg.addvariable('MinET1', 4)
+#        alg.addvariable('MinET2', 4)
+#        alg.addvariable('DeltaRMin', 0)
+#        alg.addvariable('DeltaRMax', 15*15)
+#        tm.registerAlgo(alg)
+#
+        #ATR-20174, L1BPH-8M15-2MU4-BO
+        
+        toponame = "8INVM15-2CMU4ab"
+        log.info("Define %s" % toponame)
+        
+        inputList = ['CMUab']
+        
+        alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId ); currentAlgoId += 1
+        alg.addgeneric('InputWidth', HW.OutputWidthSelectMU)
+        alg.addgeneric('MaxTob', HW.OutputWidthSelectMU)
+        alg.addgeneric('NumResultBits', 1)
+        alg.addvariable('MinMSqr', 8*8)
+        alg.addvariable('MaxMSqr', 15*15)
+        alg.addvariable('MinET1', 4)
+        alg.addvariable('MinET2', 4)
+        
+        tm.registerAlgo(alg)
+        
 
+        #CEP algorithms    
+        CEPmap = [{"algoname": 'CEP_CJ', "minETlist": [50, 60]}]
 
-        for x in [
-                {  "minInvm": 400, "maxInvm": 9999, "otype1" : "AJ", "ocut1": 30, "olist1" : "s", "nleading1" : 6, "inputwidth1": HW.OutputWidthSortJET, "otype2" : "AJ", "ocut2": 20, "olist2" : "s", "nleading2" : 6, "inputwidth2": HW.OutputWidthSortJET, "applyEtaCut":1, "minEta1": 0 ,"maxEta1": 31 , "minEta2": 31 ,"maxEta2": 49 , }, #400INVM9999-AJ30s6.ETA31-AJ20s6.31ETA49
-                ]:
-            
-                class d : pass
-                for k in x:
-                    setattr (d, k, x[k])
 
-                obj1 = "%s%s%s.%sETA%i"  % (d.otype1, str(d.ocut1), d.olist1 + (str(d.nleading1) if d.olist1.find('s')>=0 else ""),str(d.minEta1) if d.minEta1>0 else "", d.maxEta1)
-                obj2 = "-%s%s%s.%sETA%i"  % (d.otype2, str(d.ocut2), d.olist2 + (str(d.nleading2) if d.olist2.find('s')>=0 else ""),str(d.minEta2) if d.minEta2>0 else "", d.maxEta2)
+        for x in CEPmap:
+            class d : pass
+            for k in x:
+                setattr (d, k, x[k])
+
+  
+            inputList = ['CJs']
+            toponames=[]            
+
+            for minET in d.minETlist:  # noqa: F821
+                toponames.append ("CEP-CJ%is6" % (minET))     # noqa: F821 
             
-                inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
-                        
-                toponame = "%iINVM%i-%s%s"   % (d.minInvm, d.maxInvm, obj1, obj2)
-                alg = AlgConf.InvariantMassInclusive2( name = toponame, inputs = inputList, outputs = toponame, algoId = currentAlgoId); currentAlgoId += 1    
-
-
-                alg.addgeneric('InputWidth1', d.inputwidth1)
-                alg.addgeneric('InputWidth2', d.inputwidth2)
-                alg.addgeneric('MaxTob1', d.nleading1)
-                alg.addgeneric('MaxTob2', d.nleading2)
-                alg.addgeneric('NumResultBits', 1)
-                if (d.applyEtaCut>0):
-                    alg.addgeneric('ApplyEtaCut', d.applyEtaCut)
-
-                alg.addvariable('MinET1', d.ocut1)
-                alg.addvariable('MinET2', d.ocut2)
-                alg.addvariable('MinMSqr', d.minInvm * d.minInvm )
-                alg.addvariable('MaxMSqr', d.maxInvm * d.maxInvm )
-                if (d.applyEtaCut>0):
-                    alg.addvariable('MinEta1', d.minEta1)
-                    alg.addvariable('MaxEta1', d.maxEta1)
-                    alg.addvariable('MinEta2', d.minEta2)
-                    alg.addvariable('MaxEta2', d.maxEta2)
-
-                tm.registerAlgo(alg)
+            alg = AlgConf.ExclusiveJets( name = d.algoname, inputs = inputList, outputs = toponames, algoId = currentAlgoId); currentAlgoId += 1 # noqa: F821
+            alg.addgeneric('InputWidth', HW.InputWidthJET) # noqa: F821
+            alg.addgeneric('MaxTob', HW.InputWidthJET)       # noqa: F821
+            alg.addgeneric('NumResultBits',  len(toponames)) # noqa: F821
+            for bitid,minET in enumerate(d.minETlist):  # noqa: F821
+                alg.addvariable('MinET1', minET, bitid)# noqa: F821
+            alg.addvariable('MinXi', 13000.0*0.02, bitid) # noqa: F821
+            alg.addvariable('MaxXi', 13000.0*0.05, bitid) # noqa: F821
+            tm.registerAlgo(alg)
+
+        
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/ItemDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/ItemDef.py
index dd7b5451296..bbf15795bf8 100755
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/ItemDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/ItemDef.py
@@ -89,7 +89,8 @@ class ItemDef(object):
         LVL1MenuItem('L1_EM15'      ).setLogic( d.EM15       & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM15_BGRP7').setLogic( d.EM15       & bgrp7cond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM15I'     ).setLogic( d.EM15 & d.EM8I      & physcond).setTriggerType( TT.calo )
-        LVL1MenuItem('L1_EM15HI'    ).setLogic( d.EM15HI      & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM15HI'    ).setLogic( d.EM15HI     & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM15VHI'   ).setLogic( d.EM15VHI    & physcond).setTriggerType( TT.calo )   
         LVL1MenuItem('L1_EM26VHI'   ).setLogic( d.EM26VHI    & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM16'      ).setLogic( d.EM16       & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM8VH'     ).setLogic( d.EM8VH      & physcond).setTriggerType( TT.calo )
@@ -100,14 +101,22 @@ class ItemDef(object):
         LVL1MenuItem('L1_EM15VH'    ).setLogic( d.EM15VH     & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM18'      ).setLogic( d.EM18       & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM18VH'    ).setLogic( d.EM18VH     & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM18VHI'   ).setLogic( d.EM18VHI    & physcond).setTriggerType( TT.calo )      # noqa: F821
         LVL1MenuItem('L1_EM20'      ).setLogic( d.EM20       & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM20VH'    ).setLogic( d.EM20VH     & physcond).setTriggerType( TT.calo )  
         LVL1MenuItem('L1_EM20VHI'   ).setLogic( d.EM20VHI    & physcond).setTriggerType( TT.calo )  # isolation not yet defined
+        LVL1MenuItem('L1_EM30VHI'   ).setLogic( d.EM30VHI    & physcond).setTriggerType( TT.calo )  # isolation not yet defined
         LVL1MenuItem('L1_EM22'      ).setLogic( d.EM22       & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM22VH'    ).setLogic( d.EM22VH      & physcond).setTriggerType( TT.calo )    # noqa: F821
         LVL1MenuItem('L1_EM22VHI'   ).setLogic( d.EM22VHI    & physcond).setTriggerType( TT.calo )  # isolation not yet defined
+        LVL1MenuItem('L1_EM24VHIM'   ).setLogic( d.EM24VHIM   & physcond).setTriggerType( TT.calo )    # noqa: F821
         LVL1MenuItem('L1_EM50V'     ).setLogic( d.EM50V      & physcond).setTriggerType( TT.calo )
 
 
+   
+
+
+
 
         # 2xEM, 3xEM
         LVL1MenuItem('L1_2EM3'           ).setLogic( d.EM3.x(2)             & physcond).setTriggerType( TT.calo )
@@ -118,6 +127,7 @@ class ItemDef(object):
         LVL1MenuItem('L1_2EM13VH'        ).setLogic( d.EM13VH.x(2)          & physcond).setTriggerType( TT.calo )                
         LVL1MenuItem('L1_2EM15'          ).setLogic( d.EM15.x(2)            & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_2EM15VH'        ).setLogic( d.EM15VH.x(2)          & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_2EM15VHI'       ).setLogic( d.EM15VHI.x(2)      & physcond).setTriggerType( TT.calo )        # noqa: F821
         LVL1MenuItem('L1_2EM18VH'        ).setLogic( d.EM18VH.x(2)          & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_2EM20VH'        ).setLogic( d.EM20VH.x(2)          & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM7_2EM3'       ).setLogic( d.EM7 & d.EM3.x(2)       & physcond).setTriggerType( TT.calo )
@@ -210,6 +220,7 @@ class ItemDef(object):
         LVL1MenuItem('L1_MU11' ).setLogic( d.MU11 & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_MU15' ).setLogic( d.MU15 & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_MU20' ).setLogic( d.MU20 & physcond).setTriggerType(TT.muon)
+        LVL1MenuItem('L1_MU21' ).setLogic( d.MU21 & physcond).setTriggerType(TT.muon)    
 
         # 2xMU, 3xMU, 4xMU
         LVL1MenuItem('L1_2MU0'     ).setLogic( d.MU0.x(2)        & physcond).setTriggerType(TT.muon)
@@ -222,6 +233,7 @@ class ItemDef(object):
         LVL1MenuItem('L1_MU6_MU4' ).setLogic( d.MU6 & d.MU4      & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_MU10_2MU6').setLogic( d.MU10 & d.MU6.x(2) & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_MU11_2MU6').setLogic( d.MU11 & d.MU6.x(2) & physcond).setTriggerType(TT.muon)
+        LVL1MenuItem('L1_MU11_2MU10').setLogic( d.MU11 & d.MU10.x(2) & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_MU10_2MU4').setLogic( d.MU10 & d.MU4.x(2) & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_3MU4'     ).setLogic( d.MU4.x(3)        & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_4MU4'     ).setLogic( d.MU4.x(4)        & physcond).setTriggerType(TT.muon)
@@ -297,7 +309,9 @@ class ItemDef(object):
         LVL1MenuItem('L1_EM6_MU10'   ).setLogic( d.EM6        & d.MU10     & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_EM7_MU10'   ).setLogic( d.EM7        & d.MU10     & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_EM7_MU15'   ).setLogic( d.EM7        & d.MU15     & physcond).setTriggerType(TT.muon)
+        LVL1MenuItem('L1_EM7_MU20'   ).setLogic( d.EM7        & d.MU20     & physcond).setTriggerType(TT.muon)   
         LVL1MenuItem('L1_EM8VH_MU15' ).setLogic( d.EM8VH      & d.MU15     & physcond).setTriggerType(TT.muon)
+        LVL1MenuItem('L1_EM8VH_MU20' ).setLogic( d.EM8VH      & d.MU20     & physcond).setTriggerType(TT.muon)    
         LVL1MenuItem('L1_EM8_MU10'   ).setLogic( d.EM8        & d.MU10     & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_EM8I_MU10'  ).setLogic( d.EM8I       & d.MU10     & physcond).setTriggerType(TT.muon)
         LVL1MenuItem('L1_EM15I_MU4'   ).setLogic( d.EM15  & d.EM8I     & d.MU4      & physcond).setTriggerType(TT.muon)
@@ -307,8 +321,11 @@ class ItemDef(object):
         LVL1MenuItem('L1_EM15VH_2EM8VH_MU6').setLogic( d.EM15VH & d.EM8VH.x(2) &  d.MU6 & physcond).setTriggerType(TT.muon)
 
         # TAU ctpid=[0x40:0x4f]
+        LVL1MenuItem('L1_TAU5'  ).setLogic( d.HA5   & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU6'  ).setLogic( d.HA6   & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU8'  ).setLogic( d.HA8   & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_2TAU5' ).setLogic( d.HA5.x(2)  & physcond).setTriggerType(TT.calo)
+        LVL1MenuItem('L1_2TAU8' ).setLogic( d.HA8.x(2)  & physcond).setTriggerType(TT.calo)
 
         #LVL1MenuItem('L1_TAU10IM').setLogic( d.HA10IM  & physcond).setTriggerType( TT.calo )
 
@@ -335,6 +352,7 @@ class ItemDef(object):
         LVL1MenuItem('L1_TAU30' ).setLogic( d.HA30  & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU40' ).setLogic( d.HA40  & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU60' ).setLogic( d.HA60  & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_TAU90' ).setLogic( d.HA90  & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU100' ).setLogic( d.HA100  & physcond).setTriggerType( TT.calo )
 
         LVL1MenuItem('L1_TAU8_UNPAIRED_ISO'   ).setLogic( d.HA8   & unpaired_isocond ).setTriggerType( TT.calo ) 
@@ -356,6 +374,7 @@ class ItemDef(object):
         LVL1MenuItem('L1_TAU20_2TAU12I' ).setLogic( d.HA20 & d.HA12I.x(2) &  physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU40_2TAU20IM' ).setLogic( d.HA40 & d.HA20IM.x(2) &  physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU20IM_2TAU12IM' ).setLogic( d.HA20IM & d.HA12IM.x(2) &  physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_TAU60_2TAU40').setLogic( d.HA60 & d.HA40.x(2)  & physcond).setTriggerType( TT.calo )
 
         # mixed tau
         LVL1MenuItem('L1_EM15VH_2TAU12'                ).setLogic( d.EM15VH  & d.HA12.x(2)          & physcond).setTriggerType( TT.calo )
@@ -389,8 +408,12 @@ class ItemDef(object):
         LVL1MenuItem('L1_MU10_TAU12_J25_2J12' ).setLogic( d.MU10 & d.HA12 & d.J25 & d.J12.x(2)     & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_MU10_TAU12IM_J25_2J12' ).setLogic( d.MU10 & d.HA12IM & d.J25 & d.J12.x(2)    & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_MU10_TAU12IL_J25_2J12' ).setLogic( d.MU10 & d.HA12IL & d.J25 & d.J12.x(2)    & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_TAU25IM_2TAU20IM_2J25_3J20').setLogic( d.HA25IM & d.HA20IM.x(2)     & d.J25.x(2)  & d.J20.x(3) & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU12I_MU10_J20.31ETA49' ).setLogic( d.HA12I & d.MU10 & d.J2031ETA49    & physcond).setTriggerType( TT.calo )
-
+        LVL1MenuItem('L1_MU10_TAU12IM_3J12' ).setLogic( d.MU10 & d.HA12IM & d.J12.x(3)    & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_TAU20IM_2TAU12IM_4J12.0ETA23').setLogic( d.HA20IM & d.HA12IM.x(2)  & d.J120ETA23.x(4) & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_TAU20IM_2TAU12IM_4J12.0ETA25').setLogic( d.HA20IM & d.HA12IM.x(2)  & d.J120ETA25.x(4) & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_TAU20IM_2TAU12IM_4J12.0ETA28').setLogic( d.HA20IM & d.HA12IM.x(2)  & d.J120ETA28.x(4) & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('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 )
         LVL1MenuItem('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 )
         LVL1MenuItem('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 )
@@ -408,13 +431,18 @@ class ItemDef(object):
         LVL1MenuItem('L1_TAU20IL_2TAU12IL_XE35'        ).setLogic( d.HA20IL  & d.HA12IL.x(2)  & d.XE35 & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU20IT_2TAU12IT_XE35'        ).setLogic( d.HA20IT  & d.HA12IT.x(2)  & d.XE35 & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_TAU20IM_2TAU12IM_XE40'        ).setLogic( d.HA20IM  & d.HA12IM.x(2)  & d.XE40 & physcond).setTriggerType( TT.calo )
-        LVL1MenuItem('L1_TAU40_2TAU12IM_XE40'        ).setLogic( d.HA40  & d.HA12IM.x(2)  & d.XE40 & physcond).setTriggerType( TT.calo )   
+        LVL1MenuItem('L1_TAU40_2TAU12IM_XE40'          ).setLogic( d.HA40  & d.HA12IM.x(2)  & d.XE40 & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM15VHI_2TAU12IM'             ).setLogic( d.EM15VHI  & d.HA12IM.x(2)        & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM15VHI_TAU40_2TAU15'          ).setLogic( d.EM15VHI  & d.HA40 & d.HA15.x(2)   & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM15VHI_2TAU12IM_J25_3J12'    ).setLogic( d.EM15VHI  & d.HA12IM.x(2)  & d.J25 & d.J12.x(3) & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM15VHI_2TAU12IM_4J12'        ).setLogic( d.EM15VHI  & d.HA12IM.x(2) & d.J12.x(4) & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('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 )
         LVL1MenuItem('L1_EM20VHI_TAU20IM_2TAU20_J25_3J20'          ).setLogic( d.EM20VHI  &  d.HA20IM  &  d.HA20.x(2) &  d.J25  & d.J20.x(3) & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM15HI_2TAU12I_XE35'          ).setLogic( d.EM15HI  & d.HA12I.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM15HI_2TAU12IM_XE35'         ).setLogic( d.EM15HI  & d.HA12IM.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_EM15HI_2TAU12IL_XE35'         ).setLogic( d.EM15HI  & d.HA12IL.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
-        LVL1MenuItem('L1_EM15HI_2TAU12_XE35'         ).setLogic( d.EM15HI  & d.HA12.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM15HI_2TAU12_XE35'          ).setLogic( d.EM15HI  & d.HA12.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
+        LVL1MenuItem('L1_EM15VHI_2TAU12IM_XE35'        ).setLogic( d.EM15VHI  & d.HA12IM.x(2) & d.XE35 & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_MU10_TAU12I_XE35'             ).setLogic( d.MU10    & d.HA12I      & d.XE35 & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_MU10_TAU12_XE35'              ).setLogic( d.MU10    & d.HA12       & d.XE35 & physcond).setTriggerType( TT.calo )
         LVL1MenuItem('L1_MU10_TAU12IL_XE35'            ).setLogic( d.MU10    & d.HA12IL     & d.XE35 & physcond).setTriggerType( TT.calo )
@@ -513,6 +541,9 @@ class ItemDef(object):
         LVL1MenuItem('L1_J40.0ETA25_2J15.31ETA49' ).setLogic( d.J400ETA25 & d.J1531ETA49.x(2)    & physcond).setTriggerType(TT.calo)
         LVL1MenuItem('L1_J40.0ETA25_2J25_J20.31ETA49' ).setLogic( d.J400ETA25 & d.J25.x(2) & d.J2031ETA49   & physcond).setTriggerType(TT.calo) 
         LVL1MenuItem('L1_J40.0ETA25_2J30_J20.31ETA49' ).setLogic( d.J400ETA25 & d.J30.x(2) & d.J2031ETA49   & physcond).setTriggerType(TT.calo)
+        LVL1MenuItem('L1_J45.0ETA20_3J15.0ETA25'  ).setLogic( d.J450ETA20 & d.J150ETA25.x(3) & physcond).setTriggerType(TT.calo)
+        LVL1MenuItem('L1_J50_2J40.0ETA25_3J15.0ETA25'  ).setLogic( d.J50 & d.J400ETA25.x(2) & d.J150ETA25.x(3) & physcond).setTriggerType(TT.calo)
+        LVL1MenuItem('L1_J25.0ETA23_2J15.31ETA49'  ).setLogic( d.J250ETA23 & d.J1531ETA49.x(2) & physcond).setTriggerType(TT.calo)
 
         LVL1MenuItem('L1_4J17.0ETA22' ).setLogic( d.J170ETA22.x(4) & physcond).setTriggerType(TT.calo)
         LVL1MenuItem('L1_3J25.0ETA23' ).setLogic( d.J250ETA23.x(3) & physcond).setTriggerType(TT.calo)
@@ -547,6 +578,8 @@ class ItemDef(object):
         LVL1MenuItem('L1_EM13VH_3J20' ).setLogic( d.EM13VH  & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
         ### ATR-15524
         LVL1MenuItem('L1_EM18VH_3J20' ).setLogic( d.EM18VH  & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
+        LVL1MenuItem('L1_EM18VHI_3J20' ).setLogic( d.EM18VHI  & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
+        LVL1MenuItem('L1_EM20VH_3J20' ).setLogic( d.EM20VH  & d.J20.x(3)  & physcond).setTriggerType(TT.calo)
 
         # combined mu - jet
         LVL1MenuItem('L1_MU4_J12'   ).setLogic( d.MU4 & d.J12    & physcond).setTriggerType(TT.calo)
@@ -562,9 +595,14 @@ class ItemDef(object):
         LVL1MenuItem('L1_MU10_2J20'  ).setLogic( d.MU10 & d.J20.x(2)  & physcond).setTriggerType(TT.calo)
         LVL1MenuItem('L1_MU10_2J15_J20'  ).setLogic( d.MU10 & d.J15.x(2) & d.J20  & physcond).setTriggerType(TT.calo)
         LVL1MenuItem('L1_MU4_J50_XE40'   ).setLogic( d.MU4 & d.J50 & d.XE40  & physcond).setTriggerType(TT.calo)
+        LVL1MenuItem('L1_2MU4_J40_XE50'  ).setLogic( d.MU4.x(2) & d.J40 & d.XE50  & physcond).setTriggerType(TT.calo)
         LVL1MenuItem('L1_2MU4_J40_XE20'  ).setLogic( d.MU4.x(2) & d.J40 & d.XE20  & physcond).setTriggerType(TT.calo)
+        LVL1MenuItem('L1_MU4_J30_XE40_DPHI-J20s2XE30').setLogic( d.MU4 & d.J30 & d.XE40 & d.TOPO_10MINDPHI_J20s2_XE30  & physcond)
+        LVL1MenuItem('L1_MU4_J50_XE50_DPHI-J20s2XE30').setLogic( d.MU4 & d.J50 & d.XE50 & d.TOPO_10MINDPHI_J20s2_XE30  & physcond)
         LVL1MenuItem('L1_MU20_J40'  ).setLogic( d.MU20 & d.J40 & physcond).setTriggerType(TT.calo) ## ATR-14377
+        LVL1MenuItem('L1_MU20_J50'  ).setLogic( d.MU20 & d.J50  & physcond).setTriggerType(TT.calo)
         LVL1MenuItem('L1_MU20_XE30' ).setLogic( d.MU20 & d.XE30 & physcond) ## ATR-14377
+        LVL1MenuItem('L1_MU4_XE60'  ).setLogic( d.MU4 & d.XE60  & physcond).setTriggerType(TT.calo)
         # HI
         LVL1MenuItem('L1_J15_NZ' ).setLogic( d.J15      & Not(d.ZDC_AND) & physcond).setTriggerType(TT.calo)
         LVL1MenuItem('L1_2J15_NZ').setLogic( d.J15.x(2) & Not(d.ZDC_AND) & physcond).setTriggerType(TT.calo)   
@@ -1461,6 +1499,7 @@ class ItemDef(object):
      
                     LVL1MenuItem('L1_LFV-MU6').setLogic( d.TOPO_0DR15_2MU6ab & physcond)
                     LVL1MenuItem('L1_LFV-MU').setLogic( d.TOPO_0DR10_MU10ab_MU6ab & physcond)
+                    LVL1MenuItem('L1_LFV-MU11').setLogic( d.TOPO_0DR15_2MU6ab & d.MU11 & d.MU6.x(2) & physcond)
                     if not '_v7' in TriggerFlags.triggerMenuSetup() and not 'LS2_v' in TriggerFlags.triggerMenuSetup() and not 'run3_v' in TriggerFlags.triggerMenuSetup():
                         LVL1MenuItem('L1_LFV-EM8I').setLogic( d.TOPO_0DETA04_0DPHI03_EM8abi_MU10ab & physcond)
                     else:
@@ -1489,6 +1528,7 @@ class ItemDef(object):
                     LVL1MenuItem('L1_HT150-JJ15.ETA49').setLogic( d.TOPO_HT150_AJj15allETA49 & physcond)
                     LVL1MenuItem('L1_HT150-JJ15.ETA49_MJJ-400').setLogic( d.TOPO_HT150_AJj15allETA49 & d.TOPO_400INVM9999_AJ30s6_AJ20s6 & physcond)
 
+                    LVL1MenuItem('L1_MJJ-500-NFF').setLogic( d.TOPO_500INVM9999_J30s6_AJ20s6 & physcond)
                     
                     LVL1MenuItem('L1_J4-MATCH').setLogic( d.TOPO_0MATCH_4AJ20ETA31_4AJj15ETA31 & physcond)
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/Menu_LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/Menu_LS2_v1.py
index 3ccc35a1ff2..b1371e1a85c 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/Menu_LS2_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/Menu_LS2_v1.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 def defineMenu():
     """
@@ -38,14 +38,13 @@ def defineMenu():
         # SLOT 7 / CON 0,1 (EM1,2)
         #-------------------------
         
+ 
         # 16 x EM
         'EM3', 'EM7', 'EM8VH',
-        'EM8I',
-        'EM10VH', 'EM12', 'EM13VH', 'EM15', 'EM15VH',
-        'EM15HI',
-        'EM18VH', 'EM20VH', 'EM20VHI', 'EM22VHI', 'EM24VHI', 'EM26VHI', 
-
-        # 1 x ZB
+        'EM10VH', 'EM12', 'EM15', 'EM15VH',
+        'EM15VHI',
+        'EM18VHI', 'EM20VH', 'EM20VHI', 'EM22VH', 'EM22VHI', 'EM24VHI', 'EM24VHIM', 'EM30VHI', 
+        # 1 x ZB/
         'ZB_EM15',
 
         #--------------------------
@@ -53,7 +52,8 @@ def defineMenu():
         #--------------------------
 
         # 16 x TAU
-        'HA8', 'HA12', 'HA12IL', 'HA12IM', 'HA12IT', 'HA15', 'HA20', 'HA20IL',  'HA20IM', 'HA20IT', 'HA25', 'HA25IT', 'HA30', 'HA40', 'HA60', 'HA100', 
+        'HA5', 'HA8', 'HA12', 'HA12IL', 'HA12IM', 'HA15', 'HA20', 'HA20IL', 'HA20IM', 'HA25', 'HA25IM', 'HA30', 'HA40', 'HA60', 'HA90', 'HA100',
+ 
 
         #----------------------
         # SLOT 8 / CON 0 (JET1)
@@ -61,9 +61,11 @@ def defineMenu():
         # 10 x 3-bit JET (can have multiplicity 4 or more)
 
         # 8 x JETs and central jets
-        'J12', 'J15', 'J15.0ETA25','J20', 'J25','J25.0ETA23','J30', 'J40',
-        
-        # 2 x VBF
+        'J12', 'J12.0ETA23', 'J15', 'J15.0ETA25','J20', 'J25','J25.0ETA23','J30',
+        # 2 x Central Jets
+        'J12.0ETA25', 'J12.0ETA28',
+
+        # VBF Jets
         'J20.0ETA49', 'J30.0ETA49',
 
 
@@ -73,37 +75,33 @@ def defineMenu():
         # 15 x 2-bit JET (can have maximum multiplicity of 3) (SLOT 8, CON 1)
 
         # 3 x Central Jet
-        'J35.0ETA23','J40.0ETA25', 'J20.28ETA31',
+        'J35.0ETA23','J40.0ETA25', #'J20.28ETA31',
+
+        # 6 Jets # replace J400 with J45.0ETA20 - ATR-19309
+        'J40', 'J50', 'J75', 'J85', 'J100', 'J45.0ETA20', 'J120', 'J400',
 
-        # 6 Jets
-        'J50', 'J75', 'J85', 'J100', 'J120', 'J400',
 
         # 6 x FJ              
-        'J15.31ETA49', 'J20.31ETA49', 'J30.31ETA49', 'J50.31ETA49', 'J75.31ETA49', 'J100.31ETA49', 
+        'J15.31ETA49', 'J20.31ETA49', 'J30.31ETA49', 'J50.31ETA49', 'J75.31ETA49', 
+ 
 
 
         #---------------------
-        # SLOT 8 / CON 2 (EN1)
+        # SLOT 8 / CON 2 (EN1) 
         #---------------------
         # 24 x 1-bit thresholds
-        
-        # 8 x TE
-        #'TE3', 'TE5', 'TE10', 'TE15', 'TE20', 'TE25', 'TE30', 'TE40',
-        #'TE5', 'TE30', 'TE40', 'TE45', 'TE50', 'TE55', 'TE60', 'TE65',
-        'TE5', 'TE10', 'TE15', 'TE20', 'TE25', 'TE30', 'TE40', 'TE70',
 
+        # 8 x TE
+        'TE5', 'TE10', 'TE15', 'TE20', 'TE25', 'TE30', 'TE40', 'TE50',
+    
         # 8 x XE (for standard XE)
-        #'XE35', 'XE40', 'XE45', 'XE50', 'XE55', 'XE60', 'XE70', 'XE80',
-        # 8 x XE (for restricted ETA XE: check ATR-13234 for any further change)
-        #'XE10', 'XE20', 'XE25', 'XE30', 'XE65', 'XE75', 'XE150', 'XE300',
-
         'XE10', 'XE20', 'XE25', 'XE30', 'XE35', 'XE40', 'XE45', 'XE50',
         'XE55', 'XE60', 'XE65', 'XE70', 'XE75', 'XE80', 'XE150', 'XE300',
         
         # 8 x XS
         'XS20', 'XS30', 'XS40', 'XS45', 'XS50', 'XS55', 'XS60', 'XS65', 
 
-
+ 
         #---------------------
         # SLOT 8 / CON 3 (EN2)
         #---------------------
@@ -113,18 +111,18 @@ def defineMenu():
         #'RXE35', 'RXE40', 'RXE45', 'RXE50', 'RXE55', 'RXE60', 'RXE70', 'RXE80', # FTHR
 
         # 8 x restricted eta range
-        #'TE3.0ETA24', 'TE5.0ETA24','TE10.0ETA24', 'TE15.0ETA24', 'TE20.0ETA24', 'TE25.0ETA24', 'TE30.0ETA24', 'TE40.0ETA24',
-        #'TE5.0ETA24', 'TE30.0ETA24','TE40.0ETA24', 'TE45.0ETA24', 'TE50.0ETA24', 'TE55.0ETA24', 'TE60.0ETA24', 'TE65.0ETA24',
-        'TE5.0ETA24', 'TE10.0ETA24', 'TE15.0ETA24', 'TE20.0ETA24', 'TE25.0ETA24', 'TE30.0ETA24', 'TE40.0ETA24', 'TE70.0ETA24',
+        'TE5.24ETA49', 'TE10.24ETA49', 'TE15.24ETA49', 'TE20.24ETA49', 'TE25.24ETA49', 'TE30.24ETA49', 'TE40.24ETA49', 'TE70.24ETA49',
+
+
 
         #------------------------
-        # SLOT 9 / CON 0 (MUCTPi)
+        # SLOT 9 / CON 0 (MUCTPi) 
         #------------------------
         
         # 6 x MU
-        'MU4', 'MU6', 'MU10', 'MU11', 'MU15', 'MU20',
-
+        'MU4', 'MU6', 'MU10', 'MU11', 'MU20', 'MU21',
 
+        
         #------------------------
         # SLOT 9 / CON 1 (CTPCal)
         #------------------------
@@ -153,6 +151,8 @@ def defineMenu():
         # 3 x CALREQ
         'CAL0','CAL1','CAL2',
 
+ 
+
         #-----------------------------
         # SLOT 9 / CON 2,3 (NIM1,NIM2)
         #-----------------------------
@@ -160,11 +160,13 @@ def defineMenu():
         # 2 x MBTS
         'MBTS_A', 'MBTS_C',
 
-        # 24 x MBTSSI (all FTHR)
-        'MBTS_A0', 'MBTS_A1', 'MBTS_A2', 'MBTS_A3', 'MBTS_A4'  , 'MBTS_A5', 'MBTS_A6', 'MBTS_A7', 
-        'MBTS_A8', 'MBTS_A10', 'MBTS_A12' , 'MBTS_A14',
-        'MBTS_C0', 'MBTS_C1', 'MBTS_C2', 'MBTS_C3', 'MBTS_C4'  , 'MBTS_C5', 'MBTS_C6', 'MBTS_C7', 
-        'MBTS_C8', 'MBTS_C10', 'MBTS_C12' , 'MBTS_C14',
+        # 32 x MBTSSI (all FTHR)
+        # NOTE: THESE ARE OUT OF ORDER FOR A REASON! Do not change!
+        # The order defines the mapping - see ATR-17870.
+        'MBTS_A0', 'MBTS_A1', 'MBTS_A2', 'MBTS_A3', 'MBTS_A4', 'MBTS_A5', 'MBTS_A6', 'MBTS_A7',
+        'MBTS_A8', 'MBTS_A10', 'MBTS_A12', 'MBTS_A14', 'MBTS_A9', 'MBTS_A11','MBTS_A13', 'MBTS_A15',
+        'MBTS_C0', 'MBTS_C1', 'MBTS_C2', 'MBTS_C3', 'MBTS_C4', 'MBTS_C5', 'MBTS_C6', 'MBTS_C7',
+        'MBTS_C8', 'MBTS_C10', 'MBTS_C12', 'MBTS_C14', 'MBTS_C11', 'MBTS_C13','MBTS_C9','MBTS_C15',
 
         # L1A for CTP monitoring itself
         'NIML1A',
@@ -182,394 +184,316 @@ def defineMenu():
         'NIMTRT',
 
         # AFP
-        'AFP_NSC', 'AFP_FSC',
+        'AFP_NSC', 'AFP_NSA',
+        'AFP_FSA_SIT', 'AFP_FSA_TOF', 'AFP_FSA_LOG',
+        'AFP_FSC_SIT', 'AFP_FSC_LOG', 'AFP_FSC_TOF',
 
+        
         #-------------------------------------------------------------------
         #L1 TOPO inputs 
         #-------------------------------------------------------------------
-        
+
+        #B-jets
+        'BTAG-MU4J15',
+        'BTAG-MU6J20',
+
         #HT
-        'HT190-AJ15all.ETA21',
         'HT190-J15s5.ETA21',
-        'HT150-AJ20all.ETA31',
         'HT150-J20s5.ETA31',
 
         
 
         #ZH 
-        '10MINDPHI-AJ20s2-XE50', '10MINDPHI-J20s2-XE50', '10MINDPHI-J20s2-XE30', '10MINDPHI-J20ab-XE50', '10MINDPHI-CJ20ab-XE50', 
+        '10MINDPHI-J20s2-XE50', '10MINDPHI-J20s2-XE30', 
+
         #Jpsi T&P
-        '1INVM5-EMs1-EMs6', '1INVM5-EM7s1-EMs6', '1INVM5-EM12s1-EMs6',        
-
-        #W T&P
-        '05MINDPHI-AJj10s6-XE0',
-        '10MINDPHI-AJj10s6-XE0',
-        '15MINDPHI-AJj10s6-XE0',
-        '05MINDPHI-EM12s6-XE0',
-        '15MINDPHI-EM12s6-XE0',
-        '05MINDPHI-EM15s6-XE0',
-        '15MINDPHI-EM15s6-XE0',
-        '05RATIO-XE0-HT0-AJj15all.ETA49',
-        '90RATIO2-XE0-HT0-AJj15all.ETA49',
-        '250RATIO2-XE0-HT0-AJj15all.ETA49',
-        'HT20-AJj15all.ETA49',
-        'NOT-02MATCH-EM10s1-AJj15all.ETA49',
-        '25MT-EM12s6-XE0',
-        '35MT-EM12s6-XE0',
-        '35MT-EM15s6-XE0',
-        #'10MINDPHI-AJj15s2-XE0',
-        #'20MINDPHI-AJjs6-XE0',
-        #'20MINDPHI-AJj15s2-XE0',
-        #'10MINDPHI-EM6s1-XE0',
-        #'20MINDPHI-EM9s6-XE0',
-        #'20MINDPHI-EM6s1-XE0',
-        #'05RATIO-XE0-HT0-AJj15all.ETA49',
-        #'08RATIO-XE0-HT0-AJj0all.ETA49',
-        #'40RATIO2-XE0-HT0-AJj15all.ETA49',
-        #'90RATIO2-XE0-HT0-AJj0all.ETA49',
-        #'HT20-AJj0all.ETA49',
-        #'NOT-02MATCH-EM9s1-AJj15all.ETA49',
-        #'05RATIO-XE0-SUM0-EM9s1-HT0-AJj15all.ETA49',
-        #'20MT-EM6s6-XE0',
-        #'30MT-EM6s6-XE0',
-        #'40MT-EM6s6-XE0',
+         '1INVM5-EM7s1-EMs6', '1INVM5-EM12s1-EMs6',        
+
+        #W T&P - all were commented out
+ 
         
         # central muon
         'MULT-CMU4ab',
         'MULT-CMU6ab',
         
-        #B-jet
-        '0DR04-MU4ab-CJ15ab', '0DR04-MU4ab-CJ20ab', '0DR04-MU4ab-CJ30ab', '0DR04-MU6ab-CJ20ab', '0DR04-MU6ab-CJ25ab',
+
         #B-physics
-#SX        '2DR15-2MU4ab', 
-#SX        '2INVM999-2MU4ab', 
-#SX        '4INVM8-2MU4ab',
-        '2DR15-2MU6ab', 
-#SX        '2INVM999-2MU6ab', 
-#SX        '4INVM8-2MU6ab',
+        '0DR03-EM7ab-CJ15ab',
+ 
 
         # L1 thresholds for L1Topo streamers
-#SX        '2INVM999-CMU4ab-MU4ab',
-#SX        '2INVM999-2CMU4ab',
-#SX        '2INVM999-MU6ab-MU4ab',
-#SX        '2INVM999-ONEBARREL-MU6ab-MU4ab',
-#SX        '2INVM999-CMU6ab-CMU4ab',
-#SX        '4INVM8-CMU4ab-MU4ab',
-#SX        '4INVM8-2CMU4ab',
-#SX        '4INVM8-MU6ab-MU4ab',
-#SX        '4INVM8-ONEBARREL-MU6ab-MU4ab',
-#SX        '4INVM8-CMU6ab-CMU4ab',        
-        '2DR99-2MU4ab',
+        '2DR99_2MU4ab',
         '5DETA99-5DPHI99-MU6ab-MU4ab',
         '5DETA99-5DPHI99-2MU6ab',
-        '0DR10-MU10ab-MU6ab',
         '0DR15-2MU6ab',
-#        '0DETA04-0DPHI03-EM8abi-MU10ab',
         '0DETA04-EM8abi-MU10ab',
         '0DPHI03-EM8abi-MU10ab',
-#        '0DETA04-0DPHI03-EM15abi-MUab',
         '0DETA04-EM15abi-MUab',
         '0DPHI03-EM15abi-MUab',
-        '10MINDPHI-AJ20s2-XE50',
-        '10MINDPHI-J20s2-XE50',
-        '10MINDPHI-J20ab-XE50',
-        '10MINDPHI-CJ20ab-XE50',
-        '900INVM9999-AJ30s6-AJ20s6',
         '800INVM9999-AJ30s6-AJ20s6',
         '700INVM9999-AJ30s6-AJ20s6',
-        '500INVM9999-AJ30s6-AJ20s6',
-        '400INVM9999-AJ30s6-AJ20s6',
-        #'350INVM9999-AJ30s6-AJ20s6',
         '300INVM9999-AJ30s6-AJ20s6',
-        '200INVM9999-AJ30s6-AJ20s6',
+        '400INVM9999-AJ30s6-AJ20s6',
+        '500INVM9999-J30s6-AJ20s6',
         '100INVM9999-AJ30s6-AJ20s6',
-        #'350INVM9999-J30s6-J20s6',
-        #'300INVM9999-J30s6-J20s6',
-        #'250INVM9999-J30s6-J20s6',
-        #'200INVM9999-J30s6-J20s6',
+        '0DETA20-J50s1-Js2',
+        '27DPHI32-EMs1-EMs6',
         'HT150-AJj15all.ETA49',
         '0MATCH-4AJ20.ETA31-4AJj15.ETA31',
         '100RATIO-0MATCH-TAU30si2-EMall',
-        'NOT-0MATCH-TAU30si2-EMall',
-        '0DR28-MU10ab-TAU12abi',
+        'NOT-0MATCH-TAU30si1-EMall',
         '1DISAMB-TAU12abi-J25ab',
         '1DISAMB-EM15his2-TAU12abi-J25ab',
-        'DISAMB-0DR28-EM15his2-TAU12abi',
-        '1DISAMB-J25ab-0DR28-EM15his2-TAU12abi',
+        '2DISAMB-TAU12abi-J25ab',
+        '2DISAMB-J25ab-0DR28-EM15his2-TAU12abi',
+        '0DR28-MU10ab-TAU12abi',
         '1DISAMB-TAU20abi-TAU12abi-J25ab',
         '0DR25-TAU20abi-TAU12abi',
         '0DR28-TAU20abi-TAU12abi',
-        '0DETA20-0DPHI20-TAU20abi-TAU12abi',
-        '1DISAMB-J25ab-0DR25-TAU20abi-TAU12abi',
-        '1DISAMB-J25ab-0DR28-TAU20abi-TAU12abi',
+        '2DISAMB-J25ab-0DR25-TAU20abi-TAU12abi',
+        '2DISAMB-J25ab-0DR28-TAU20abi-TAU12abi',
         'DISAMB-30INVM-EM20his2-TAU12ab',
         '400INVM9999-AJ30s6.ETA31-AJ20s6.31ETA49',
-        'LAR-EM50s1',
-        'LAR-J100s1',
-#SX        '2DR15-CMU4ab-MU4ab',
-#SX        '2DR15-2CMU4ab',
-#SX        '2DR15-MU6ab-MU4ab',
-#SX        '2DR15-ONEBARREL-MU6ab-MU4ab',
-#SX        '2DR15-CMU6ab-CMU4ab',
-
-        '2INVM9-2MU6ab',
-        '7INVM15-2MU4ab', 
-        '2INVM8-ONEBARREL-MU6ab-MU4ab', 
-        '0DR24-2CMU4ab', 
-        '0DR22-2MU6ab',
-        '0DR34-2MU4ab', 
-        '0DR24-2MU4ab', 
-        '0DR24-CMU4ab-MU4ab',  
-        '2INVM8-CMU4ab-MU4ab',
-        '0DR15-2MU4ab',  
-        '0DR15-MU6ab-MU4ab',  
-        '0DR22-MU6ab-MU4ab', 
-        '8INVM15-MU6ab-MU4ab',  
-        '8INVM15-2MU6ab', 
-        '2INVM8-2MU4ab',  # ATR-15197 '2INVM9-2MU4ab',
-        '2INVM8-MU6ab-MU4ab', # ATR-15197 '2INVM9-MU6ab-MU4ab',
-        '2INVM9-2MU4ab',
-        '2INVM9-MU6ab-MU4ab',
-        'KF-XE40-AJall',
-        'KF-XE50-AJall',
-        'KF-XE55-AJall',
-        'KF-XE60-AJall',
-        'KF-XE65-AJall',
-        'KF-XE75-AJall',
+
+        '0INVM9-EM7ab-EMab',
+        '400INVM9999-0DPHI20-J30s6-AJ20s6',
+        '400INVM9999-0DPHI22-J30s6-AJ20s6',
+        '400INVM9999-0DPHI24-J30s6-AJ20s6',
+        '400INVM9999-0DPHI26-J30s6-AJ20s6',
 
         'LATE-MU10s1',
         'SC111-CJ15ab.ETA26',
-        'SC85-CJ15ab.ETA26',
+        
         
         # ALFA (the replication is needed to build all the combinations in the CTPCore)
         'ALFA_B7R1L', 'ALFA_B7R1U', 'ALFA_A7R1L', 'ALFA_A7R1U', 'ALFA_A7L1L', 'ALFA_A7L1U', 'ALFA_B7L1L', 'ALFA_B7L1U',
         'ALFA2_B7R1L', 'ALFA2_B7R1U', 'ALFA2_A7R1L', 'ALFA2_A7R1U', 'ALFA2_A7L1L', 'ALFA2_A7L1U', 'ALFA2_B7L1L', 'ALFA2_B7L1U',
         'ALFA3_B7R1L', 'ALFA3_B7R1U', 'ALFA3_A7R1L', 'ALFA3_A7R1U', 'ALFA3_A7L1L', 'ALFA3_A7L1U', 'ALFA3_B7L1L', 'ALFA3_B7L1U',
         'ALFA4_B7R1L', 'ALFA4_B7R1U', 'ALFA4_A7R1L', 'ALFA4_A7R1U', 'ALFA4_A7L1L', 'ALFA4_A7L1U', 'ALFA4_B7L1L', 'ALFA4_B7L1U',
-#ATR-13743        'ALFA_B7R1L_OD', 'ALFA_B7R1U_OD', 'ALFA_A7R1L_OD', 'ALFA_A7R1U_OD', 'ALFA_A7L1L_OD', 'ALFA_A7L1U_OD', 'ALFA_B7L1L_OD', 'ALFA_B7L1U_OD',
-
+#ATR-13743      
+        'ALFA_B7R1L_OD', 'ALFA_B7R1U_OD', 'ALFA_A7R1L_OD', 'ALFA_A7R1U_OD', 'ALFA_A7L1L_OD', 'ALFA_A7L1U_OD', 'ALFA_B7L1L_OD', 'ALFA_B7L1U_OD',
+
+        #ATR-19355
+        '0INVM10-3MU4ab',
+
+        #ATR-18815 - Algorithm needs to be moved to master
+#        '0INVM10-0DR15-EM8abi-MU10ab',
+#        '0INVM10-0DR15-EM12abi-MU6ab',
+
+        #ATR-18824
+        '60INVM9999-25DPHI32-EM15abhi-FJj15s623ETA49',
+        '60INVM9999-04DPHI32-EM15abhi-FJj15s623ETA49',
+        #ATR-19302
+        '0INVM70-27DPHI32-EM12his1-EM12his6',
+
+        #ATR-19720
+        '8INVM15-0DR22-2MU6ab',
+        '2INVM9-2DR15-2MU6ab',
+        '2INVM9-0DR15-MU6ab-MU4ab',
+        '8INVM15-0DR22-MU6ab-MU4ab',
+        '2INVM9-0DR15-2MU4ab',
+
+        #ATR-19510
+        '5DETA99-5DPHI99-2MU4ab',
+            
+        #ATR-17320
+        'CEP-CJ60s6',
+        'CEP-CJ50s6',
+       
+        #ATR-20174
+        '8INVM15-2CMU4ab'
 
-        ]
+        
+    ]
 
     
     Lvl1Flags.items = [
 
-        
         # single EM
 
         'L1_EM3','L1_EM7','L1_EM12', 'L1_EM8VH',
-#        'L1_EM8I',
-        'L1_EM10VH', 'L1_EM13VH', 'L1_EM15',
-        'L1_EM15I','L1_EM15HI',
-        'L1_EM26VHI','L1_EM15VH', 'L1_EM18VH', 'L1_EM20VH', 'L1_EM20VHI', 'L1_EM22VHI', 'L1_EM24VHI', # see Jira ATR-10334'L1_EM22VHLIL', #'L1_EM50V',
-        'L1_EM3_EMPTY', 'L1_EM7_EMPTY', 'L1_EM7_UNPAIRED_ISO', 'L1_EM7_FIRSTEMPTY','L1_EM7_UNPAIRED_NONISO',
+        'L1_EM10VH', 'L1_EM15',
+        'L1_EM30VHI',
+        'L1_EM15VHI',
+        'L1_EM24VHIM','L1_EM15VH', 'L1_EM18VHI', 'L1_EM20VH', 'L1_EM20VHI', 'L1_EM22VHI', 'L1_EM22VH','L1_EM24VHI', 
+        'L1_EM3_EMPTY', 'L1_EM7_EMPTY', 'L1_EM7_UNPAIRED_ISO', 'L1_EM7_FIRSTEMPTY',
         'L1_EM20VH_FIRSTEMPTY',
-        'L1_EM22VHI_FIRSTEMPTY',
-        #'L1_EM15_BGRP7',
 
-        # see savannah https://savannah.cern.ch/bugs/?103935
 
-        # combined EM -jet
-        #'L1_JJ15.23ETA49', # 4x4 window
+        # combined EM -jet - all commented
 
         # single MU
-        "L1_MU4", "L1_MU6", "L1_MU10", "L1_MU11", "L1_MU15", "L1_MU20",
-
+        "L1_MU4", "L1_MU6", "L1_MU10", "L1_MU11", "L1_MU20", "L1_MU21",
+        
         "L1_MU4_EMPTY", "L1_MU6_EMPTY", "L1_MU4_FIRSTEMPTY", "L1_MU11_EMPTY",
-        'L1_MU4_UNPAIRED_ISO','L1_MU4_UNPAIRED_NONISO',
-         'L1_MU20_FIRSTEMPTY',
+        'L1_MU4_UNPAIRED_ISO',
+
 
-        
         
         # multi lepton
-        "L1_2EM3", "L1_2EM7", "L1_2EM10VH", "L1_2EM13VH", "L1_2EM15", "L1_2EM15VH", "L1_EM7_2EM3", "L1_EM12_2EM3", "L1_EM15VH_3EM7", "L1_EM15VH_3EM8VH", "L1_EM15VH_2EM10VH_3EM7",
-        "L1_2EM18VH", "L1_2EM20VH", "L1_EM15VH_3EM10VH", "L1_EM18VH_3EM8VH", "L1_EM18VH_2EM10VH_3EM7", "L1_EM20VH_3EM10VH", "L1_EM20VH_2EM10VH_3EM8VH",
+        "L1_2EM3", "L1_2EM7",
+        "L1_2EM15", "L1_2EM15VH", "L1_2EM15VHI",
+        "L1_2EM20VH",
+        "L1_EM20VH_3EM10VH", 
         "L1_EM7_MU10",
-        "L1_2MU4", "L1_2MU6", "L1_2MU10", "L1_2MU20_OVERLAY", "L1_MU10_2MU6", "L1_MU11_2MU6", "L1_3MU4", "L1_MU6_2MU4", "L1_3MU6",  "L1_4MU4", "L1_MU6_3MU4", "L1_2MU6_3MU4",
-
-        "L1_EM8I_MU10", "L1_EM15I_MU4", "L1_2EM8VH_MU10", "L1_EM15VH_MU10", 
-
+        "L1_2MU4", "L1_2MU6", "L1_2MU10", "L1_2MU20_OVERLAY",  "L1_MU11_2MU6", "L1_3MU4", "L1_MU6_2MU4", "L1_3MU6",  "L1_4MU4", "L1_MU6_3MU4", "L1_2MU6_3MU4", "L1_2MU11", "L1_MU11_2MU10",
+        "L1_2EM8VH_MU10", "L1_EM15VH_MU10",  "L1_EM7_MU20", "L1_EM8VH_MU20",
 
         # single tau
-        "L1_TAU12", "L1_TAU12IM",  "L1_TAU20", "L1_TAU20IM",
-        "L1_TAU30","L1_TAU30_EMPTY","L1_TAU30_UNPAIRED_ISO", "L1_TAU40", "L1_TAU60", "L1_TAU100", "L1_TAU8", "L1_TAU8_EMPTY", 
-        "L1_TAU8_UNPAIRED_ISO","L1_TAU8_FIRSTEMPTY","L1_TAU8_UNPAIRED_NONISO",
+        "L1_TAU5", "L1_TAU12", "L1_TAU12IM",   "L1_TAU20IM",
+        "L1_TAU30","L1_TAU30_EMPTY","L1_TAU30_UNPAIRED_ISO", "L1_TAU40", "L1_TAU60", "L1_TAU90", "L1_TAU100", "L1_TAU8_EMPTY", 
+        "L1_TAU8_UNPAIRED_ISO","L1_TAU8_FIRSTEMPTY",
 
         # multi tau
-        "L1_TAU20IM_2TAU12IM", "L1_TAU20_2TAU12", "L1_TAU40_2TAU20IM",
+        "L1_TAU20IM_2TAU12IM",   "L1_TAU60_2TAU40", "L1_2TAU5", "L1_2TAU8",
 
         # combined tau - lepton
-        "L1_EM15HI_2TAU12IM",          
-        "L1_EM15HI_2TAU12IM_J25_3J12",   
-        "L1_EM15HI_TAU40_2TAU15",
+        "L1_EM15VHI_2TAU12IM",          
+        "L1_EM15VHI_2TAU12IM_J25_3J12",   
+        "L1_EM15VHI_2TAU12IM_4J12",
+        "L1_EM15VHI_TAU40_2TAU15",
         "L1_MU10_TAU12IM",  
-        "L1_MU10_TAU12IM_J25_2J12", 
-#        "L1_MU10_TAU12_J25_2J12", 
-#        "L1_MU10_TAU20",
+        "L1_MU10_TAU12IM_J25_2J12",
+        "L1_MU10_TAU12IM_3J12",
+        'L1_DR-MU10TAU12I_TAU12I-J25',
         "L1_MU10_TAU20IM",
         "L1_MU11_TAU20IM",
         "L1_MU10_TAU20IM_J25_2J20",
 
         # combined tau - jet
-#        "L1_TAU25IT_2TAU12IT_2J25_3J12", 
 
-        "L1_TAU20IM_2TAU12IM_J25_2J20_3J12", 
-        'L1_J25_2J20_3J12_BOX-TAU20ITAU12I',  
-        'L1_DR-MU10TAU12I_TAU12I-J25', 
-        "L1_MU10_TAU12I-J25",
+        "L1_TAU20IM_2TAU12IM_J25_2J20_3J12",
+        "L1_TAU20IM_2TAU12IM_4J12.0ETA23",
+        "L1_TAU20IM_2TAU12IM_4J12.0ETA25",
+        "L1_TAU20IM_2TAU12IM_4J12.0ETA28",
+        "L1_TAU25IM_2TAU20IM_2J25_3J20", 
+
 
 
         # combined tau - xe
         "L1_TAU20IM_2J20_XE45", 
-#        "L1_TAU20_2J20_XE45", 
-#        "L1_TAU20IM_2J20_XE50",   
+        "L1_TAU20IM_2J20_XE50", 
+
 
         #"L1_EM15HI_2TAU12I_XE35", 
-        "L1_EM15HI_2TAU12IM_XE35", 
-        "L1_EM15HI_TAU20IM_2TAU15_J25_2J20_3J15",
+        "L1_EM15VHI_2TAU12IM_XE35", 
         'L1_EM20VHI_TAU20IM_2TAU20_J25_3J20',
 
 
         "L1_MU10_TAU12IM_XE35",  
-#        "L1_MU10_TAU12IM_XE40",  
 
         "L1_TAU20IM_2TAU12IM_XE35", 
-        "L1_TAU20_2TAU12_XE35",
         "L1_TAU40_2TAU12IM_XE40",  
 
 
 
         # combined em - jet
-        #'L1_EM15VH_J15.23ETA49',
-#        'L1_EM15VH_JJ15.23ETA49',
-        'L1_EM13VH_3J20',
-        'L1_EM18VH_3J20',
+        'L1_EM18VHI_3J20',
+        'L1_EM20VH_3J20',
+
+        
 
         # combined mu - jet
-        'L1_MU4_J12',  'L1_MU4_J50_XE40', 'L1_MU6_J20', 'L1_MU6_J30.0ETA49_2J20.0ETA49', 'L1_MU6_J40', 'L1_MU6_J75',
-#ATR-13743        'L1_MU4_J30',
-        #'L1_MU4_J50',
+        'L1_MU6_J20', 'L1_MU6_J30.0ETA49_2J20.0ETA49', 'L1_MU6_J40', 'L1_MU6_J75',
         'L1_MU10_2J20','L1_MU10_3J20', 'L1_MU10_2J15_J20',
-        'L1_2MU4_J40_XE20',
         'L1_MU20_J40',
         'L1_MU20_XE30',
+        'L1_MU20_J50',
 
         # single jet
-        "L1_J12","L1_J15","L1_J20","L1_J25", "L1_J30", "L1_J40", "L1_J50" ,"L1_J75","L1_J85", "L1_J100", "L1_J120", "L1_J400",
-        "L1_J20.31ETA49", "L1_J30.31ETA49", "L1_J50.31ETA49", "L1_J75.31ETA49", "L1_J100.31ETA49",
-        #'L1_J15.23ETA49',
-         'L1_J15.31ETA49',
-        "L1_J20.28ETA31",
-        #'L1_J40.0ETA25', 
+        "L1_J15","L1_J20","L1_J25", "L1_J30", "L1_J40", "L1_J50" ,"L1_J75","L1_J85", "L1_J100", "L1_J120", "L1_J400",
+        "L1_J20.31ETA49", "L1_J30.31ETA49", "L1_J50.31ETA49", "L1_J75.31ETA49", 
+        'L1_J15.31ETA49',
         "L1_J12_EMPTY","L1_J12_FIRSTEMPTY", "L1_J12_UNPAIRED_ISO", "L1_J12_UNPAIRED_NONISO", "L1_J12_ABORTGAPNOTCALIB", 
         "L1_J15.31ETA49_UNPAIRED_ISO",
         "L1_J30_EMPTY", "L1_J30_FIRSTEMPTY", "L1_J30.31ETA49_EMPTY", "L1_J30.31ETA49_UNPAIRED_ISO",
         "L1_J30.31ETA49_UNPAIRED_NONISO",
         "L1_J50_UNPAIRED_ISO", "L1_J50_UNPAIRED_NONISO", "L1_J50_ABORTGAPNOTCALIB",         
-        "L1_J12_BGRP12", "L1_J30.31ETA49_BGRP12",
         'L1_J100_FIRSTEMPTY',
-        'L1_J100.31ETA49_FIRSTEMPTY',
+ 
         
         # multi jet
-
-        "L1_J20_J20.31ETA49",
-        "L1_3J15", "L1_3J20","L1_3J40", 'L1_3J15.0ETA25', "L1_3J50", "L1_4J15", "L1_4J20",
-        "L1_4J20.0ETA49",
+        "L1_J45.0ETA20_3J15.0ETA25",
+        "L1_J50_2J40.0ETA25_3J15.0ETA25",
+        "L1_3J50", "L1_4J15", "L1_4J20", "L1_4J20.0ETA49",
         "L1_3J15.0ETA25_XE40",
         
-        #"L1_3J75",
-        #"L1_4J30",
         "L1_6J15",
-        "L1_J75_3J20",
         "L1_J85_3J30",
-        "L1_J30.0ETA49_2J20.0ETA49",
-
-        "L1_J15.0ETA25_2J15.31ETA49",
+       # multi jet forward
+        "L1_J25.0ETA23_2J15.31ETA49",
         "L1_J40.0ETA25_2J15.31ETA49",
         "L1_J40.0ETA25_2J25_J20.31ETA49",
-        "L1_J40.0ETA25_2J30_J20.31ETA49",
+        "L1_J30.0ETA49_2J20.0ETA49",
         
         # multi jet central
         "L1_3J25.0ETA23",
         "L1_3J35.0ETA23",
         "L1_4J15.0ETA25",
         "L1_5J15.0ETA25", 
-        
         # combined jet
-        "L1_2J15_XE55", "L1_J40_XE50", "L1_J75_XE50",
+        "L1_2J15_XE55", "L1_J40_XE50",
 
         #'L1_2J40_XE45',
-        "L1_2J50_XE40", "L1_J40_XE60","L1_J40.0ETA25_XE50",
+        "L1_2J50_XE40", "L1_J40_XE60",
+        
 
         # XE
         "L1_XE35", "L1_XE40", "L1_XE45", "L1_XE50", 
         "L1_XE55", "L1_XE60", "L1_XE70", "L1_XE80",
-        'L1_XE10', 'L1_XE30', 'L1_XE65', 'L1_XE75', 'L1_XE150', 'L1_XE300',
+        'L1_XE30', 'L1_XE300',
         
         #XS
-        'L1_XS20', 'L1_XS30',
         'L1_EM12_XS20', 'L1_EM15_XS30',
         
         # TE
-        #"L1_TE3",        "L1_TE5",        "L1_TE10",        "L1_TE15",        "L1_TE20",        "L1_TE25",        "L1_TE30",        "L1_TE40",
-        #"L1_TE5",        "L1_TE30",        "L1_TE40",        "L1_TE45",        "L1_TE50",        "L1_TE55",        "L1_TE60",        "L1_TE65",
-        "L1_TE5",        "L1_TE10",        "L1_TE15",   "L1_TE20",  "L1_TE25",  "L1_TE30",        "L1_TE40",      "L1_TE70",      
+#        'L1_TE5', ## disabled?
 
-        #"L1_TE3.0ETA24", "L1_TE5.0ETA24", "L1_TE10.0ETA24", "L1_TE15.0ETA24", "L1_TE20.0ETA24", "L1_TE25.0ETA24", "L1_TE30.0ETA24", "L1_TE40.0ETA24", 
-        #"L1_TE5.0ETA24", "L1_TE30.0ETA24", "L1_TE40.0ETA24", "L1_TE45.0ETA24", "L1_TE50.0ETA24", "L1_TE55.0ETA24", "L1_TE60.0ETA24", "L1_TE65.0ETA24", 
-        "L1_TE5.0ETA24", "L1_TE10.0ETA24", "L1_TE15.0ETA24", "L1_TE20.0ETA24", "L1_TE25.0ETA24", "L1_TE30.0ETA24", "L1_TE40.0ETA24","L1_TE70.0ETA24",
+        #VTE + MBTS
+        #"L1_MBTS_1_VTE2", "L1_MBTS_1_VTE3", "L1_MBTS_1_VTE4", "L1_MBTS_1_VTE5", "L1_MBTS_1_VTE10", "L1_MBTS_2_VTE2", "L1_MBTS_2_VTE3", "L1_MBTS_2_VTE4", "L1_MBTS_2_VTE5", "L1_MBTS_2_VTE10", 
+        
+        #TE + MU
 
         # MBTS
-        "L1_MBTS_1", "L1_MBTS_2", "L1_MBTS_1_1",
-        "L1_MBTS_1_EMPTY", "L1_MBTS_1_UNPAIRED_ISO", 
-        "L1_MBTS_2_EMPTY", "L1_MBTS_2_UNPAIRED_ISO",
-        "L1_MBTS_1_1_EMPTY", "L1_MBTS_1_1_UNPAIRED_ISO","L1_MBTS_4_A_UNPAIRED_ISO","L1_MBTS_4_C_UNPAIRED_ISO",
-#        'L1_MBTSA0' ,'L1_MBTSA1' ,'L1_MBTSA2' ,'L1_MBTSA3' ,'L1_MBTSA4' ,
-#        'L1_MBTSA5' ,'L1_MBTSA6' ,'L1_MBTSA7' ,'L1_MBTSA8' ,
-#        'L1_MBTSA10','L1_MBTSA12','L1_MBTSA14',
-#        'L1_MBTSC0' ,'L1_MBTSC1' ,'L1_MBTSC2' ,'L1_MBTSC3' ,'L1_MBTSC4' ,
-#        'L1_MBTSC5' ,'L1_MBTSC6' ,'L1_MBTSC7' ,'L1_MBTSC8' ,
-#        'L1_MBTSC10','L1_MBTSC12','L1_MBTSC14',
         # beam splashes
-        "L1_MBTS_4_A", "L1_MBTS_4_C",
+        
+        #Overlay
+#        "L1_MBTS_1_OVERLAY","L1_TE20_OVERLAY",
+        
+        #BeamSpot
+#        "L1_MBTS_1_VTE70",
 
         #BGRP9
-        'L1_MBTS_1_BGRP9','L1_MBTS_2_BGRP9',
 
         #BGRP11
-        'L1_MBTS_1_BGRP11','L1_MBTS_2_BGRP11',
 
         # RNDM
-        'L1_RD0_FILLED', 'L1_RD0_UNPAIRED_ISO','L1_RD0_EMPTY',
-        "L1_RD1_FILLED","L1_RD1_EMPTY","L1_RD1_BGRP10",
-        "L1_RD2_FILLED","L1_RD2_EMPTY","L1_RD2_BGRP12",
-        "L1_RD3_FILLED","L1_RD3_EMPTY",
-        'L1_RD0_FIRSTEMPTY', 
-        'L1_RD0_BGRP9', 'L1_RD0_BGRP11', 'L1_RD0_ABORTGAPNOTCALIB',
+        'L1_RD0_FILLED', 'L1_RD0_UNPAIRED_ISO',  'L1_RD0_EMPTY',
+        "L1_RD1_EMPTY",
+#        'L1_RD0_FIRSTEMPTY', 
+        'L1_RD0_ABORTGAPNOTCALIB',
+#        'L1_RD2_FILLED', # This is not needed?
 
         #LUCID
-        'L1_LUCID', 'L1_LUCID_EMPTY', 'L1_LUCID_UNPAIRED_ISO', 
-        'L1_LUCID_A_C_EMPTY', 'L1_LUCID_A_C_UNPAIRED_ISO', 'L1_LUCID_A_C_UNPAIRED_NONISO',
+#        'L1_LUCID_A_C_EMPTY', 'L1_LUCID_A_C_UNPAIRED_ISO', 'L1_LUCID_A_C_UNPAIRED_NONISO',
         #'L1_LUCID_COMM_EMPTY', 'L1_LUCID_COMM_UNPAIRED_ISO', 
 
+        
+
         # ZDC
-        'L1_ZDC_A', 'L1_ZDC_C', 'L1_ZDC_A_C',
-        'L1_ZDC_AND', # FTHR
+         # FTHR
 
         # VDM
-        'L1_BGRP9', #"L1_BGRP7",
+         #"L1_BGRP7",
 
         # TRT
         # "L1_TRT",
-        "L1_TRT_FILLED",
-        "L1_TRT_EMPTY",
 
         # TGC
         "L1_TGC_BURST",
 #        "L1_TGC_BURST_EMPTY",
 
         # LHCF
-        "L1_LHCF", "L1_LHCF_UNPAIRED_ISO", "L1_LHCF_EMPTY",
     
         #CALREQ
         "L1_CALREQ2",
@@ -578,244 +502,124 @@ def defineMenu():
         "L1_ZB",
 
         # BPTX
-        "L1_BPTX0_BGRP0", "L1_BPTX1_BGRP0",
         
         # BCM
-        'L1_BCM_Wide_BGRP0','L1_BCM_AC_CA_BGRP0', 'L1_BCM_Wide_EMPTY','L1_BCM_Wide_UNPAIRED_ISO','L1_BCM_Wide_UNPAIRED_NONISO', 'L1_BCM_AC_CA_UNPAIRED_ISO',
+         #'L1_BCM_AC_CA_UNPAIRED_ISO',
+        'L1_BCM_AC_CA_BGRP0', 'L1_BCM_Wide_EMPTY','L1_BCM_Wide_UNPAIRED_ISO','L1_BCM_Wide_UNPAIRED_NONISO',
         'L1_BCM_AC_UNPAIRED_ISO','L1_BCM_CA_UNPAIRED_ISO',
         'L1_BCM_AC_UNPAIRED_NONISO','L1_BCM_CA_UNPAIRED_NONISO',
         'L1_BCM_AC_ABORTGAPNOTCALIB', 'L1_BCM_CA_ABORTGAPNOTCALIB','L1_BCM_Wide_ABORTGAPNOTCALIB',
         'L1_BCM_AC_CALIB', 'L1_BCM_CA_CALIB','L1_BCM_Wide_CALIB',
 
         #AFP
-        'L1_AFP_NSC', 'L1_AFP_FSC', 
-        'L1_AFP_C_ANY', 'L1_AFP_C_ANY_UNPAIRED_ISO', 'L1_AFP_C_ANY_UNPAIRED_NONISO', 'L1_AFP_C_ANY_EMPTY', 'L1_AFP_C_ANY_FIRSTEMPTY', 'L1_AFP_C_AND',
+#         'L1_AFP_FSC', 
+#        'L1_AFP_C_ANY', 'L1_AFP_C_ANY_UNPAIRED_ISO', 'L1_AFP_C_ANY_UNPAIRED_NONISO', 'L1_AFP_C_ANY_EMPTY', 'L1_AFP_C_ANY_FIRSTEMPTY', 'L1_AFP_C_AND',
 
-        #--------------------------------
+#	'L1_EM7_AFP_A_AND_C','L1_EM12_AFP_A_AND_C',
+
+
+          #--------------------------------
         # TOPO items
         #--------------------------------
 
         # B-jet
-        'L1_BTAG-MU4J15', 'L1_BTAG-MU4J30', 'L1_BTAG-MU6J20', 'L1_BTAG-MU6J25',
-        #'L1_BTAG-MU4J20',
-        'L1_3J15_BTAG-MU4J15', 'L1_3J15_BTAG-MU4J30', 'L1_3J15_BTAG-MU6J25', 'L1_3J20_BTAG-MU4J20',
-        #'L1_3J20_BTAG-MU4J30', 'L1_3J20_BTAG-MU6J25',
-
-        # ZH
-        'L1_DPHI-AJ20s2XE50', 'L1_J40_DPHI-J20s2XE50', 'L1_J40_DPHI-J20XE50', 'L1_J40_DPHI-CJ20XE50', #'L1_J40_DPHI-J20s2XE30',
-#SX        'L1_BPH-DR-2MU4-B_BPH-2M-2MU4-B',
-#SX        'L1_BPH-DR-2MU4-B_BPH-4M8-2MU4-B',
-#SX        'L1_BPH-DR-2MU4-BO_BPH-2M-2MU4-BO',
-#SX        'L1_BPH-DR-2MU4-BO_BPH-4M8-2MU4-BO',
+        'L1_BTAG-MU4J15',
+        'L1_BTAG-MU6J20',
+
+        # ZH - all removed
+   
+
+        #Higgsino
+        'L1_2MU4_J40_XE50',
+        'L1_MU4_J30_XE40_DPHI-J20s2XE30','L1_MU4_J50_XE50_DPHI-J20s2XE30',
+        'L1_MU4_XE60',
 
         # HT
-        'L1_HT190-J15.ETA21',
         'L1_HT190-J15s5.ETA21',
-        'L1_HT150-J20.ETA31',
-        'L1_HT150-J20s5.ETA31',   
 
-        "L1_HT150-J20s5.ETA31_MJJ-400",
         "L1_HT150-J20s5.ETA31_MJJ-400-CF",
         
         # Jpsi T&P
-        'L1_JPSI-1M5', 'L1_JPSI-1M5-EM7', 'L1_JPSI-1M5-EM12',    
-        'L1_KF-XE40', 'L1_KF-XE50', 'L1_KF-XE55', 'L1_KF-XE60', 'L1_KF-XE65', 'L1_KF-XE75',
+        'L1_JPSI-1M5-EM7', 'L1_JPSI-1M5-EM12',    
+#            
         
-        # W T&P
-#        'L1_W-05DPHI-JXE-0',
-#        'L1_W-10DPHI-JXE-0',
-#        'L1_W-15DPHI-JXE-0',
-#        'L1_W-05DPHI-EMXE-1',
-        #'L1_W-15DPHI-EMXE-1',
-#        'L1_W-05DPHI-EM15XE-1',
-        #'L1_W-15DPHI-EM15XE-1',
-        'L1_W-05RO-XEHT-0',
-        'L1_W-90RO2-XEHT-0',
-        'L1_W-250RO2-XEHT-0',
-        'L1_W-HT20-JJ15.ETA49',
-        'L1_W-NOMATCH',
-        #'L1_W-NOMATCH_W-05RO-XEEMHT',
-        'L1_EM12_W-MT25',
-#        'L1_EM12_W-MT35',
-        'L1_EM15_W-MT35',
-        'L1_EM12_W-MT35_XS30_W-15DPHI-JXE-0_W-15DPHI-EMXE',
-        'L1_EM12_W-MT35_XS40_W-05DPHI-JXE-0_W-05DPHI-EMXE',
-        'L1_EM12_W-MT35_W-90RO2-XEHT-0_W-15DPHI-JXE-0_W-15DPHI-EMXE',
-        'L1_EM12_W-MT35_W-250RO2-XEHT-0_W-05DPHI-JXE-0_W-05DPHI-EMXE',
-        'L1_EM15_W-MT35_W-250RO2-XEHT-0_W-15DPHI-JXE-0_W-15DPHI-EM15XE',
-        'L1_EM15_W-MT35_W-250RO2-XEHT-0_W-05DPHI-JXE-0_W-05DPHI-EM15XE',
-        'L1_EM15_W-MT35_XS60_W-15DPHI-JXE-0_W-15DPHI-EM15XE',
-        'L1_EM15_W-MT35_XS60_W-05DPHI-JXE-0_W-05DPHI-EM15XE',
-        'L1_EM15_W-MT35_XS40_W-15DPHI-JXE-0_W-15DPHI-EM15XE',
-        'L1_EM15_W-MT35_XS40_W-05DPHI-JXE-0_W-05DPHI-EM15XE',
-        'L1_EM12_W-MT35_XS50',
-        'L1_EM15_W-MT35_XS60',
-        'L1_EM10VH_W-MT35_XS50',
-        'L1_EM15VH_W-MT35_XS60',
-        'L1_EM20VH_W-MT35_XS60',
-        'L1_EM22VHI_W-MT35_XS40',
-        # Old
-        'L1_EM12_W-MT25_W-15DPHI-JXE-0_W-15DPHI-EMXE_W-90RO2-XEHT-0',
-        'L1_EM12_W-MT25_W-15DPHI-JXE-0_W-15DPHI-EMXE_XS20',
-        'L1_EM12_W-MT25_W-15DPHI-JXE-0_W-15DPHI-EMXE',
-        'L1_EM15_W-MT35_W-05DPHI-JXE-0_W-05DPHI-EM15XE_XS30',
-        'L1_EM15_W-MT35_W-05DPHI-JXE-0_W-05DPHI-EM15XE',
-        #'L1_W-10DPHI-JXE-0',
-        #'L1_W-20DPHI-JXE-1',
-        #'L1_W-20DPHI-JXE-0',
-        #'L1_W-20DPHI-EMXE-1',
-        #'L1_W-20DPHI-EMXE-0',
-        #'L1_W-05RO-XEHT-0',
-        #'L1_W-08RO-XEHT-1',
-        #'L1_W-40RO2-XEHT-0',
-        #'L1_W-90RO2-XEHT-1',
-        #'L1_W-HT20-JJ0.ETA49',
-        #'L1_W-NOMATCH',
-        #'L1_W-NOMATCH_W-05RO-XEEMHT',
-        #'L1_EM3_W-MT20',
-        #'L1_EM3_W-MT40',
-
-        #Bphysics items
-#SX        'L1_BPH-DR-2MU4', 
-#SX        'L1_BPH-2M-2MU4', 
-#SX        'L1_BPH-4M8-2MU4',
-#SX        'L1_BPH-DR-2MU4_BPH-2M-2MU4', 'L1_BPH-DR-2MU4_BPH-4M8-2MU4',
-
-#SX        'L1_BPH-DR-2MU6', 
-#SX        'L1_BPH-2M-2MU6', 'L1_BPH-4M8-2MU6',
-#SX        'L1_BPH-DR-2MU6_BPH-2M-2MU6', 'L1_BPH-DR-2MU6_BPH-4M8-2MU6',
-
-        # temporarily commented out until CTP Simulation is fixed (menu generation and TMC understand multiplicity topo)
-#SX uncommenting
-        'L1_2MU4-BO',
-        'L1_2MU6-BO',
-        'L1_MU6MU4-BO', 
-
-        # L1 items for L1Topo streamers
-#SX        'L1_BPH-2M-2MU4-B',
-#SX        'L1_BPH-2M-2MU4-BO',
-#SX        'L1_BPH-2M-MU6MU4',
-#SX        'L1_BPH-2M-MU6MU4-B',
-#SX        'L1_BPH-2M-MU6MU4-BO',    
-#SX        'L1_BPH-4M8-2MU4-B',
-#SX        'L1_BPH-4M8-2MU4-BO',
-#SX        'L1_BPH-4M8-MU6MU4',
-#SX        'L1_BPH-4M8-MU6MU4-B',        
-#SX        'L1_BPH-4M8-MU6MU4-BO',
-        'L1_DY-DR-2MU4',
-        'L1_EM15VH_2EM8VH_MU6',
-        #'L1_DY-BOX-MU6MU4',
-        'L1_DY-BOX-2MU6',
-        'L1_LFV-MU',
+        # W T&P - all removed
+
         'L1_LFV-MU6',
+        'L1_LFV-MU11',
         'L1_LFV-EM8I',
         'L1_LFV-EM15I',
-        'L1_EM7_MU15',
-        'L1_EM8VH_MU15',
         'L1_DPHI-J20s2XE50',
         'L1_J40_XE50_DPHI-J20s2XE50',
-        'L1_DPHI-J20XE50',
-        'L1_DPHI-CJ20XE50',
-        'L1_MU4_J20_XE30_DPHI-J20s2XE30',
         'L1_2MU4_J20_XE30_DPHI-J20s2XE30',
-        'L1_MU4_2EM3_J20_XE30_DPHI-J20s2XE30',
-        'L1_3EM3_J40_XE50_DPHI-J20s2XE50',
-        'L1_MJJ-900',
-        'L1_MJJ-800',
         'L1_MJJ-700',
-        'L1_MJJ-400',
-        #'L1_MJJ-350',
-#        'L1_MJJ-300',
-#        'L1_MJJ-200',
+        'L1_MJJ-300',
         'L1_MJJ-100',
+        'L1_MJJ-400',
+        'L1_MJJ-800',
+        'L1_MJJ-500-NFF',
+        'L1_J50_DETA20-J50J',
+        'L1_DPHI-2EM3',
         'L1_HT150-JJ15.ETA49',
         'L1_HT150-JJ15.ETA49_MJJ-400',
         'L1_J4-MATCH',
         'L1_LLP-RO',
         'L1_LLP-NOMATCH',
-        'L1_DR-MU10TAU12I',    
-#        'L1_TAU12I-J25',    
         'L1_EM15TAU12I-J25',
-        'L1_DR-EM15TAU12I',    
-        'L1_DR-EM15TAU12I-J25',    
+        'L1_DR-EM15TAU12I-J25',
         'L1_TAU20ITAU12I-J25',
         'L1_DR-TAU20ITAU12I',    
-        'L1_BOX-TAU20ITAU12I',
         'L1_DR-TAU20ITAU12I-J25',
+        'L1_DR-MU10TAU12I',
 
-        'L1_DR25-TAU20ITAU12I',
-        'L1_DR25-TAU20ITAU12I-J25',
         'L1_30M-EM20ITAU12',
         'L1_MJJ-400-CF',
     
         'L1_LAR-EM',
         'L1_LAR-J',
-#SX        'L1_BPH-DR-2MU4-B',
-#SX        'L1_BPH-DR-2MU4-BO',
-#SX        'L1_BPH-DR-MU6MU4',
-#SX        'L1_BPH-DR-MU6MU4-B',
-#SX        'L1_BPH-DR-MU6MU4-BO',
-
-#new bhysics
-        #'L1_BPH-1M19-2MU4_BPH-0DR34-2MU4',
-        'L1_BPH-2M8-2MU4_BPH-0DR15-2MU4', # ATR-15197 'L1_BPH-2M9-2MU4_BPH-0DR15-2MU4',
+        'L1_LAR-ZEE',
+        'L1_LAR-ZEE_LAR-EM',
         'L1_BPH-2M9-2MU4_BPH-0DR15-2MU4',
-        'L1_BPH-7M15-2MU4_BPH-0DR24-2MU4',
-        'L1_BPH-2M8-MU6MU4_BPH-0DR15-MU6MU4', # ATR-15197 'L1_BPH-2M9-MU6MU4_BPH-0DR15-MU6MU4',
         'L1_BPH-2M9-MU6MU4_BPH-0DR15-MU6MU4',
-        'L1_BPH-8M15-MU6MU4_BPH-0DR22-MU6MU4',
-        'L1_BPH-2M9-2MU6_BPH-2DR15-2MU6',
         'L1_BPH-8M15-2MU6_BPH-0DR22-2MU6',
-        'L1_2MU4-B',
-        'L1_2MU6-B' ,
-        #'L1_BPH-1M19-2MU4-B_BPH-0DR34-2MU4',
-        'L1_BPH-2M8-2MU4-B_BPH-0DR15-2MU4' ,
-        'L1_BPH-7M15-2MU4_BPH-0DR24-2MU4-B' ,
-        #'L1_BPH-1M19-2MU4-BO_BPH-0DR34-2MU4' ,
-        #'L1_BPH-2M8-2MU4-BO_BPH-0DR15-2MU4' ,
-        'L1_BPH-7M15-2MU4_BPH-0DR24-2MU4-BO' ,
-        'L1_BPH-2M8-MU6MU4-B_BPH-0DR15-MU6MU4',
-        'L1_MU6_2MU4-B',
-
-        'L1_BPH-2M8-2MU4', # ATR-15197 'L1_BPH-2M9-2MU4',
-        'L1_BPH-8M15-MU6MU4',
-        'L1_BPH-8M15-2MU6',
-        
+        'L1_BPH-8M15-MU6MU4_BPH-0DR22-MU6MU4-BO',
+
+        #ATR-19720 - no algorithm in master
+#        'L1_BPH-8M15-0DR22-2MU6',
+#        'L1_BPH-2M9-2DR15-2MU6',
+#        'L1_BPH-2M9-0DR15-MU6MU4',
+#        'L1_BPH-8M15-0DR22-MU6MU4-BO',
+#        'L1_BPH-2M9-0DR15-2MU4',
+#
+#        'L1_BPH-0M9-EM7-EM5',        
+#        'L1_BPH-0DR3-EM7J15',
+#        'L1_BPH-0M9-EM7-EM5_MU6',
+#        'L1_BPH-0DR3-EM7J15_MU6',
+#        'L1_BPH-0M9-EM7-EM5_2MU4',
+#        'L1_BPH-0DR3-EM7J15_2MU4',
+#
         # combined L1Topo for VBF
-        'L1_MU6_MJJ-200',
-        'L1_MU6_MJJ-300',
-        'L1_MU6_MJJ-400',
-        'L1_MU6_MJJ-500',
-        'L1_J30_2J20_4J20.0ETA49_MJJ-400',
-        'L1_J30_2J20_4J20.0ETA49_MJJ-700',
-        'L1_J30_2J20_4J20.0ETA49_MJJ-800',
-        'L1_J30_2J20_4J20.0ETA49_MJJ-900',
-        'L1_3J20_4J20.0ETA49_MJJ-400',
-        'L1_3J20_4J20.0ETA49_MJJ-700',
-        'L1_3J20_4J20.0ETA49_MJJ-800',
-        'L1_3J20_4J20.0ETA49_MJJ-900',
         
-        'L1_XE35_MJJ-200',
+        # INVM + DPHI 
+        'L1_MJJ-400-NFF-0DPHI20',
+        'L1_MJJ-400-NFF-0DPHI22',
+        'L1_MJJ-400-NFF-0DPHI24',
+        'L1_MJJ-400-NFF-0DPHI26',
    
         ### ATR-15062
-        'L1_EM18VH_MJJ-300',
+        'L1_EM18VHI_MJJ-300',
 
-        'L1_LATE-MU10_XE50', 'L1_LATE-MU10_J50',
+        'L1_LATE-MU10_XE50','L1_LATE-MU10_XE40', 'L1_LATE-MU10_J50',
 
         'L1_TAU60_DR-TAU20ITAU12I',
 
-        'L1_SC111',
-        'L1_SC85',
+        'L1_SC111-CJ15',
+#        'L1_SC85-CJ15',
         
         ##     # Partition 1
         ##     'L1_CALREQ0_P1', 'L1_CALREQ1_P1', 'L1_CALREQ2_P1',
 
         #ALFA
-#ALFA_B7R1L_OD        'L1_ALFA_ELAST1',
-#        'L1_ALFA_ELAST2',
-#        'L1_ALFA_ELAST11','L1_ALFA_ELAST12',
-#        'L1_ALFA_ELAST13','L1_ALFA_ELAST14','L1_ALFA_ELAST15','L1_ALFA_ELAST15_Calib',
-#        'L1_ALFA_ELAST16','L1_ALFA_ELAST17','L1_ALFA_ELAST18','L1_ALFA_ELAST18_Calib',
 #        'L1_ALFA_SDIFF5','L1_ALFA_SDIFF6','L1_ALFA_SDIFF7','L1_ALFA_SDIFF8',
 #        'L1_MBTS_1_A_ALFA_C','L1_MBTS_1_C_ALFA_A','L1_MBTS_1_A_ALFA_C_UNPAIRED_ISO','L1_MBTS_1_C_ALFA_A_UNPAIRED_ISO',
 #        'L1_MBTS_2_A_ALFA_C','L1_MBTS_2_C_ALFA_A','L1_MBTS_2_A_ALFA_C_UNPAIRED_ISO','L1_MBTS_2_C_ALFA_A_UNPAIRED_ISO',
@@ -829,64 +633,105 @@ def defineMenu():
 #
 #        'L1_EM3_ALFA_EINE',
 #        'L1_J12_ALFA_ANY','L1_J12_ALFA_ANY_UNPAIRED_ISO',
-#        'L1_TE5_ALFA_ANY','L1_TE5_ALFA_ANY_UNPAIRED_ISO','L1_TE5_ALFA_EINE',
+#        'L1_TE5_ALFA_ANY','L1_TE5_ALFA_ANY_UNPAIRED_ISO',
+#         'L1_TE5_ALFA_EINE',
 #        'L1_TRT_ALFA_ANY','L1_TRT_ALFA_ANY_UNPAIRED_ISO',
 #        'L1_TRT_ALFA_EINE',
 #        #'L1_LHCF_ALFA_ANY_A',
 #        #'L1_LHCF_ALFA_ANY_C',
 ##        'L1_LHCF_ALFA_ANY_A_UNPAIRED_ISO','L1_LHCF_ALFA_ANY_C_UNPAIRED_ISO',
-#        'L1_ALFA_BGT','L1_ALFA_BGT_UNPAIRED_ISO','L1_ALFA_BGT_BGRP10',
-#        'L1_ALFA_SHOWSYST5',
-#        'L1_ALFA_SYST9' ,'L1_ALFA_SYST10','L1_ALFA_SYST11','L1_ALFA_SYST12',
-#        'L1_ALFA_SYST17','L1_ALFA_SYST18',
-         'L1_ALFA_ANY',
-#        'L1_ALFA_ANY_EMPTY','L1_ALFA_ANY_FIRSTEMPTY','L1_ALFA_ANY_UNPAIRED_ISO','L1_ALFA_ANY_UNPAIRED_NONISO',
-#        'L1_ALFA_ANY_BGRP10','L1_ALFA_ANY_ABORTGAPNOTCALIB','L1_ALFA_ANY_CALIB',
-        'L1_ALFA_B7L1U','L1_ALFA_B7L1L','L1_ALFA_A7L1U','L1_ALFA_A7L1L','L1_ALFA_A7R1U','L1_ALFA_A7R1L','L1_ALFA_B7R1U','L1_ALFA_B7R1L',
+#        'L1_ALFA_BGT','L1_ALFA_BGT_UNPAIRED_ISO',
 #        'L1_ALFA_ANY_A_EMPTY','L1_ALFA_ANY_C_EMPTY',
-#        'L1_ALFA_B7L1U_OD','L1_ALFA_B7L1L_OD','L1_ALFA_A7L1U_OD','L1_ALFA_A7L1L_OD','L1_ALFA_A7R1U_OD','L1_ALFA_A7R1L_OD','L1_ALFA_B7R1U_OD','L1_ALFA_B7R1L_OD',
-#        'L1_ALFA_B7L1_OD','L1_ALFA_A7L1_OD','L1_ALFA_B7R1_OD','L1_ALFA_A7R1_OD',
 #
-         'L1_AFP_C_MBTS_A',
-         'L1_AFP_C_ZDC_C',
-         'L1_AFP_C_J12',
-         'L1_AFP_C_EM3',
-         'L1_AFP_C_TE5',
-         'L1_AFP_C_ALFA_C',
-         'L1_AFP_C_ALFA_A',
-         'L1_AFP_C_ANY_MBTS_A',
-         'L1_AFP_C_MU4',
+#         'L1_AFP_C_MBTS_A',
+#         'L1_AFP_C_ZDC_C',
+#         'L1_AFP_C_J12',
+#         'L1_AFP_C_EM3',
+#         'L1_AFP_C_TE5',
+#         'L1_AFP_C_ALFA_C',
+#         'L1_AFP_C_ALFA_A',
+#         'L1_AFP_C_ANY_MBTS_A',
+#         'L1_AFP_C_MU4',
+
+        # Items for beta*=90m run
+#        'L1_J12_ALFA_EINE',
+#        'L1_2EM3_ALFA_EINE',
+#        'L1_MU4_ALFA_ANY',
+#        'L1_MU4_ALFA_ANY_UNPAIRED_ISO',
+#        'L1_MU4_ALFA_ANY_PAIRED_UNPAIRED_ISO',
+#        'L1_MU4_ALFA_EINE',
+
+
+        #ATR-18815
+        'L1_LFV-EM8I-MU11',
+        'L1_LFV-EM12I-MU6',
+
+        #ATR-19355
+        'L1_BPH-0M10-3MU4',
+
+        #ATR-18824
+        'L1_ZAFB-04DPHI-EM15I',
+        'L1_ZAFB-25DPHI-EM15I',
+        'L1_ZAFB-25DPHI-EM18I',
+
+        #ATR-19302: 
+#        'L1_DPHI-M70-2EM10I',
+        'L1_DPHI-M70-2EM12I',
+
+        #ATR-19510
+        'L1_DY-BOX-2MU4',
+        'L1_DY-DR-2MU4',
+        'L1_DY-BOX-2MU6',
+
+                
+        #ATR-17320
+        'L1_CEP-CJ60',
+        'L1_CEP-CJ50' ,
+
+        #ATR-20174
+        'L1_BPH-8M15-2MU4-BO'
+
+
 
         ]
     
 
-    # the CTP ID mapping still has to be defined, currently it is taken from the order of the items
-    #Free slot [ATR-14858], 16-08-16
-    #[82,143,377,378,379,406,409,416,480]
+    #CTP IDs are taken from this mapping. Every L1 item needs a unique ctpid.
+    # Run this file as python <this file> to print out available IDs
+    # 463-464 are reserved for L1_RD2_BGRP14 and L1_RD3_BGRP15 (from run 2)
+    # 509-511 are reserved for CALREQ
 
     
 
     Lvl1Flags.CtpIdMap = {
+
         'L1_EM3' : 0,
         'L1_EM7' : 1,
         'L1_EM12' : 2,
         'L1_EM8VH' : 3,
         'L1_EM10VH' : 4,
-        'L1_EM13VH' : 5,
         'L1_EM15' : 6,
+        'L1_EM30VHI' : 25,
+        'L1_EM15VHI' : 29,
+        'L1_EM24VHIM' : 30,
         'L1_EM15VH' : 7,
-        'L1_EM18VH' : 8,
+        'L1_EM18VHI' : 8,
         'L1_EM20VH' : 9,
         'L1_EM20VHI' : 10,
         'L1_EM22VHI' : 11,
+        'L1_EM22VH' : 295,
+        'L1_EM24VHI' : 392,
         'L1_EM3_EMPTY' : 12,
         'L1_EM7_EMPTY' : 13,
+        'L1_EM7_UNPAIRED_ISO' : 389,
+        'L1_EM7_FIRSTEMPTY' : 371,
+        'L1_EM20VH_FIRSTEMPTY' : 411,
         'L1_MU4' : 14,
         'L1_MU6' : 15,
         'L1_MU10' : 16,
         'L1_MU11' : 256,
-        'L1_MU15' : 17,
         'L1_MU20' : 18,
+        'L1_MU21' : 17,
         'L1_MU4_EMPTY' : 19,
         'L1_MU6_EMPTY' : 66,
         'L1_MU4_FIRSTEMPTY' : 20,
@@ -894,87 +739,85 @@ def defineMenu():
         'L1_MU4_UNPAIRED_ISO' : 22,
         'L1_2EM3' : 23,
         'L1_2EM7' : 24,
-        'L1_2EM10VH' : 25,
-        'L1_2EM13VH' : 26,
         'L1_2EM15' : 27,
         'L1_2EM15VH' : 28,
-        'L1_EM7_2EM3' : 29,
-        'L1_EM12_2EM3' : 30,
-        'L1_EM15VH_3EM7' : 31,
-        'L1_2EM18VH':398,
-        'L1_2EM20VH':400,
-        'L1_EM15VH_3EM10VH':401,
-        'L1_EM18VH_3EM8VH':406,
-        'L1_EM18VH_2EM10VH_3EM7':408,
-        'L1_EM20VH_3EM10VH':431, 
-        'L1_EM20VH_2EM10VH_3EM8VH':432,
+        'L1_2EM15VHI' : 31,
+        'L1_2EM20VH' : 400,
+        'L1_EM20VH_3EM10VH' : 431,
+        'L1_EM7_MU10' : 65,
         'L1_2MU4' : 32,
         'L1_2MU6' : 33,
         'L1_2MU10' : 34,
         'L1_2MU20_OVERLAY' : 35,
-        'L1_MU10_2MU6' : 36,
         'L1_MU11_2MU6' : 37,
         'L1_3MU4' : 38,
         'L1_MU6_2MU4' : 39,
         'L1_3MU6' : 40,
         'L1_4MU4' : 46,
-        'L1_4J15.0ETA25' : 41,
-        'L1_EM15I_MU4' : 42,
+        'L1_MU6_3MU4' : 36,
+        'L1_2MU6_3MU4' : 42,
+        'L1_2MU11' : 48,
+        'L1_MU11_2MU10' : 49,
         'L1_2EM8VH_MU10' : 43,
         'L1_EM15VH_MU10' : 44,
+        'L1_EM7_MU20' : 483,
+        'L1_EM8VH_MU20' : 484,
+        'L1_TAU5' : 50,
         'L1_TAU12' : 45,
         'L1_TAU12IM' : 47,
-        'L1_TAU20' : 49,
         'L1_TAU20IM' : 51,
         'L1_TAU30' : 53,
+        'L1_TAU30_EMPTY' : 341,
+        'L1_TAU30_UNPAIRED_ISO' : 343,
         'L1_TAU40' : 54,
         'L1_TAU60' : 55,
+        'L1_TAU90' : 56,
         'L1_TAU100' : 52,
-        'L1_TAU8' : 56,
         'L1_TAU8_EMPTY' : 57,
+        'L1_TAU8_UNPAIRED_ISO' : 388,
+        'L1_TAU8_FIRSTEMPTY' : 391,
         'L1_TAU20IM_2TAU12IM' : 58,
-        'L1_TAU20_2TAU12' : 59,
-        'L1_EM15HI_2TAU12IM' : 60,
-        'L1_EM15HI_2TAU12IM_J25_3J12' : 61,
-        'L1_EM15HI_TAU20IM_2TAU15_J25_2J20_3J15' : 378,
-        'L1_EM20VHI_TAU20IM_2TAU20_J25_3J20' : 69,
-        'L1_EM15HI_TAU40_2TAU15' : 62,
+        'L1_TAU60_2TAU40' : 458,
+        'L1_2TAU5' : 59,
+        'L1_2TAU8' : 68,
+        'L1_EM15VHI_2TAU12IM' : 60,
+        'L1_EM15VHI_2TAU12IM_J25_3J12' : 61,
+        'L1_EM15VHI_2TAU12IM_4J12' : 5,
+        'L1_EM15VHI_TAU40_2TAU15' : 62,
         'L1_MU10_TAU12IM' : 63,
         'L1_MU10_TAU12IM_J25_2J12' : 64,
-        'L1_EM7_MU10':65,
-        'L1_TAU30_EMPTY':341,
+        'L1_MU10_TAU12IM_3J12' : 482,
         'L1_MU10_TAU20IM' : 67,
         'L1_MU11_TAU20IM' : 430,
         'L1_MU10_TAU20IM_J25_2J20' : 377,
-
         'L1_TAU20IM_2TAU12IM_J25_2J20_3J12' : 70,
-        'L1_J25_2J20_3J12_BOX-TAU20ITAU12I' : 71,
-        'L1_DR-MU10TAU12I_TAU12I-J25' : 72,
-        'L1_MU10_TAU12I-J25' : 73,
+        'L1_TAU20IM_2TAU12IM_4J12.0ETA23' : 316,
+        'L1_TAU20IM_2TAU12IM_4J12.0ETA25' : 73,
+        'L1_TAU20IM_2TAU12IM_4J12.0ETA28' : 77,
+        'L1_TAU25IM_2TAU20IM_2J25_3J20' : 398,
         'L1_TAU20IM_2J20_XE45' : 74,
-        'L1_TAU30_UNPAIRED_ISO' :343,
-        'L1_TAU60_DR-TAU20ITAU12I' : 76,
-        'L1_EM15HI_2TAU12IM_XE35' : 78,
+        'L1_TAU20IM_2J20_XE50' : 79,
+        'L1_EM15VHI_2TAU12IM_XE35' : 78,
+        'L1_EM20VHI_TAU20IM_2TAU20_J25_3J20' : 69,
         'L1_MU10_TAU12IM_XE35' : 81,
-#        'L1_MU10_TAU12IM_XE40' : 82,
         'L1_TAU20IM_2TAU12IM_XE35' : 83,
-        'L1_TAU20_2TAU12_XE35' : 84,
         'L1_TAU40_2TAU12IM_XE40' : 429,
-#        'L1_EM15VH_JJ15.23ETA49' : 86,
-        'L1_MU4_J12' : 87,
-        'L1_MU4_J50_XE40' : 330,
+        'L1_EM18VHI_3J20' : 172,
+        'L1_EM20VH_3J20' : 26,
         'L1_MU6_J20' : 88,
+        'L1_MU6_J30.0ETA49_2J20.0ETA49' : 382,
         'L1_MU6_J40' : 89,
         'L1_MU6_J75' : 90,
-        'L1_2MU4_J40_XE20' : 331,
-        'L1_MU20_J40'  : 428,
+        'L1_MU10_2J20' : 278,
+        'L1_MU10_3J20' : 173,
+        'L1_MU10_2J15_J20' : 255,
+        'L1_MU20_J40' : 428,
         'L1_MU20_XE30' : 433,
-        'L1_J12' : 91,
+        'L1_MU20_J50' : 82,
         'L1_J15' : 92,
         'L1_J20' : 93,
         'L1_J25' : 94,
         'L1_J30' : 95,
-        
         'L1_J40' : 96,
         'L1_J50' : 97,
         'L1_J75' : 98,
@@ -982,15 +825,13 @@ def defineMenu():
         'L1_J100' : 100,
         'L1_J120' : 101,
         'L1_J400' : 102,
+        'L1_4J20.0ETA49' : 383,
         'L1_J20.31ETA49' : 103,
         'L1_J30.31ETA49' : 104,
         'L1_J50.31ETA49' : 105,
         'L1_J75.31ETA49' : 106,
-        'L1_J100.31ETA49' : 107,
-#        'L1_J40.0ETA25' : 108,
-        
         'L1_J15.31ETA49' : 109,
-        'L1_J20.28ETA31' : 110,
+        'L1_J30.0ETA49_2J20.0ETA49' : 137,
         'L1_J12_EMPTY' : 111,
         'L1_J12_FIRSTEMPTY' : 112,
         'L1_J12_UNPAIRED_ISO' : 113,
@@ -1005,43 +846,26 @@ def defineMenu():
         'L1_J50_UNPAIRED_ISO' : 121,
         'L1_J50_UNPAIRED_NONISO' : 122,
         'L1_J50_ABORTGAPNOTCALIB' : 123,
-
-        'L1_J20_J20.31ETA49' : 125,
-        'L1_3J15' : 126,
-        'L1_3J20' : 127,
-        'L1_3J40' : 128,
-        'L1_3J15.0ETA25' : 129,
+        'L1_J100_FIRSTEMPTY' : 414,
+        'L1_J45.0ETA20_3J15.0ETA25' : 86,
+        'L1_J50_2J40.0ETA25_3J15.0ETA25' : 87,
         'L1_3J50' : 130,
         'L1_4J15' : 131,
         'L1_4J20' : 132,
         'L1_3J15.0ETA25_XE40' : 184,
-        
-#        'L1_3J75' : 133,
-#        'L1_4J30' : 134,
         'L1_6J15' : 135,
-        'L1_J75_3J20' : 136,
         'L1_J85_3J30' : 480,
-        'L1_J30.0ETA49_2J20.0ETA49' : 137,
-
-       
-        'L1_TE10' : 138,
-        'L1_TE15' : 82,
-        'L1_TE25' : 143,
-
+        'L1_J25.0ETA23_2J15.31ETA49' : 335,
+        'L1_J40.0ETA25_2J15.31ETA49' : 181,
+        'L1_J40.0ETA25_2J25_J20.31ETA49' : 182,
+        'L1_3J25.0ETA23' : 373,
+        'L1_3J35.0ETA23' : 425,
+        'L1_4J15.0ETA25' : 41,
         'L1_5J15.0ETA25' : 140,
         'L1_2J15_XE55' : 141,
         'L1_J40_XE50' : 142,
-        #'L1_J75_XE40' : 143,
-        'L1_J75_XE50' : 133,
-
-        'L1_XE10': 68,
-        #'L1_XE25': 82,
-        'L1_XE30': 85,
-        'L1_XE65': 108,
-        'L1_XE75': 134,
-        'L1_XE150': 156,
-        'L1_XE300': 187,
-        
+        'L1_2J50_XE40' : 175,
+        'L1_J40_XE60' : 176,
         'L1_XE35' : 144,
         'L1_XE40' : 145,
         'L1_XE45' : 146,
@@ -1050,129 +874,22 @@ def defineMenu():
         'L1_XE60' : 149,
         'L1_XE70' : 150,
         'L1_XE80' : 151,
-        'L1_XS20' : 152,
-        'L1_XS30' : 153,
+        'L1_XE30' : 85,
+        'L1_XE300' : 187,
         'L1_EM12_XS20' : 154,
         'L1_EM15_XS30' : 155,
-
-        'L1_TE30' : 157,
-        'L1_TE40' : 158,
-        'L1_TE70' : 159,
-        'L1_TE30.0ETA24' : 160,
-        'L1_BCM_Wide_UNPAIRED_NONISO' : 161,
-        'L1_BCM_AC_CA_UNPAIRED_ISO' : 162,
-        'L1_BCM_AC_UNPAIRED_ISO' : 163,
-        'L1_MBTS_1_EMPTY' : 164,
-        'L1_MBTS_1_UNPAIRED_ISO' : 165,
-        'L1_MBTS_2_EMPTY' : 166,
-        'L1_MBTS_2_UNPAIRED_ISO' : 167,
-        'L1_MBTS_1_1_EMPTY' : 168,
-        'L1_MBTS_1_1_UNPAIRED_ISO' : 169,
-
-        'L1_DPHI-AJ20s2XE50' : 171,
-        'L1_EM13VH_3J20' : 172,
-        'L1_EM18VH_3J20' : 295,
-        'L1_MU10_3J20' : 173,
-
-        'L1_2J50_XE40' : 175,
-        'L1_J40_XE60' : 176,
-        'L1_J40.0ETA25_XE50' : 177,
-        'L1_MU10_2J20' : 278,
-        'L1_TAU40_2TAU20IM' : 254,
-        'L1_MU10_2J15_J20' : 255,
-# freeing some CTPIDs  
-#        'L1_MBTSA0' : 170,
-#        'L1_MBTSA1' : 171,
-#        'L1_MBTSA2' : 172,
-#        'L1_MBTSA3' : 173,
-#        'L1_MBTSA4' : 174,
-#        'L1_MBTSA5' : 175,
-#        'L1_MBTSA6' : 176,
-#        'L1_MBTSA7' : 177,
-#        'L1_MBTSA8' : 178,
-#        'L1_MBTSA10' : 179,
-#        'L1_MBTSA12' : 180,
-#        'L1_MBTSA14' : 181,
-#        'L1_MBTSC0' : 182,
-#        'L1_MBTSC1' : 183,
-#        'L1_MBTSC2' : 184,
-#        'L1_MBTSC3' : 185,
-#        'L1_MBTSC4' : 186,
-#        'L1_MBTSC5' : 187,
-#        'L1_MBTSC6' : 188,
-#        'L1_MBTSC7' : 189,
-#        'L1_MBTSC8' : 190,
-#        'L1_MBTSC10' : 191,
-#        'L1_MBTSC12' : 192,
-#        'L1_MBTSC14' : 193,
-
-        
-        'L1_BPH-2M8-2MU4' : 178, # ATR-15197 'L1_BPH-2M9-2MU4' : 178,
-        'L1_BPH-8M15-MU6MU4' : 179,
-        'L1_BPH-8M15-2MU6' : 180,
-        'L1_J15.0ETA25_2J15.31ETA49': 305 , 
-        'L1_J40.0ETA25_2J15.31ETA49' : 181,
-        'L1_J40.0ETA25_2J25_J20.31ETA49' : 182,
-
-        "L1_J40.0ETA25_2J30_J20.31ETA49":250 , 
-
-        "L1_HT150-J20s5.ETA31_MJJ-400": 272 , ## noid(ea)
-        "L1_HT150-J20s5.ETA31_MJJ-400-CF": 273,
-        
-        ## the ctp ids are a mess.. no 7 consequetive ids are free.. but these here are:
-        'L1_AFP_C_MBTS_A':183,
-        'L1_AFP_C_ZDC_C':189,
-        'L1_AFP_C_J12':190,
-        'L1_AFP_C_EM3':191,
-        'L1_AFP_C_TE5':192,
-        'L1_AFP_C_ALFA_C':193,
-        'L1_AFP_C_ALFA_A':170,
-        'L1_AFP_C_ANY_MBTS_A':174,
-        'L1_AFP_C_MU4':379,   
-        
-#        'L1_EM8I' : 183,
-#        'L1_EM15I': 184,
-        'L1_MBTS_4_A_UNPAIRED_ISO' : 185,
-        'L1_MBTS_4_C_UNPAIRED_ISO' : 186,        
-        'L1_MBTS_4_A' : 194,
-        'L1_MBTS_4_C' : 195,
-        'L1_MBTS_1_BGRP9' : 196,
-        'L1_MBTS_2_BGRP9' : 197,
-        'L1_MBTS_1_BGRP11' : 198,
-        'L1_MBTS_2_BGRP11' : 199,
         'L1_RD0_FILLED' : 200,
         'L1_RD0_UNPAIRED_ISO' : 201,
         'L1_RD0_EMPTY' : 202,
-        'L1_RD1_FILLED' : 203,
         'L1_RD1_EMPTY' : 204,
-        'L1_RD1_BGRP10' : 188,
-        'L1_RD2_FILLED' : 205,
-        'L1_RD2_EMPTY' : 206,
-        'L1_RD3_FILLED' : 207,
-        'L1_RD3_EMPTY' : 208,
-        'L1_RD0_FIRSTEMPTY' : 209,
-        'L1_RD0_BGRP9' : 210,
-        'L1_RD0_BGRP11' : 211,
-        'L1_LUCID' : 212,
-        'L1_LUCID_EMPTY' : 213,
-        'L1_LUCID_UNPAIRED_ISO' : 214,
-        'L1_LUCID_A_C_EMPTY' : 215,
-        'L1_LUCID_A_C_UNPAIRED_ISO' : 216,
-        'L1_LUCID_A_C_UNPAIRED_NONISO' : 217,
-        'L1_TRT_FILLED' : 218,
-        'L1_TRT_EMPTY' : 219,
+        'L1_RD0_ABORTGAPNOTCALIB' : 372,
         'L1_TGC_BURST' : 220,
-#        'L1_TGC_BURST_EMPTY' : 184,
-        'L1_LHCF' : 221,
-        'L1_BCM_Wide_BGRP0' : 222,
+        'L1_ZB' : 240,
         'L1_BCM_AC_CA_BGRP0' : 223,
         'L1_BCM_Wide_EMPTY' : 224,
         'L1_BCM_Wide_UNPAIRED_ISO' : 225,
-        'L1_MBTS_1' : 226,
-        'L1_MBTS_2' : 227,
-        'L1_MBTS_1_1' : 228,
-        
-      
+        'L1_BCM_Wide_UNPAIRED_NONISO' : 161,
+        'L1_BCM_AC_UNPAIRED_ISO' : 163,
         'L1_BCM_CA_UNPAIRED_ISO' : 229,
         'L1_BCM_AC_UNPAIRED_NONISO' : 230,
         'L1_BCM_CA_UNPAIRED_NONISO' : 231,
@@ -1183,337 +900,88 @@ def defineMenu():
         'L1_BCM_CA_CALIB' : 236,
         'L1_BCM_Wide_CALIB' : 237,
         'L1_BTAG-MU4J15' : 238,
-        'L1_BTAG-MU4J30' : 239,
-        'L1_ZB' : 240,
-        'L1_BPTX0_BGRP0' : 241,
-        'L1_BPTX1_BGRP0' : 242,
         'L1_BTAG-MU6J20' : 243,
-        'L1_BTAG-MU6J25' : 244,
-#        'L1_BTAG-MU4J20' : 245,
-        'L1_3J15_BTAG-MU4J15' : 246,
-        'L1_3J15_BTAG-MU4J30' : 247,
-        'L1_3J15_BTAG-MU6J25' : 248,
-        'L1_3J20_BTAG-MU4J20' : 249,
-#        'L1_J40_DPHI-Js2XE50' : 250,
-        'L1_J40_DPHI-J20s2XE50' : 251,
-        #'L1_J40_DPHI-J20s2XE30' : 257,
-        'L1_J40_XE50_DPHI-J20s2XE50': 245,
-        'L1_J40_DPHI-J20XE50' : 252,
-        'L1_J40_DPHI-CJ20XE50' : 253,
-        'L1_MU4_J20_XE30_DPHI-J20s2XE30' : 257,
-        'L1_2MU4_J20_XE30_DPHI-J20s2XE30' : 271,
-        'L1_MU4_2EM3_J20_XE30_DPHI-J20s2XE30' : 434,
-        'L1_3EM3_J40_XE50_DPHI-J20s2XE50' : 435,
-#SX
-#        'L1_BPH-DR-2MU4-B_BPH-2M-2MU4-B' : 254,
-#        'L1_BPH-DR-2MU4-B_BPH-4M8-2MU4-B' : 255,
-#        'L1_BPH-DR-2MU4-BO_BPH-2M-2MU4-BO' : 256,
-#        'L1_BPH-DR-2MU4-BO_BPH-4M8-2MU4-BO' : 257,
-
-        
-        'L1_HT190-J15.ETA21' : 258,
+        'L1_2MU4_J40_XE50' : 449,
+        'L1_MU4_J30_XE40_DPHI-J20s2XE30' : 452,
+        'L1_MU4_J50_XE50_DPHI-J20s2XE30' : 453,
+        'L1_MU4_XE60' : 454,
         'L1_HT190-J15s5.ETA21' : 259,
-        'L1_HT150-J20.ETA31' : 260,
-        'L1_HT150-J20s5.ETA31' : 261,
-        'L1_JPSI-1M5' : 262,
+        'L1_HT150-J20s5.ETA31_MJJ-400-CF' : 91,
         'L1_JPSI-1M5-EM7' : 263,
         'L1_JPSI-1M5-EM12' : 264,
-        'L1_KF-XE40' : 265,
-        'L1_KF-XE50' : 266,
-        'L1_KF-XE55' : 267,
-        'L1_KF-XE60' : 268,
-        'L1_KF-XE65' : 269,
-        'L1_KF-XE75' : 270,
-#        'L1_W-05DPHI-JXE-0' : 271,
-#        'L1_W-10DPHI-JXE-0' : 272,
-#        'L1_W-15DPHI-JXE-0' : 273,
-        #'L1_W-15DPHI-EMXE-1' : 271,
-        #'L1_W-15DPHI-EM15XE-1' : 272,
-#        'L1_W-05DPHI-EMXE-1' : 276,
-        'L1_W-05RO-XEHT-0' : 277,
-        'L1_W-90RO2-XEHT-0' : 279,
-        'L1_W-250RO2-XEHT-0' : 280,
-        'L1_W-HT20-JJ15.ETA49' : 281,
-        'L1_W-NOMATCH' : 282,
-        #'L1_W-NOMATCH_W-05RO-XEEMHT' : 283,
-        'L1_EM10_W-MT25' : 284,
-        'L1_EM15_W-MT35' : 286,
-        'L1_EM10_W-MT25_W-15DPHI-JXE-0_W-15DPHI-EMXE_W-90RO2-XEHT-0' : 287,
-        'L1_EM10_W-MT25_W-15DPHI-JXE-0_W-15DPHI-EMXE_XS30' : 288,
-        'L1_EM10_W-MT25_W-15DPHI-JXE-0_W-15DPHI-EMXE_XS20' : 289,
-        'L1_EM10_W-MT25_W-15DPHI-JXE-0_W-15DPHI-EMXE' : 290,
-        'L1_EM15_W-MT35_W-05DPHI-JXE-0_W-05DPHI-EMXE_W-250RO2-XEHT-0' : 291,
-        'L1_EM15_W-MT35_W-05DPHI-JXE-0_W-05DPHI-EMXE_XS60' : 292,
-        'L1_EM15_W-MT35_W-05DPHI-JXE-0_W-05DPHI-EMXE_XS30' : 293,
-        'L1_EM15_W-MT35_W-05DPHI-JXE-0_W-05DPHI-EMXE' : 294,
-#SX
-#        'L1_BPH-DR-2MU4' : 295,
-#        'L1_BPH-2M-2MU4' : 296,
-#        'L1_BPH-4M8-2MU4' : 297,
-#        'L1_BPH-DR-2MU4_BPH-2M-2MU4' : 298,
-#        'L1_BPH-DR-2MU4_BPH-4M8-2MU4' : 299,
-#        'L1_BPH-DR-2MU6' : 300,
-#        'L1_BPH-2M-2MU6' : 301,
-#        'L1_BPH-4M8-2MU6' : 302,
-#        'L1_BPH-DR-2MU6_BPH-2M-2MU6' : 303,
-#        'L1_BPH-DR-2MU6_BPH-4M8-2MU6' : 304,
-#        'L1_BPH-2M-2MU4-B' : 305,
-#        'L1_BPH-2M-2MU4-BO' : 306,
-#        'L1_BPH-2M-MU6MU4' : 307,
-#        'L1_BPH-2M-MU6MU4-B' : 308,
-#        'L1_BPH-2M-MU6MU4-BO' : 309,
-#        'L1_BPH-4M8-2MU4-B' : 310,
-#        'L1_BPH-4M8-2MU4-BO' : 311,
-#        'L1_BPH-4M8-MU6MU4' : 312,
-#        'L1_BPH-4M8-MU6MU4-B' : 313,
-#        'L1_BPH-4M8-MU6MU4-BO' : 314,
-
-#SX adding
-        #'L1_BPH-1M19-2MU4_BPH-0DR34-2MU4' : 295,
-        'L1_BPH-2M8-2MU4_BPH-0DR15-2MU4'  : 296, #  ATR-15197 'L1_BPH-2M9-2MU4_BPH-0DR15-2MU4'  : 296,
-        'L1_BPH-7M15-2MU4_BPH-0DR24-2MU4'  : 297,
-        'L1_BPH-2M8-MU6MU4_BPH-0DR15-MU6MU4'  : 298, # ATR-15197 'L1_BPH-2M9-MU6MU4_BPH-0DR15-MU6MU4'  : 298,
-        'L1_BPH-8M15-MU6MU4_BPH-0DR22-MU6MU4'  : 299,
-        'L1_BPH-2M9-2MU6_BPH-2DR15-2MU6' : 300,
-        'L1_BPH-8M15-2MU6_BPH-0DR22-2MU6'  : 301,
-        'L1_MU6MU4-BO' : 302,
-        'L1_2MU4-B' : 303,
-        'L1_2MU6-B'  : 304,
-        #'L1_BPH-1M19-2MU4-B_BPH-0DR34-2MU4'  : 305,
-        'L1_BPH-2M8-2MU4-B_BPH-0DR15-2MU4'  : 306,
-        'L1_BPH-7M15-2MU4_BPH-0DR24-2MU4-B'  :  307,
-        #'L1_BPH-1M19-2MU4-BO_BPH-0DR34-2MU4'   : 308,
-        #'L1_BPH-2M8-2MU4-BO_BPH-0DR15-2MU4'  : 309,
-        'L1_BPH-7M15-2MU4_BPH-0DR24-2MU4-BO'  : 310,
-        'L1_BPH-2M8-MU6MU4-B_BPH-0DR15-MU6MU4' : 311,
-        'L1_2MU4-BO' : 312,
-        'L1_2MU6-BO' : 313,
-        'L1_MU6_2MU4-B'  : 314,
-
-        ### ATR-14350 - these should be replaced in 2017 with items 296 and 298
-        'L1_BPH-2M9-2MU4_BPH-0DR15-2MU4' : 426,
-        'L1_BPH-2M9-MU6MU4_BPH-0DR15-MU6MU4' : 427,
-
-
-        'L1_DY-DR-2MU4' : 315,
-        'L1_EM15VH_2EM8VH_MU6' : 316,
-        #'L1_DY-BOX-MU6MU4' : 317,
-        'L1_DY-BOX-2MU6' : 318,
-        'L1_LFV-MU' : 319,
         'L1_LFV-MU6' : 332,
+        'L1_LFV-MU11' : 364,
         'L1_LFV-EM8I' : 320,
         'L1_LFV-EM15I' : 321,
-        'L1_EM7_MU15' : 322,
-        'L1_EM8VH_MU15' : 48,
         'L1_DPHI-J20s2XE50' : 323,
-        'L1_DPHI-J20XE50' : 324,
-        'L1_DPHI-CJ20XE50' : 325,
-        'L1_MJJ-900' : 326,
-        'L1_MJJ-800' : 327,
-        'L1_MJJ-700' : 328,
-        'L1_MJJ-400' : 329,
-        #'L1_MJJ-350' : 330,
-#        'L1_MJJ-300' : 331,
-#        'L1_MJJ-200' : 332,
+        'L1_J40_XE50_DPHI-J20s2XE50' : 245,
+        'L1_2MU4_J20_XE30_DPHI-J20s2XE30' : 271,
+        'L1_MJJ-700' : 216,
+        'L1_MJJ-300' : 331,
         'L1_MJJ-100' : 333,
+        'L1_MJJ-400' : 329,
+        'L1_MJJ-800' : 327,
+        'L1_MJJ-500-NFF' : 108,
+        'L1_J50_DETA20-J50J' : 275,
+        'L1_DPHI-2EM3' : 288,
         'L1_HT150-JJ15.ETA49' : 334,
+        'L1_HT150-JJ15.ETA49_MJJ-400' : 416,
         'L1_J4-MATCH' : 336,
         'L1_LLP-RO' : 338,
         'L1_LLP-NOMATCH' : 339,
-        'L1_DR-MU10TAU12I' : 340,
-#        'L1_TAU12I-J25' : 341,
         'L1_EM15TAU12I-J25' : 345,
+        'L1_DR-MU10TAU12I' : 340,
+        'L1_DR-MU10TAU12I_TAU12I-J25' : 72,
         'L1_DR-EM15TAU12I-J25' : 346,
         'L1_TAU20ITAU12I-J25' : 347,
         'L1_DR-TAU20ITAU12I' : 348,
-        'L1_BOX-TAU20ITAU12I' : 349,
         'L1_DR-TAU20ITAU12I-J25' : 350,
-
-        'L1_DR25-TAU20ITAU12I' : 337,
-
-        'L1_DR25-TAU20ITAU12I-J25' : 386,
         'L1_30M-EM20ITAU12' : 387,
-        'L1_MJJ-400-CF': 397,
-
+        'L1_MJJ-400-CF' : 397,
         'L1_LAR-EM' : 351,
         'L1_LAR-J' : 352,
-        'L1_DR-EM15TAU12I' : 353,        
-        'L1_LATE-MU10_XE50': 354,
+        'L1_LAR-ZEE' : 71,
+        'L1_LAR-ZEE_LAR-EM' : 285,
+        'L1_BPH-2M9-2MU4_BPH-0DR15-2MU4' : 426,
+        'L1_BPH-2M9-MU6MU4_BPH-0DR15-MU6MU4' : 427,
+        'L1_BPH-8M15-MU6MU4_BPH-0DR22-MU6MU4-BO' : 488,
+        'L1_BPH-8M15-2MU6_BPH-0DR22-2MU6' : 301,
+        'L1_BPH-8M15-0DR22-2MU6' : 107,
+        'L1_BPH-2M9-2DR15-2MU6' : 110,
+        'L1_BPH-2M9-0DR15-MU6MU4' : 125,
+        'L1_BPH-8M15-0DR22-MU6MU4-BO' : 126,
+        'L1_BPH-2M9-0DR15-2MU4' : 127,
+        'L1_BPH-0M9-EM7-EM5' : 80,
+        'L1_BPH-0DR3-EM7J15' : 84,
+        'L1_BPH-0M9-EM7-EM5_MU6' : 124,
+        'L1_BPH-0DR3-EM7J15_MU6' : 134,
+        'L1_BPH-0M9-EM7-EM5_2MU4' : 153,
+        'L1_BPH-0DR3-EM7J15_2MU4' : 156,
+        'L1_MJJ-400-NFF-0DPHI20' : 128,
+        'L1_MJJ-400-NFF-0DPHI22' : 129,
+        'L1_MJJ-400-NFF-0DPHI24' : 133,
+        'L1_MJJ-400-NFF-0DPHI26' : 136,
+        'L1_EM18VHI_MJJ-300' : 385,
+        'L1_LATE-MU10_XE50' : 354,
+        'L1_LATE-MU10_XE40' : 466,
         'L1_LATE-MU10_J50' : 355,
-        'L1_SC111' : 356,
-        'L1_SC85' : 357,
-#SX
-#        'L1_BPH-DR-2MU4-B' : 353,
-#        'L1_BPH-DR-2MU4-BO' : 354,
-#        'L1_BPH-DR-MU6MU4' : 355,
-#        'L1_BPH-DR-MU6MU4-B' : 356,
-#        'L1_BPH-DR-MU6MU4-BO' : 357,
-        'L1_MU6_MJJ-200' : 358,
-        'L1_MU6_MJJ-300' : 359,
-        'L1_MU6_MJJ-400' : 360,
-        'L1_MU6_MJJ-500' : 361,
-        'L1_J30_2J20_4J20.0ETA49_MJJ-400' : 362,
-        'L1_J30_2J20_4J20.0ETA49_MJJ-700' : 363,
-        'L1_J30_2J20_4J20.0ETA49_MJJ-800' : 364,
-        'L1_J30_2J20_4J20.0ETA49_MJJ-900' : 365,
-        'L1_3J20_4J20.0ETA49_MJJ-400' : 366,
-        'L1_3J20_4J20.0ETA49_MJJ-700' : 367,
-        'L1_3J20_4J20.0ETA49_MJJ-800' : 368,
-        'L1_3J20_4J20.0ETA49_MJJ-900' : 369,
-        'L1_XE35_MJJ-200' : 370,
-        'L1_EM7_FIRSTEMPTY': 371, 
-        'L1_RD0_ABORTGAPNOTCALIB':372,
-        'L1_3J25.0ETA23' : 373,
-        'L1_3J35.0ETA23' : 425,
-        'L1_TE20' : 374,
-        'L1_TE10.0ETA24' : 375,
-        'L1_TE15.ETA24' : 416,
-        'L1_TE20.0ETA24' : 376,
-        'L1_TE25.0ETA24' : 409,
-        #'L1_XS40' : 377,
-        #'L1_XS50' : 378,
-        #'L1_XS60' : 379,
-        'L1_J12_BGRP12' : 380,
-        'L1_J30.31ETA49_BGRP12' : 381,
-        'L1_MU6_J30.0ETA49_2J20.0ETA49' : 382,
-        'L1_4J20.0ETA49' : 383,
-        'L1_HT150-JJ15.ETA49_MJJ400' : 384,
-
-        ### ATR-15062
-        'L1_EM18VH_MJJ-300' : 385,
-        
-#ATR-13743        'L1_MU4_J30' : 386,
-#        'L1_MU4_J50' : 387,
-
-        
-        'L1_TAU8_UNPAIRED_ISO': 388,
-        'L1_EM7_UNPAIRED_ISO': 389,
-        'L1_TAU8_UNPAIRED_NONISO': 467,
-        'L1_EM7_UNPAIRED_NONISO': 468,
-        'L1_MU4_UNPAIRED_NONISO' : 469,
-        'L1_RD2_BGRP12'   : 390,
-        'L1_TAU8_FIRSTEMPTY': 391,
-        'L1_EM24VHI'           : 392,
-        'L1_LHCF_UNPAIRED_ISO' : 393,
-        'L1_LHCF_EMPTY' : 394,
-        'L1_EM15VH_2EM10VH_3EM7': 395,
-        'L1_EM15VH_3EM8VH': 396, 
-        'L1_EM8I_MU10'  : 399,
-        "L1_EM26VHI"    :402,
-        "L1_EM15HI"    :423,
-        "L1_EM15I"    :424,
-        "L1_MU6_3MU4"  :403,
-        "L1_2MU6_3MU4" :404,
-        "L1_BGRP9"     :405,
-        #'L1_TE50'       :406,
-        'L1_TE5'       :407,
-        #'L1_TE60'      :408,
-        #'L1_TE50.0ETA24':409,
-        'L1_TE5.0ETA24':410, 
-        'L1_EM20VH_FIRSTEMPTY':411, 
-        'L1_EM22VHI_FIRSTEMPTY':412, 
-        'L1_MU20_FIRSTEMPTY':413, 
-        'L1_J100_FIRSTEMPTY':414, 
-        'L1_J100.31ETA49_FIRSTEMPTY':415, 
-        #'L1_TE60.0ETA24':416, 
-        'L1_TE70.0ETA24':417, 
-        'L1_TE40.0ETA24':418, 
-
-        # 3 x ZDC
-        'L1_ZDC_A':419,
-        'L1_ZDC_C':420,
-        'L1_ZDC_AND':421, 
-        'L1_ZDC_A_C':422, 
-        
-#ATR-13743        'L1_ALFA_ELAST1'  : 424,
-#        'L1_ALFA_ELAST2'  : 425,
-#        'L1_ALFA_ELAST11' : 426,
-#        'L1_ALFA_ELAST12' : 427,
-#        'L1_ALFA_ELAST13' : 428,
-#        'L1_ALFA_ELAST14' : 429,
-#        'L1_ALFA_ELAST15' : 430,
-#        'L1_ALFA_ELAST15_Calib' : 431,
-#        'L1_ALFA_ELAST16' : 432,
-#        'L1_ALFA_ELAST17' : 433,
-#        'L1_ALFA_ELAST18' : 434,
-#        'L1_ALFA_ELAST18_Calib' : 435,
-#        'L1_ALFA_SDIFF5' : 436,
-#        'L1_ALFA_SDIFF6' : 437,
-#        'L1_ALFA_SDIFF7' : 438,
-#        'L1_ALFA_SDIFF8' : 439,
-#        'L1_MBTS_1_A_ALFA_C' : 440,
-#        'L1_MBTS_1_C_ALFA_A' : 441,
-#        'L1_MBTS_1_A_ALFA_C_UNPAIRED_ISO' : 442,
-#        'L1_MBTS_1_C_ALFA_A_UNPAIRED_ISO' : 443,
-#        'L1_MBTS_2_A_ALFA_C' : 444,
-#        'L1_MBTS_2_C_ALFA_A' : 445,
-#        'L1_MBTS_2_A_ALFA_C_UNPAIRED_ISO' : 446,
-#        'L1_MBTS_2_C_ALFA_A_UNPAIRED_ISO' : 447,
-#        'L1_LUCID_A_ALFA_C' : 448,
-#        'L1_LUCID_C_ALFA_A' : 449,
-#        'L1_LUCID_A_ALFA_C_UNPAIRED_ISO' : 450,
-#        'L1_LUCID_C_ALFA_A_UNPAIRED_ISO' : 451,
-#        'L1_EM3_ALFA_ANY' : 452,
-#        'L1_EM3_ALFA_ANY_UNPAIRED_ISO' : 453,
-#        'L1_EM3_ALFA_EINE' :   454,
-#        'L1_ALFA_ELASTIC_UNPAIRED_ISO' : 455,
-#        'L1_ALFA_ANTI_ELASTIC_UNPAIRED_ISO' : 456,
-#        'L1_ALFA_ANY_A_EMPTY' : 457,
-#        'L1_ALFA_ANY_C_EMPTY' : 458,
-#        'L1_J12_ALFA_ANY' : 459,
-#        'L1_J12_ALFA_ANY_UNPAIRED_ISO' : 460,
-#        'L1_TE5_ALFA_ANY' : 461,
-#        'L1_TE5_ALFA_ANY_UNPAIRED_ISO' : 462,
-#        'L1_TE5_ALFA_EINE' : 463,
-#        'L1_TRT_ALFA_ANY' : 464,
-#        'L1_TRT_ALFA_ANY_UNPAIRED_ISO' : 465,
-#        'L1_TRT_ALFA_EINE' :   466,
-##        'L1_LHCF_ALFA_ANY_A' : 467,
-##        'L1_LHCF_ALFA_ANY_C' : 468,
-##        'L1_LHCF_ALFA_ANY_A_UNPAIRED_ISO' : 469,
-##        'L1_LHCF_ALFA_ANY_C_UNPAIRED_ISO' : 470,
-#        
-#        'L1_ALFA_BGT' : 471,
-#        'L1_ALFA_BGT_UNPAIRED_ISO' : 472,
-#        'L1_ALFA_BGT_BGRP10' : 473,
-#        'L1_ALFA_SHOWSYST5' : 474,
-#        'L1_ALFA_SYST9'  : 475,
-#        'L1_ALFA_SYST10' : 476,
-#        'L1_ALFA_SYST11' : 477,
-#        'L1_ALFA_SYST12' : 478,
-#        'L1_ALFA_SYST17' : 479,
-#        'L1_ALFA_SYST18' : 480,
-         'L1_ALFA_ANY' : 481,
-#        'L1_ALFA_ANY_EMPTY' : 482,
-#        'L1_ALFA_ANY_FIRSTEMPTY' : 483,
-#        'L1_ALFA_ANY_UNPAIRED_ISO' : 484,
-#        'L1_ALFA_ANY_UNPAIRED_NONISO' : 485,
-#        'L1_ALFA_ANY_BGRP10' : 486,
-#        'L1_ALFA_ANY_ABORTGAPNOTCALIB' : 487,
-#        'L1_ALFA_ANY_CALIB' : 488,
-         'L1_ALFA_B7L1U' : 489,
-         'L1_ALFA_B7L1L' : 490,
-         'L1_ALFA_A7L1U' : 491,
-         'L1_ALFA_A7L1L' : 492,
-         'L1_ALFA_A7R1U' : 493,
-         'L1_ALFA_A7R1L' : 494,
-         'L1_ALFA_B7R1U' : 495,
-         'L1_ALFA_B7R1L' : 496,
+        'L1_TAU60_DR-TAU20ITAU12I' : 76,
+        'L1_SC111-CJ15' : 356,
+        'L1_LFV-EM8I-MU11' : 138,
+        'L1_LFV-EM12I-MU6' : 139,
+        'L1_BPH-0M10-3MU4' : 143,
+        'L1_ZAFB-04DPHI-EM15I' : 152,
+        'L1_ZAFB-25DPHI-EM15I' : 157,
+        'L1_ZAFB-25DPHI-EM18I' : 158,
+        'L1_DPHI-M70-2EM12I' : 159,
+        'L1_DY-DR-2MU4' : 315,
+        'L1_DY-BOX-2MU6' : 318,
+        'L1_DY-BOX-2MU4' : 160,
+        'L1_CEP-CJ60' : 162,
+        'L1_CEP-CJ50' : 164,
+        'L1_BPH-8M15-2MU4-BO' : 165,
+        'L1_CALREQ2' : 511,
 
-        
-#        'L1_ALFA_B7L1U_OD' : 497,
-#        'L1_ALFA_B7L1L_OD' : 498,
-#        'L1_ALFA_A7L1U_OD' : 499,
-#        'L1_ALFA_A7L1L_OD' : 500,
-#        'L1_ALFA_A7R1U_OD' : 501,
-#        'L1_ALFA_A7R1L_OD' : 502,
-#        'L1_ALFA_B7R1U_OD' : 503,
-#        'L1_ALFA_B7R1L_OD' : 504,
-#        'L1_ALFA_B7L1_OD'  : 505,
-#        'L1_ALFA_A7L1_OD'  : 506,
-#        'L1_ALFA_B7R1_OD'  : 507,
-#        'L1_ALFA_A7R1_OD'  : 508,
-        'L1_CALREQ2' : 511,  # never use 509-511 for anything else than CALREQ triggers
 }
 
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/ThresholdDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/ThresholdDef.py
index adb3918da11..6bece23735b 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/ThresholdDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/LVL1MenuConfig/LVL1Menu/ThresholdDef.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 from TriggerMenuMT.LVL1MenuConfig.LVL1.Lvl1Thresholds import ThresholdValue
 from TriggerMenuMT.LVL1MenuConfig.LVL1.Limits import CaloLimits as CL
 
@@ -18,7 +18,7 @@ class ThresholdDef(object):
         # MUON
         ThresholdValue.setDefaults('MUON', {'etamin' : -49,'etamax' : 49, 'phimin' : 0,'phimax' : 64}) # keep this as an example how defaults for groups can be defined
 
-        for thrV in [0, 4, 6, 10, 11, 15, 20]:
+        for thrV in [0, 4, 6, 10, 11, 15, 20, 21]:
             tc.registerThr('MU%i' % thrV, 'MUON').addThrValue(thrV)
 
 
@@ -107,12 +107,15 @@ class ThresholdDef(object):
             .addThrValue(18, -14, -13, priority=2).addThrValue(18, 13, 14, priority=2)\
             .addThrValue(17, -15, -14, priority=2).addThrValue(17, 14, 15, priority=2)\
             .addThrValue(19, -17, -15, priority=2).addThrValue(19, 15, 17, priority=2)\
-            .addThrValue(21, -25, -17, priority=2).addThrValue(21, 17, 25, priority=2)       
+            .addThrValue(21, -25, -17, priority=2).addThrValue(21, 17, 25, priority=2)
+
 
         # I section
 
         ThresholdValue.setDefaults('EM', {'isobits' : '00010', 'use_relIso' : True })
 
+   
+ 
         for thrV in [8]:
             tc.registerThr('EM%iI' % thrV, 'EM').addThrValue(thrV)
 
@@ -124,6 +127,26 @@ class ThresholdDef(object):
         for thrV in [15]:
             tc.registerThr('EM%iHI' % thrV, 'EM').addThrValue(thrV)
 
+        tc.registerThr( 'EM15VHI', type='EM').addThrValue(17, priority=1)\
+            .addThrValue(17, -7, 0, priority=2).addThrValue(17, 0, 7, priority=2)\
+            .addThrValue(16, -9, -7, priority=2).addThrValue(16, 7, 9, priority=2)\
+            .addThrValue(15, -12, -9, priority=2).addThrValue(15, 9, 12, priority=2)\
+            .addThrValue(14, -14, -12, priority=2).addThrValue(14, 12, 14, priority=2)\
+            .addThrValue(13, -15, -14, priority=2).addThrValue(13, 14, 15, priority=2)\
+            .addThrValue(15, -17, -15, priority=2).addThrValue(15, 15, 17, priority=2)\
+            .addThrValue(16, -25, -17, priority=2).addThrValue(16, 17, 25, priority=2)
+
+        tc.registerThr( 'EM18VHI', type='EM').addThrValue(20, priority=1)\
+            .addThrValue(20, -7, 0, priority=2).addThrValue(20, 0, 7, priority=2)\
+            .addThrValue(19, -8, -7, priority=2).addThrValue(19, 7, 8, priority=2)\
+            .addThrValue(18, -11, -8, priority=2).addThrValue(18, 8, 11, priority=2)\
+            .addThrValue(17, -13, -11, priority=2).addThrValue(17, 11, 13, priority=2)\
+            .addThrValue(16, -14, -13, priority=2).addThrValue(16, 13, 14, priority=2)\
+            .addThrValue(15, -15, -14, priority=2).addThrValue(15, 14, 15, priority=2)\
+            .addThrValue(17, -17, -15, priority=2).addThrValue(17, 15, 17, priority=2)\
+            .addThrValue(19, -25, -17, priority=2).addThrValue(19, 17, 25, priority=2)
+
+
         tc.registerThr( 'EM20VHI', type='EM').addThrValue(22, priority=1)\
             .addThrValue(22, -7, 0, priority=2).addThrValue(22, 0, 7, priority=2)\
             .addThrValue(21, -8, -7, priority=2).addThrValue(21, 7, 8, priority=2)\
@@ -134,6 +157,17 @@ class ThresholdDef(object):
             .addThrValue(19, -17, -15, priority=2).addThrValue(19, 15, 17, priority=2)\
             .addThrValue(21, -25, -17, priority=2).addThrValue(21, 17, 25, priority=2)
 
+        tc.registerThr( 'EM22VH', type='EM').addThrValue(24, priority=1)\
+            .addThrValue(24, -7, 0, priority=2).addThrValue(24, 0, 7, priority=2)\
+            .addThrValue(23, -8, -7, priority=2).addThrValue(23, 7, 8, priority=2)\
+            .addThrValue(22, -11, -8, priority=2).addThrValue(22, 8, 11, priority=2)\
+            .addThrValue(21, -13, -11, priority=2).addThrValue(21, 11, 13, priority=2)\
+            .addThrValue(20, -14, -13, priority=2).addThrValue(20, 13, 14, priority=2)\
+            .addThrValue(19, -15, -14, priority=2).addThrValue(19, 14, 15, priority=2)\
+            .addThrValue(21, -17, -15, priority=2).addThrValue(21, 15, 17, priority=2)\
+            .addThrValue(23, -25, -17, priority=2).addThrValue(23, 17, 25, priority=2)
+
+
         tc.registerThr( 'EM22VHI', type='EM').addThrValue(24, priority=1)\
             .addThrValue(24, -7, 0, priority=2).addThrValue(24, 0, 7, priority=2)\
             .addThrValue(23, -8, -7, priority=2).addThrValue(23, 7, 8, priority=2)\
@@ -153,6 +187,18 @@ class ThresholdDef(object):
             .addThrValue(21, -15, -14, priority=2).addThrValue(21, 14, 15, priority=2)\
             .addThrValue(23, -17, -15, priority=2).addThrValue(23, 15, 17, priority=2)\
             .addThrValue(25, -25, -17, priority=2).addThrValue(25, 17, 25, priority=2)
+
+        tc.registerThr( 'EM24VHIM', type='EM').addThrValue(24, priority=1)\
+            .addThrValue(26, -7, 0, priority=2).addThrValue(26, 0, 7, priority=2)\
+            .addThrValue(25, -8, -7, priority=2).addThrValue(25, 7, 8, priority=2)\
+            .addThrValue(24, -11, -8, priority=2).addThrValue(24, 8, 11, priority=2)\
+            .addThrValue(23, -13, -11, priority=2).addThrValue(23, 11, 13, priority=2)\
+            .addThrValue(22, -14, -13, priority=2).addThrValue(22, 13, 14, priority=2)\
+            .addThrValue(21, -15, -14, priority=2).addThrValue(21, 14, 15, priority=2)\
+            .addThrValue(23, -17, -15, priority=2).addThrValue(23, 15, 17, priority=2)\
+            .addThrValue(25, -25, -17, priority=2).addThrValue(25, 17, 25, priority=2)
+
+
         
         tc.registerThr( 'EM26VHI', type='EM').addThrValue(26, priority=1)\
             .addThrValue(28, -7, 0, priority=2).addThrValue(28, 0, 7, priority=2)\
@@ -164,6 +210,17 @@ class ThresholdDef(object):
             .addThrValue(25, -17, -15, priority=2).addThrValue(25, 15, 17, priority=2)\
             .addThrValue(27, -25, -17, priority=2).addThrValue(27, 17, 25, priority=2)
 
+        tc.registerThr( 'EM30VHI', type='EM').addThrValue(30, priority=1)\
+            .addThrValue(32, -7, 0, priority=2).addThrValue(32, 0, 7, priority=2)\
+            .addThrValue(31, -8, -7, priority=2).addThrValue(31, 7, 8, priority=2)\
+            .addThrValue(30, -11, -8, priority=2).addThrValue(30, 8, 11, priority=2)\
+            .addThrValue(29, -13, -11, priority=2).addThrValue(29, 11, 13, priority=2)\
+            .addThrValue(28, -14, -13, priority=2).addThrValue(28, 13, 14, priority=2)\
+            .addThrValue(27, -15, -14, priority=2).addThrValue(27, 14, 15, priority=2)\
+            .addThrValue(29, -17, -15, priority=2).addThrValue(29, 15, 17, priority=2)\
+            .addThrValue(31, -29, -17, priority=2).addThrValue(31, 17, 29, priority=2)
+
+
 
         tc.registerThr( 'EM3HI', type='EM').addThrValue(3, priority=1)\
 
@@ -183,7 +240,7 @@ class ThresholdDef(object):
 
         ThresholdValue.setDefaults('TAU',{'isobits' : '00000', 'use_relIso' : True })
 
-        for thrV in [6, 8, 12, 15, 20, 25, 30, 35, 40, 50, 60,100]:
+        for thrV in [5, 6, 8, 12, 15, 20, 25, 30, 35, 40, 50, 60, 90, 100]:
             tc.registerThr('HA%i' % thrV, 'TAU').addThrValue(thrV)
 
         # beam splashes     
@@ -205,7 +262,7 @@ class ThresholdDef(object):
             tc.registerThr('HA%iIL' % thrV, 'TAU').addThrValue(thrV)
 
         ThresholdValue.setDefaults('TAU', {'isobits' : '00010', 'use_relIso' : True })
-        for thrV in [12,20]:
+        for thrV in [12,20,25]:
             tc.registerThr('HA%iIM' % thrV, 'TAU').addThrValue(thrV)
 
         ThresholdValue.setDefaults('TAU', {'isobits' : '00100', 'use_relIso' : True })
@@ -244,7 +301,7 @@ class ThresholdDef(object):
         
 
         # Central jet
-        for (thrV, etamax) in [(15,25), (17,22), (20,28), (25,23), (35,23), (20,49), (30,49), (40,25)]:
+        for (thrV, etamax) in [(12,23), (12,25), (12,28), (15,25), (17,22), (20,28), (25,23), (35,23), (20,49), (30,49), (40,25), (45,20)]:
             tc.registerThr('J%i.0ETA%i'  % (thrV, etamax), 'JET').addThrValue(JetOff).addThrValue( thrV, etamin = -etamax,  etamax = etamax, priority=1)  
 
         # Standard forward jet
-- 
GitLab