diff --git a/Event/LumiEvent/include/Event/LumiCounters.h b/Event/LumiEvent/include/Event/LumiCounters.h
index 716f2b90347df2049344f2929b8dccc2b64c0001..bf64398b89ba4a32cc431ee08b506bc9afb7da97 100644
--- a/Event/LumiEvent/include/Event/LumiCounters.h
+++ b/Event/LumiEvent/include/Event/LumiCounters.h
@@ -33,42 +33,29 @@ namespace LHCb {
   public:
     /// lookup table for counter keys
     enum counterKey {
-      PUMult          = 0,  // number of PU hits
-      RZVelo          = 1,  // number of Velo tracks
-      RZVeloBW        = 2,  // number of backward RZVelo tracks
-      Velo            = 3,  // number of Velo tracks pointing to IR
-      Muon            = 4,  // number of muon tracks
-      BKMuon          = 5,  // number of muon tracks NOT pointing to PV
-      SPDMult         = 6,  // number of SPD hits
-      CaloEt          = 7,  // Calo Et
-      TTIP            = 8,  // number of TT tracks from the IP
-      TTMIB           = 9,  // number of TT tracks parallel with beam
-      PV2D            = 10, // number of 2D vertices
-      PV3D            = 11, // number of 3D vertices
-      PU              = 13, // number of PU vertices
-      Vertex          = 14, // number of vertices accepted in IR
-      GEC             = 15, // whether the GEC has passed
-      SciFiClusters   = 16, // number of SciFi clusters
-      Method          = 20, // method: 0 or missing is random method
-      Random          = 21, // random method: 0 or missing is L0 method
-      PoissonPUMult   = 50, // number of times PU hits over threshold
-      PoissonRZVelo   = 51, // number of times Velo tracks over threshold
-      PoissonRZVeloBW = 52, // number of times backward RZVelo tracks over threshold
-      PoissonVelo     = 53, // number of times Velo tracks pointing to IR over threshold
-      PoissonMuon     = 54, // number of times muon tracks over threshold
-      PoissonBKMuon   = 55, // number of times muon tracks NOT pointing to PV over threshold
-      PoissonSPDMult  = 56, // number of times SPD hits over threshold
-      PoissonCaloEt   = 57, // number of times Calo Et over threshold
-      PoissonTTIP     = 58, // number of timesTT tracks from the IP over threshold
-      PoissonTTMIB    = 59, // number of timesTT tracks parallel with beam over threshold
-      PoissonPV2D     = 60, // number of times2D vertices over threshold
-      PoissonPV3D     = 61, // number of times 3D vertices over threshold
-      PoissonPU       = 63, // number of times PU vertices over threshold
-      PoissonVertex   = 64, // number of times vertices in IR range over threshold
-      PoissonMethod   = 70, // method: 0 or missing is random method
-      PoissonRandom   = 71, // random method: 0 or missing is L0 method
-      Unknown         = 98, // unknown value
-      LastGlobal      = 99  // User variables should use flags greater than this value
+      OdinT0Low    = 0,
+      OdinT0High   = 1,
+      OdinBcidLow  = 2,
+      OdinBcidHigh = 3,
+      OdinBxType   = 4,
+      GEC          = 5,
+      // VELO
+      VeloTracks   = 11,
+      VeloVertices = 12,
+      // SciFi
+      SciFiClusters = 21,
+      // CALO
+      // Muon
+      MuonM2R2 = 41,
+      MuonM2R3 = 42,
+      MuonM3R2 = 43,
+      MuonM3R3 = 44,
+
+      Method = 90,
+      Random = 91,
+
+      Unknown    = 98, // unknown value
+      LastGlobal = 99  // User variables should use flags greater than this value
     };
 
     LumiCounters() = delete; // class contains no data, so no use to instantiate it...
@@ -86,74 +73,36 @@ namespace LHCb {
 
   inline std::ostream& operator<<( std::ostream& s, LHCb::LumiCounters::counterKey e ) {
     switch ( e ) {
-    case LHCb::LumiCounters::PUMult:
-      return s << "PUMult";
-    case LHCb::LumiCounters::RZVelo:
-      return s << "RZVelo";
-    case LHCb::LumiCounters::RZVeloBW:
-      return s << "RZVeloBW";
-    case LHCb::LumiCounters::Velo:
-      return s << "Velo";
-    case LHCb::LumiCounters::Muon:
-      return s << "Muon";
-    case LHCb::LumiCounters::BKMuon:
-      return s << "BKMuon";
-    case LHCb::LumiCounters::SPDMult:
-      return s << "SPDMult";
-    case LHCb::LumiCounters::CaloEt:
-      return s << "CaloEt";
-    case LHCb::LumiCounters::TTIP:
-      return s << "TTIP";
-    case LHCb::LumiCounters::TTMIB:
-      return s << "TTMIB";
-    case LHCb::LumiCounters::PV2D:
-      return s << "PV2D";
-    case LHCb::LumiCounters::PV3D:
-      return s << "PV3D";
-    case LHCb::LumiCounters::PU:
-      return s << "PU";
-    case LHCb::LumiCounters::Vertex:
-      return s << "Vertex";
+    case LHCb::LumiCounters::OdinT0Low:
+      return s << "T0Low";
+    case LHCb::LumiCounters::OdinT0High:
+      return s << "T0High";
+    case LHCb::LumiCounters::OdinBcidLow:
+      return s << "BCIDLow";
+    case LHCb::LumiCounters::OdinBcidHigh:
+      return s << "BCIDHigh";
+    case LHCb::LumiCounters::OdinBxType:
+      return s << "BXType";
     case LHCb::LumiCounters::GEC:
       return s << "GEC";
+    case LHCb::LumiCounters::VeloTracks:
+      return s << "Velo";
+    case LHCb::LumiCounters::VeloVertices:
+      return s << "Vertex";
     case LHCb::LumiCounters::SciFiClusters:
       return s << "SciFiClusters";
+    case LHCb::LumiCounters::MuonM2R2:
+      return s << "M2R2";
+    case LHCb::LumiCounters::MuonM2R3:
+      return s << "M2R3";
+    case LHCb::LumiCounters::MuonM3R2:
+      return s << "M3R2";
+    case LHCb::LumiCounters::MuonM3R3:
+      return s << "M3R3";
     case LHCb::LumiCounters::Method:
       return s << "Method";
     case LHCb::LumiCounters::Random:
       return s << "Random";
-    case LHCb::LumiCounters::PoissonPUMult:
-      return s << "PoissonPUMult";
-    case LHCb::LumiCounters::PoissonRZVelo:
-      return s << "PoissonRZVelo";
-    case LHCb::LumiCounters::PoissonRZVeloBW:
-      return s << "PoissonRZVeloBW";
-    case LHCb::LumiCounters::PoissonVelo:
-      return s << "PoissonVelo";
-    case LHCb::LumiCounters::PoissonMuon:
-      return s << "PoissonMuon";
-    case LHCb::LumiCounters::PoissonBKMuon:
-      return s << "PoissonBKMuon";
-    case LHCb::LumiCounters::PoissonSPDMult:
-      return s << "PoissonSPDMult";
-    case LHCb::LumiCounters::PoissonCaloEt:
-      return s << "PoissonCaloEt";
-    case LHCb::LumiCounters::PoissonTTIP:
-      return s << "PoissonTTIP";
-    case LHCb::LumiCounters::PoissonTTMIB:
-      return s << "PoissonTTMIB";
-    case LHCb::LumiCounters::PoissonPV2D:
-      return s << "PoissonPV2D";
-    case LHCb::LumiCounters::PoissonPV3D:
-      return s << "PoissonPV3D";
-    case LHCb::LumiCounters::PoissonPU:
-      return s << "PoissonPU";
-    case LHCb::LumiCounters::PoissonVertex:
-      return s << "PoissonVertex";
-    case LHCb::LumiCounters::PoissonMethod:
-      return s << "PoissonMethod";
-    case LHCb::LumiCounters::PoissonRandom:
-      return s << "PoissonRandom";
     case LHCb::LumiCounters::Unknown:
       return s << "Unknown";
     case LHCb::LumiCounters::LastGlobal:
@@ -173,42 +122,13 @@ namespace LHCb {
 
 inline const GaudiUtils::VectorMap<std::string, LHCb::LumiCounters::counterKey>&
 LHCb::LumiCounters::s_counterKeyTypMap() {
-  static const GaudiUtils::VectorMap<std::string, counterKey> m = {{"PUMult", PUMult},
-                                                                   {"RZVelo", RZVelo},
-                                                                   {"RZVeloBW", RZVeloBW},
-                                                                   {"Velo", Velo},
-                                                                   {"Muon", Muon},
-                                                                   {"BKMuon", BKMuon},
-                                                                   {"SPDMult", SPDMult},
-                                                                   {"CaloEt", CaloEt},
-                                                                   {"TTIP", TTIP},
-                                                                   {"TTMIB", TTMIB},
-                                                                   {"PV2D", PV2D},
-                                                                   {"PV3D", PV3D},
-                                                                   {"PU", PU},
-                                                                   {"Vertex", Vertex},
-                                                                   {"GEC", GEC},
-                                                                   {"SciFiClusters", SciFiClusters},
-                                                                   {"Method", Method},
-                                                                   {"Random", Random},
-                                                                   {"PoissonPUMult", PoissonPUMult},
-                                                                   {"PoissonRZVelo", PoissonRZVelo},
-                                                                   {"PoissonRZVeloBW", PoissonRZVeloBW},
-                                                                   {"PoissonVelo", PoissonVelo},
-                                                                   {"PoissonMuon", PoissonMuon},
-                                                                   {"PoissonBKMuon", PoissonBKMuon},
-                                                                   {"PoissonSPDMult", PoissonSPDMult},
-                                                                   {"PoissonCaloEt", PoissonCaloEt},
-                                                                   {"PoissonTTIP", PoissonTTIP},
-                                                                   {"PoissonTTMIB", PoissonTTMIB},
-                                                                   {"PoissonPV2D", PoissonPV2D},
-                                                                   {"PoissonPV3D", PoissonPV3D},
-                                                                   {"PoissonPU", PoissonPU},
-                                                                   {"PoissonVertex", PoissonVertex},
-                                                                   {"PoissonMethod", PoissonMethod},
-                                                                   {"PoissonRandom", PoissonRandom},
-                                                                   {"Unknown", Unknown},
-                                                                   {"LastGlobal", LastGlobal}};
+  static const GaudiUtils::VectorMap<std::string, counterKey> m = {
+      {"T0Low", OdinT0Low},       {"T0High", OdinT0High},    {"BCIDLow", OdinBcidLow},
+      {"BCIDHigh", OdinBcidHigh}, {"BXType", OdinBxType},    {"GEC", GEC},
+      {"Velo", VeloTracks},       {"Vertex", VeloVertices},  {"SciFiClusters", SciFiClusters},
+      {"M2R2", MuonM2R2},         {"M2R3", MuonM2R3},        {"M3R2", MuonM3R2},
+      {"M3R3", MuonM3R3},         {"Method", Method},        {"Random", Random},
+      {"Unknown", Unknown},       {"LastGlobal", LastGlobal}};
   return m;
 }
 
diff --git a/Event/LumiEvent/include/Event/LumiSummaryOffsets_V1.h b/Event/LumiEvent/include/Event/LumiSummaryOffsets_V1.h
index 467f60eaa97bd9f25b7f8a97db5c57df53a427a3..2460df4132249a04653fffed03309584aa924cad 100644
--- a/Event/LumiEvent/include/Event/LumiSummaryOffsets_V1.h
+++ b/Event/LumiEvent/include/Event/LumiSummaryOffsets_V1.h
@@ -20,16 +20,29 @@ namespace LHCb {
         // by dividing the largest offset by 8*sizeof(unsigned), i.e. 32, and rounding up.
         // Fields must be contained within a single element of the array, e.g. an
         // offset of 24 would allow for a maximum size of 8.
+        /// ODIN info
+        ODINStart      = 0,
+        t0LowSize      = 32,
+        t0LowOffset    = ODINStart + 0, // event time offset low 32 bits
+        t0HighSize     = 32,
+        t0HighOffset   = ODINStart + t0LowSize, // event time offset high 32 bits
+        bcidLowSize    = 32,
+        bcidLowOffset  = ODINStart + t0LowSize + t0HighSize, // re-mapped bcid low 32 bits
+        bcidHighSize   = 14,
+        bcidHighOffset = ODINStart + t0LowSize + t0HighSize + bcidLowSize, // re-mapped bcid high 14 bits
+        bxTypeSize     = 2,
+        bxTypeOffset   = ODINStart + t0LowSize + t0HighSize + bcidLowSize + bcidHighSize, // bunch crossing type
+        ODINEnd        = ODINStart + t0LowSize + t0HighSize + bcidLowSize + bcidHighSize + bxTypeSize,
         /// Global Event Cut
-        GecStart  = 0,
+        GecStart  = ODINEnd,
         GecSize   = 1,
         GecOffset = GecStart,
         GecEnd    = GecStart + GecSize,
         /// Velo counters
         VeloCountersStart  = GecEnd,
-        VeloTracksSize     = 12,
+        VeloTracksSize     = 15,
         VeloTracksOffset   = VeloCountersStart + 0, // number of Velo tracks
-        VeloVerticesSize   = 5,
+        VeloVerticesSize   = 6,
         VeloVerticesOffset = VeloCountersStart + VeloTracksSize, // number of Velo vertices
         VeloCountersEnd    = VeloCountersStart + VeloTracksSize + VeloVerticesSize,
         /// RICH counters
@@ -37,16 +50,26 @@ namespace LHCb {
         RichCountersEnd   = RichCountersStart + 0,
         /// SciFi counters
         SciFiCountersStart  = RichCountersEnd,
-        SciFiClustersSize   = 14,                     // end of word 0
+        SciFiClustersSize   = 15,
         SciFiClustersOffset = SciFiCountersStart + 0, // number of SciFi Clusters
         SciFiCountersEnd    = SciFiCountersStart + SciFiClustersSize,
         /// CALO counters
         CaloCountersStart = SciFiCountersEnd,
         CaloCountersEnd   = CaloCountersStart + 0,
-        ///
-        TotalSize =
-            ( ( CaloCountersEnd - 1 ) / 32 + 1 ) * 32 // the largest offset rounded up to the next multiple of 32
-      };
-    } // namespace V1
-  }   // namespace LumiSummaryOffsets
+        /// Muon counters
+        MuonCountersStart = CaloCountersEnd,
+        M2R2Size          = 11,
+        M2R2Offset        = MuonCountersStart, // M2R2 hits
+        M2R3Size          = 11,
+        M2R3Offset        = MuonCountersStart + M2R2Size, // M2R3 hits
+        M3R2Size          = 11,
+        M3R2Offset        = MuonCountersStart + M2R2Size + M2R3Size, // M3R2 hits
+        M3R3Size          = 10,
+        M3R3Offset        = MuonCountersStart + M2R2Size + M2R3Size + M3R2Size, // M3R3 hits
+        MuonCountersEnd   = MuonCountersStart + M2R2Size + M2R3Size + M3R2Size + M3R3Size,
+        /// the largest offset rounded up to the next multiple of 32
+        TotalSize = ( ( MuonCountersEnd - 1 ) / 32 + 1 ) * 32
+      }; // enum CounterOffsets
+    }    // namespace V1
+  }      // namespace LumiSummaryOffsets
 } // namespace LHCb
diff --git a/Event/LumiEvent/src/HltLumiSummaryDecoder.cpp b/Event/LumiEvent/src/HltLumiSummaryDecoder.cpp
index 18332178710d05ae7b5ba931d1b51c9bef9aa91a..55c869dc20b03e2c9b75bb04516de7adbec7a440 100644
--- a/Event/LumiEvent/src/HltLumiSummaryDecoder.cpp
+++ b/Event/LumiEvent/src/HltLumiSummaryDecoder.cpp
@@ -64,26 +64,7 @@ namespace LHCb {
       for ( const auto& ibank : event.banks( RawBank::HltLumiSummary ) ) {
         if ( ibank->version() == 0 ) {
           // legacy Run 1+2 LumiSummary structure
-          // get the raw data
-          for ( const unsigned w : ibank->range<unsigned int>() ) {
-            // decode the info
-            int iKey = ( w >> 16 );
-            int iVal = ( w & 0xFFFF );
-            if ( msgLevel( MSG::VERBOSE ) ) {
-              verbose() << format( " %8x %11d %11d %11d ", w, w, iKey, iVal ) << endmsg;
-            }
-            // add this counter
-            hltLumiSummary.addInfo( iKey, iVal );
-          }
-
-          // keep statistics
-          int totDataSize = ibank->size() / sizeof( unsigned int );
-          size_buffer += totDataSize;
-
-          if ( msgLevel( MSG::DEBUG ) ) {
-            debug() << "Bank size: " << format( "%4d ", ibank->size() ) << "Total Data bank size " << totDataSize
-                    << endmsg;
-          }
+          warning() << "Unsupported HltLumiSummary version: " << format( "%4d", ibank->version() ) << endmsg;
         } else if ( ibank->version() == 1 ) {
           // initial Run 3 version
           // TODO version not currently finalised
@@ -92,18 +73,45 @@ namespace LHCb {
                       << format( "%4d", LHCb::LumiSummaryOffsets::V1::TotalSize ) << ", found "
                       << format( "%4d", ibank->size() ) << endmsg;
           } else {
+            hltLumiSummary.addInfo( LHCb::LumiCounters::OdinT0Low,
+                                    getField( LHCb::LumiSummaryOffsets::V1::t0LowOffset,
+                                              LHCb::LumiSummaryOffsets::V1::t0LowSize, ibank->data() ) );
+            hltLumiSummary.addInfo( LHCb::LumiCounters::OdinT0High,
+                                    getField( LHCb::LumiSummaryOffsets::V1::t0HighOffset,
+                                              LHCb::LumiSummaryOffsets::V1::t0HighSize, ibank->data() ) );
+            hltLumiSummary.addInfo( LHCb::LumiCounters::OdinBcidLow,
+                                    getField( LHCb::LumiSummaryOffsets::V1::bcidLowOffset,
+                                              LHCb::LumiSummaryOffsets::V1::bcidLowSize, ibank->data() ) );
+            hltLumiSummary.addInfo( LHCb::LumiCounters::OdinBcidHigh,
+                                    getField( LHCb::LumiSummaryOffsets::V1::bcidHighOffset,
+                                              LHCb::LumiSummaryOffsets::V1::bcidHighSize, ibank->data() ) );
+            hltLumiSummary.addInfo( LHCb::LumiCounters::OdinBxType,
+                                    getField( LHCb::LumiSummaryOffsets::V1::bxTypeOffset,
+                                              LHCb::LumiSummaryOffsets::V1::bxTypeSize, ibank->data() ) );
             hltLumiSummary.addInfo( LHCb::LumiCounters::GEC,
                                     getField( LHCb::LumiSummaryOffsets::V1::GecOffset,
                                               LHCb::LumiSummaryOffsets::V1::GecSize, ibank->data() ) );
-            hltLumiSummary.addInfo( LHCb::LumiCounters::Velo,
+            hltLumiSummary.addInfo( LHCb::LumiCounters::VeloTracks,
                                     getField( LHCb::LumiSummaryOffsets::V1::VeloTracksOffset,
                                               LHCb::LumiSummaryOffsets::V1::VeloTracksSize, ibank->data() ) );
-            hltLumiSummary.addInfo( LHCb::LumiCounters::Vertex,
+            hltLumiSummary.addInfo( LHCb::LumiCounters::VeloVertices,
                                     getField( LHCb::LumiSummaryOffsets::V1::VeloVerticesOffset,
                                               LHCb::LumiSummaryOffsets::V1::VeloVerticesSize, ibank->data() ) );
             hltLumiSummary.addInfo( LHCb::LumiCounters::SciFiClusters,
                                     getField( LHCb::LumiSummaryOffsets::V1::SciFiClustersOffset,
                                               LHCb::LumiSummaryOffsets::V1::SciFiClustersSize, ibank->data() ) );
+            hltLumiSummary.addInfo( LHCb::LumiCounters::MuonM2R2,
+                                    getField( LHCb::LumiSummaryOffsets::V1::M2R2Offset,
+                                              LHCb::LumiSummaryOffsets::V1::M2R2Size, ibank->data() ) );
+            hltLumiSummary.addInfo( LHCb::LumiCounters::MuonM2R3,
+                                    getField( LHCb::LumiSummaryOffsets::V1::M2R3Offset,
+                                              LHCb::LumiSummaryOffsets::V1::M2R3Size, ibank->data() ) );
+            hltLumiSummary.addInfo( LHCb::LumiCounters::MuonM3R2,
+                                    getField( LHCb::LumiSummaryOffsets::V1::M3R2Offset,
+                                              LHCb::LumiSummaryOffsets::V1::M3R2Size, ibank->data() ) );
+            hltLumiSummary.addInfo( LHCb::LumiCounters::MuonM3R3,
+                                    getField( LHCb::LumiSummaryOffsets::V1::M3R3Offset,
+                                              LHCb::LumiSummaryOffsets::V1::M3R3Size, ibank->data() ) );
           }
         } else {
           warning() << "Unknown HltLumiSummary version: " << format( "%4d", ibank->version() ) << endmsg;