diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetOnlineMonitoringMTConfig.py b/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetOnlineMonitoringMTConfig.py
index 2c575e3ad3702e883c92d7abd80108a6e558e1ed..c73aa47f7dacc95ec31af0164e18da1a2928a28b 100755
--- a/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetOnlineMonitoringMTConfig.py
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetOnlineMonitoringMTConfig.py
@@ -3,9 +3,10 @@ from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
 
 class TrigBjetOnlineMonitoring(GenericMonitoringTool):
     def make_flavor_hists(self, tagger):
-      for probability in ['pb','pc','pu']:
-        self.defineHistogram('btag_'+tagger+'_'+probability, title=tagger+' '+probability.capitalize(), type='TH1F', path='EXPERT', xbins=100, xmin=0, xmax=1)
-      self.defineHistogram('btag_'+tagger+'_llr', title=tagger+' LLR', type='TH1F', path='EXPERT', xbins=100, xmin=-10, xmax=50)
+        self.defineHistogram('btag_'+tagger+'_pb', title=tagger+': Probability jets are b-jets', type='TH1F', path='EXPERT', xbins=100, xmin=0, xmax=1)
+        self.defineHistogram('btag_'+tagger+'_pc', title=tagger+': Probability jets are char-jets', type='TH1F', path='EXPERT', xbins=100, xmin=0, xmax=1)
+        self.defineHistogram('btag_'+tagger+'_pu', title=tagger+': Probability jets are light-jets', type='TH1F', path='EXPERT', xbins=100, xmin=0, xmax=1)
+        self.defineHistogram('btag_'+tagger+'_llr', title=tagger+': Log(P_{b}/P_{light}), Likelihood ratio between the b-jet and light-flavour jet hypotheses', type='TH1F', path='EXPERT', xbins=100, xmin=-10, xmax=50)
 
 
     def __init__ (self, name="TrigBjetOnlineMonitoring"):
@@ -13,98 +14,187 @@ class TrigBjetOnlineMonitoring(GenericMonitoringTool):
         self.name = "TrigBjetOnlineMonitoring"
         self.HistPath = self.name
         default_bin_count = 100
-        TH1F_opts = { 'type':'TH1F', 'path':'EXPERT' }
 
         # Event Histograms
-        self.defineHistogram('track_count', title="Number of Tracks", xbins = 100, xmin=0, xmax=100, **TH1F_opts)
-        self.defineHistogram('jet_count', title="Number of Jets", xbins = 20, xmin=0, xmax=20, **TH1F_opts)
-        self.defineHistogram('vertex_count', title="Number of Vertices", xbins = 200, xmin=0, xmax=200, **TH1F_opts)
+        self.defineHistogram('track_count', title="Number of Tracks per Trigger Decision", xbins = 100, xmin=0, xmax=100, path='EXPERT', type='TH1I')
+        self.defineHistogram('jet_count', title="Number of Jets Considered for B-Tagging", xbins = 20, xmin=0, xmax=20, path='EXPERT', type='TH1I')
+        self.defineHistogram('vertex_count', title="Number of Primary Vertex Candidates per Event", xbins = 200, xmin=0, xmax=200, path='EXPERT', type='TH1I')
 
         # Primary Vertex Histogram
-        self.defineHistogram('primVtx_x', title="Primary Vertex X", xbins = default_bin_count, xmin=-2, xmax=2, **TH1F_opts)
-        self.defineHistogram('primVtx_y', title="Primary Vertex Y", xbins = default_bin_count, xmin=-2, xmax=2, **TH1F_opts)
-        self.defineHistogram('primVtx_z', title="Primary Vertex Z", xbins = default_bin_count, xmin=-300, xmax=300, **TH1F_opts)
+        self.defineHistogram('primVtx_x', title="Primary Vertex X", xbins = default_bin_count, xmin=-2, xmax=2, path='EXPERT', type='TH1F')
+        self.defineHistogram('primVtx_y', title="Primary Vertex Y", xbins = default_bin_count, xmin=-2, xmax=2, path='EXPERT', type='TH1F')
+        self.defineHistogram('primVtx_z', title="Primary Vertex Z", xbins = default_bin_count, xmin=-300, xmax=300, path='EXPERT', type='TH1F')
 
         ## Track Histograms
-        self.defineHistogram('track_Et', title="Track Transverse Energy;E_{T} (GeV)", xbins = default_bin_count, xmin=0, xmax=200, **TH1F_opts)
-        self.defineHistogram('track_eta', title="Track #eta;#eta", xbins = default_bin_count, xmin=-5, xmax=5, **TH1F_opts)
-        self.defineHistogram('track_phi', title="Track #phi;#phi", xbins = default_bin_count, xmin=-3.5, xmax=3.5, **TH1F_opts)
+        self.defineHistogram('track_Et', title="Track Transverse Energy;E_{T} (GeV)", xbins = default_bin_count, xmin=0, xmax=200, path='EXPERT', type='TH1F')
+        self.defineHistogram('track_eta', title="Track #eta;#eta", xbins = default_bin_count, xmin=-5, xmax=5, path='EXPERT', type='TH1F')
+        self.defineHistogram('track_phi', title="Track #phi;#phi", xbins = default_bin_count, xmin=-3.5, xmax=3.5, path='EXPERT', type='TH1F')
         self.defineHistogram('track_eta,track_phi', path='EXPERT', type='TH2F', title="Track #eta vs #phi;#eta;#phi",
                              xbins = default_bin_count, xmin=-5, xmax=5, ybins = default_bin_count, ymin=-4, ymax=4)
-        self.defineHistogram('track_d0', title="Track d_{0};d_{0} (mm)", xbins = default_bin_count, xmin=-5, xmax=5, **TH1F_opts)
-        self.defineHistogram('track_d0err', title="Track d_{0} Error;d_{0} Error (mm)", xbins = default_bin_count, xmin=0, xmax=10, **TH1F_opts)
-        self.defineHistogram('track_d0sig', title="Track d_{0} Significance;d_{0} #sigma", xbins = default_bin_count, xmin=-100, xmax=100, **TH1F_opts)
-        self.defineHistogram('track_z0', title="Track z_{0};z_{0} (mm)", xbins = default_bin_count, xmin=-200, xmax=200, **TH1F_opts)
-        self.defineHistogram('track_z0err', title="Track z_{0} Error;z_{0} Error (mm)", xbins = default_bin_count, xmin=0, xmax=10, **TH1F_opts)
-        self.defineHistogram('track_z0sig', title="Track z_{0} Significance;z_{0} #sigma", xbins = default_bin_count, xmin=-1000, xmax=1000, **TH1F_opts)
+        self.defineHistogram('track_d0', title="Track d_{0};d_{0} (mm)", xbins = default_bin_count, xmin=-5, xmax=5, path='EXPERT', type='TH1F')
+        self.defineHistogram('track_d0err', title="Track d_{0} Error;d_{0} Error (mm)", xbins = default_bin_count, xmin=0, xmax=10, path='EXPERT', type='TH1F')
+        self.defineHistogram('track_d0sig', title="Track d_{0} Significance;d_{0} #sigma", xbins = default_bin_count, xmin=-100, xmax=100, path='EXPERT', type='TH1F')
+        self.defineHistogram('track_z0', title="Track z_{0};z_{0} (mm)", xbins = default_bin_count, xmin=-200, xmax=200, path='EXPERT', type='TH1F')
+        self.defineHistogram('track_z0err', title="Track z_{0} Error;z_{0} Error (mm)", xbins = default_bin_count, xmin=0, xmax=10, path='EXPERT', type='TH1F')
+        self.defineHistogram('track_z0sig', title="Track z_{0} Significance;z_{0} #sigma", xbins = default_bin_count, xmin=-1000, xmax=1000, path='EXPERT', type='TH1F')
 
         # Jet Histograms
-        self.defineHistogram('jet_pt', title="Jet Transverse Momentum;p_{T} (GeV)", xbins = default_bin_count, xmin=0, xmax=1000, **TH1F_opts)
-        self.defineHistogram('jet_eta', title="Jet #eta;#eta", xbins = default_bin_count, xmin=-5, xmax=5, **TH1F_opts)
-        self.defineHistogram('jet_phi', title="Jet #phi;#phi", xbins = default_bin_count, xmin=-3.5, xmax=3.5, **TH1F_opts)
+        self.defineHistogram('jet_pt', title="Jet Transverse Momentum;p_{T} (GeV)", xbins = default_bin_count, xmin=0, xmax=1000, path='EXPERT', type='TH1F')
+        self.defineHistogram('jet_eta', title="Jet #eta;#eta", xbins = default_bin_count, xmin=-5, xmax=5, path='EXPERT', type='TH1F')
+        self.defineHistogram('jet_phi', title="Jet #phi;#phi", xbins = default_bin_count, xmin=-3.5, xmax=3.5, path='EXPERT', type='TH1F')
         self.defineHistogram('jet_eta,jet_phi', path='EXPERT', type='TH2F', title="Jet #eta vs #phi;#eta;#phi",
                              xbins = default_bin_count, xmin=-5, xmax=5, ybins = default_bin_count, ymin=-4, ymax=4)
 
+        self.defineHistogram('Bjet_pt', title="B-Tagged Jet Transverse Momentum;p_{T} (GeV)", xbins = default_bin_count, xmin=0, xmax=1000, path='EXPERT', type='TH1F')
+        self.defineHistogram('Bjet_eta', title="B-Tagged Jet #eta;#eta", xbins = default_bin_count, xmin=-5, xmax=5, path='EXPERT', type='TH1F')
+        self.defineHistogram('Bjet_phi', title="B-Tagged Jet #phi;#phi", xbins = default_bin_count, xmin=-3.5, xmax=3.5, path='EXPERT', type='TH1F')
+        self.defineHistogram('Bjet_eta,Bjet_phi', path='EXPERT', type='TH2F', title="B-Tagged Jet #eta vs #phi;#eta;#phi",
+                             xbins = default_bin_count, xmin=-5, xmax=5, ybins = default_bin_count, ymin=-4, ymax=4)
+
+        self.defineHistogram('jet_bjet_delta_pt', title="Transverse Momentum Difference Between Jet and B-Tagged Jet;#Delta p_{T} (GeV)", xbins = default_bin_count, xmin=0, xmax=1000, path='EXPERT', type='TH1F')
+        self.defineHistogram('jet_bjet_delta_eta', title="#eta Difference Between Jet and B-Tagged Jet;#Delta #eta", xbins = default_bin_count, xmin=-5, xmax=5, path='EXPERT', type='TH1F')
+        self.defineHistogram('jet_bjet_delta_phi', title="#phi Difference Between Jet and B-Tagged Jet;#phi", xbins = default_bin_count, xmin=-3.5, xmax=3.5, path='EXPERT', type='TH1F')
+        self.defineHistogram('jet_bjet_delta_eta,jet_phi', path='EXPERT', type='TH2F', title="#Delta #eta vs #Delta #phi for Jet and B-Tagged Jet;#Delta #eta;#Delta #phi",
+                             xbins = default_bin_count, xmin=-5, xmax=5, ybins = default_bin_count, ymin=-4, ymax=4)
+
 
         # B-Tagging Histograms
         for tagger in ['IP2D', 'IP3D', 'DL1r', 'rnnip']: self.make_flavor_hists(tagger)
 
-        self.defineHistogram('btag_MV2c10', title="MV2c10", xbins = default_bin_count, xmin=-1, xmax=1, **TH1F_opts)
-
-
-        aux_variables_list = [ # title, xmin, xmax, xbins, plottype
-          ('JetFitter_N2Tpair', 0, 100, 100, 'TH1I'),
-          ('JetFitter_nVTX', 0, 50, 50, 'TH1I'),
-          ('JetFitter_nSingleTracks', 0, 50, 50, 'TH1I'),
-          ('JetFitter_nTracksAtVtx', 0, 50, 50, 'TH1I'),
-          ('JetFitter_mass', 0, 20000, 1000, 'TH1F'),
-          ('JetFitter_energyFraction', 0, 1.1, 100, 'TH1F'),
-          ('JetFitter_significance3d', 0, 100, 100, 'TH1F'),
-          ('JetFitter_deltaeta', 0, 2, 100, 'TH1F'),
-          ('JetFitter_deltaphi', 0, 2, 100, 'TH1F'),
-          ('JetFitter_isDefaults', 0, 2, 2, 'TH1I'),
-          ('JetFitter_deltaR', 0, 2, 100, 'TH1F'),
-
-          ('SV1_NGTinSvx', 0, 100, 100, 'TH1I'),
-          ('SV1_masssvx', 0, 10000, 1000, 'TH1F'),
-          ('SV1_isDefaults', 0, 2, 2, 'TH1I'),
-          ('SV1_N2Tpair', 0, 50, 50, 'TH1I'),
-          ('SV1_efracsvx', 0, 1.1, 100, 'TH1F'),
-          ('SV1_deltaR', 0, 2, 100, 'TH1F'),
-          ('SV1_Lxy', 0, 100, 100, 'TH1F'),
-          ('SV1_L3d', 0, 100, 100, 'TH1F'),
-          ('SV1_significance3d', 0, 50, 100, 'TH1F'),
-
-          ('IP2D_isDefaults', 0, 2, 2, 'TH1I'),
-          ('IP2D_bu', 0, 50, 100, 'TH1F'),
-          ('IP2D_bc', 0, 50, 100, 'TH1F'),
-          ('IP2D_cu', 0, 50, 100, 'TH1F'),
-          ('IP3D_isDefaults', 0, 2, 2, 'TH1I'),
-          ('IP3D_bu', 0, 50, 100, 'TH1F'),
-          ('IP3D_bc', 0, 50, 100, 'TH1F'),
-          ('IP3D_cu', 0, 50, 100, 'TH1F'),
-          
-          ('JetFitterSecondaryVertex_nTracks', 0, 50, 50, 'TH1I'),
-          ('JetFitterSecondaryVertex_isDefaults', 0, 2, 2, 'TH1I'),
-          ('JetFitterSecondaryVertex_mass', 0, 1e4, 100, 'TH1F'),
-          ('JetFitterSecondaryVertex_energy', 0, 1e6, 100, 'TH1F'),
-          ('JetFitterSecondaryVertex_energyFraction', 0, 1.1, 100, 'TH1F'),
-          ('JetFitterSecondaryVertex_displacement3d', 0, 500, 100, 'TH1F'),
-          ('JetFitterSecondaryVertex_displacement2d', 0, 500, 100, 'TH1F'),
-          ('JetFitterSecondaryVertex_maximumTrackRelativeEta', 0, 8, 100, 'TH1F'),
-          ('JetFitterSecondaryVertex_minimumTrackRelativeEta', 0, 8, 100, 'TH1F'),
-          ('JetFitterSecondaryVertex_averageTrackRelativeEta', 0, 8, 100, 'TH1F'),
-
-          ('maximumTrackRelativeEta', 0, 8, 100, 'TH1F'),
-          ('minimumTrackRelativeEta', 0, 8, 100, 'TH1F'),
-          ('averageTrackRelativeEta', 0, 8, 100, 'TH1F')
-        ]
-
-        for title, xmin, xmax, xbins, plottype in aux_variables_list:
-            self.defineHistogram(title, title=title, xmin=xmin, xmax=xmax, xbins=xbins, type=plottype, path='EXPERT')
-
-        self.defineHistogram('IP3D_valD0wrtPVofTracks', title="Track d_{0} w/ Respect to PV of Tracks of IP3D;d_{0} (mm)", xmin=-2, xmax=2, xbins = default_bin_count, **TH1F_opts)
-        self.defineHistogram('IP3D_sigD0wrtPVofTracks', title="Track d_{0} Significance w/ Respect to PV of Tracks of IP3D;d_{0} #sigma", xmin=-100, xmax=100, xbins = default_bin_count, **TH1F_opts)
-        self.defineHistogram('IP3D_valZ0wrtPVofTracks', title="Track z_{0} w/ Respect to PV of Tracks of IP3D;z_{0} (mm)", xmin=-2, xmax=2, xbins = default_bin_count, **TH1F_opts)
-        self.defineHistogram('IP3D_sigZ0wrtPVofTracks', title="Track z_{0} Significance w/ Respect to PV of Tracks of IP3D;z_{0} #sigma", xmin=-100, xmax=100, xbins = default_bin_count, **TH1F_opts)
+        self.defineHistogram('MV2c10_discriminant', title="MV2c10 Score", xbins = default_bin_count, xmin=-1, xmax=1, path='EXPERT', type='TH1F')
+
+
+        self.defineHistogram('JetFitter_N2Tpair',
+            title='JetFitter: Number of 2-Track Pairs',
+            path='EXPERT', type='TH1I', xbins=100, xmin=0, xmax=100)
+        self.defineHistogram('JetFitter_nVTX',
+            title='JetFitter: Number of Vertices Used',
+            path='EXPERT', type='TH1I', xbins=50, xmin=0, xmax=50)
+        self.defineHistogram('JetFitter_nSingleTracks',
+            title='JetFitter: Number of Single Tracks',
+            path='EXPERT', type='TH1I', xbins=50, xmin=0, xmax=50)
+        self.defineHistogram('JetFitter_nTracksAtVtx',
+            title='JetFitter: Number of Tracks Associated with Vertex',
+            path='EXPERT', type='TH1I', xbins=50, xmin=0, xmax=50)
+        self.defineHistogram('JetFitter_mass',
+            title='JetFitter: Invariant Mass of All Tracks Associated to Vertex',
+            path='EXPERT', type='TH1F', xbins=1000, xmin=0, xmax=20000)
+        self.defineHistogram('JetFitter_energyFraction',
+            title='JetFitter: Fraction of Charged Jet Energy in Secondary Vertices',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=1.1)
+        self.defineHistogram('JetFitter_significance3d',
+            title='JetFitter: Significance-3D',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=100)
+        self.defineHistogram('JetFitter_deltaeta',
+            title='JetFitter: #Delta #eta Between Jet and Track Momentum Sum',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=2)
+        self.defineHistogram('JetFitter_deltaphi',
+            title='JetFitter: #Delta #phi Between Jet and Track Momentum Sum',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=2)
+        self.defineHistogram('JetFitter_isDefaults',
+            title='JetFitter: Fraction of Defaulted Jets; 1 -> Jet Has Defaulted, 0 -> Jet is Valid',
+            path='EXPERT', type='TH1I', xbins=2, xmin=0, xmax=2)
+        self.defineHistogram('JetFitter_deltaR',
+            title='JetFitter: #Delta R Between Jet and Track Momentum Sum',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=2)
+
+        self.defineHistogram('SV1_NGTinSvx',
+            title='SV1: Number of "Good" Tracks in Vertex',
+            path='EXPERT', type='TH1I', xbins=100, xmin=0, xmax=100)
+        self.defineHistogram('SV1_masssvx',
+            title='SV1: Invariant Mass of All Tracks Associated to Vertex',
+            path='EXPERT', type='TH1F', xbins=1000, xmin=0, xmax=10000)
+        self.defineHistogram('SV1_isDefaults',
+            title='SV1: Fraction of Defaulted Jets; 1 -> Jet Has Defaulted, 0 -> Jet is Valid',
+            path='EXPERT', type='TH1I', xbins=2, xmin=0, xmax=2)
+        self.defineHistogram('SV1_N2Tpair',
+            title='SV1: Number of 2-Track Pairs',
+            path='EXPERT', type='TH1I', xbins=50, xmin=0, xmax=50)
+        self.defineHistogram('SV1_efracsvx',
+            title='SV1: Ratio of Energy in Vertex Tracks to All Tracks in Jet ',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=1.1)
+        self.defineHistogram('SV1_deltaR',
+            title='SV1: #Delta R Between Jet and Track Momentum Sum',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=2)
+        self.defineHistogram('SV1_Lxy',
+            title='SV1: Transverse Distance Between Primary and Secondary Vertices',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=100)
+        self.defineHistogram('SV1_L3d',
+            title='SV1: Total Distance Between Primary and Secondary Vertices',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=100)
+        self.defineHistogram('SV1_significance3d',
+            title='SV1: Significance-3D',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=50)
+
+        self.defineHistogram('IP2D_isDefaults',
+            title='IP2D_isDefaults',
+            path='EXPERT', type='TH1I', xbins=2, xmin=0, xmax=2)
+        self.defineHistogram('IP2D_bu',
+            title='IP2D: Log(P_{b}/P_{light}), Likelihood ratio between the b-jet and light-flavour jet hypotheses',
+            path='EXPERT', type='TH1F', xbins=100, xmin=-10, xmax=50)
+        self.defineHistogram('IP2D_bc',
+            title='IP2D: Log(P_{b}/P_{c}), Likelihood ratio between the b-jet and c-jet hypotheses',
+            path='EXPERT', type='TH1F', xbins=100, xmin=-10, xmax=50)
+        self.defineHistogram('IP2D_cu',
+            title='IP2D: Log(P_{c}/P_{light}), Likelihood ratio between the c-jet and light-flavour jet hypotheses',
+            path='EXPERT', type='TH1F', xbins=100, xmin=-10, xmax=50)
+
+        self.defineHistogram('IP3D_isDefaults',
+            title='IP3D_isDefaults',
+            path='EXPERT', type='TH1I', xbins=2, xmin=0, xmax=2)
+        self.defineHistogram('IP3D_bu',
+            title='IP3D: Log(P_{b}/P_{light}), Likelihood ratio between the b-jet and light-flavour jet hypotheses',
+            path='EXPERT', type='TH1F', xbins=100, xmin=-10, xmax=50)
+        self.defineHistogram('IP3D_bc',
+            title='IP3D: Log(P_{b}/P_{c}), Likelihood ratio between the b-jet and c-jet hypotheses',
+            path='EXPERT', type='TH1F', xbins=100, xmin=-10, xmax=50)
+        self.defineHistogram('IP3D_cu',
+            title='IP3D: Log(P_{c}/P_{light}), Likelihood ratio between the c-jet and light-flavour jet hypotheses',
+            path='EXPERT', type='TH1F', xbins=100, xmin=-10, xmax=50)
+                  
+        self.defineHistogram('JetFitterSecondaryVertex_nTracks',
+            title='JFSV: Number of Tracks',
+            path='EXPERT', type='TH1I', xbins=50, xmin=0, xmax=50)
+        self.defineHistogram('JetFitterSecondaryVertex_isDefaults',
+            title='JFSV: Fraction of Defaulted Jets; 1 -> Jet Has Defaulted, 0 -> Jet is Valid',
+            path='EXPERT', type='TH1I', xbins=2, xmin=0, xmax=2)
+        self.defineHistogram('JetFitterSecondaryVertex_mass',
+            title='JFSV: Invariant Mass of All Tracks Associated to Vertex',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=1e4)
+        self.defineHistogram('JetFitterSecondaryVertex_energy',
+            title='JFSV: Energy of All Tracks Associated to Vertex',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=1e6)
+        self.defineHistogram('JetFitterSecondaryVertex_energyFraction',
+            title='JFSV: Fraction of Charged Jet Energy in Secondary Vertices',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=1.1)
+        self.defineHistogram('JetFitterSecondaryVertex_displacement3d',
+            title='JFSV: Total Distance Between Primary and Secondary Vertices',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=500)
+        self.defineHistogram('JetFitterSecondaryVertex_displacement2d',
+            title='JFSV: Transverse Distance Between Primary and Secondary Vertices',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=500)
+        self.defineHistogram('JetFitterSecondaryVertex_maximumTrackRelativeEta',
+            title='JFSV: Max #eta Between Track and Jet for Tracks from the SV',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=8)
+        self.defineHistogram('JetFitterSecondaryVertex_minimumTrackRelativeEta',
+            title='JFSV: Min #eta Between Track and Jet Vector for Tracks from the SV',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=8)
+        self.defineHistogram('JetFitterSecondaryVertex_averageTrackRelativeEta',
+            title='JFSV: Average #eta Between Track and Jet Vector for Tracks from the SV',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=8)
+        self.defineHistogram('JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta',
+            title='JFSV: Maximum #eta Between Track and Jet Vector for All Tracks from the Jet',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=8)
+        self.defineHistogram('JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta',
+            title='JFSV: Minimum #eta Between Track and Jet Vector for All Tracks from the Jet',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=8)
+        self.defineHistogram('JetFitterSecondaryVertex_averageAllJetTrackRelativeEta',
+            title='JFSV: Average #eta Between Track and Jet Vector for All Tracks from the Jet',
+            path='EXPERT', type='TH1F', xbins=100, xmin=0, xmax=8)
+
+
+        self.defineHistogram('IP3D_valD0wrtPVofTracks', title="Track d_{0} w/ Respect to PV of Tracks of IP3D;d_{0} (mm)", xmin=-2, xmax=2, xbins = default_bin_count, path='EXPERT', type='TH1F')
+        self.defineHistogram('IP3D_sigD0wrtPVofTracks', title="Track d_{0} Significance w/ Respect to PV of Tracks of IP3D;d_{0} #sigma", xmin=-100, xmax=100, xbins = default_bin_count, path='EXPERT', type='TH1F')
+        self.defineHistogram('IP3D_valZ0wrtPVofTracks', title="Track z_{0} w/ Respect to PV of Tracks of IP3D;z_{0} (mm)", xmin=-2, xmax=2, xbins = default_bin_count, path='EXPERT', type='TH1F')
+        self.defineHistogram('IP3D_sigZ0wrtPVofTracks', title="Track z_{0} Significance w/ Respect to PV of Tracks of IP3D;z_{0} #sigma", xmin=-100, xmax=100, xbins = default_bin_count, path='EXPERT', type='TH1F')
 
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx
index 21b28209fe94dbc94939628fda220274c0b9ca12..20ff9bf0502b01f0e65d4989cd80964fc2230f76 100644
--- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx
@@ -33,8 +33,7 @@ StatusCode TrigBjetBtagHypoAlgMT::initialize() {
 StatusCode TrigBjetBtagHypoAlgMT::execute( const EventContext& context ) const {
   ATH_MSG_DEBUG ( "Executing " << name() << "..." );
 
-  // ========================================================================================================================== 
-  //    ** Retrieve Ingredients 
+  // ========================================================================================================================== //    ** Retrieve Ingredients 
   // ========================================================================================================================== 
 
   // Read in previous Decisions made before running this Hypo Alg.
@@ -47,9 +46,6 @@ StatusCode TrigBjetBtagHypoAlgMT::execute( const EventContext& context ) const {
   CHECK( retrieveObjectFromEventView( context,trackELs,m_trackKey,prevDecisionContainer ) );
   ATH_MSG_DEBUG( "Retrieved " << trackELs.size() << " precision tracks..." );
 
-  // online monitoring for tracks
-  auto monitor_for_track_count = Monitored::Scalar( "track_count", trackELs.size() );
-  CHECK( monitor_tracks( trackELs ) );
 
   for ( const ElementLink< xAOD::TrackParticleContainer >& trackLink : trackELs )
     ATH_MSG_DEBUG( "   * pt=" << (*trackLink)->p4().Et() << 
@@ -62,10 +58,8 @@ StatusCode TrigBjetBtagHypoAlgMT::execute( const EventContext& context ) const {
   CHECK( retrieveCollectionFromNavigation( TrigCompositeUtils::featureString(), jetELs, prevDecisionContainer ) );  
   ATH_MSG_DEBUG( "Retrieved " << jetELs.size() << " Jets of key " << TrigCompositeUtils::featureString() );
 
-  // online monitoring for jets
-  auto monitor_for_jet_count = Monitored::Scalar( "jet_count", jetELs.size() );
-  CHECK( monitor_jets( jetELs ) );
-
+  // online monitoring for tracks, per decision
+  CHECK( monitor_tracks( context, prevDecisionContainer ) );
 
   // Retrieve Vertices
   ElementLinkVector< xAOD::VertexContainer > vertexELs;
@@ -76,9 +70,6 @@ StatusCode TrigBjetBtagHypoAlgMT::execute( const EventContext& context ) const {
   auto monitor_for_vertex_count = Monitored::Scalar( "vertex_count", vertexELs.size() );  
 
 
-  auto monitor_group_for_events = Monitored::Group( m_monTool, monitor_for_track_count, monitor_for_jet_count, monitor_for_vertex_count );
-
-
   // ==========================================================================================================================
   //    ** Prepare Outputs
   // ==========================================================================================================================
@@ -96,6 +87,7 @@ StatusCode TrigBjetBtagHypoAlgMT::execute( const EventContext& context ) const {
   // Create output decisions
   ATH_MSG_DEBUG("Creating Output Decisions and Linking Stuff to it");
   std::vector< TrigCompositeUtils::Decision* > newDecisions;
+  ElementLinkVector< xAOD::JetContainer > all_bTaggedJetELs;
   for ( unsigned int index(0); index<nDecisions; index++ ) {
     TrigCompositeUtils::Decision *toAdd = TrigCompositeUtils::newDecisionIn( outputDecisions,
 									     prevDecisionContainer->at(index),
@@ -115,6 +107,7 @@ StatusCode TrigBjetBtagHypoAlgMT::execute( const EventContext& context ) const {
     }
 
     toAdd->setObjectLink< xAOD::JetContainer >( TrigCompositeUtils::featureString(),bTaggedJetEL.front() );     
+    all_bTaggedJetELs.push_back( bTaggedJetEL.front() );
 
 
 
@@ -148,6 +141,18 @@ StatusCode TrigBjetBtagHypoAlgMT::execute( const EventContext& context ) const {
     newDecisions.push_back( toAdd );
   }
 
+  // online monitoring for jets
+  auto monitor_for_jet_count = Monitored::Scalar( "jet_count", jetELs.size() );
+  CHECK( monitor_jets( jetELs, all_bTaggedJetELs ) );
+
+  auto monitor_group_for_events = Monitored::Group( m_monTool, monitor_for_jet_count, monitor_for_vertex_count );
+
+
+
+  //// online monitoring for jets
+  //auto monitor_for_jet_count = Monitored::Scalar( "jet_count", jetELs.size() );
+  //CHECK( monitor_jets( jetELs ) );
+
 
   // ==========================================================================================================================
   //    ** Prepare input to Hypo Tools  
@@ -203,7 +208,7 @@ StatusCode TrigBjetBtagHypoAlgMT::execute( const EventContext& context ) const {
   return StatusCode::SUCCESS;
 }
 
-StatusCode TrigBjetBtagHypoAlgMT::monitor_jets( const ElementLinkVector<xAOD::JetContainer >& jetELs ) const {
+StatusCode TrigBjetBtagHypoAlgMT::monitor_jets( const ElementLinkVector<xAOD::JetContainer >& jetELs, const ElementLinkVector<xAOD::JetContainer >& all_bTaggedJetELs ) const {
 
   auto monitor_for_jet_pt = Monitored::Collection( "jet_pt", jetELs,
     [](const ElementLink< xAOD::JetContainer >& jetLink) { return (*jetLink)->pt() / 1000.0 /*Gev*/; } );
@@ -212,55 +217,108 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_jets( const ElementLinkVector<xAOD::Je
   auto monitor_for_jet_phi = Monitored::Collection( "jet_phi", jetELs,
     [](const ElementLink< xAOD::JetContainer >& jetLink) { return (*jetLink)->phi(); } );
 
+  auto monitor_for_Bjet_pt = Monitored::Collection( "Bjet_pt", all_bTaggedJetELs,
+    [](const ElementLink< xAOD::JetContainer >& jetLink) { return (*jetLink)->pt() / 1000.0 /*Gev*/; } );
+  auto monitor_for_Bjet_eta = Monitored::Collection( "Bjet_eta", all_bTaggedJetELs,
+    [](const ElementLink< xAOD::JetContainer >& jetLink) { return (*jetLink)->eta(); } );
+  auto monitor_for_Bjet_phi = Monitored::Collection( "Bjet_phi", all_bTaggedJetELs,
+    [](const ElementLink< xAOD::JetContainer >& jetLink) { return (*jetLink)->phi(); } );
+
+  for( unsigned int i = 0; i < jetELs.size(); i++ ) {
+    const ElementLink< xAOD::JetContainer >& jetLink = jetELs[i];
+    const ElementLink< xAOD::JetContainer >& BjetLink = all_bTaggedJetELs[i];
+    auto monitor_for_jet_delta_pt = Monitored::Scalar( "jet_bjet_delta_pt", (*jetLink)->pt() - (*BjetLink)->pt() );
+    auto monitor_for_jet_delta_eta = Monitored::Scalar( "jet_bjet_delta_eta", (*jetLink)->eta() - (*BjetLink)->eta() );
+    auto monitor_for_jet_delta_phi = Monitored::Scalar( "jet_bjet_delta_phi", (*jetLink)->phi() - (*BjetLink)->phi() );
+    auto monitor_group_for_jet_deltas = Monitored::Group( m_monTool, 
+       monitor_for_jet_delta_pt, monitor_for_jet_delta_eta, monitor_for_jet_delta_phi
+    );
+
+  }
+
   auto monitor_group_for_jets = Monitored::Group( m_monTool, 
-     monitor_for_jet_pt, monitor_for_jet_eta, monitor_for_jet_phi
+     monitor_for_jet_pt, monitor_for_jet_eta, monitor_for_jet_phi,
+     monitor_for_Bjet_pt, monitor_for_Bjet_eta, monitor_for_Bjet_phi
   );
 
   return StatusCode::SUCCESS;
 }
 
-StatusCode TrigBjetBtagHypoAlgMT::monitor_tracks( const ElementLinkVector< xAOD::TrackParticleContainer >& trackELs ) const {
-
-  auto monitor_for_track_Et = Monitored::Collection( "track_Et", trackELs,
-    [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->p4().Et() / 1000.0 /*Gev*/; } );
-  auto monitor_for_track_eta = Monitored::Collection( "track_eta", trackELs,
-    [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->eta(); } ); 
-  auto monitor_for_track_phi = Monitored::Collection( "track_phi", trackELs,
-    [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->phi(); } );
-
-  // Monitors for d0 and z0 track impact parameter variables
-  auto monitor_for_track_d0 = Monitored::Collection( "track_d0", trackELs,
-    [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->d0(); } );
-
-  auto monitor_for_track_d0err = Monitored::Collection( "track_d0err", trackELs,
-    [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) {
-	    return Amg::error( (*trackLink)->definingParametersCovMatrix(), 0);
-    } );
-
-  auto monitor_for_track_d0sig = Monitored::Collection( "track_d0sig", trackELs,
-    [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) {
-      return (*trackLink)->d0() / Amg::error( (*trackLink)->definingParametersCovMatrix(), 0);
-    } );
-
-  auto monitor_for_track_z0 = Monitored::Collection( "track_z0", trackELs,
-    [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->z0(); } );
-
-  auto monitor_for_track_z0err = Monitored::Collection( "track_z0err", trackELs,
-    [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) {
-	    return Amg::error( (*trackLink)->definingParametersCovMatrix(), 1);
-    } );
-
-  auto monitor_for_track_z0sig = Monitored::Collection( "track_z0sig", trackELs,
-    [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) {
-      return (*trackLink)->z0() / Amg::error( (*trackLink)->definingParametersCovMatrix(), 1);
-    } );
-
-  auto monitor_group_for_tracks = Monitored::Group( m_monTool, 
-    monitor_for_track_Et, monitor_for_track_eta, monitor_for_track_phi,
-    monitor_for_track_d0, monitor_for_track_d0err, monitor_for_track_d0sig,
-    monitor_for_track_z0, monitor_for_track_z0err, monitor_for_track_z0sig
-  );
+StatusCode TrigBjetBtagHypoAlgMT::monitor_tracks( const EventContext& context, const TrigCompositeUtils::DecisionContainer* prevDecisionContainer ) const {
+  // This vector is for checking we are not reading more than once from the same View, thus retrieving the same objects multiple times!
+  std::vector< ElementLink< ViewContainer > > readViews;
+  for ( const TrigCompositeUtils::Decision* previousDecision: *prevDecisionContainer ) {
+    // get View
+    ElementLink< ViewContainer > viewEL = previousDecision->objectLink< ViewContainer >( TrigCompositeUtils::viewString() );
+    ATH_CHECK( viewEL.isValid() );
+    ATH_MSG_DEBUG( "Retrieved View" );
+
+    bool alreadyUsed = false;
+    for ( const ElementLink< ViewContainer >& storedViews : readViews ) {
+      if ( viewEL == storedViews ) {
+        ATH_MSG_DEBUG( "We have already used this view!" );
+	alreadyUsed = true;    
+	break;
+      } 
+    }
+    if ( alreadyUsed ) continue;
+
+    readViews.push_back( viewEL );
+
+    // online monitoring for tracks
+    SG::ReadHandle< xAOD::TrackParticleContainer > trackHandle = ViewHelper::makeHandle( *viewEL, m_trackKey, context );
+    ATH_CHECK( trackHandle.isValid() );
+    size_t Counter = 0;
+    ElementLinkVector< xAOD::TrackParticleContainer > trackELs;
+    for ( auto it = trackHandle->begin(); it != trackHandle->end(); ++it, ++Counter ) {
+      ElementLink< xAOD::TrackParticleContainer > tracks = ViewHelper::makeLink< xAOD::TrackParticleContainer >( *viewEL, trackHandle, Counter );
+      ATH_CHECK( tracks.isValid() );
+      trackELs.push_back( tracks );
+    }
+    auto monitor_for_track_count = Monitored::Scalar( "track_count", trackELs.size() );
+    auto monitor_group_for_decision = Monitored::Group( m_monTool, monitor_for_track_count);
+
+    auto monitor_for_track_Et = Monitored::Collection( "track_Et", trackELs,
+      [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->p4().Et() / 1000.0 /*Gev*/; } );
+    auto monitor_for_track_eta = Monitored::Collection( "track_eta", trackELs,
+      [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->eta(); } ); 
+    auto monitor_for_track_phi = Monitored::Collection( "track_phi", trackELs,
+      [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->phi(); } );
+
+    // Monitors for d0 and z0 track impact parameter variables
+    auto monitor_for_track_d0 = Monitored::Collection( "track_d0", trackELs,
+      [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->d0(); } );
+
+    auto monitor_for_track_d0err = Monitored::Collection( "track_d0err", trackELs,
+      [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) {
+	      return Amg::error( (*trackLink)->definingParametersCovMatrix(), 0);
+      } );
+
+    auto monitor_for_track_d0sig = Monitored::Collection( "track_d0sig", trackELs,
+      [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) {
+	return (*trackLink)->d0() / Amg::error( (*trackLink)->definingParametersCovMatrix(), 0);
+      } );
+
+    auto monitor_for_track_z0 = Monitored::Collection( "track_z0", trackELs,
+      [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) { return (*trackLink)->z0(); } );
+
+    auto monitor_for_track_z0err = Monitored::Collection( "track_z0err", trackELs,
+      [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) {
+	      return Amg::error( (*trackLink)->definingParametersCovMatrix(), 1);
+      } );
+
+    auto monitor_for_track_z0sig = Monitored::Collection( "track_z0sig", trackELs,
+      [](const ElementLink< xAOD::TrackParticleContainer >& trackLink) {
+	return (*trackLink)->z0() / Amg::error( (*trackLink)->definingParametersCovMatrix(), 1);
+      } );
+
+    auto monitor_group_for_tracks = Monitored::Group( m_monTool, 
+      monitor_for_track_Et, monitor_for_track_eta, monitor_for_track_phi,
+      monitor_for_track_d0, monitor_for_track_d0err, monitor_for_track_d0sig,
+      monitor_for_track_z0, monitor_for_track_z0err, monitor_for_track_z0sig
+    );
 
+  }
   return StatusCode::SUCCESS;
 }
 
@@ -310,100 +368,111 @@ 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, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP2D_bc, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP2D_cu, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP3D_isDefaults, char, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP3D_bu, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP3D_bc, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(IP3D_cu, float, bTaggingEL);
-
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_nTracks, int, bTaggingEL);
-  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);
-
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageAllJetTrackRelativeEta, float, bTaggingEL);
-
+  auto validIP2D_bTaggingEL = collect_valid_links(bTaggingEL, "IP2D");
+  CHECK( monitor_flavor_probabilities(validIP2D_bTaggingEL, "IP2D") );
+  MONITOR_BTAG_AUX_VAR(IP2D_bu, float, validIP2D_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(IP2D_bc, float, validIP2D_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(IP2D_cu, float, 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);
+  auto validIP3D_bTaggingEL = collect_valid_links(bTaggingEL, "IP3D");
+  CHECK( monitor_flavor_probabilities(validIP3D_bTaggingEL, "IP3D") );
+  MONITOR_BTAG_AUX_VAR(IP3D_bu, float, validIP3D_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(IP3D_bc, float, validIP3D_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(IP3D_cu, float, 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);
 
-  // Monitor MV2c10
-  auto monitor_for_MV2c10 = Monitored::Collection( "btag_MV2c10", bTaggingEL,
-    [](const ElementLink< xAOD::BTaggingContainer >& bTagLink) { 
-      double mv2c10_discriminant = -2;
-      (*bTagLink)->MVx_discriminant( "MV2c10", mv2c10_discriminant );
-      return mv2c10_discriminant;
-    } );
+    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
+    );
+  }
 
-  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 JetFitterSecondaryVertex
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_isDefaults, char, 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);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta, float, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta, float, validJFSV_bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageAllJetTrackRelativeEta, float, validJFSV_bTaggingEL);
+  auto monitor_group_for_JFSV = Monitored::Group( m_monTool, 
     monitor_for_JetFitterSecondaryVertex_nTracks,
-    monitor_for_JetFitterSecondaryVertex_isDefaults,
     monitor_for_JetFitterSecondaryVertex_mass,
     monitor_for_JetFitterSecondaryVertex_energy,
     monitor_for_JetFitterSecondaryVertex_energyFraction,
@@ -414,23 +483,20 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_btagging( const ElementLinkVector< xAO
     monitor_for_JetFitterSecondaryVertex_averageTrackRelativeEta,
     monitor_for_JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta,
     monitor_for_JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta,
-    monitor_for_JetFitterSecondaryVertex_averageAllJetTrackRelativeEta,
-    monitor_for_MV2c10
+    monitor_for_JetFitterSecondaryVertex_averageAllJetTrackRelativeEta
   );
 
+  // Monitor MV2c10
+  MONITOR_BTAG_AUX_VAR(MV2c10_discriminant, float, bTaggingEL);
 
-  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
-    );
-  }
-
+  auto monitor_group_for_btagging = Monitored::Group( m_monTool, 
+    monitor_for_JetFitter_isDefaults,
+    monitor_for_SV1_isDefaults,
+    monitor_for_IP2D_isDefaults,
+    monitor_for_IP3D_isDefaults,
+    monitor_for_JetFitterSecondaryVertex_isDefaults,
+    monitor_for_MV2c10_discriminant
+  );
 
   return StatusCode::SUCCESS;
 }
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h
index 9b04198988673009c09e50d41d5e3c3f9ace8599..6d1b332d843b24bd305fa452a7bea077b5ffba45 100644
--- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h
@@ -47,10 +47,12 @@ class TrigBjetBtagHypoAlgMT : public TrigBjetHypoAlgBaseMT {
   TrigBjetBtagHypoAlgMT();
 
   // online monitoring 
-  virtual StatusCode monitor_jets( const ElementLinkVector<xAOD::JetContainer >& jetELs ) const ;
-  virtual StatusCode monitor_tracks( const ElementLinkVector< xAOD::TrackParticleContainer >& trackELs ) const;
+  virtual StatusCode monitor_jets( const ElementLinkVector<xAOD::JetContainer >& jetELs, const ElementLinkVector<xAOD::JetContainer >& all_bTaggedJetELs ) const ;
+  virtual StatusCode monitor_tracks( const EventContext& context, const TrigCompositeUtils::DecisionContainer* prevDecisionContainer ) 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: