diff --git a/Control/AthenaConfiguration/python/AllConfigFlags.py b/Control/AthenaConfiguration/python/AllConfigFlags.py
index 32c87029a88f1744b10f2f8e647917e1e6b844cf..0bd90c5e1a8fc6492011138885fea0131e17078f 100644
--- a/Control/AthenaConfiguration/python/AllConfigFlags.py
+++ b/Control/AthenaConfiguration/python/AllConfigFlags.py
@@ -196,9 +196,8 @@ def _createCfgFlags():
     _addFlagsCategory(acf,"BTagging",__btagging, 'BTagging')
 
     def __dq():
-        from AthenaMonitoring.DQConfigFlags import createDQConfigFlags, createComplexDQConfigFlags
+        from AthenaMonitoring.DQConfigFlags import createDQConfigFlags
         dqf = createDQConfigFlags()
-        dqf.join( createComplexDQConfigFlags() )
         return dqf
     _addFlagsCategory(acf, "DQ", __dq, 'AthenaMonitoring' )
 
diff --git a/Control/AthenaMonitoring/python/DQConfigFlags.py b/Control/AthenaMonitoring/python/DQConfigFlags.py
index bf7157de5b3573bc0c4f0522827401d79a61101b..08ce9be8d9a482e6a02983b8fe6450370481ebbb 100644
--- a/Control/AthenaMonitoring/python/DQConfigFlags.py
+++ b/Control/AthenaMonitoring/python/DQConfigFlags.py
@@ -34,9 +34,17 @@ def createDQConfigFlags():
     # temp thing for steering from inside old-style ...
     acf.addFlag('DQ.isReallyOldStyle', False)
 
+    # computed
+    acf.addFlag('DQ.Environment', getEnvironment )
+    acf.addFlag('DQ.DataType', getDataType )
+    
     # steering ...
     for flag in _steeringFlags + _lowLevelSteeringFlags:
-        acf.addFlag('DQ.Steering.' + flag, True)
+        arg = True
+        if flag == 'doJetTagMon':
+            arg = lambda x: x.DQ.DataType != 'cosmics' # noqa: E731
+        acf.addFlag('DQ.Steering.' + flag, arg)
+
     # HLT steering ...
     from PyUtils.moduleExists import moduleExists
     if moduleExists ('TrigHLTMonitoring'):
@@ -44,12 +52,6 @@ def createDQConfigFlags():
         acf.join(createHLTDQConfigFlags())
     return acf
 
-def createComplexDQConfigFlags():
-    acf=AthConfigFlags()
-    acf.addFlag('DQ.Environment', getEnvironment )
-    acf.addFlag('DQ.DataType', getDataType )
-    return acf
-
 def getDataType(flags):
     if flags.Input.isMC:
         return 'monteCarlo'
diff --git a/Control/AthenaMonitoring/test/test_run3dq_r22_esd_cosmics.sh b/Control/AthenaMonitoring/test/test_run3dq_r22_esd_cosmics.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e329e982014bfa0a3d4e26f9c2d83ca47ff65a3c
--- /dev/null
+++ b/Control/AthenaMonitoring/test/test_run3dq_r22_esd_cosmics.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# art-description: ESD->HIST, R22 cosmics data ESD
+# art-type: grid
+# art-memory: 3072
+# art-include: master/Athena
+# art-output: ExampleMonitorOutput.root
+# art-output: log*
+
+art.py download Tier0ChainTests test_q220.sh
+ESDFILE=(./ref-*/myESD.pool.root)
+Run3DQTestingDriver.py 'Input.Files=["'${ESDFILE}'"]' DQ.Steering.doHLTMon=False > log.HIST_Creation 2>&1
+
+echo "art-result: $? HIST_Creation"
+rm -rf ref-*
+
+ArtPackage=$1
+ArtJobName=$2
+art.py download ${ArtPackage} ${ArtJobName}
+REFFILE=(./ref-*/ExampleMonitorOutput.root)
+hist_diff.sh ExampleMonitorOutput.root $REFFILE -x TIME_execute -i > log.HIST_Diff 2>&1
+echo "art-result: $? HIST_Diff"
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.cxx
index d18591933e2b7f128bb49c177b0376ea35f58e1c..732e53a50c501a28ab3682ca828eb570a7b49f66 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.cxx
@@ -413,8 +413,10 @@ StatusCode MuonTrackMonitorAlgorithm::fillHistograms(const EventContext& ctx) co
 
 	ATH_CHECK( analyseLowLevelMuonFeatures(*Muons, lumiBlockID) );
 	ATH_CHECK( analyseCombinedTracks(*Muons, lumiBlockID) );
-	ATH_CHECK( analyseZBosonCandidates(*Muons, lumiBlockID) );
-	ATH_CHECK( analyseJPsiCandidates(*Muons, lumiBlockID) );
+	if (dataType() != DataType_t::cosmics) {
+		ATH_CHECK( analyseZBosonCandidates(*Muons, lumiBlockID) );
+		ATH_CHECK( analyseJPsiCandidates(*Muons, lumiBlockID) );
+	}
 
 	return StatusCode::SUCCESS;
 }
diff --git a/Reconstruction/Jet/JetMonitoring/python/JetMonitoringStandard.py b/Reconstruction/Jet/JetMonitoring/python/JetMonitoringStandard.py
index 6a8d9200a3048abb869f782dd6ef6be3a0f13ac1..c04cef28d225b778b017dd8bcc6071acdd4a9a59 100644
--- a/Reconstruction/Jet/JetMonitoring/python/JetMonitoringStandard.py
+++ b/Reconstruction/Jet/JetMonitoring/python/JetMonitoringStandard.py
@@ -63,11 +63,6 @@ commonHistoSpecs = [
                 ] ),
 
 
-    SelectSpec( 'highJVF',
-                '0.3<JVF[0]', # JVF is a vector<float> for each jets. Here we cut on the 0th entry of this vector
-                FillerTools = [
-                    "pt",
-                ] ),
     # Selecting jets passing the LooseBad selection from the JetCleaningTool.
     SelectSpec( 'LooseBadJets',
                 'LooseBad', # this is not in the form 'min<x<max', so it will be assumed 'LooseBad' is an entry existing in JetStandardHistoSpecs.knownSelector
@@ -77,6 +72,15 @@ commonHistoSpecs = [
 
     ]
 
+# Separate these out because they cannot run in cosmics
+jvfHistosSpec = [
+    SelectSpec( 'highJVF',
+                '0.3<JVF[0]', # JVF is a vector<float> for each jets. Here we cut on the 0th entry of this vector
+                FillerTools = [
+                    "pt",
+                ] ),
+]
+
 
 topoHistosSpec = [
     # histos common to all topo jets
@@ -90,7 +94,7 @@ pflowHistosSpec = [
 
 
 
-def jetMonAlgConfig(  jetName, truthJetName='', trigger=''):
+def jetMonAlgConfig(  jetName, inputFlags, truthJetName='', trigger=''):
     """returns a specification of a JetMonitoringAlg (in the form of a JetMonAlgSpec dictionnary).
     """
     
@@ -107,6 +111,9 @@ def jetMonAlgConfig(  jetName, truthJetName='', trigger=''):
     # then add pre-defined lists as defined above :
     histoSpecs += commonHistoSpecs 
 
+    if inputFlags.DQ.DataType != 'cosmics':
+        histoSpecs += jvfHistosSpec
+
     if 'Topo' in jetName:
         histoSpecs += topoHistosSpec
     if 'PFlow' in jetName:
@@ -145,9 +152,9 @@ def standardJetMonitoring(inputFlags):
     # create a list of JetMonitoringAlg specifications
     jetAlgConfs = [
         # use the helper function defined above :
-        jetMonAlgConfig( "AntiKt4LCTopoJets", ),
+        jetMonAlgConfig( "AntiKt4LCTopoJets", inputFlags),
         #jetMonAlgConfig( "AntiKt4LCTopoJets", truthJetName="AntiKt4TruthJets"),     #How can we make sure truth jets are available ??
-        jetMonAlgConfig( "AntiKt4EMPFlowJets"),
+        jetMonAlgConfig( "AntiKt4EMPFlowJets", inputFlags),
         ]
     
     # schedule each JetMonitoringAlg by invoking the toAlg() methods of the config specification
diff --git a/Reconstruction/MissingETMonitoring/python/METMonitorAlgorithm.py b/Reconstruction/MissingETMonitoring/python/METMonitorAlgorithm.py
index d3aacf57fbf0bac1b27ded747c0c736333483ee0..934393e2f38623a8878f63308fcdb26f7257fe4d 100644
--- a/Reconstruction/MissingETMonitoring/python/METMonitorAlgorithm.py
+++ b/Reconstruction/MissingETMonitoring/python/METMonitorAlgorithm.py
@@ -72,16 +72,16 @@ def METMonitoringConfig(inputFlags):
     for mets in met_types:
         defineHistograms(METRefFinal_MonAlg, group,helper,mets)
 
+    if inputFlags.DQ.DataType != 'cosmics':
+        METPflow_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METPflow_MonAlg')   
+        pfmet_types = ["MET_PFlow","MET_PFlow_RefJet","MET_PFlow_Muon","MET_PFlow_RefEle","MET_PFlow_RefGamma","MET_PFlow_RefTau","MET_PFlow_PVSoftTrk"]
+        METPflow_MonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
+        METPflow_MonAlg.metKeys = pfmet_types
+        METPflow_MonAlg.alltrigger = True
 
-    METPflow_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METPflow_MonAlg')   
-    pfmet_types = ["MET_PFlow","MET_PFlow_RefJet","MET_PFlow_Muon","MET_PFlow_RefEle","MET_PFlow_RefGamma","MET_PFlow_RefTau","MET_PFlow_PVSoftTrk"]
-    METPflow_MonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
-    METPflow_MonAlg.metKeys = pfmet_types
-    METPflow_MonAlg.alltrigger = True
-
-    group = helper.addGroup(METPflow_MonAlg, "METMonitor", "MissingEt/AllTriggers/MET_AntiKt4EMPFlow/")
-    for mets in pfmet_types:
-        defineHistograms(METPflow_MonAlg, group,helper,mets)
+        group = helper.addGroup(METPflow_MonAlg, "METMonitor", "MissingEt/AllTriggers/MET_AntiKt4EMPFlow/")
+        for mets in pfmet_types:
+            defineHistograms(METPflow_MonAlg, group,helper,mets)
 
         
     METEMTopo_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METEMTopo_MonAlg')   
@@ -114,14 +114,15 @@ def METMonitoringConfig(inputFlags):
     for mets in met_types:
         defineHistograms(METRefFinal_XE30_MonAlg, group,helper,mets)
 
-    METPflow_XE30_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METPflow_XE30_MonAlg')
-    METPflow_XE30_MonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
-    METPflow_XE30_MonAlg.metTotalKey="FinalTrk"
-    METPflow_XE30_MonAlg.metKeys = pfmet_types
-    METPflow_XE30_MonAlg.dotrigger = True
-    group = helper.addGroup(METPflow_XE30_MonAlg,"METMonitor","MissingEt/TrigXE30/MET_AntiKt4EMPflow/")
-    for mets in pfmet_types:
-        defineHistograms(METPflow_XE30_MonAlg, group,helper,mets)
+    if inputFlags.DQ.DataType != 'cosmics':
+        METPflow_XE30_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METPflow_XE30_MonAlg')
+        METPflow_XE30_MonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
+        METPflow_XE30_MonAlg.metTotalKey="FinalTrk"
+        METPflow_XE30_MonAlg.metKeys = pfmet_types
+        METPflow_XE30_MonAlg.dotrigger = True
+        group = helper.addGroup(METPflow_XE30_MonAlg,"METMonitor","MissingEt/TrigXE30/MET_AntiKt4EMPflow/")
+        for mets in pfmet_types:
+            defineHistograms(METPflow_XE30_MonAlg, group,helper,mets)
 
     METCalo_XE30_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METCalo_XE30_MonAlg')
     METCalo_XE30_MonAlg.METCaloContainer="MET_Calo"
@@ -152,14 +153,15 @@ def METMonitoringConfig(inputFlags):
     for mets in met_types:
         defineHistograms(METRefFinal_METCut_MonAlg, group,helper,mets) 
    
-    METPflow_METCut_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METPflow_METCut_MonAlg')
-    METPflow_METCut_MonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
-    METPflow_METCut_MonAlg.metKeys = pfmet_types
-    METPflow_METCut_MonAlg.dometcut = True
-    METPflow_METCut_MonAlg.metcut = 80
-    group = helper.addGroup(METPflow_METCut_MonAlg,"METMonitor","MissingEt/CutMet80/MET_AntiKt4EMPflow/") 
-    for mets in pfmet_types:
-        defineHistograms(METPflow_METCut_MonAlg, group,helper,mets)
+    if inputFlags.DQ.DataType != 'cosmics':
+        METPflow_METCut_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METPflow_METCut_MonAlg')
+        METPflow_METCut_MonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
+        METPflow_METCut_MonAlg.metKeys = pfmet_types
+        METPflow_METCut_MonAlg.dometcut = True
+        METPflow_METCut_MonAlg.metcut = 80
+        group = helper.addGroup(METPflow_METCut_MonAlg,"METMonitor","MissingEt/CutMet80/MET_AntiKt4EMPflow/") 
+        for mets in pfmet_types:
+            defineHistograms(METPflow_METCut_MonAlg, group,helper,mets)
         
     METCalo_METCut_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METCalo_METCut_MonAlg')
     metcalo_types = [ "PEMB", "EMB", "PEME", "EME", "TILE", "HEC", "FCAL" ]
@@ -200,15 +202,16 @@ def METMonitoringConfig(inputFlags):
         defineHistograms(JetCleaning_METMonAlg, JetCleaningGroup,helper,mets)
         
 
-    PflowJetCleaning_METMonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'PflowJetCleaning_METMonAlg') 
-    PflowJetCleaning_METMonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
-    PflowJetCleaning_METMonAlg.metKeys = pfmet_types
-    PflowJetCleaning_METMonAlg.DoJetCleaning = True
-    PflowJetCleaning_METMonAlg.JetCleaningTool = jetCleaningTool
-    PflowJetCleaningGroup = helper.addGroup(PflowJetCleaning_METMonAlg,"METMonitor","MissingEt/Jetcleaning/MET_AntiKt4EMPflow/")    
-    PflowJetCleaning_METMonAlg.JetContainerName = "AntiKt4EMPFlowJets"
-    for mets in pfmet_types:
-         defineHistograms(PflowJetCleaning_METMonAlg, PflowJetCleaningGroup,helper,mets)
+    if inputFlags.DQ.DataType != 'cosmics':
+        PflowJetCleaning_METMonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'PflowJetCleaning_METMonAlg') 
+        PflowJetCleaning_METMonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
+        PflowJetCleaning_METMonAlg.metKeys = pfmet_types
+        PflowJetCleaning_METMonAlg.DoJetCleaning = True
+        PflowJetCleaning_METMonAlg.JetCleaningTool = jetCleaningTool
+        PflowJetCleaningGroup = helper.addGroup(PflowJetCleaning_METMonAlg,"METMonitor","MissingEt/Jetcleaning/MET_AntiKt4EMPflow/")    
+        PflowJetCleaning_METMonAlg.JetContainerName = "AntiKt4EMPFlowJets"
+        for mets in pfmet_types:
+            defineHistograms(PflowJetCleaning_METMonAlg, PflowJetCleaningGroup,helper,mets)
          
     METCaloJetCleaning_MonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'METCaloJetCleaning_MonAlg')   
     metcalo_types = [ "PEMB", "EMB", "PEME", "EME", "TILE", "HEC", "FCAL" ]
@@ -248,17 +251,18 @@ def METMonitoringConfig(inputFlags):
     for mets in met_types:
         defineHistograms(BadJets_METMonAlg, BadJetsGroup,helper,mets)
 
-    BadPFJets_METMonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'BadPFJets_METMonAlg')    
-    BadPFJets_METMonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
-    BadPFJets_METMonAlg.metKeys = pfmet_types
-    BadPFJets_METMonAlg.DoJetCleaning = True
-    BadPFJets_METMonAlg.alltrigger = True
-    BadPFJets_METMonAlg.DoBadJets = True
-    BadPFJets_METMonAlg.JetCleaningTool = jetCleaningTool
-    BadPFJets_METMonAlg.JetContainerName = "AntiKt4EMPFlowJets"
-    BadPFJetsGroup = helper.addGroup(BadPFJets_METMonAlg,"METMonitor","MissingEt/AllTriggers/BadJets/MET_AntiKt4EMPflow/")
-    for mets in pfmet_types:
-        defineHistograms(BadPFJets_METMonAlg, BadPFJetsGroup,helper,mets)
+    if inputFlags.DQ.DataType != 'cosmics':
+        BadPFJets_METMonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'BadPFJets_METMonAlg')    
+        BadPFJets_METMonAlg.METContainer="MET_Reference_AntiKt4EMPFlow"
+        BadPFJets_METMonAlg.metKeys = pfmet_types
+        BadPFJets_METMonAlg.DoJetCleaning = True
+        BadPFJets_METMonAlg.alltrigger = True
+        BadPFJets_METMonAlg.DoBadJets = True
+        BadPFJets_METMonAlg.JetCleaningTool = jetCleaningTool
+        BadPFJets_METMonAlg.JetContainerName = "AntiKt4EMPFlowJets"
+        BadPFJetsGroup = helper.addGroup(BadPFJets_METMonAlg,"METMonitor","MissingEt/AllTriggers/BadJets/MET_AntiKt4EMPflow/")
+        for mets in pfmet_types:
+            defineHistograms(BadPFJets_METMonAlg, BadPFJetsGroup,helper,mets)
 
 
     BadJets_CaloMETMonAlg = helper.addAlgorithm(CompFactory.METMonitoringAlg,'BadJets_CaloMETMonAlg')    
diff --git a/TileCalorimeter/TileMonitoring/python/TileJetMonitorAlgorithm.py b/TileCalorimeter/TileMonitoring/python/TileJetMonitorAlgorithm.py
index 91b7ea9172d3d767da513dcbc4b4c7e56e097f8b..5698c66ef42b0acdce86915302d56bccf10f0fbb 100644
--- a/TileCalorimeter/TileMonitoring/python/TileJetMonitorAlgorithm.py
+++ b/TileCalorimeter/TileMonitoring/python/TileJetMonitorAlgorithm.py
@@ -50,7 +50,7 @@ def TileJetMonitoringConfig(flags, **kwargs):
     DoEnergyDiffHistograms  = kwargs.get('DoEnergyDiffHistograms', tileJetMonAlg._descriptors['DoEnergyDiffHistograms'].default)
 
 
-    if not flags.DQ.DataType == 'heavyioncollision':
+    if flags.DQ.DataType not in ('heavyioncollisions', 'cosmics'):
 
         jvtTool = CompFactory.JetVertexTaggerTool()
         jetContainer = kwargs.get('JetContainer', tileJetMonAlg._descriptors['JetContainer'].default)