diff --git a/MooreOnlineConf/options/calo.py b/MooreOnlineConf/options/calo.py
index 8c48e2f4a95774f7c1cb5bec8902e854051b4782..388bd28fd49cb9b71d82e703d192d844760953a6 100644
--- a/MooreOnlineConf/options/calo.py
+++ b/MooreOnlineConf/options/calo.py
@@ -9,13 +9,14 @@
 # or submit itself to any jurisdiction.                                       #
 #############################################################################
 from PyConf.application import default_raw_banks, default_raw_event
+from PyConf.control_flow import CompositeNode, NodeLogic
 from Moore import options, run_reconstruction
-from PyConf.Algorithms import CaloFutureRawToDigits
+from PyConf.Algorithms import CaloFutureRawToDigits, HltRoutingBitsFilter, OdinTypesFilter
 from RecoConf.calorimeter_reconstruction import make_digits, make_clusters, make_digits
 from RecoConf.reconstruction_objects import reconstruction
 from RecoConf.hlt2_global_reco import reconstruction as hlt2_reconstruction, make_calo_only_reconstruction
 from Moore.config import Reconstruction
-from RecoConf.calo_data_monitoring import monitor_calo_digits, monitor_calo_clusters, monitor_calo_time_alignment, monitor_calo_pedestal
+from RecoConf.calo_data_monitoring import monitor_calo_digits, monitor_calo_clusters, monitor_calo_time_alignment, monitor_calo_pedestal, monitor_calo_led
 from RecoConf.standalone import reco_prefilters
 from Hlt2Conf.lines.monitoring.pi0_line import pi0_monitoring
 
@@ -40,17 +41,55 @@ def calo_moni():
         "ecalClusters": ecalClusters,
     }
 
-    data += monitor_calo_digits(
+    rb_phys_filter = HltRoutingBitsFilter(
+        name="RBFilterPhys",
+        RawBanks=default_raw_banks('HltRoutingBits'),
+        RequireMask=(1 << 14, 0, 0),  # Physics events
+        PassOnError=False)
+
+    rb_calib_filter = HltRoutingBitsFilter(
+        name="RBFilterCalib",
+        RawBanks=default_raw_banks('HltRoutingBits'),
+        RequireMask=(1 << 10, 0, 0),  # Calibration events
+        PassOnError=False)
+
+    # digit monitor
+    digitMonitor = monitor_calo_digits(
         calo, adcFilterEcal=-100, adcFilterHcal=-100, spectrum=False)
-    data += monitor_calo_clusters(calo, split_clusters=False)
-    data += monitor_calo_time_alignment(
+
+    # cluster monitor
+    clusterMonitor = monitor_calo_clusters(calo, split_clusters=False)
+
+    # TAE monitor
+    TAEMonitor = monitor_calo_time_alignment(
         calo, adcFilterEcal=-100, adcFilterHcal=-100)
-    data += monitor_calo_pedestal(calo, adcFilterEcal=-100, adcFilterHcal=-100)
 
+    # pedestal monitor
+    pedestalMonitor = monitor_calo_pedestal(calo, adcFilterEcal=-100, adcFilterHcal=-100)
+
+    # pi0 monitoring
     with reconstruction.bind(from_file=False),\
         hlt2_reconstruction.bind(make_reconstruction=make_calo_only_reconstruction),\
         make_digits.bind(calo_raw_bank=True):
-        data += pi0_monitoring(name="calo_only_pi0_moni")
+        pi0Monitor = pi0_monitoring(name="calo_only_pi0_moni")
+
+    data += [
+        CompositeNode(
+            "Phys", [rb_phys_filter, clusterMonitor[0], digitMonitor[0], digitMonitor[1], TAEMonitor[0], TAEMonitor[1], pedestalMonitor[0], pedestalMonitor[1], pi0Monitor[0], pi0Monitor[1]],
+            combine_logic=NodeLogic.LAZY_AND,
+            force_order=True)
+    ]
+
+    # LED monitor
+    LEDMonitor = monitor_calo_led(calo)
+
+    data += [
+        CompositeNode(
+            "Calib", [rb_calib_filter, LEDMonitor[0], LEDMonitor[1]],
+            combine_logic=NodeLogic.LAZY_AND,
+            force_order=True)
+    ]
+
     return Reconstruction('calo_moni', data, reco_prefilters(gec=False))