diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx
index ad1cd899055d16160254e4c7ea87265e41424deb..b483c121d2fcd801b0dc452983080ec0f1ea646f 100644
--- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx
@@ -310,61 +310,123 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_primary_vertex( const ElementLink< xAO
 }
 
 
+ElementLinkVector<xAOD::BTaggingContainer> TrigBjetBtagHypoAlgMT::collect_valid_links(
+    const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL, std::string tagger ) const {
+
+  ElementLinkVector<xAOD::BTaggingContainer> valid_bTaggingEL;
+  for (const ElementLink< xAOD::BTaggingContainer >& bTagLink : bTaggingEL) {
+    if ( not (*bTagLink)->auxdata<char>(tagger+"_isDefaults") ) { valid_bTaggingEL.push_back( bTagLink ); }
+  }
+  return valid_bTaggingEL;
+}
+
+
 StatusCode TrigBjetBtagHypoAlgMT::monitor_btagging( const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL ) const {
-  // Monitor flavor probabilites
-  CHECK( monitor_flavor_probabilities(bTaggingEL, "IP2D") );
-  CHECK( monitor_flavor_probabilities(bTaggingEL, "IP3D") );
+  // Monitor high-level tagger flavor probabilites
   CHECK( monitor_flavor_probabilities(bTaggingEL, "DL1r") );
   CHECK( monitor_flavor_probabilities(bTaggingEL, "rnnip") );
 
-  MONITOR_BTAG_AUX_VAR(JetFitter_N2Tpair, int, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitter_nVTX, int, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitter_nSingleTracks, int, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitter_nTracksAtVtx, int, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitter_mass, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitter_energyFraction, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitter_significance3d, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitter_deltaeta, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitter_deltaphi, float, bTaggingEL);
+  // Monitor JetFitter
   MONITOR_BTAG_AUX_VAR(JetFitter_isDefaults, char, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitter_deltaR, float, bTaggingEL);
+  auto validJetFitter_bTaggingEL = collect_valid_links(bTaggingEL, "JetFitter");
+  MONITOR_BTAG_AUX_VAR(JetFitter_N2Tpair, int, validJetFitter_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitter_nVTX, int, validJetFitter_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitter_nSingleTracks, int, validJetFitter_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitter_nTracksAtVtx, int, validJetFitter_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitter_mass, float, validJetFitter_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitter_energyFraction, float, validJetFitter_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitter_significance3d, float, validJetFitter_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitter_deltaeta, float, validJetFitter_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitter_deltaphi, float, validJetFitter_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitter_deltaR, float, validJetFitter_bTaggingEL);
+  auto monitor_group_for_JetFitter = Monitored::Group( m_monTool, 
+    monitor_for_JetFitter_N2Tpair, monitor_for_JetFitter_nVTX,
+    monitor_for_JetFitter_nSingleTracks, monitor_for_JetFitter_nTracksAtVtx,
+    monitor_for_JetFitter_mass, monitor_for_JetFitter_energyFraction,
+    monitor_for_JetFitter_significance3d, monitor_for_JetFitter_deltaeta,
+    monitor_for_JetFitter_deltaphi, monitor_for_JetFitter_deltaR
+  );
 
-  MONITOR_BTAG_AUX_VAR(SV1_NGTinSvx, int, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(SV1_masssvx, float, bTaggingEL);
+  // Monitor SV1
   MONITOR_BTAG_AUX_VAR(SV1_isDefaults, char, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(SV1_N2Tpair, int, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(SV1_efracsvx, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(SV1_deltaR, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(SV1_Lxy, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(SV1_L3d, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(SV1_significance3d, float, bTaggingEL);
+  auto validSV1_bTaggingEL = collect_valid_links(bTaggingEL, "SV1");
+  MONITOR_BTAG_AUX_VAR(SV1_NGTinSvx, int, validSV1_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(SV1_masssvx, float, validSV1_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(SV1_N2Tpair, int, validSV1_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(SV1_efracsvx, float, validSV1_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(SV1_deltaR, float, validSV1_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(SV1_Lxy, float, validSV1_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(SV1_L3d, float, validSV1_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(SV1_significance3d, float, validSV1_bTaggingEL);
+  auto monitor_group_for_SV1 = Monitored::Group( m_monTool, 
+    monitor_for_SV1_NGTinSvx, monitor_for_SV1_masssvx,
+    monitor_for_SV1_N2Tpair, monitor_for_SV1_efracsvx,
+    monitor_for_SV1_deltaR, monitor_for_SV1_Lxy,
+    monitor_for_SV1_L3d, monitor_for_SV1_significance3d
+  );
 
+  // Monitor IP2D
   MONITOR_BTAG_AUX_VAR(IP2D_isDefaults, char, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP2D_bu, double, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP2D_bc, double, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP2D_cu, double, bTaggingEL);
+  auto validIP2D_bTaggingEL = collect_valid_links(bTaggingEL, "IP2D");
+  CHECK( monitor_flavor_probabilities(validIP2D_bTaggingEL, "IP2D") );
+  MONITOR_BTAG_AUX_VAR(IP2D_bu, double, validIP2D_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(IP2D_bc, double, validIP2D_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(IP2D_cu, double, validIP2D_bTaggingEL);
+  auto monitor_group_for_IP2D = Monitored::Group( m_monTool, 
+    monitor_for_IP2D_bu, monitor_for_IP2D_bc, monitor_for_IP2D_cu
+  );
+
+  // Monitor IP3D
   MONITOR_BTAG_AUX_VAR(IP3D_isDefaults, char, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP3D_bu, double, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP3D_bc, double, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP3D_cu, double, bTaggingEL);
+  auto validIP3D_bTaggingEL = collect_valid_links(bTaggingEL, "IP3D");
+  CHECK( monitor_flavor_probabilities(validIP3D_bTaggingEL, "IP3D") );
+  MONITOR_BTAG_AUX_VAR(IP3D_bu, double, validIP3D_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(IP3D_bc, double, validIP3D_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(IP3D_cu, double, validIP3D_bTaggingEL);
+  auto monitor_group_for_IP3D = Monitored::Group( m_monTool, 
+    monitor_for_IP3D_bu, monitor_for_IP3D_bc, monitor_for_IP3D_cu
+  );
+  for ( const ElementLink< xAOD::BTaggingContainer >& bTagLink : validIP3D_bTaggingEL ) {
+    MONITOR_BTAG_AUX_TRACK_VAR(IP3D_valD0wrtPVofTracks, float);
+    MONITOR_BTAG_AUX_TRACK_VAR(IP3D_sigD0wrtPVofTracks, float);
+    MONITOR_BTAG_AUX_TRACK_VAR(IP3D_valZ0wrtPVofTracks, float);
+    MONITOR_BTAG_AUX_TRACK_VAR(IP3D_sigZ0wrtPVofTracks, float);
+
+    auto monitor_group_for_btag_track_vars = Monitored::Group( m_monTool,
+      monitor_for_IP3D_valD0wrtPVofTracks, monitor_for_IP3D_sigD0wrtPVofTracks,
+      monitor_for_IP3D_valZ0wrtPVofTracks, monitor_for_IP3D_sigZ0wrtPVofTracks
+    );
+  }
 
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_nTracks, int, bTaggingEL);
+  // Monitor JetFitterSecondaryVertex
   MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_isDefaults, char, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_mass, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_energy, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_energyFraction, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_displacement3d, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_displacement2d, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_maximumTrackRelativeEta, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumTrackRelativeEta, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageTrackRelativeEta, float, bTaggingEL);
+  auto validJFSV_bTaggingEL = collect_valid_links(bTaggingEL, "JetFitterSecondaryVertex");
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_nTracks, int, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_mass, float, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_energy, float, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_energyFraction, float, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_displacement3d, float, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_displacement2d, float, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_maximumTrackRelativeEta, float, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumTrackRelativeEta, float, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageTrackRelativeEta, float, validJFSV_bTaggingEL);
+  auto monitor_group_for_JFSV = Monitored::Group( m_monTool, 
+    monitor_for_JetFitterSecondaryVertex_nTracks,
+    monitor_for_JetFitterSecondaryVertex_mass,
+    monitor_for_JetFitterSecondaryVertex_energy,
+    monitor_for_JetFitterSecondaryVertex_energyFraction,
+    monitor_for_JetFitterSecondaryVertex_displacement3d,
+    monitor_for_JetFitterSecondaryVertex_displacement2d,
+    monitor_for_JetFitterSecondaryVertex_maximumTrackRelativeEta,
+    monitor_for_JetFitterSecondaryVertex_minimumTrackRelativeEta,
+    monitor_for_JetFitterSecondaryVertex_averageTrackRelativeEta
+  );
 
+  // Monitor general track information
   MONITOR_BTAG_AUX_VAR(maximumTrackRelativeEta, float, bTaggingEL);
   MONITOR_BTAG_AUX_VAR(minimumTrackRelativeEta, float, bTaggingEL);
   MONITOR_BTAG_AUX_VAR(averageTrackRelativeEta, float, bTaggingEL);
 
-
-
   // Monitor MV2c10
   auto monitor_for_MV2c10 = Monitored::Collection( "btag_MV2c10", bTaggingEL,
     [](const ElementLink< xAOD::BTaggingContainer >& bTagLink) { 
@@ -374,64 +436,17 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_btagging( const ElementLinkVector< xAO
     } );
 
   auto monitor_group_for_btagging = Monitored::Group( m_monTool, 
-    monitor_for_JetFitter_N2Tpair,
-    monitor_for_JetFitter_nVTX,
-    monitor_for_JetFitter_nSingleTracks,
-    monitor_for_JetFitter_nTracksAtVtx,
-    monitor_for_JetFitter_mass,
-    monitor_for_JetFitter_energyFraction,
-    monitor_for_JetFitter_significance3d,
-    monitor_for_JetFitter_deltaeta,
-    monitor_for_JetFitter_deltaphi,
     monitor_for_JetFitter_isDefaults,
-    monitor_for_JetFitter_deltaR,
-    monitor_for_SV1_NGTinSvx,
-    monitor_for_SV1_masssvx,
     monitor_for_SV1_isDefaults,
-    monitor_for_SV1_N2Tpair,
-    monitor_for_SV1_efracsvx,
-    monitor_for_SV1_deltaR,
-    monitor_for_SV1_Lxy,
-    monitor_for_SV1_L3d,
-    monitor_for_SV1_significance3d,
-    monitor_for_IP2D_bu,
     monitor_for_IP2D_isDefaults,
-    monitor_for_IP2D_bc,
-    monitor_for_IP2D_cu,
-    monitor_for_IP3D_bu,
     monitor_for_IP3D_isDefaults,
-    monitor_for_IP3D_bc,
-    monitor_for_IP3D_cu,
-    monitor_for_JetFitterSecondaryVertex_nTracks,
     monitor_for_JetFitterSecondaryVertex_isDefaults,
-    monitor_for_JetFitterSecondaryVertex_mass,
-    monitor_for_JetFitterSecondaryVertex_energy,
-    monitor_for_JetFitterSecondaryVertex_energyFraction,
-    monitor_for_JetFitterSecondaryVertex_displacement3d,
-    monitor_for_JetFitterSecondaryVertex_displacement2d,
-    monitor_for_JetFitterSecondaryVertex_maximumTrackRelativeEta,
-    monitor_for_JetFitterSecondaryVertex_minimumTrackRelativeEta,
-    monitor_for_JetFitterSecondaryVertex_averageTrackRelativeEta,
     monitor_for_maximumTrackRelativeEta,
     monitor_for_minimumTrackRelativeEta,
     monitor_for_averageTrackRelativeEta,
     monitor_for_MV2c10
   );
 
-
-  for ( const ElementLink< xAOD::BTaggingContainer >& bTagLink : bTaggingEL ) {
-    MONITOR_BTAG_AUX_TRACK_VAR(IP3D_valD0wrtPVofTracks, float);
-    MONITOR_BTAG_AUX_TRACK_VAR(IP3D_sigD0wrtPVofTracks, float);
-    MONITOR_BTAG_AUX_TRACK_VAR(IP3D_valZ0wrtPVofTracks, float);
-    MONITOR_BTAG_AUX_TRACK_VAR(IP3D_sigZ0wrtPVofTracks, float);
-
-    auto monitor_group_for_btag_track_vars = Monitored::Group( m_monTool,
-      monitor_for_IP3D_valD0wrtPVofTracks, monitor_for_IP3D_sigD0wrtPVofTracks,
-      monitor_for_IP3D_valZ0wrtPVofTracks, monitor_for_IP3D_sigZ0wrtPVofTracks
-    );
-  }
-
-
   return StatusCode::SUCCESS;
 }
 
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h
index 9b04198988673009c09e50d41d5e3c3f9ace8599..1991581b6a04f6584e36c389cd92c9eaa5746460 100644
--- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h
@@ -51,6 +51,8 @@ class TrigBjetBtagHypoAlgMT : public TrigBjetHypoAlgBaseMT {
   virtual StatusCode monitor_tracks( const ElementLinkVector< xAOD::TrackParticleContainer >& trackELs ) const;
   virtual StatusCode monitor_primary_vertex( const ElementLink< xAOD::VertexContainer >& primVertexEL ) const;
   virtual StatusCode monitor_flavor_probabilities( const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL, const std::string& var_name) const;
+  virtual ElementLinkVector<xAOD::BTaggingContainer> collect_valid_links(
+      const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL, std::string tagger ) const;
   virtual StatusCode monitor_btagging( const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL ) const;
   
  private: