Commit 260604a0 authored by Daniele Zanzi's avatar Daniele Zanzi Committed by Frank Winklmeier
Browse files

new L1 items for egamma

parent 870ebb0e
......@@ -2593,10 +2593,10 @@ HLT_e26_lhtight_e15_etcut_50invmAB130_L1eEM22M:
3: 2
4: 2
stepFeatures:
0: 17
1: 50
2: 10
3: 17
0: 19
1: 55
2: 11
3: 20
4: 2
HLT_e26_lhtight_e15_etcut_L1EM22VHI:
eventCount: 4
......@@ -2621,10 +2621,10 @@ HLT_e26_lhtight_e15_etcut_idperf_50invmAB130_L1eEM22M:
3: 2
4: 2
stepFeatures:
0: 17
1: 13
2: 11
3: 18
0: 19
1: 14
2: 12
3: 21
4: 2
HLT_e26_lhtight_e15_etcut_idperf_probe_50invmAB130_L1eEM22M:
eventCount: 2
......@@ -2644,10 +2644,10 @@ HLT_e26_lhtight_e15_etcut_idperf_probe_50invmAB130_L1eEM22M:
2: 2
3: 2
4: 2
5: 9
6: 9
7: 9
8: 16
5: 10
6: 10
7: 10
8: 19
HLT_e26_lhtight_e15_etcut_probe_50invmAB130_L1EM22VHI:
eventCount: 4
stepCounts:
......@@ -2688,10 +2688,10 @@ HLT_e26_lhtight_e15_etcut_probe_50invmAB130_L1eEM22M:
2: 2
3: 2
4: 2
5: 9
6: 46
7: 8
8: 15
5: 10
6: 51
7: 9
8: 18
HLT_e26_lhtight_gsf_L1EM22VHI:
eventCount: 5
stepCounts:
......@@ -10533,7 +10533,7 @@ HLT_noalg_L1eEM3:
eventCount: 20
HLT_noalg_L1eEM5:
eventCount: 20
HLT_noalg_L1eEM8:
HLT_noalg_L1eEM7:
eventCount: 18
HLT_noalg_L1eEM8L:
eventCount: 10
......
......@@ -4136,8 +4136,8 @@ HLT_noalg_L1eEM3:
eventCount: 50
HLT_noalg_L1eEM5:
eventCount: 43
HLT_noalg_L1eEM8:
eventCount: 22
HLT_noalg_L1eEM7:
eventCount: 24
HLT_noalg_L1eEM8L:
eventCount: 1
HLT_noalg_L1eTAU100:
......
......@@ -13,21 +13,27 @@ def checkL1HLTConsistency():
lvl1thtypes = lvl1access.thresholdTypes()
lvl1items = lvl1access.items(includeKeys=["name"])
from TriggerMenuMT.HLTMenuConfig.Menu.TriggerConfigHLT import TriggerConfigHLT
allUsedItems = []
allUnusedItems = []
for chain in TriggerConfigHLT.dictsList():
log.debug('[checkL1HLTConsistency] Checking the l1thresholds in the chain %s', chain["chainName"])
#don't check the noalg chains (they don't do anything in the HLT anyway)
if 'HLT_noalg_' in chain["chainName"]:
continue
# #don't check the noalg chains (they don't do anything in the HLT anyway)
# if 'HLT_noalg_' in chain["chainName"]:
# continue
#check that the L1item is listed in the L1Menu
l1item_vec = chain['L1item'].split(',')
for l1item in l1item_vec:
if l1item == "":
log.debug('[checkL1HLTConsistency] chain %s in L1Menu %s: L1item not set...', chain["chainName"], lvl1name)
continue
if l1item not in lvl1items:
if l1item != "":
log.error('[checkL1HLTConsistency] chain %s: L1item: %s, not found in the items list of the L1Menu %s', chain["chainName"], chain["L1item"], lvl1name)
raise Exception("Please fix the menu or the chain.")
else:
log.info('[checkL1HLTConsistency] chain %s in L1Menu %s: L1item not set...', chain["chainName"], lvl1name)
log.error('[checkL1HLTConsistency] chain %s: L1item: %s, not found in the items list of the L1Menu %s', chain["chainName"], chain["L1item"], lvl1name)
raise Exception("Please fix the menu or the chain.")
else:
allUsedItems.append(l1item)
# Find L1 Threshold information for current chain
for p in chain['chainParts']:
......@@ -51,4 +57,12 @@ def checkL1HLTConsistency():
else:
log.error('[checkL1HLTConsistency] chain %s: L1Threshold %s not found in the L1thresholds of the L1Menu %s', chain["chainName"], th, lvl1name)
raise Exception("Please fix the menu or the chain.")
for item in lvl1items:
if item not in allUsedItems:
allUnusedItems.append(item)
if len(allUnusedItems)==0:
log.info('[checkL1HLTConsistency] All items in L1 menu are used')
else:
log.info('[checkL1HLTConsistency] %i items in L1 menu are not used: %s', len(allUnusedItems), ",".join(allUnusedItems))
log.info('[checkL1HLTConsistency] checkL1HLTConsistency completed succesfully')
......@@ -226,10 +226,10 @@ def setupMenu():
ChainProp(name='HLT_g35_loose_PhysicsTLA_L1eEM22M', stream=['TLA'], groups=PrimaryPhIGroup+SinglePhotonGroup),
ChainProp(name='HLT_e25_mergedtight_g35_medium_Heg_02dRAB_L12eEM20L', l1SeedThresholds=['eEM20L','eEM20L'], groups=PrimaryPhIGroup+MultiElectronGroup),
# Remove Zee and add matching 50invmAB130 copy, ATR-21117
ChainProp(name='HLT_e26_lhtight_e15_etcut_probe_50invmAB130_L1eEM22M', l1SeedThresholds=['eEM22M','eEM8'], groups=PrimaryPhIGroup+MultiElectronGroup),
ChainProp(name='HLT_e26_lhtight_e15_etcut_idperf_probe_50invmAB130_L1eEM22M', l1SeedThresholds=['eEM22M','eEM8'], groups=PrimaryPhIGroup+MultiElectronGroup),
ChainProp(name='HLT_e26_lhtight_e15_etcut_50invmAB130_L1eEM22M', l1SeedThresholds=['eEM22M','eEM8'], groups=PrimaryPhIGroup+MultiElectronGroup),
ChainProp(name='HLT_e26_lhtight_e15_etcut_idperf_50invmAB130_L1eEM22M', l1SeedThresholds=['eEM22M','eEM8'], groups=PrimaryPhIGroup+MultiElectronGroup),
ChainProp(name='HLT_e26_lhtight_e15_etcut_probe_50invmAB130_L1eEM22M', l1SeedThresholds=['eEM22M','eEM7'], groups=PrimaryPhIGroup+MultiElectronGroup),
ChainProp(name='HLT_e26_lhtight_e15_etcut_idperf_probe_50invmAB130_L1eEM22M', l1SeedThresholds=['eEM22M','eEM7'], groups=PrimaryPhIGroup+MultiElectronGroup),
ChainProp(name='HLT_e26_lhtight_e15_etcut_50invmAB130_L1eEM22M', l1SeedThresholds=['eEM22M','eEM7'], groups=PrimaryPhIGroup+MultiElectronGroup),
ChainProp(name='HLT_e26_lhtight_e15_etcut_idperf_50invmAB130_L1eEM22M', l1SeedThresholds=['eEM22M','eEM7'], groups=PrimaryPhIGroup+MultiElectronGroup),
# lrt chains
......@@ -1273,7 +1273,7 @@ def setupMenu():
ChainProp(name='HLT_noalg_L1eEM3', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup),
ChainProp(name='HLT_noalg_L1eEM5', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup),
ChainProp(name='HLT_noalg_L1eEM8', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup),
ChainProp(name='HLT_noalg_L1eEM7', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup),
ChainProp(name='HLT_noalg_L1eEM8L', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup),
ChainProp(name='HLT_noalg_L1eEM10L', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup),
ChainProp(name='HLT_noalg_L1eEM12', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup),
......
......@@ -169,42 +169,48 @@ class L1Menu(object):
def checkCountCTPInputsOutput(self):
from collections import defaultdict as dd
ctpInputs = dd(list)
ctpInputBits = dict()
thrNames = []
thrBits = dict()
ctpOutputs = []
from collections import namedtuple
ctpInput = namedtuple('ctpInput',"name, conn, nbit")
ctpInputs = []
ctpOutputs = []
thrNames = []
ctpInputBitSets = dict()
ctpInputNameSets = dict()
for item in self.items:
ctpOutputs.append(item.name)
for thrName in item.thresholdNames():
thrNames.append(thrName)
if thrName[:3]=='ZB_':
thrName = thrName[3:]
if thrName not in thrNames:
thrNames.append(thrName)
for key,clist in self.ctp.counters.counters.items():
if key == 'ctpin':
continue
for c in clist:
thrName = c.name[1:]
thrNames.append(thrName)
if thrName[:3]=='ZB_':
thrName = thrName[3:]
if thrName not in thrNames:
thrNames.append(thrName)
for thrName in thrNames:
for conn in self.connectors:
if conn.ctype != CType.ELEC:
for tl in conn.triggerLines:
if thrName == tl.name:
thrBits[thrName] = tl.nbits
ctpInputs.append(ctpInput(name=thrName,conn=conn.name,nbit=tl.nbits))
else:
for fpga in conn.triggerLines:
for clock in conn.triggerLines[fpga]:
for tl in conn.triggerLines[fpga][clock]:
if thrName == tl.name:
thrBits[thrName] = tl.nbits
ctpInputs.append(ctpInput(name=thrName,conn=conn.name,nbit=tl.nbits))
for thrName in thrNames:
thrset = None
if thrName not in thrBits:
raise RuntimeError("Did not find the number of bits of thresholds %s", thrName)
if len(thrNames) != len(ctpInputs):
raise RuntimeError("Not all input thresholds found!")
if thrName[:3]=='ZB_':
thrName = thrName[3:]
for ctpIn in ctpInputs:
thrset = None
thrName = ctpIn.name
if thrName[:2] in ['EM','HA','XE','TE','XS']:
thrset = 'legacyCalo'
elif thrName[:1]=='J':
......@@ -218,24 +224,28 @@ class L1Menu(object):
elif thrName[:1] in ['e','j','c','g']:
thrset = 'topo1'
elif thrName[:4]=='TOPO':
thrset = 'topo2/3'
if thrset not in ctpInputBits:
ctpInputBits[thrset] = 0
if thrName not in ctpInputs[thrset]:
ctpInputs[thrset].append(thrName)
ctpInputBits[thrset] += thrBits[thrName]
if 'Topo2' in ctpIn.conn:
thrset = 'topo2'
elif 'Topo3' in ctpIn.conn:
thrset = 'topo3'
if thrset not in ctpInputBitSets:
ctpInputBitSets[thrset] = 0
ctpInputNameSets[thrset] = []
if thrName not in ctpInputNameSets[thrset]:
ctpInputNameSets[thrset].append(thrName)
ctpInputBitSets[thrset] += ctpIn.nbit
totalInputs = 0
log.info("Check total number of CTP input and output bits:")
log.info("Number of output bits: %i", len(ctpOutputs) )
for thrset in ctpInputs:
log.info("%s: %i threshlds and %i bits", thrset, len(ctpInputs[thrset]), ctpInputBits[thrset] )
for thrset in ctpInputBitSets:
log.info("%s: %i thresholds and %i bits", thrset, len(ctpInputNameSets[thrset]), ctpInputBitSets[thrset] )
if thrset is not None:
log.debug(ctpInputs[thrset])
log.debug("Threshold set %s: %s", thrset, ",".join(ctpInputNameSets[thrset]) )
else:
log.info("Unrecognised CTP input bits: %s", ",".join(ctpInputs[thrset]) )
totalInputs += ctpInputBits[thrset]
log.info("Unrecognised CTP input bits: %s", ",".join(ctpInputNameSets[thrset]) )
totalInputs += ctpInputBitSets[thrset]
log.info("Number of inputs bits: %i" , totalInputs )
# Fail menu generation for menus going to P1:
......
......@@ -117,7 +117,7 @@ class ItemDef:
# Phase-I
MenuItem('L1_eEM3' ).setLogic( d.eEM3 & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM5' ).setLogic( d.eEM5 & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM8' ).setLogic( d.eEM8 & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM7' ).setLogic( d.eEM7 & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM8L' ).setLogic( d.eEM8L & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM10L' ).setLogic( d.eEM10L & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM12' ).setLogic( d.eEM12 & physcond).setTriggerType( TT.calo )
......@@ -131,6 +131,9 @@ class ItemDef:
MenuItem('L1_eEM22L' ).setLogic( d.eEM22L & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM22M' ).setLogic( d.eEM22M & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM22T' ).setLogic( d.eEM22T & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM24M' ).setLogic( d.eEM24M & physcond).setTriggerType( TT.calo )
MenuItem('L1_eEM7_EMPTY' ).setLogic(d.eEM7 & cosmiccond ).setTriggerType( TT.calo )
MenuItem('L1_eEM7_UNPAIRED_ISO' ).setLogic(d.eEM7 & unpaired_isocond).setTriggerType( TT.calo )
# 2xEM, 3xEM
MenuItem('L1_2EM3' ).setLogic( d.EM3.x(2) & physcond).setTriggerType( TT.calo )
......@@ -151,6 +154,7 @@ class ItemDef:
MenuItem('L1_EM20VH_2EM10VH_3EM8VH' ).setLogic( d.EM20VH & d.EM10VH.x(2) & d.EM8VH.x(3) & physcond).setTriggerType( TT.calo )
# PhaseI 2xEM and 3xEM
MenuItem('L1_2eEM15L').setLogic(d.eEM15L.x(2) & physcond).setTriggerType(TT.calo)
MenuItem('L1_2eEM15M').setLogic(d.eEM15M.x(2) & physcond).setTriggerType(TT.calo)
MenuItem('L1_2eEM20L').setLogic(d.eEM20L.x(2) & physcond).setTriggerType(TT.calo)
MenuItem('L1_3eEM10L').setLogic(d.eEM10L.x(3) & physcond).setTriggerType(TT.calo)
......@@ -331,6 +335,8 @@ class ItemDef:
MenuItem('L1_EM3_MU14FCH' ).setLogic( d.EM3 & d.MU14FCH & physcond).setTriggerType(TT.muon)
MenuItem('L1_2EM8VH_MU8F' ).setLogic( d.EM8VH.x(2) & d.MU8F & physcond).setTriggerType(TT.muon)
MenuItem('L1_EM15VH_2EM8VH_MU5VF').setLogic( d.EM15VH & d.EM8VH.x(2) & d.MU5VF & physcond).setTriggerType(TT.muon)
MenuItem('L1_2eEM8L_MU8F' ).setLogic( d.eEM8L.x(2) & d.MU8F & physcond).setTriggerType(TT.muon)
MenuItem('L1_eEM15L_MU8F' ).setLogic( d.eEM15L & d.MU8F & physcond).setTriggerType(TT.muon)
# TAU ctpid=[0x40:0x4f]
MenuItem('L1_TAU2' ).setLogic( d.HA2 & physcond).setTriggerType( TT.calo )
......@@ -1309,6 +1315,8 @@ class ItemDef:
MenuItem('L1_MU5VF_AFP_A_AND_C').setLogic( AFP_A & AFP_C & d.MU5VF & physcond )
MenuItem('L1_EM7_AFP_A_OR_C').setLogic( (AFP_A | AFP_C) & d.EM7 & physcond )
MenuItem('L1_EM7_AFP_A_AND_C').setLogic( AFP_A & AFP_C & d.EM7 & physcond )
MenuItem('L1_eEM7_AFP_A_OR_C').setLogic( (AFP_A | AFP_C) & d.eEM7 & physcond )
MenuItem('L1_eEM7_AFP_A_AND_C').setLogic( AFP_A & AFP_C & d.eEM7 & physcond )
MenuItem('L1_AFP_A_AND_C_MBTS_2').setLogic( AFP_A & AFP_C & MBTS_2 & physcond )
MenuItem('L1_AFP_A_OR_C_MBTS_2').setLogic( (AFP_A | AFP_C) & MBTS_2 & physcond )
......@@ -1616,7 +1624,7 @@ class ItemDef:
MenuItem('L1_DPHI-2eEM3_VTE5p24ETA49').setLogic( d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE524ETA49) & physcond).setTriggerType(TT.calo)
MenuItem('L1_DPHI-2eEM3_VTE5p24ETA49_ALFA_EINE').setLogic( d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE524ETA49) & ALFA_EINE & physcond).setTriggerType(TT.alfa)
MenuItem('L1_DPHI-2eEM3_VTE10').setLogic( d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE10) & physcond).setTriggerType(TT.calo)
MenuItem('L1_DPHI-2eEM8_VTE50').setLogic( d.eEM8.x(2) & d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE50) & physcond).setTriggerType(TT.calo)
MenuItem('L1_DPHI-2eEM7_VTE50').setLogic( d.eEM7.x(2) & d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE50) & physcond).setTriggerType(TT.calo)
MenuItem('L1_BTAG-MU3VjJ15').setLogic( d.TOPO_0DR04_MU3Vab_CjJ15ab & physcond)
MenuItem('L1_BTAG-MU5VFjJ20').setLogic( d.TOPO_0DR04_MU5VFab_CjJ20ab & physcond)
MenuItem('L1_BPH-8M15-2MU3V-BO' ).setLogic( d.TOPO_8INVM15_2CMU3Vab & physcond) # 96% for Upsi
......
......@@ -108,7 +108,7 @@ class ThresholdDef:
MuonThreshold( "MU3EOF" ).setThrValue( thr=3, ba=4 ).setTGCFlags("F").setRegion("EC,FW") # forward muon, commissioning
# eEM
for thrV in [3, 5, 8, 12, 15, 22]:
for thrV in [3, 5, 7, 12, 15, 22]:
eEMThreshold('eEM%i' % thrV, 'eEM').addThrValue(thrV)
# eEM SPARES
......@@ -120,7 +120,7 @@ class ThresholdDef:
eEMThreshold('eEM%iL' % thrV, 'eEM').addThrValue(thrV).setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" )
# M section (used to be VHI in Run2)
for thrV in [8,15,18,22]:
for thrV in [8,15,18,22,24]:
eEMThreshold('eEM%iM' % thrV, 'eEM').addThrValue(thrV).setIsolation( reta = "Medium", wstot = "Medium", rhad = "Medium" )
# T section (used to be VHIM in Run2)
......
......@@ -15,7 +15,7 @@ class TopoAlgoDefMultiplicity(object):
def registerTopoAlgos(tm):
emThresholds_3bits = [
'eEM3', 'eEM5', 'eEM8', 'eEM8L',
'eEM3', 'eEM5', 'eEM7', 'eEM8L',
]
emThresholds_2bits = [
'eEM10L', 'eEM12', 'eEM15', 'eEM15L', 'eEM15M', 'eEM18M',
......@@ -24,9 +24,9 @@ class TopoAlgoDefMultiplicity(object):
'eEMSPARE1', 'eEMSPARE2', 'eEMSPARE3',
]
emVarThresholds_2bits = [
'eEM20VM', 'eEM22', 'eEM22L', 'eEM22M', 'eEM22T',
'eEM20VM', 'eEM22', 'eEM22L', 'eEM22M', 'eEM22T', 'eEM24M',
# spares
'eEMSPARE4', 'eEMSPARE5', 'eEMSPARE6', 'eEMSPARE7', 'eEMSPARE8',
'eEMSPARE4', 'eEMSPARE5', 'eEMSPARE6', 'eEMSPARE7',
]
for em in emThresholds_3bits:
......
......@@ -42,7 +42,7 @@ def defineMenu():
'L1_EM3_EMPTY', 'L1_EM7_EMPTY', 'L1_EM7_UNPAIRED_ISO', 'L1_EM7_FIRSTEMPTY',
'L1_EM20VH_FIRSTEMPTY',
# new calo
'L1_eEM3', 'L1_eEM8', 'L1_eEM15', 'L1_eEM12',
'L1_eEM3', 'L1_eEM7', 'L1_eEM15', 'L1_eEM12',
'L1_eEM22', 'L1_eEM22M',
##
......
......@@ -42,10 +42,11 @@ def defineMenu():
'L1_EM3_EMPTY', 'L1_EM7_EMPTY', 'L1_EM7_UNPAIRED_ISO', 'L1_EM7_FIRSTEMPTY',
'L1_EM20VH_FIRSTEMPTY',
# new calo
'L1_eEM3', 'L1_eEM5', 'L1_eEM8', 'L1_eEM8L',
'L1_eEM3', 'L1_eEM5', 'L1_eEM7', 'L1_eEM8L',
'L1_eEM10L', 'L1_eEM12', 'L1_eEM15', 'L1_eEM15L', 'L1_eEM15M',
'L1_eEM18M', 'L1_eEM20L', 'L1_eEM20VM',
'L1_eEM22', 'L1_eEM22L', 'L1_eEM22M', 'L1_eEM22T',
'L1_eEM7_EMPTY', 'L1_eEM7_UNPAIRED_ISO',
'L1_eEM22', 'L1_eEM22L', 'L1_eEM22M', 'L1_eEM22T', 'L1_eEM24M',
##
# MU
......@@ -69,7 +70,8 @@ def defineMenu():
'L1_2EM8VH_MU8F', 'L1_EM15VH_MU8F', 'L1_EM7_MU8F',
# Combined lepton, new calo (for ATR-24182)
'L1_2eEM15M', 'L1_2eEM20L', 'L1_3eEM10L', 'L1_eEM20L_3eEM10L',
'L1_2eEM15L', 'L1_2eEM15M', 'L1_2eEM20L', 'L1_3eEM10L', 'L1_eEM20L_3eEM10L',
'L1_eEM15L_MU8F', 'L1_2eEM8L_MU8F',
# single tau
'L1_TAU8', 'L1_TAU12IM', 'L1_TAU20IM', 'L1_TAU40', 'L1_TAU60', 'L1_TAU100',
......@@ -252,8 +254,10 @@ def defineMenu():
#'L1_AFP_A_OR_C_J5','L1_AFP_A_AND_C_J5', # J5 not available in legacy menu. Need to update to jJ threshold for low-mu
'L1_AFP_A_OR_C_J12','L1_AFP_A_AND_C_J12',
'L1_MU5VF_AFP_A_OR_C','L1_MU5VF_AFP_A_AND_C','L1_EM7_AFP_A_OR_C','L1_EM7_AFP_A_AND_C',
'L1_eEM7_AFP_A_OR_C','L1_eEM7_AFP_A_AND_C',
# med-priority (low mu)
'L1_AFP_A_OR_C','L1_AFP_A_OR_C_MBTS_2', 'L1_AFP_A_AND_C_MBTS_2',
# MBTS
'L1_MBTS_A', 'L1_MBTS_C',
......
......@@ -84,7 +84,7 @@ def defineInputsMenu():
"legacy" : False,
"thresholds" : [ # Topo1A: eFex EM, eFex TAU, gJ, gLJ
# eEM thresholds for commissioning
('eEM3',3), ('eEM5',3), ('eEM8',3), ('eEM8L',3),
('eEM3',3), ('eEM5',3), ('eEM7',3), ('eEM8L',3),
(None,3), (None,3), (None,3), (None,3),
......@@ -93,10 +93,10 @@ def defineInputsMenu():
'eEMSPARE1', 'eEMSPARE2', 'eEMSPARE3',
# variable eEM thresholds
'eEM20VM', 'eEM22', 'eEM22L', 'eEM22M', 'eEM22T',
'eEM20VM', 'eEM22', 'eEM22L', 'eEM22M', 'eEM22T', 'eEM24M',
# eEM thresholds for production
'eEMSPARE4', 'eEMSPARE5', 'eEMSPARE6', 'eEMSPARE7', 'eEMSPARE8',
'eEMSPARE4', 'eEMSPARE5', 'eEMSPARE6', 'eEMSPARE7',
]
})
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment