diff --git a/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMBTSMonitoringMT.py b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMBTSMonitoringMT.py
new file mode 100644
index 0000000000000000000000000000000000000000..0c37f163c5389ec66494180d4af4472ab97076ee
--- /dev/null
+++ b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMBTSMonitoringMT.py
@@ -0,0 +1,100 @@
+#
+#  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+#
+
+'''
+@brief configuration for the min bias monitoring
+'''
+
+
+def TrigMBTS(configFlags):
+    from AthenaMonitoring import AthMonitorCfgHelper
+    monConfig = AthMonitorCfgHelper(configFlags, 'HLTMBTSMonitoringAlgMTflags')
+
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    alg = monConfig.addAlgorithm(
+        CompFactory.HLTMBTSMonitoringAlgMT, 'HLTMBTSMonitoringAlgMT')
+    alg.triggerList = ["HLT_mb_mbts_L1MBTS_1_EMPTY"]
+
+    length = len(alg.triggerList)
+    MBTS_countsSideA = 12
+    MBTS_countsSideC = 12
+
+    mbtsGroup = monConfig.addGroup(alg, 'MBTSall', topPath='HLT/MBTSMon/')
+    mbtsGroup.defineHistogram('TrigCounts', title='Trigger counts;;Event rate',
+                              xbins=length, xmin=0, xmax=length, xlabels=list(alg.triggerList))
+
+    for chain in alg.triggerList:
+
+        mbShiftGroup = monConfig.addGroup(alg, chain+'_shifter',
+                                          topPath='HLT/MBTSMon/Shifter/'+chain+'/')
+
+        mbShiftGroup.defineHistogram('MBTS_A_hits', type='TH1I', title='MBTS hits side A; Entry rate; MBTS side A',
+                                     xbins=MBTS_countsSideA+1, xmin=-0.5, xmax=MBTS_countsSideA+0.5)
+        mbShiftGroup.defineHistogram('MBTS_C_hits', type='TH1I', title='MBTS hits side C; Entry rate; MBTS side C',
+                                     xbins=MBTS_countsSideC+1, xmin=-0.5, xmax=MBTS_countsSideC+0.5)
+        mbShiftGroup.defineHistogram('MBTS_A_hits,MBTS_C_hits', type='TH2I', title='MBTS hits correlation; MBTS side A; MBTS side C',
+                                     xbins=MBTS_countsSideA+1, xmin=-0.5, xmax=MBTS_countsSideA+0.5, ybins=MBTS_countsSideC+1, ymin=-0.5, ymax=MBTS_countsSideC+0.5)
+
+        mbShiftGroup.defineHistogram(
+            'MBTStime', type='TH1F', title='MBTS time; MBTS time [ns]', xbins=100, xmin=-100, xmax=100)
+        mbShiftGroup.defineHistogram(
+            'MBTSenergy', type='TH1F', title='MBTS energy; MBTS energy [pC]', xbins=100, xmin=-100, xmax=100)
+        mbShiftGroup.defineHistogram('MBTSChannelID', type='TH1F', title='MBTS Channel ID; Channel ID; Entry rate',
+                                     xbins=MBTS_countsSideA+MBTS_countsSideC, xmin=0, xmax=MBTS_countsSideA+MBTS_countsSideC)
+        mbShiftGroup.defineHistogram('MBTSChannelID,MBTStime', type='TH2F', title='MBTS time; Channel ID;MBTS time [ns]; Entry rate',
+                                     xbins=MBTS_countsSideA+MBTS_countsSideC, xmin=0, xmax=MBTS_countsSideA+MBTS_countsSideC, ybins=100, ymin=-100, ymax=100)
+        mbShiftGroup.defineHistogram('MBTSChannelID,MBTSenergy', type='TH2F', title='MBTS energy; Channel ID;MBTS energy [pC]; Entry rate',
+                                     xbins=MBTS_countsSideA+MBTS_countsSideC, xmin=0, xmax=MBTS_countsSideA+MBTS_countsSideC, ybins=100, ymin=-100, ymax=100)
+
+        mbExpGroup = monConfig.addGroup(alg, chain+'_expert',
+                                        topPath='HLT/MBTSMon/Expert/'+chain+'/')
+        mbExpGroup.defineHistogram(
+            'MBTShits', type='TH2F', title='MBTS total hits;# of Hits;Entry Rate', xbins=24, xmin=0, xmax=100)
+
+        mbExpGroup.defineHistogram('MBTS_A_meanEnergy', type='TH1F',
+                                   title='Mean MBTS Energy A side passed;MBTS Energy [pC];Entry Rate', xbins=100, xmin=-1, xmax=1)
+        mbExpGroup.defineHistogram('MBTS_C_meanEnergy', type='TH1F',
+                                   title='Mean MBTS Energy C side passed;MBTS Energy [pC];Entry Rate', xbins=100, xmin=-1, xmax=1)
+
+        mbExpGroup.defineHistogram('MBTS_A_meanTime', type='TH1F',
+                                   title='Mean MBTS Time A side; MBTS time [ns]', xbins=100, xmin=-100, xmax=100)
+        mbExpGroup.defineHistogram('MBTS_C_meanTime', type='TH1F',
+                                   title='Mean MBTS Time C side; MBTS time [ns]', xbins=100, xmin=-100, xmax=100)
+
+    return monConfig.result()
+
+
+if __name__ == '__main__':
+    # Setup the Run III behavior
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior = 1
+
+    # Setup logs
+    from AthenaCommon.Constants import DEBUG
+    # Set the Athena configuration flags
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+
+    ConfigFlags.Input.Files = ['myAOD.pool.root']
+    ConfigFlags.Output.HISTFileName = 'TestMBTSMonitorOutput.root'
+    # ConfigFlags.fillFromArgs(sys.argv[1:])
+
+    ConfigFlags.lock()
+
+# Initialize configuration object, add accumulator, merge, and run.
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
+    from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
+    cfg = MainServicesCfg(ConfigFlags)
+    cfg.merge(PoolReadCfg(ConfigFlags))
+    cfg.merge(TrigMBTS(ConfigFlags))
+
+    # If you want to turn on more detailed messages ...
+    # exampleMonitorAcc.getEventAlgo('ExampleMonAlg').OutputLevel = 2 # DEBUG
+    cfg.getEventAlgo('HLTMBTSMonitoringAlgMT').OutputLevel = DEBUG  # DEBUG
+    cfg.printConfig(withDetails=True)  # set True for exhaustive info
+    with open("cfg.pkl", "wb") as f:
+        cfg.store(f)
+
+    cfg.run()  # use cfg.run(20) to only run on first 20 events
+    # to run:
+    # python -m TrigMinBiasMonitoring.TrigMBTSMonitoringMT
diff --git a/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/HLTMBTSMonitoringAlgMT.cxx b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/HLTMBTSMonitoringAlgMT.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..f236e3f6336d8e91f844f562dcaae0aeb8e323b5
--- /dev/null
+++ b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/HLTMBTSMonitoringAlgMT.cxx
@@ -0,0 +1,136 @@
+/*
+  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "HLTMBTSMonitoringAlgMT.h"
+
+HLTMBTSMonitoringAlgMT::HLTMBTSMonitoringAlgMT(const std::string &name, ISvcLocator *pSvcLocator) : AthMonitorAlgorithm(name, pSvcLocator)
+{
+}
+
+HLTMBTSMonitoringAlgMT::~HLTMBTSMonitoringAlgMT()
+{
+}
+
+StatusCode HLTMBTSMonitoringAlgMT::initialize()
+{
+  using namespace Monitored;
+  ATH_CHECK(AthMonitorAlgorithm::initialize());
+  ATH_CHECK(m_TrigT2MbtsBitsContainerKey.initialize());
+
+  return AthMonitorAlgorithm::initialize();
+}
+
+StatusCode HLTMBTSMonitoringAlgMT::finalize()
+{
+  return StatusCode::SUCCESS;
+}
+
+StatusCode HLTMBTSMonitoringAlgMT::fillHistograms(const EventContext &context) const
+{
+  using namespace Monitored;
+
+  const auto &trigDecTool = getTrigDecisionTool();
+
+  //==============================================================================
+  // MBTS BITS INFORMATION
+  //==============================================================================
+
+  auto mbtsbits = SG::makeHandle(m_TrigT2MbtsBitsContainerKey, context);
+  ATH_MSG_DEBUG("MBTS monitoring, handle validity " << mbtsbits.isValid());
+  if (!mbtsbits.isValid())
+  {
+    ATH_MSG_DEBUG("Could not retrieve mbtsbits");
+    return StatusCode::SUCCESS;
+  }
+  if (mbtsbits->size() == 0)
+  {
+    return StatusCode::SUCCESS;
+  }
+  ATH_CHECK(mbtsbits->size() == 1);
+
+  auto triggerWord = Scalar<unsigned int>("triggerWord", 0);
+  auto timeWord = Scalar<unsigned int>("timeWord", 0);
+  auto energyMean_A = Scalar<float>("MBTS_A_meanEnergy", 0.);
+  auto energyMean_C = Scalar<float>("MBTS_C_meanEnergy", 0.);
+  auto timeMean_A = Scalar<float>("MBTS_A_meanTime", 0.);
+  auto timeMean_C = Scalar<float>("MBTS_C_meanTime", 0.);
+  auto ebaCounters = Scalar<int>("energy_ebaCounters", 1);
+
+  for (auto &trig : m_triggerList)
+  {
+    if (trigDecTool->isPassed(trig, TrigDefs::requireDecision))
+    {
+      ATH_MSG_DEBUG("Chain " << trig << " is passed: YES");
+      auto TrigCounts = Scalar<std::string>("TrigCounts", trig);
+
+      fill("MBTSall", TrigCounts);
+
+      for (const auto &mbts_itr : *mbtsbits)
+      {
+
+        auto mbtsHitEnergies = mbts_itr->triggerEnergies(); // energy (in pC) of signal in a counter (relative to IP), vector for all counters
+        auto mbtsHitTimes = mbts_itr->triggerTimes();       // time of signal in counter (relative to IP), vector for all counters
+
+        ATH_MSG_DEBUG("MBTS hits times container size: " << mbtsHitTimes.size());
+
+        if (mbtsHitTimes.size() != 32)
+          ATH_MSG_WARNING("MBTS Cell Times are stored incorrectly. The array should have 32 elements (24 should be filled).");
+        if (mbtsHitEnergies.size() != 32)
+          ATH_MSG_WARNING("MBTS Cell Energies are stored incorrectly. The array should have 32 elements (24 should be filled).");
+
+        for (unsigned i = 0; i < xAOD::TrigT2MbtsBits::NUM_MBTS; i++)
+        {
+
+          if (i < 16)
+          { // A side
+            energyMean_A += mbtsHitEnergies.at(i);
+            timeMean_A += mbtsHitTimes.at(i);
+            ebaCounters++;
+            ATH_MSG_DEBUG("energy A side: " << mbtsHitEnergies.at(i));
+            ATH_MSG_DEBUG("time A side: " << mbtsHitTimes.at(i));
+            if (i == 15)
+            {
+              if (ebaCounters > 0)
+              {
+                energyMean_A /= ebaCounters;
+                timeMean_A /= ebaCounters;
+                ATH_MSG_DEBUG("MEAN energy A side: " << energyMean_A);
+                ATH_MSG_DEBUG("MEAN time A side: " << timeMean_A);
+                fill(trig + "_expert", energyMean_A, timeMean_A);
+              }
+            }
+          }
+          else // C side
+          {
+            energyMean_C += mbtsHitEnergies.at(i);
+            timeMean_C += mbtsHitTimes.at(i);
+            ebaCounters++;
+            ATH_MSG_DEBUG("energy C side: " << mbtsHitEnergies.at(i));
+            ATH_MSG_DEBUG("time C side: " << mbtsHitTimes.at(i));
+            if (i == 31)
+            {
+              if (ebaCounters > 0)
+              {
+                energyMean_C /= ebaCounters;
+                timeMean_C /= ebaCounters;
+                ATH_MSG_DEBUG("MEAN energy C side: " << energyMean_C);
+                ATH_MSG_DEBUG("MEAN time C side: " << timeMean_C);
+                fill(trig + "_expert", energyMean_C, timeMean_C);
+              }
+            }
+          }
+        }
+
+        auto sideA_hits = 0;
+        auto sideC_hits = 0;
+        auto MBTStime = Scalar<float>("MBTStime", 3.5);
+        auto MBTSChannelID = Scalar<float>("MBTSChannelID", 1.0);
+        auto MBTS_A_hits = Scalar<int>("MBTS_A_hits", sideA_hits);
+        auto MBTS_C_hits = Scalar<int>("MBTS_C_hits", sideC_hits);
+        fill(trig + "_shifter", MBTStime, MBTSChannelID, MBTS_A_hits, MBTS_C_hits);
+      }
+    }
+  }
+  return StatusCode::SUCCESS;
+}
diff --git a/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/HLTMBTSMonitoringAlgMT.h b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/HLTMBTSMonitoringAlgMT.h
new file mode 100644
index 0000000000000000000000000000000000000000..ac0874ed45b3a7afa87a25947f19474d352378a3
--- /dev/null
+++ b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/HLTMBTSMonitoringAlgMT.h
@@ -0,0 +1,37 @@
+/*
+  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+*/
+#ifndef TRIGMINBIASMONITORING_HLTMBTSMONITORINGALGMT_H
+#define TRIGMINBIASMONITORING_HLTMBTSMONITORINGALGMT_H
+
+#include "AthenaMonitoring/AthMonitorAlgorithm.h"
+#include "AthenaMonitoringKernel/Monitored.h"
+
+#include "StoreGate/ReadHandleKey.h"
+#include "TrigDecisionTool/TrigDecisionTool.h"
+#include "xAODTrigMinBias/TrigT2MbtsBitsContainer.h"
+#include "xAODTrigMinBias/TrigT2MbtsBits.h"
+
+
+#include <string>
+
+/**
+ * @class HLTMBTSMonitoringAlgMT
+ * @brief 
+ **/
+class HLTMBTSMonitoringAlgMT : public AthMonitorAlgorithm {
+public:
+  HLTMBTSMonitoringAlgMT(const std::string& name, ISvcLocator* pSvcLocator);
+  virtual ~HLTMBTSMonitoringAlgMT() override;
+
+  virtual StatusCode initialize() override;
+  virtual StatusCode fillHistograms(const EventContext& context) const override;
+  virtual StatusCode finalize() override;
+
+private:
+ Gaudi::Property<std::vector<std::string>> m_triggerList{this, "triggerList",{}, "Add triggers to this to be monitored"};
+ 
+ SG::ReadHandleKey<xAOD::TrigT2MbtsBitsContainer> m_TrigT2MbtsBitsContainerKey {this, "MBTSbitsKey","HLT_MbtsBitsContainer","Name of MbtsBitsContainer"};
+};
+
+#endif // TRIGMINBIASMONITORING_HLTMBTSMONITORINGALG_H
diff --git a/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/components/TrigMinBiasMonitoring_entries.cxx b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/components/TrigMinBiasMonitoring_entries.cxx
index 7e3aff89c36ed9da641aeeaf74298052909e5ac3..4ed2ae50246ebbd7caceb6ff92ae2debf2d45672 100644
--- a/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/components/TrigMinBiasMonitoring_entries.cxx
+++ b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/src/components/TrigMinBiasMonitoring_entries.cxx
@@ -1,7 +1,9 @@
 #include "../HLTMinBiasMonTool.h"
 #include "../HLTMinBiasTrkMonAlg.h"
-
+#include "../HLTMBTSMonitoringAlgMT.h"
 
 DECLARE_COMPONENT( HLTMinBiasMonTool )
 DECLARE_COMPONENT( HLTMinBiasTrkMonAlg )
+DECLARE_COMPONENT( HLTMBTSMonitoringAlgMT )
+