From 0695fb93c4f6763acd147db627e579a0c2675938 Mon Sep 17 00:00:00 2001 From: kakwok Date: Thu, 22 Feb 2018 11:33:34 +0100 Subject: [PATCH 1/8] Add utility to get property from QR --- src/rcms/fm/app/level1/HCALEventHandler.java | 23 +++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/rcms/fm/app/level1/HCALEventHandler.java b/src/rcms/fm/app/level1/HCALEventHandler.java index b0573f0..bbf4123 100755 --- a/src/rcms/fm/app/level1/HCALEventHandler.java +++ b/src/rcms/fm/app/level1/HCALEventHandler.java @@ -59,6 +59,7 @@ import rcms.fm.resource.qualifiedresource.FunctionManager; import rcms.resourceservice.db.Group; import rcms.resourceservice.db.resource.Resource; +import rcms.resourceservice.db.resource.config.ConfigProperty; import rcms.resourceservice.db.resource.fm.FunctionManagerResource; import rcms.resourceservice.db.resource.xdaq.XdaqApplicationResource; import rcms.resourceservice.db.resource.xdaq.XdaqExecutiveResource; @@ -2750,5 +2751,25 @@ void maskTCDSExecAndJC(QualifiedGroup qg){ qr.setInitialized(true); } } - } + } + + // Get property from a QR + public String getProperty(QualifiedResource QR, String name ) throws Exception { + + List propertiesList = QR.getResource().getProperties(); + + if(propertiesList.isEmpty()) { + throw new Exception("Property list is empty"); + } + ConfigProperty property = null; + Iterator iter = propertiesList.iterator(); + while(iter.hasNext()) { + property = iter.next(); + if(property.getName().equals(name)) { + return property.getValue(); + } + } + throw new Exception("Property "+name+" not found"); + } + } From 8537fb636d669dd2acdbb1168c35dd94e3b50808 Mon Sep 17 00:00:00 2001 From: kakwok Date: Thu, 22 Feb 2018 11:34:17 +0100 Subject: [PATCH 2/8] Sort FMs of diff. priorities into map and build compositeTask --- .../app/level1/HCALlevelOneEventHandler.java | 70 +++++++++++++++++-- 1 file changed, 66 insertions(+), 4 deletions(-) diff --git a/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java b/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java index 6b4aa54..43a25d3 100755 --- a/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java +++ b/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java @@ -5,6 +5,10 @@ import java.util.Iterator; import java.util.List; import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + import java.lang.Math; import java.lang.Integer; @@ -35,6 +39,7 @@ import rcms.stateFormat.StateNotification; import rcms.util.logger.RCMSLogger; import rcms.utilities.fm.task.SimpleTask; +import rcms.utilities.fm.task.CompositeTask; import rcms.utilities.fm.task.TaskSequence; import rcms.utilities.runinfo.RunNumberData; import rcms.statemachine.definition.Input; @@ -987,10 +992,34 @@ else if (RunKey.equals("ZS") || RunKey.equals("VdM-ZS")) { } // 2) Normal FMs if (!functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM.isEmpty()){ - SimpleTask fmChildrenTask = new SimpleTask(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM,configureInput,HCALStates.CONFIGURING,HCALStates.CONFIGURED,"LV1: Configuring regular priority FM children"); - logger.info("[HCAL LVL1 " + functionManager.FMname +"] Configuring these regular LV2 FMs: "); - PrintQRnames(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); - configureTaskSeq.addLast(fmChildrenTask); + + //List of distinct list of configPriorities from LV2 properties + Map > priorityFMmap= getConfigPriorities(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); + + CompositeTask normalFMtasks = new CompositeTask(); + for (Map.Entry > entry: priorityFMmap.entrySet()){ + Integer thisPriority = entry.getKey(); + ArrayList FMnames = entry.getValue(); + + //Add all FMs with thisPriority to a QRCcontainer + List thisPriorityFMs = new ArrayList(); + for(QualifiedResource normalFMqr : functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM.getQualifiedResourceList()){ + if(FMnames.contains(normalFMqr.getName())){ + FunctionManager normalFM = (FunctionManager) normalFMqr; + thisPriorityFMs.add(normalFM); + } + } + logger.info("[HCAL LVL1 " + functionManager.FMname +"] configPriority ="+thisPriority+" has the following FMs"); + QualifiedResourceContainer thisPriorityFMContainer = new QualifiedResourceContainer(thisPriorityFMs); + PrintQRnames(thisPriorityFMContainer); + SimpleTask thisPriorityTask = new SimpleTask(thisPriorityFMContainer,configureInput,HCALStates.CONFIGURING,HCALStates.CONFIGURED,"LV1: Configuring normalFMs with priority"+thisPriority); + normalFMtasks.addTask(thisPriorityTask); + } + //SimpleTask fmChildrenTask = new SimpleTask(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM,configureInput,HCALStates.CONFIGURING,HCALStates.CONFIGURED,"LV1: Configuring regular priority FM children"); + //logger.info("[HCAL LVL1 " + functionManager.FMname +"] Configuring these regular LV2 FMs: "); + //PrintQRnames(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); + //configureTaskSeq.addLast(fmChildrenTask); + configureTaskSeq.addLast(normalFMtasks); } // 3) configure EvmTrig FM last // NOTE: Emptyness check is important to support global run @@ -1755,6 +1784,39 @@ public static boolean isValidInstanceNumber(String s){ return false; } } + + //Get sorted Map of ConfigPriority (1:FM1,FM2, 2:FM3,FM4) from the LV2FMs + public Map > getConfigPriorities(QualifiedResourceContainer LV2FMs){ + //TreeMap by default sorts accending order with keys + Map > configPriorityMap = new TreeMap >(); + Set configMapKeys = configPriorityMap.keySet(); + Integer defaultPriority = 99; + configPriorityMap.put(defaultPriority,new ArrayList()); + for(QualifiedResource LV2FM : LV2FMs.getQualifiedResourceList()){ + try{ + Integer thisConfigPriority = Integer.parseInt(getProperty(LV2FM,"configPriority")); + if (!configMapKeys.contains(thisConfigPriority)){ + //New configPriority, + ArrayList FMnames = new ArrayList(); + FMnames.add(LV2FM.getName()); + configPriorityMap.put(thisConfigPriority,FMnames); + }else{ + //Existing configPriority, append FM name to this priority + ArrayList FMnames = configPriorityMap.get(thisConfigPriority); + FMnames.add(LV2FM.getName()); + configPriorityMap.put(thisConfigPriority,FMnames); + } + } + catch(Exception e){ + ArrayList FMnames = configPriorityMap.get(defaultPriority); + FMnames.add(LV2FM.getName()); + configPriorityMap.put(defaultPriority,FMnames); + } + } + logger.info("[HCAL "+functionManager.FMname +"] Map of configPriorities="+configPriorityMap.toString()); + return configPriorityMap; + } + } From 1d6d4fe674cc421de87450220021922c7572aa93 Mon Sep 17 00:00:00 2001 From: kakwok Date: Mon, 26 Feb 2018 11:50:17 +0100 Subject: [PATCH 3/8] Append simple task to same TS instead of using composite task --- src/rcms/fm/app/level1/HCALlevelOneEventHandler.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java b/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java index 43a25d3..949bc09 100755 --- a/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java +++ b/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java @@ -39,7 +39,6 @@ import rcms.stateFormat.StateNotification; import rcms.util.logger.RCMSLogger; import rcms.utilities.fm.task.SimpleTask; -import rcms.utilities.fm.task.CompositeTask; import rcms.utilities.fm.task.TaskSequence; import rcms.utilities.runinfo.RunNumberData; import rcms.statemachine.definition.Input; @@ -996,7 +995,6 @@ else if (RunKey.equals("ZS") || RunKey.equals("VdM-ZS")) { //List of distinct list of configPriorities from LV2 properties Map > priorityFMmap= getConfigPriorities(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); - CompositeTask normalFMtasks = new CompositeTask(); for (Map.Entry > entry: priorityFMmap.entrySet()){ Integer thisPriority = entry.getKey(); ArrayList FMnames = entry.getValue(); @@ -1013,13 +1011,12 @@ else if (RunKey.equals("ZS") || RunKey.equals("VdM-ZS")) { QualifiedResourceContainer thisPriorityFMContainer = new QualifiedResourceContainer(thisPriorityFMs); PrintQRnames(thisPriorityFMContainer); SimpleTask thisPriorityTask = new SimpleTask(thisPriorityFMContainer,configureInput,HCALStates.CONFIGURING,HCALStates.CONFIGURED,"LV1: Configuring normalFMs with priority"+thisPriority); - normalFMtasks.addTask(thisPriorityTask); + configureTaskSeq.addLast(thisPriorityTask); } //SimpleTask fmChildrenTask = new SimpleTask(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM,configureInput,HCALStates.CONFIGURING,HCALStates.CONFIGURED,"LV1: Configuring regular priority FM children"); //logger.info("[HCAL LVL1 " + functionManager.FMname +"] Configuring these regular LV2 FMs: "); //PrintQRnames(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); //configureTaskSeq.addLast(fmChildrenTask); - configureTaskSeq.addLast(normalFMtasks); } // 3) configure EvmTrig FM last // NOTE: Emptyness check is important to support global run From a188834afc5ce233319244722a72fda11a5b57bf Mon Sep 17 00:00:00 2001 From: kakwok Date: Fri, 2 Mar 2018 13:57:06 +0100 Subject: [PATCH 4/8] Empty LPMFM container if LPMFM is masked --- src/rcms/fm/app/level1/HCALEventHandler.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rcms/fm/app/level1/HCALEventHandler.java b/src/rcms/fm/app/level1/HCALEventHandler.java index bbf4123..b0e9eb4 100755 --- a/src/rcms/fm/app/level1/HCALEventHandler.java +++ b/src/rcms/fm/app/level1/HCALEventHandler.java @@ -688,6 +688,8 @@ protected void initXDAQ() throws UserActionException{ functionManager.containerFMEvmTrig = new QualifiedResourceContainer(qg.seekQualifiedResourcesOfRole("EvmTrig")); functionManager.containerFMTCDSLPM = new QualifiedResourceContainer(qg.seekQualifiedResourcesOfRole("Level2_TCDSLPM")); + //Empty the container if LPM FM is masked + functionManager.containerFMTCDSLPM = new QualifiedResourceContainer(functionManager.containerFMTCDSLPM.getActiveQRList()); ActiveChildFMs.removeAll(qg.seekQualifiedResourcesOfRole("EvmTrig")); ActiveChildFMs.removeAll(qg.seekQualifiedResourcesOfRole("Level2_TCDSLPM")); From bbbc440278044c1c476580371fd2db03955e85e4 Mon Sep 17 00:00:00 2001 From: kakwok Date: Fri, 2 Mar 2018 13:59:39 +0100 Subject: [PATCH 5/8] getPriority returns a map of Integer:ArrayList to simplify code --- .../app/level1/HCALlevelOneEventHandler.java | 46 +++++++------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java b/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java index 949bc09..b2a8ab9 100755 --- a/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java +++ b/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java @@ -993,30 +993,18 @@ else if (RunKey.equals("ZS") || RunKey.equals("VdM-ZS")) { if (!functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM.isEmpty()){ //List of distinct list of configPriorities from LV2 properties - Map > priorityFMmap= getConfigPriorities(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); + Map > priorityFMmap= getConfigPriorities(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); - for (Map.Entry > entry: priorityFMmap.entrySet()){ - Integer thisPriority = entry.getKey(); - ArrayList FMnames = entry.getValue(); + for (Map.Entry > entry: priorityFMmap.entrySet()){ + Integer thisPriority = entry.getKey(); + ArrayList thisPriorityFMs = entry.getValue(); - //Add all FMs with thisPriority to a QRCcontainer - List thisPriorityFMs = new ArrayList(); - for(QualifiedResource normalFMqr : functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM.getQualifiedResourceList()){ - if(FMnames.contains(normalFMqr.getName())){ - FunctionManager normalFM = (FunctionManager) normalFMqr; - thisPriorityFMs.add(normalFM); - } - } logger.info("[HCAL LVL1 " + functionManager.FMname +"] configPriority ="+thisPriority+" has the following FMs"); QualifiedResourceContainer thisPriorityFMContainer = new QualifiedResourceContainer(thisPriorityFMs); PrintQRnames(thisPriorityFMContainer); SimpleTask thisPriorityTask = new SimpleTask(thisPriorityFMContainer,configureInput,HCALStates.CONFIGURING,HCALStates.CONFIGURED,"LV1: Configuring normalFMs with priority"+thisPriority); configureTaskSeq.addLast(thisPriorityTask); } - //SimpleTask fmChildrenTask = new SimpleTask(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM,configureInput,HCALStates.CONFIGURING,HCALStates.CONFIGURED,"LV1: Configuring regular priority FM children"); - //logger.info("[HCAL LVL1 " + functionManager.FMname +"] Configuring these regular LV2 FMs: "); - //PrintQRnames(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); - //configureTaskSeq.addLast(fmChildrenTask); } // 3) configure EvmTrig FM last // NOTE: Emptyness check is important to support global run @@ -1783,34 +1771,34 @@ public static boolean isValidInstanceNumber(String s){ } //Get sorted Map of ConfigPriority (1:FM1,FM2, 2:FM3,FM4) from the LV2FMs - public Map > getConfigPriorities(QualifiedResourceContainer LV2FMs){ + public Map > getConfigPriorities(QualifiedResourceContainer LV2FMs){ //TreeMap by default sorts accending order with keys - Map > configPriorityMap = new TreeMap >(); + Map > configPriorityMap = new TreeMap >(); Set configMapKeys = configPriorityMap.keySet(); Integer defaultPriority = 99; - configPriorityMap.put(defaultPriority,new ArrayList()); + configPriorityMap.put(defaultPriority,new ArrayList()); for(QualifiedResource LV2FM : LV2FMs.getQualifiedResourceList()){ try{ Integer thisConfigPriority = Integer.parseInt(getProperty(LV2FM,"configPriority")); if (!configMapKeys.contains(thisConfigPriority)){ //New configPriority, - ArrayList FMnames = new ArrayList(); - FMnames.add(LV2FM.getName()); - configPriorityMap.put(thisConfigPriority,FMnames); + ArrayList FMlist = new ArrayList(); + FMlist.add((FunctionManager) LV2FM); + configPriorityMap.put(thisConfigPriority,FMlist); }else{ //Existing configPriority, append FM name to this priority - ArrayList FMnames = configPriorityMap.get(thisConfigPriority); - FMnames.add(LV2FM.getName()); - configPriorityMap.put(thisConfigPriority,FMnames); + ArrayList FMlist = configPriorityMap.get(thisConfigPriority); + FMlist.add((FunctionManager) LV2FM); + configPriorityMap.put(thisConfigPriority,FMlist); } } catch(Exception e){ - ArrayList FMnames = configPriorityMap.get(defaultPriority); - FMnames.add(LV2FM.getName()); - configPriorityMap.put(defaultPriority,FMnames); + ArrayList FMlist = configPriorityMap.get(defaultPriority); + FMlist.add((FunctionManager) LV2FM); + configPriorityMap.put(defaultPriority,FMlist); } } - logger.info("[HCAL "+functionManager.FMname +"] Map of configPriorities="+configPriorityMap.toString()); + //logger.info("[HCAL "+functionManager.FMname +"] Map of configPriorities="+configPriorityMap.toString()); return configPriorityMap; } From c1a5ecbfd7f64026a5d3a76717170c761d801371 Mon Sep 17 00:00:00 2001 From: kakwok Date: Fri, 2 Mar 2018 16:38:37 +0100 Subject: [PATCH 6/8] Add utitlity function to print results --- src/rcms/fm/app/level1/HCALEventHandler.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/rcms/fm/app/level1/HCALEventHandler.java b/src/rcms/fm/app/level1/HCALEventHandler.java index b0e9eb4..5b5eadb 100755 --- a/src/rcms/fm/app/level1/HCALEventHandler.java +++ b/src/rcms/fm/app/level1/HCALEventHandler.java @@ -2667,6 +2667,12 @@ void CheckAndSetParameter(ParameterSet pSet , String PamName, boolean printResul throw new UserActionException(errMessage); } } + // Print of the names of the QR in an arrayList + void PrintQRnames(List qrlist){ + QualifiedResourceContainer qrc = new QualifiedResourceContainer(qrlist); + PrintQRnames(qrc); + } + // Print of the names of the QR in a QRContainer void PrintQRnames(QualifiedResourceContainer qrc){ String Names = ""; From 3f3c9da8b7b80c83734dfa41b823d15b2fb883e6 Mon Sep 17 00:00:00 2001 From: kakwok Date: Fri, 2 Mar 2018 16:40:55 +0100 Subject: [PATCH 7/8] Lump all FMs without ConfigPriority property into Last priority --- .../app/level1/HCALlevelOneEventHandler.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java b/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java index b2a8ab9..a3f6453 100755 --- a/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java +++ b/src/rcms/fm/app/level1/HCALlevelOneEventHandler.java @@ -992,8 +992,8 @@ else if (RunKey.equals("ZS") || RunKey.equals("VdM-ZS")) { // 2) Normal FMs if (!functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM.isEmpty()){ - //List of distinct list of configPriorities from LV2 properties - Map > priorityFMmap= getConfigPriorities(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); + //Sorted Map of ConfigPriority (1:FM1,FM2, 2:FM3,FM4) from the LV2FMs properties + TreeMap > priorityFMmap= getConfigPriorities(functionManager.containerFMChildrenNoEvmTrigNoTCDSLPM); for (Map.Entry > entry: priorityFMmap.entrySet()){ Integer thisPriority = entry.getKey(); @@ -1770,13 +1770,14 @@ public static boolean isValidInstanceNumber(String s){ } } - //Get sorted Map of ConfigPriority (1:FM1,FM2, 2:FM3,FM4) from the LV2FMs - public Map > getConfigPriorities(QualifiedResourceContainer LV2FMs){ + //Get sorted Map of ConfigPriority (1:FM1,FM2, 2:FM3,FM4) from the LV2FMs. The QRC must contain LV2 FM QualifiedResource + public TreeMap > getConfigPriorities(QualifiedResourceContainer LV2FMs){ //TreeMap by default sorts accending order with keys - Map > configPriorityMap = new TreeMap >(); + TreeMap > configPriorityMap = new TreeMap >(); Set configMapKeys = configPriorityMap.keySet(); Integer defaultPriority = 99; - configPriorityMap.put(defaultPriority,new ArrayList()); + ArrayList defaultFMlist = new ArrayList(); + for(QualifiedResource LV2FM : LV2FMs.getQualifiedResourceList()){ try{ Integer thisConfigPriority = Integer.parseInt(getProperty(LV2FM,"configPriority")); @@ -1793,12 +1794,21 @@ public Map > getConfigPriorities(QualifiedRe } } catch(Exception e){ - ArrayList FMlist = configPriorityMap.get(defaultPriority); - FMlist.add((FunctionManager) LV2FM); - configPriorityMap.put(defaultPriority,FMlist); + defaultFMlist.add((FunctionManager) LV2FM); } } - //logger.info("[HCAL "+functionManager.FMname +"] Map of configPriorities="+configPriorityMap.toString()); + //Lump all FMs without ConfigPriority property into Last priority + if( !configPriorityMap.isEmpty()){ + Integer lastPriority = configPriorityMap.lastKey(); + ArrayList lastPriorityFMlist = configPriorityMap.get(lastPriority); + lastPriorityFMlist.addAll(defaultFMlist); + configPriorityMap.put(lastPriority, lastPriorityFMlist); + } + else{ + //Lump all FMs without ConfigPriority property into default priority if no FM has configPriority + configPriorityMap.put(defaultPriority, defaultFMlist); + } + return configPriorityMap; } From 7f96aeb5c128f1861366d9436824f6cf7b9815c6 Mon Sep 17 00:00:00 2001 From: kakwok Date: Fri, 2 Mar 2018 16:42:32 +0100 Subject: [PATCH 8/8] Consider only lastPriorityFMs for evmTrigs --- src/rcms/fm/app/level1/HCALMasker.java | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/rcms/fm/app/level1/HCALMasker.java b/src/rcms/fm/app/level1/HCALMasker.java index 4f64b6b..4c4e688 100644 --- a/src/rcms/fm/app/level1/HCALMasker.java +++ b/src/rcms/fm/app/level1/HCALMasker.java @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; import java.util.HashMap; +import java.util.TreeMap; import java.util.Arrays; import java.util.ArrayList; @@ -15,6 +16,7 @@ import rcms.resourceservice.db.resource.xdaq.XdaqExecutiveResource; import rcms.fm.resource.QualifiedGroup; import rcms.fm.resource.QualifiedResource; +import rcms.fm.resource.QualifiedResourceContainer; import rcms.fm.resource.qualifiedresource.FunctionManager; import rcms.fm.fw.parameter.type.StringT; import rcms.fm.fw.parameter.type.VectorT; @@ -155,12 +157,27 @@ protected Map pickEvmTrig() { VectorT MaskedFMs = (VectorT)functionManager.getHCALparameterSet().get("MASKED_RESOURCES").getValue(); List level2list = qg.seekQualifiedResourcesOfType(new FunctionManager()); - + List level2noMaskedFMlist=new ArrayList() ; + //Ignore masked FMs for (QualifiedResource level2 : level2list) { - //logger.warn("[JohnLogMaskBug] " + functionManager.FMname + ": now checking if " + level2.getName() + " is masked before picking the EvmTrig FM. The list of masked FMs is:"); - //logger.warn(Arrays.asList(MaskedFMs.toArray()).toString()); if (!Arrays.asList(MaskedFMs.toArray()).contains(new StringT(level2.getName()))) { - //logger.warn("[JohnLogMaskBug] " + functionManager.FMname + "... didn't find " + level2.getName() + " in the masked FMs list."); + level2noMaskedFMlist.add(level2); + } + } + QualifiedResourceContainer level2QRC = new QualifiedResourceContainer(level2noMaskedFMlist); + + //Get ConfigPriority map of active FMs + TreeMap > priorityFMmap = ((HCALlevelOneEventHandler)functionManager.theEventHandler).getConfigPriorities(level2QRC); + Integer LastPriority = priorityFMmap.lastKey(); + List level2EvmTrigCandidateList = new ArrayList(); + + //Add last priority FMs into evmTrigCandidateList + level2EvmTrigCandidateList.addAll(priorityFMmap.get(LastPriority)); + logger.info("[HCAL "+functionManager.FMname+"] Considering following FMs to be EvmTrig:"); + functionManager.theEventHandler.PrintQRnames(level2EvmTrigCandidateList); + + //Consider only LV2 FMs with last priority to be EvmTrig (FM with no ConfigPriority will be grouped into this) + for (QualifiedResource level2 : level2EvmTrigCandidateList) { try { QualifiedGroup level2group = ((FunctionManager)level2).getQualifiedGroup(); logger.debug("[HCAL " + functionManager.FMname + "]: the qualified group has this DB connector" + level2group.rs.toString()); @@ -210,7 +227,6 @@ protected Map pickEvmTrig() { catch (DBConnectorException ex) { logger.error("[HCAL " + functionManager.FMname + "]: Got a DBConnectorException when trying to retrieve level2s' children resources: " + ex.getMessage()); } - } }