diff --git a/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py b/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py
index 2363c3c7a9c852f085f51d35e1158d652d2271c7..c092a896702960d66e00820becbaa416f3e47956 100755
--- a/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py
+++ b/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py
@@ -10,7 +10,7 @@ log = logging.getLogger('RunTrigCostAnalysis.py')
 
 
 # Configure Cost Analysis algorithm
-def trigCostAnalysisCfg(flags, baseWeight=1.0, useEBWeights=False):
+def trigCostAnalysisCfg(flags, baseWeight=1.0, useEBWeights=False, isMC=False, MCpayload={}):
   from TrigCostAnalysis.ROSToROB import ROSToROBMap
   from Gaudi.Configuration import DEBUG
 
@@ -27,6 +27,12 @@ def trigCostAnalysisCfg(flags, baseWeight=1.0, useEBWeights=False):
   enhancedBiasWeighter = CompFactory.EnhancedBiasWeighter()
   enhancedBiasWeighter.RunNumber = runNumbers[0]
   enhancedBiasWeighter.UseBunchCrossingTool = False
+  enhancedBiasWeighter.IsMC = isMC
+  if isMC:
+    enhancedBiasWeighter.MCCrossSection = MCpayload.get('MCCrossSection')
+    enhancedBiasWeighter.MCFilterEfficiency = MCpayload.get('MCFilterEfficiency')
+    enhancedBiasWeighter.MCKFactor = MCpayload.get('MCKFactor')
+    enhancedBiasWeighter.MCIgnoreGeneratorWeights = MCpayload.get('MCIgnoreGeneratorWeights')
 
   trigCostAnalysis = CompFactory.TrigCostAnalysis()
   trigCostAnalysis.OutputLevel = DEBUG
@@ -36,12 +42,24 @@ def trigCostAnalysisCfg(flags, baseWeight=1.0, useEBWeights=False):
   trigCostAnalysis.UseEBWeights = useEBWeights
   trigCostAnalysis.MaxFullEventDumps = 100
   trigCostAnalysis.FullEventDumpProbability = 1 # X. Where probability is 1 in X
+  trigCostAnalysis.UseSingleTimeRange = isMC
   trigCostAnalysis.ROSToROBMap = ROSToROBMap().get_mapping()
 
   acc.addEventAlgo(trigCostAnalysis)
 
   return acc
 
+# Prepare dictionary with MC parameters read from arguments
+def readMCpayload(args):
+  payload = {}
+
+  payload['MCCrossSection'] = args.MCCrossSection
+  payload['MCFilterEfficiency'] = args.MCFilterEfficiency
+  payload['MCKFactor'] = args.MCKFactor
+  payload['MCIgnoreGeneratorWeights'] = args.MCIgnoreGeneratorWeights
+
+  return payload
+
 
 # Configure deserialisation
 def decodingCfg(flags):
@@ -102,6 +120,12 @@ if __name__=='__main__':
   parser.add_argument('--outputHist', type=str, default='TrigCostRoot_Results.root', help='Histogram output ROOT file')
   parser.add_argument('--baseWeight', type=float, default=1.0, help='Base events weight')
   parser.add_argument('--useEBWeights', type=bool, default=False, help='Apply Enhanced Bias weights')
+
+  parser.add_argument('--MCCrossSection', default=0.0, type=float, help='For MC input: Cross section of process in nb')
+  parser.add_argument('--MCFilterEfficiency', default=1.0, type=float, help='For MC input: Filter efficiency of any MC filter (0.0 - 1.0)')
+  parser.add_argument('--MCKFactor', default=1.0, type=float, help='For MC input: Additional multiplicitive fudge-factor to the supplied cross section.')
+  parser.add_argument('--MCIgnoreGeneratorWeights', action='store_true', help='For MC input: Flag to disregard any generator weights.')
+
   parser.add_argument('--maxEvents', type=int, help='Maximum number of events to process')
   parser.add_argument('--skipEvents",type=int, help="Number of events to skip')
   parser.add_argument('--loglevel', type=int, default=3, help='Verbosity level')
@@ -121,16 +145,20 @@ if __name__=='__main__':
   from AthenaConfiguration.MainServicesConfig import MainServicesCfg 
   cfg = MainServicesCfg(ConfigFlags)
 
-  from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
-  cfg.merge(ByteStreamReadCfg(ConfigFlags))
+  if ConfigFlags.Input.isMC:
+    from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
+    cfg.merge(PoolReadCfg(ConfigFlags))
+  else:
+    from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
+    cfg.merge(ByteStreamReadCfg(ConfigFlags))
+    cfg.merge(decodingCfg(ConfigFlags))
 
   histSvc = CompFactory.THistSvc()
   histSvc.Output += ["COSTSTREAM DATAFILE='" + args.outputHist + "' OPT='RECREATE'"]
   cfg.addService(histSvc)
 
-  cfg.merge(decodingCfg(ConfigFlags))
   cfg.merge(hltConfigSvcCfg(ConfigFlags))
-  cfg.merge(trigCostAnalysisCfg(ConfigFlags, args.baseWeight, args.useEBWeights))
+  cfg.merge(trigCostAnalysisCfg(ConfigFlags, args.baseWeight, args.useEBWeights, ConfigFlags.Input.isMC, readMCpayload(args)))
 
   # If you want to turn on more detailed messages ...
   # exampleMonitorAcc.getEventAlgo('ExampleMonAlg').OutputLevel = 2 # DEBUG
diff --git a/Trigger/TrigCost/TrigCostAnalysis/src/TrigCostAnalysis.cxx b/Trigger/TrigCost/TrigCostAnalysis/src/TrigCostAnalysis.cxx
index c3863ab59eb0799d95e61785ce4b11efe2a15768..979bef814aafd44627bd009c7a221d6f2796ff91 100644
--- a/Trigger/TrigCost/TrigCostAnalysis/src/TrigCostAnalysis.cxx
+++ b/Trigger/TrigCost/TrigCostAnalysis/src/TrigCostAnalysis.cxx
@@ -155,7 +155,7 @@ StatusCode TrigCostAnalysis::execute() {
   costData.setRosToRobMap(m_rosToRob);
   costData.setLb( context.eventID().lumi_block() );
   costData.setTypeMap( m_algTypeMap );
-  if (!m_enhancedBiasTool.name().empty()) {
+  if (!m_enhancedBiasTool.name().empty() && !m_enhancedBiasTool->isMC()) {
     double liveTime = m_enhancedBiasTool->getEBLiveTime(context);
     bool liveTimeIsPerEvent = true;
     if (liveTime == 0.0) { // Note: This comes from a direct "return 0.", hence no delta
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_pp_run3_v1.py
index 27cca2bb495336a897ed2a1bcefed77f2cd939c4..8ad7691ef99bbd4a8dde8fcf2593cca18beca60f 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_pp_run3_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_pp_run3_v1.py
@@ -148,8 +148,7 @@ def addP1Signatures():
 
     ]
     TriggerFlags.MonitorSlice.signatures   = TriggerFlags.MonitorSlice.signatures() + [
-          ChainProp(name='HLT_costmonitor_CostMonDS_L1All',        l1SeedThresholds=['FSNOSEED'], stream=['CostMonitoring'], groups=['RATE:Monitoring','BW:Other']),
-          ChainProp(name='HLT_timeburner_L1All', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=['PS:Online','RATE:DISCARD','BW:DISCARD']),
+        ChainProp(name='HLT_timeburner_L1All', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=['PS:Online','RATE:DISCARD','BW:DISCARD']),
 
     ]
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py
index 2ee2aed4fa9d4c6e18059a877fa510f3767dd5a0..236ad665a532cef5dbdd7e65bad7a45407e94d1c 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py
@@ -170,6 +170,7 @@ def setupMenu():
     TriggerFlags.StreamingSlice.signatures = [
     ]
     TriggerFlags.MonitorSlice.signatures   = [
+        ChainProp(name='HLT_costmonitor_CostMonDS_L1All',        l1SeedThresholds=['FSNOSEED'], stream=['CostMonitoring'], groups=['RATE:Monitoring','BW:Other']),
     ]
 
     # Random Seeded EB chains which select at the HLT based on L1 TBP bits