diff --git a/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py b/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py
index a378c686f250e15628ca443ee8261142ff430998..d72669b366b26612d3f7eb84e6153ddaf290a877 100755
--- a/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py
+++ b/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py
@@ -67,7 +67,6 @@ def readMCpayload(args):
 
 # Read algorithm and class names from HLTJobOptions file
 def readHashes(joFileName="", smk=0, dbAlias=""):
-
   joData = {}
 
   try:
@@ -139,26 +138,6 @@ def hltConfigSvcCfg(flags, smk, dbAlias):
   else:
     log.debug("Reading HLTMenu from database {0} {1}".format(smk, dbAlias))
 
-    if not smk or not dbAlias:
-      # Try to read keys from COOL (for P1 data)
-      from TrigConfStorage.TriggerCoolUtil import TriggerCoolUtil
-      dbconn = TriggerCoolUtil.GetConnection("CONDBR2")
-      runNumber = GetFileMD(ConfigFlags.Input.Files)['runNumbers'][0]
-      configKeys = TriggerCoolUtil.getHLTConfigKeys(dbconn, [[runNumber, runNumber]])
-
-      if configKeys and runNumber in configKeys.keys():
-        if not smk:
-          smk = configKeys[runNumber]['SMK']
-
-        if not dbAlias:
-          # For example TRIGGERDBDEV1;22.0.20;Athena -> TRIGGERDBDEV1
-          dbAlias = configKeys[runNumber]['DB'].split(";")[0]
-
-      else:
-        log.error("Menu not found!")
-
-    log.debug("Config keys are SMK: {0} DB alias: {1}".format(smk, dbAlias))
-
     hltConfigSvc.InputType = "DB"
     hltConfigSvc.JsonFileName = ""
     hltConfigSvc.TriggerDB = dbAlias
@@ -169,6 +148,29 @@ def hltConfigSvcCfg(flags, smk, dbAlias):
   return acc
 
 
+def readConfigFromCool(smk, dbAlias):
+  # Try to read keys from COOL (for P1 data)
+  from TrigConfStorage.TriggerCoolUtil import TriggerCoolUtil
+  dbconn = TriggerCoolUtil.GetConnection("CONDBR2")
+  runNumber = GetFileMD(ConfigFlags.Input.Files)['runNumbers'][0]
+  configKeys = TriggerCoolUtil.getHLTConfigKeys(dbconn, [[runNumber, runNumber]])
+
+  if configKeys and runNumber in configKeys.keys():
+    if not smk:
+      smk = configKeys[runNumber]['SMK']
+
+    if not dbAlias:
+      # For example TRIGGERDBDEV1;22.0.20;Athena -> TRIGGERDBDEV1
+      dbAlias = configKeys[runNumber]['DB'].split(";")[0]
+
+    log.debug("Config keys are SMK: {0} DB alias: {1}".format(smk, dbAlias))
+
+  else:
+    log.error("Configuration keys not found!")
+
+  return (smk, dbAlias)
+
+
 # Get HLT Menu from json file or from DB
 def getHltMenu():
   # Try to find local menu file
@@ -236,6 +238,10 @@ if __name__=='__main__':
   histSvc.Output += ["COSTSTREAM DATAFILE='" + args.outputHist + "' OPT='RECREATE'"]
   cfg.addService(histSvc)
 
+  # Retrieve config from cool database
+  if not args.smk or not args.dbAlias:
+    (args.smk, args.dbAlias) = readConfigFromCool(args.smk, args.dbAlias)
+
   cfg.merge(hltConfigSvcCfg(ConfigFlags, args.smk, args.dbAlias))
   cfg.merge(trigCostAnalysisCfg(ConfigFlags, args, ConfigFlags.Input.isMC))