diff --git a/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/CMakeLists.txt b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/CMakeLists.txt
index a7326de26b30738f05dd18ae2736b44aa7c223d6..1520ab8603c3c1279a747e946b60028788ca0019 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/CMakeLists.txt
+++ b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/CMakeLists.txt
@@ -42,13 +42,14 @@ atlas_add_poolcnv_library( MuonEventAthenaPoolPoolCnv
          MuonTrigCoinData/TgcCoinDataContainer.h
          MuonTrigCoinData/RpcCoinDataContainer.h
          MuonChamberT0s/ChamberT0s.h src/MuonMeasurements.h
+         MuonRDO/NSW_PadTriggerDataContainer.h
    TYPES_WITH_NAMESPACE Muon::STGC_RawDataContainer Muon::MM_RawDataContainer
                         Muon::CscPrepDataContainer
                         Muon::CscStripPrepRawDataContainer
                         Muon::RpcPrepDataContainer Muon::TgcPrepDataContainer
                         Muon::MdtPrepDataContainer Muon::MMPrepDataContainer
                         Muon::sTgcPrepDataContainer Muon::TgcCoinDataContainer
-                        Muon::ChamberT0s TPCnv::MuonMeasurements
+                        Muon::ChamberT0s TPCnv::MuonMeasurements Muon::NSW_PadTriggerDataContainer
    INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS}
    LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} AthenaPoolUtilities
                   AtlasSealCLHEP MuonRDO MuonRIO_OnTrack MuonSegment
diff --git a/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/NSW_PadTriggerDataContainerCnv.cxx b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/NSW_PadTriggerDataContainerCnv.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..c018c37b2831b347a8032bb4dbccaa9f90646bcc
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/NSW_PadTriggerDataContainerCnv.cxx
@@ -0,0 +1,25 @@
+#include "NSW_PadTriggerDataContainerCnv.h"
+
+NSW_PadTriggerDataContainerCnv::NSW_PadTriggerDataContainerCnv(ISvcLocator* svcLocator)
+    : NSW_PadTriggerDataContainerCnvBase(svcLocator) { }
+
+NSW_PadTriggerDataContainer_PERS* NSW_PadTriggerDataContainerCnv::createPersistent(Muon::NSW_PadTriggerDataContainer* transientContainer) {
+    MsgStream log{ msgSvc(), "NSW_PadTriggerDataContainerCnv" };
+    log << MSG::VERBOSE << "NSW_PadTriggerDataContainerCnv::createPersistent(): converting container" << std::endl;
+    return m_TPConverter.createPersistent(transientContainer, log);
+}
+
+Muon::NSW_PadTriggerDataContainer* NSW_PadTriggerDataContainerCnv::createTransient() {
+    MsgStream log(msgSvc(), "NSW_PadTriggerDataContainer");
+    log << MSG::VERBOSE
+        << "NSW_PadTriggerDataContainerCnv::createTransient(): reading container from persistent storage"
+        << std::endl;
+    // UUID of of NSW_PadTriggerDataContainer_p1
+    static pool::Guid p1_guid("2930850B-526A-4A6B-BDC6-C86D43B06C7C");
+    if(compareClassGuid(p1_guid)) {
+        std::unique_ptr<Muon::NSW_PadTriggerDataContainer_p1> pContainer
+            { poolReadObject<Muon::NSW_PadTriggerDataContainer_p1>() };
+        return m_TPConverter.createTransient(pContainer.get(), log);
+    }
+    throw std::runtime_error{ "No persistent version match for GUID on-disk" };
+}
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/NSW_PadTriggerDataContainerCnv.h b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/NSW_PadTriggerDataContainerCnv.h
new file mode 100644
index 0000000000000000000000000000000000000000..029574df18d1e7735ff785a3e50f1607e8f2cfe2
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/NSW_PadTriggerDataContainerCnv.h
@@ -0,0 +1,22 @@
+#ifndef MUONEVENTATHENAPOOL_NSW_PADTRIGGERDATACONTAINERCNV_H
+#define MUONEVENTATHENAPOOL_NSW_PADTRIGGERDATACONTAINERCNV_H
+
+#include "AthenaPoolCnvSvc/T_AthenaPoolCustomCnv.h"
+
+#include "MuonRDO/NSW_PadTriggerDataContainer.h"
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainer_p1.h"
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainerCnv_p1.h"
+
+using NSW_PadTriggerDataContainer_PERS = Muon::NSW_PadTriggerDataContainer_p1;
+using NSW_PadTriggerDataContainerCnvBase = T_AthenaPoolCustomCnv<Muon::NSW_PadTriggerDataContainer, NSW_PadTriggerDataContainer_PERS>;
+
+class NSW_PadTriggerDataContainerCnv : public NSW_PadTriggerDataContainerCnvBase {
+public:
+    NSW_PadTriggerDataContainerCnv(ISvcLocator* svcLocator);
+    NSW_PadTriggerDataContainer_PERS* createPersistent(Muon::NSW_PadTriggerDataContainer* transientContainer) final;
+    Muon::NSW_PadTriggerDataContainer* createTransient() final;
+private:
+    Muon::NSW_PadTriggerDataContainerCnv_p1 m_TPConverter;
+};
+
+#endif // MUONEVENTATHENAPOOL_NSW_PADTRIGGERDATACONTAINERCNV_H
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonEventTPCnvDict.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonEventTPCnvDict.h
index 41c776165adf959a3b1076ead4e4b17d5be8ec71..16e44d37d9570e75c58709c098d9913c6557bedb 100755
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonEventTPCnvDict.h
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonEventTPCnvDict.h
@@ -39,5 +39,15 @@
 #include "MuonEventTPCnv/MuonDigitContainer/CscSimDataCollection_p2.h"
 #include "MuonEventTPCnv/MuonRDO/STGC_RawDataContainer_p1.h"
 #include "MuonEventTPCnv/MuonRDO/MM_RawDataContainer_p1.h"
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainer_p1.h"
+
+struct MuonEventTPCnvDict
+{
+    Muon::NSW_PadTriggerSegment_p1                  m_v33;
+    Muon::NSW_PadTriggerData_p1                     m_v34;
+    Muon::NSW_PadTriggerDataContainer_p1            m_v35;
+    std::vector<Muon::NSW_PadTriggerSegment_p1>     m_v36;
+    std::vector<Muon::NSW_PadTriggerData_p1>        m_v37;
+};
 
 #endif // MUONEVENTTPCNV_MUONEVENTTPCNVDICT_H
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainerCnv_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainerCnv_p1.h
new file mode 100644
index 0000000000000000000000000000000000000000..3cdeb894cb773efc7563476ecfa5af8d1a06c151
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainerCnv_p1.h
@@ -0,0 +1,22 @@
+#ifndef MUONEVENTTPCNV_NSW_PADTRIGGERDATACONTAINERCNV_P1_H
+#define MUONEVENTTPCNV_NSW_PADTRIGGERDATACONTAINERCNV_P1_H
+
+#include "MuonRDO/NSW_PadTriggerDataContainer.h"
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainer_p1.h"
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegmentCnv_p1.h"
+
+#include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h"
+
+#include <array>
+
+namespace Muon {
+class NSW_PadTriggerDataContainerCnv_p1 : public T_AthenaPoolTPCnvBase<NSW_PadTriggerDataContainer, NSW_PadTriggerDataContainer_p1> {
+public:
+    void persToTrans(const NSW_PadTriggerDataContainer_p1* persistentObj, NSW_PadTriggerDataContainer* transientObj, MsgStream &log) final;
+    void transToPers(const NSW_PadTriggerDataContainer* transientObj, NSW_PadTriggerDataContainer_p1* persistentObj, MsgStream &log) final;
+private:
+    NSW_PadTriggerSegmentCnv_p1 m_segmentConverter;
+};
+} // namespace Muon
+
+#endif // MUONEVENTTPCNV_NSW_PADTRIGGERDATACONTAINERCNV_P1_H
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainer_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainer_p1.h
new file mode 100644
index 0000000000000000000000000000000000000000..7eceb61fd75684d0d674bb54e1092585e0d80666
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainer_p1.h
@@ -0,0 +1,13 @@
+#ifndef MUONEVENTTPCNV_NSW_PADTRIGGERDATACONTAINER_P1_H
+#define MUONEVENTTPCNV_NSW_PADTRIGGERDATACONTAINER_P1_H
+
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerData_p1.h"
+
+#include <vector>
+
+namespace Muon {
+struct NSW_PadTriggerDataContainer_p1 : public std::vector<NSW_PadTriggerData_p1>
+    { };
+} // namespace Muon
+
+#endif // MUONEVENTTPCNV_NSW_PADTRIGGERDATACONTAINER_P1_H
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerData_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerData_p1.h
new file mode 100644
index 0000000000000000000000000000000000000000..b8ec17bb9946eb8c646e41ca7ae62aed15d90920
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerData_p1.h
@@ -0,0 +1,23 @@
+#ifndef MUONEVENTTPCNV_NSW_PADTRIGGERDATA_P1_H
+#define MUONEVENTTPCNV_NSW_PADTRIGGERDATA_P1_H
+
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegment_p1.h"
+
+#include <vector>
+
+namespace Muon {
+struct NSW_PadTriggerData_p1 : public std::vector<NSW_PadTriggerSegment_p1> {
+    unsigned int m_identifierHash;
+    uint8_t m_sectorID;
+    uint8_t m_sectorSize;
+    uint8_t m_endcap;
+    uint32_t m_BCID;
+    uint32_t m_L1ID;
+    // Hitlists from the BCs preceding, following, and at the time of the L1A
+    std::vector<uint16_t> m_precedingHitlist;
+    std::vector<uint16_t> m_currentHitlist;
+    std::vector<uint16_t> m_followingHitlist;
+};
+} // namespace Muon
+
+#endif // MUONEVENTTPCNV_NSW_PADTRIGGERDATA_P1_H
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegmentCnv_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegmentCnv_p1.h
new file mode 100644
index 0000000000000000000000000000000000000000..b144916cc921e2c718f52011b9ee5809d831309b
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegmentCnv_p1.h
@@ -0,0 +1,21 @@
+#ifndef MUONEVENTTPCNV_NSW_PADTRIGGERSEGMENTCNV_P1_H
+#define MUONEVENTTPCNV_NSW_PADTRIGGERSEGMENTCNV_P1_H
+
+#include "MuonRDO/NSW_PadTriggerSegment.h"
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegment_p1.h"
+
+#include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h"
+
+#include <algorithm>
+
+class MsgStream;
+
+namespace Muon {
+class NSW_PadTriggerSegmentCnv_p1 : public T_AthenaPoolTPCnvBase<NSW_PadTriggerSegment, NSW_PadTriggerSegment_p1> {
+public:
+    void persToTrans(const NSW_PadTriggerSegment_p1* persistentObj, NSW_PadTriggerSegment* transientObj, MsgStream &log) final;
+    void transToPers(const NSW_PadTriggerSegment* transientObj, NSW_PadTriggerSegment_p1* persistentObj, MsgStream &log) final;
+};
+} // namespace Muon
+
+#endif // MUONEVENTTPCNV_NSW_PADTRIGGERSEGMENTCNV_P1_H
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegment_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegment_p1.h
new file mode 100644
index 0000000000000000000000000000000000000000..680b15c5c91a645993c70f471d91e1f45ff01708
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegment_p1.h
@@ -0,0 +1,15 @@
+#ifndef MUONEVENTTPCNV_NSW_PADTRIGGERSEGMENT_P1_H
+#define MUONEVENTTPCNV_NSW_PADTRIGGERSEGMENT_P1_H
+
+#include <cinttypes>
+
+namespace Muon {
+struct NSW_PadTriggerSegment_p1 {
+    uint8_t m_bandID;
+    uint8_t m_phiID;
+    uint8_t m_innerActiveLayers;
+    uint8_t m_outerActiveLayers;
+};
+} // namespace Muon
+
+#endif // MUONEVENTTPCNV_NSW_PADTRIGGERSEGMENT_P1_H
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/selection.xml b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/selection.xml
index f397d911e286baa235dc59a31b68b369453af2c2..0a193c15770fac10ec0786a9948c7ff3390d60bc 100755
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/selection.xml
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/selection.xml
@@ -143,4 +143,10 @@
     <class name="std::vector< std::pair<unsigned int, Muon::CscSimData_p2> >" />
     <class name="Muon::CscSimDataCollection_p2" id="023993E1-BAAA-4F36-8CD4-8F03E3983E8D"/>
 
+    <class name="Muon::NSW_PadTriggerSegment_p1" />
+    <class name="std::vector<Muon::NSW_PadTriggerSegment_p1>" />
+    <class name="Muon::NSW_PadTriggerData_p1" />
+    <class name="std::vector<Muon::NSW_PadTriggerData_p1>" />
+    <class name="Muon::NSW_PadTriggerDataContainer_p1" id="2930850B-526A-4A6B-BDC6-C86D43B06C7C" />
+
 </lcgdict>
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/NSW_PadTriggerDataContainerCnv_p1.cxx b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/NSW_PadTriggerDataContainerCnv_p1.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..dbdabaf93476a8ec96b80a2c9d3761ccd742029f
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/NSW_PadTriggerDataContainerCnv_p1.cxx
@@ -0,0 +1,54 @@
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerDataContainerCnv_p1.h"
+
+namespace Muon {
+void NSW_PadTriggerDataContainerCnv_p1::persToTrans(const NSW_PadTriggerDataContainer_p1* persistentObj, NSW_PadTriggerDataContainer* transientObj, MsgStream &log) {
+    log << MSG::VERBOSE << "NSW_PadTriggerDataContainerCnv_p1::persToTrans() called" << std::endl;
+    for (const auto& pCollection : *persistentObj) {
+        std::array<std::vector<uint16_t>, 3> persistent_hitlists{ pCollection.m_precedingHitlist, pCollection.m_currentHitlist, pCollection.m_followingHitlist };
+        // Can initialize here with std::move(persistent_hitlists) and modify the transient constructor accordingly
+        auto tCollection = std::make_unique<NSW_PadTriggerData>(pCollection.m_identifierHash, pCollection.m_sectorID,
+            pCollection.m_sectorSize, pCollection.m_endcap, pCollection.m_BCID, pCollection.m_L1ID, persistent_hitlists);
+        tCollection->reserve(pCollection.size());
+        for (std::size_t i{}; i < pCollection.size(); i++) {
+            tCollection->push_back(m_segmentConverter.createTransient(&pCollection.at(i), log));
+        }
+
+        auto idHash = tCollection->identifierHash();
+        if(transientObj->addCollection(tCollection.release(), idHash).isFailure()) {
+            throw std::runtime_error{ "Could not add collection to transient container!" };
+        }
+    }
+}
+
+
+void NSW_PadTriggerDataContainerCnv_p1::transToPers(const NSW_PadTriggerDataContainer* transientObj, NSW_PadTriggerDataContainer_p1* persistentObj, MsgStream &log) {
+    log << MSG::VERBOSE << "NSW_PadTriggerDataContainerCnv_p1::transToPers() called" << std::endl;
+    
+    persistentObj->reserve(transientObj->size());
+    // Iterate over collections
+    for (const auto& tCollection : *transientObj) {
+        NSW_PadTriggerData_p1 pCollection{};
+        pCollection.reserve(tCollection->size());
+
+        pCollection.m_identifierHash = tCollection->identifierHash();
+        pCollection.m_sectorID = tCollection->sectorID();
+        pCollection.m_sectorSize = tCollection->sectorSize();
+        pCollection.m_endcap = tCollection->endcap();
+        pCollection.m_BCID = tCollection->BCID();
+        pCollection.m_L1ID = tCollection->L1ID();
+        
+        pCollection.m_precedingHitlist = tCollection->hitlists()[0];
+        pCollection.m_currentHitlist = tCollection->hitlists()[1];
+        pCollection.m_followingHitlist = tCollection->hitlists()[2];
+
+        // Convert each element in the transient collection to its persistent form
+        for (std::size_t i{}; i < tCollection->size(); i++) {
+            NSW_PadTriggerSegment_p1 pSegment{};
+            m_segmentConverter.transToPers(tCollection->at(i), &pSegment, log);
+            pCollection.push_back(pSegment);
+        }
+        persistentObj->push_back(pCollection);
+    }
+}
+
+} // namespace Muon
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/NSW_PadTriggerSegmentCnv_p1.cxx b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/NSW_PadTriggerSegmentCnv_p1.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..790f62ac43f1f5344918f3f2e29f868d39a16bdc
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/NSW_PadTriggerSegmentCnv_p1.cxx
@@ -0,0 +1,21 @@
+#include "MuonEventTPCnv/MuonRDO/NSW_PadTriggerSegmentCnv_p1.h"
+
+
+namespace Muon {
+void NSW_PadTriggerSegmentCnv_p1::persToTrans(const NSW_PadTriggerSegment_p1* persistentObj, NSW_PadTriggerSegment* transientObj, MsgStream &log) {
+    log << MSG::VERBOSE << "NSW_PadTriggerSegmentCnv_p1::persToTrans() called" << std::endl;
+    transientObj->m_phiID = persistentObj->m_phiID;
+    transientObj->m_bandID = persistentObj->m_bandID;
+    transientObj->m_activeLayers[0] = persistentObj->m_innerActiveLayers;
+    transientObj->m_activeLayers[1] = persistentObj->m_outerActiveLayers;
+}
+
+void NSW_PadTriggerSegmentCnv_p1::transToPers(const NSW_PadTriggerSegment* transientObj, NSW_PadTriggerSegment_p1* persistentObj, MsgStream &log) {
+    log << MSG::VERBOSE << "NSW_PadTriggerSegmentCnv_p1::transToPers() called" << std::endl;
+    persistentObj->m_phiID = transientObj->m_phiID;
+    persistentObj->m_bandID = transientObj->m_bandID;
+    persistentObj->m_innerActiveLayers = transientObj->m_activeLayers[0];
+    persistentObj->m_outerActiveLayers = transientObj->m_activeLayers[1];
+}
+
+} // namespace Muon
diff --git a/MuonSpectrometer/MuonRDO/MuonRDO/NSW_PadTriggerData.h b/MuonSpectrometer/MuonRDO/MuonRDO/NSW_PadTriggerData.h
new file mode 100644
index 0000000000000000000000000000000000000000..30ecd4c3572368128324c23a4694ee5d8c7d71cc
--- /dev/null
+++ b/MuonSpectrometer/MuonRDO/MuonRDO/NSW_PadTriggerData.h
@@ -0,0 +1,44 @@
+#ifndef MUONRDO_NSW_PADTRIGGERDATA
+#define MUONRDO_NSW_PADTRIGGERDATA
+
+#include "GaudiKernel/MsgStream.h"
+
+#include "AthContainers/DataVector.h"
+#include "Identifier/IdentifierHash.h"
+
+#include "MuonRDO/NSW_PadTriggerSegment.h"
+
+#include <sstream>
+
+namespace Muon {
+class NSW_PadTriggerData : public DataVector<NSW_PadTriggerSegment> {
+using hitlist_t = std::vector<uint16_t>;
+public:
+    NSW_PadTriggerData(IdentifierHash identifierHash, uint8_t sectorID, uint8_t sectorSize, uint8_t endcap,
+        uint32_t BCID, uint32_t L1ID, const std::array<hitlist_t, 3>& hitlists);
+    IdentifierHash identifierHash() const;
+
+    std::string string() const;
+
+    uint8_t sectorID() const noexcept;
+    uint8_t sectorSize() const noexcept;
+    uint8_t endcap() const noexcept;
+    uint32_t BCID() const noexcept;
+    uint32_t L1ID() const noexcept;
+    const std::array<hitlist_t, 3>& hitlists() const;
+
+    friend std::ostream& operator<<(std::ostream& stream, const NSW_PadTriggerData& rhs);
+    friend MsgStream& operator<<(MsgStream& stream, const NSW_PadTriggerData& rhs);
+private:
+    IdentifierHash m_identifierHash;
+    uint8_t m_sectorID;
+    uint8_t m_sectorSize;
+    uint8_t m_endcap;
+    uint32_t m_BCID;
+    uint32_t m_L1ID;
+    // List of pad hits, in a 3BC window around the L1A BC
+    std::array<hitlist_t, 3> m_hitlists;
+};
+} // namespace Muon
+
+#endif // MUONRDO_NSW_PADTRIGGERDATA
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonRDO/MuonRDO/NSW_PadTriggerDataContainer.h b/MuonSpectrometer/MuonRDO/MuonRDO/NSW_PadTriggerDataContainer.h
new file mode 100644
index 0000000000000000000000000000000000000000..ac296b6f6a0e07db6ea4703a8fa0c12ebeeff5ad
--- /dev/null
+++ b/MuonSpectrometer/MuonRDO/MuonRDO/NSW_PadTriggerDataContainer.h
@@ -0,0 +1,32 @@
+#ifndef MUONRDO_NSW_PADTRIGGERRAWDATACONTAINER
+#define MUONRDO_NSW_PADTRIGGERRAWDATACONTAINER
+
+#include "GaudiKernel/MsgStream.h"
+
+#include "MuonRDO/NSW_PadTriggerData.h"
+
+#include "EventContainers/IdentifiableContainer.h"
+
+#include "AthenaKernel/CLASS_DEF.h"
+
+#include <sstream>
+
+namespace Muon {
+class NSW_PadTriggerDataContainer : public IdentifiableContainer<NSW_PadTriggerData> {
+public:
+    NSW_PadTriggerDataContainer();
+    NSW_PadTriggerDataContainer(unsigned int hashMax);
+    
+    static const CLID& classID();
+    const CLID& clID() const override;
+
+    std::string string() const;
+
+    friend std::ostream& operator<<(std::ostream& stream, const NSW_PadTriggerDataContainer& rhs);
+    friend MsgStream& operator<<(MsgStream& stream, const NSW_PadTriggerDataContainer& rhs);
+};
+} // namespace Muon
+
+CLASS_DEF( Muon::NSW_PadTriggerDataContainer , 1176278125 , 1 )
+
+#endif // MUONRDO_NSW_PADTRIGGERRAWDATACONTAINER
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonRDO/MuonRDO/NSW_PadTriggerSegment.h b/MuonSpectrometer/MuonRDO/MuonRDO/NSW_PadTriggerSegment.h
new file mode 100644
index 0000000000000000000000000000000000000000..647ca467ccc8442ff93c6258803cf1554b65e07c
--- /dev/null
+++ b/MuonSpectrometer/MuonRDO/MuonRDO/NSW_PadTriggerSegment.h
@@ -0,0 +1,33 @@
+#ifndef MUONRDO_NSW_PADTRIGGERSEGMENT_H
+#define MUONRDO_NSW_PADTRIGGERSEGMENT_H
+
+#include "GaudiKernel/MsgStream.h"
+
+#include <array>
+#include <sstream>
+#include <string>
+
+namespace Muon {
+class NSW_PadTriggerSegment {
+friend class NSW_PadTriggerSegmentCnv_p1;
+public:
+    NSW_PadTriggerSegment() = default;
+    NSW_PadTriggerSegment(uint8_t bandID, uint8_t phiID, std::array<uint8_t, 2> activeLayers);
+
+    uint8_t bandID() const noexcept;
+    uint8_t phiID() const noexcept;
+    std::array<uint8_t, 2> activeLayers() const noexcept;
+
+    std::string string() const;
+
+    friend MsgStream& operator<<(MsgStream& stream, const NSW_PadTriggerSegment& rhs);
+    friend std::ostream& operator<<(std::ostream& stream, const NSW_PadTriggerSegment& rhs);
+private:
+    uint8_t m_bandID;
+    uint8_t m_phiID;
+    // aka "coincidences", active layer count in each wedge ([0] = inner, [1] = outer)
+    std::array<uint8_t, 2> m_activeLayers;
+};
+} // namespace Muon
+
+#endif // MUONRDO_NSW_PADTRIGGERSEGMENT_H
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonRDO/src/NSW_PadTriggerData.cxx b/MuonSpectrometer/MuonRDO/src/NSW_PadTriggerData.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..99fc260c411a8fcaa2770a79b8a1804a252a5e18
--- /dev/null
+++ b/MuonSpectrometer/MuonRDO/src/NSW_PadTriggerData.cxx
@@ -0,0 +1,51 @@
+#include "MuonRDO/NSW_PadTriggerData.h"
+
+namespace Muon {
+NSW_PadTriggerData::NSW_PadTriggerData(IdentifierHash identifierHash, uint8_t sectorID, uint8_t sectorSize,
+    uint8_t endcap, uint32_t BCID, uint32_t L1ID, const std::array<hitlist_t, 3>& hitlists)
+    : m_identifierHash(identifierHash), m_sectorID(sectorID), m_sectorSize(sectorSize), m_endcap(endcap), m_BCID(BCID),
+        m_L1ID(L1ID), m_hitlists(hitlists) { }
+
+IdentifierHash NSW_PadTriggerData::identifierHash() const {
+    return m_identifierHash;
+}
+
+std::string NSW_PadTriggerData::string() const {
+    std::stringstream sstream{};
+    sstream << "IdentifierHash: " << m_identifierHash << ", size: " << size();
+    return sstream.str();
+}
+
+uint8_t NSW_PadTriggerData::sectorID() const noexcept {
+    return m_sectorID;
+}
+
+uint8_t NSW_PadTriggerData::sectorSize() const noexcept {
+    return m_sectorSize;
+}
+
+uint8_t NSW_PadTriggerData::endcap() const noexcept {
+    return m_endcap;
+}
+
+uint32_t NSW_PadTriggerData::BCID() const noexcept {
+    return m_BCID;
+}
+
+uint32_t NSW_PadTriggerData::L1ID() const noexcept {
+    return m_L1ID;
+}
+
+const std::array<NSW_PadTriggerData::hitlist_t, 3>& NSW_PadTriggerData::hitlists() const {
+    return m_hitlists;
+}
+
+std::ostream& operator<<(std::ostream& stream, const NSW_PadTriggerData& rhs) {
+    return stream << rhs.string();
+}
+
+MsgStream& operator<<(MsgStream& stream, const NSW_PadTriggerData& rhs) {
+    return stream << rhs.string();
+}
+
+} // namespace Muon
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonRDO/src/NSW_PadTriggerDataContainer.cxx b/MuonSpectrometer/MuonRDO/src/NSW_PadTriggerDataContainer.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..76ac5d98437bfc3b2e49f1b769e5ed74976578af
--- /dev/null
+++ b/MuonSpectrometer/MuonRDO/src/NSW_PadTriggerDataContainer.cxx
@@ -0,0 +1,35 @@
+#include "MuonRDO/NSW_PadTriggerDataContainer.h"
+
+namespace Muon {
+
+NSW_PadTriggerDataContainer::NSW_PadTriggerDataContainer()
+    : IdentifiableContainer<NSW_PadTriggerData>(0) { }
+
+NSW_PadTriggerDataContainer::NSW_PadTriggerDataContainer(unsigned int hashMax) 
+    : IdentifiableContainer<NSW_PadTriggerData>(hashMax) { }
+    
+const CLID& NSW_PadTriggerDataContainer::classID() {
+    return ClassID_traits<NSW_PadTriggerDataContainer>::ID();
+}
+
+const CLID& NSW_PadTriggerDataContainer::clID() const {
+    return classID();    
+}
+
+std::string NSW_PadTriggerDataContainer::string() const {
+    std::stringstream sstream{};
+    sstream << "Number of collections: " << numberOfCollections() << ". Contains collections: \n" << std::endl;
+    for (const auto& collection : *this) {
+        sstream << collection->string() << std::endl;
+    }
+    return sstream.str();
+}
+
+std::ostream& operator<<(std::ostream& stream, const NSW_PadTriggerDataContainer& rhs) {
+    return stream << rhs.string();
+}
+
+MsgStream& operator<<(MsgStream& stream, const NSW_PadTriggerDataContainer& rhs) {
+    return stream << rhs.string();
+}
+} // namespace Muon
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonRDO/src/NSW_PadTriggerSegment.cxx b/MuonSpectrometer/MuonRDO/src/NSW_PadTriggerSegment.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..a3480b82830f9307ce6e90b2507f7d40b8d9fea0
--- /dev/null
+++ b/MuonSpectrometer/MuonRDO/src/NSW_PadTriggerSegment.cxx
@@ -0,0 +1,35 @@
+#include "MuonRDO/NSW_PadTriggerSegment.h"
+
+namespace Muon {
+NSW_PadTriggerSegment::NSW_PadTriggerSegment(uint8_t bandID, uint8_t phiID, std::array<uint8_t, 2> activeLayers)
+    : m_bandID(bandID), m_phiID(phiID), m_activeLayers(activeLayers) { }
+
+uint8_t NSW_PadTriggerSegment::bandID() const noexcept {
+    return m_bandID;
+}
+
+uint8_t NSW_PadTriggerSegment::phiID() const noexcept {
+    return m_phiID;
+}
+
+std::array<uint8_t, 2> NSW_PadTriggerSegment::activeLayers() const noexcept {
+    return m_activeLayers;
+}
+
+std::string NSW_PadTriggerSegment::string() const {
+    std::stringstream sstream{};
+    sstream << "band ID: " << std::to_string(m_bandID) << ", phi ID: " << std::to_string(m_phiID)
+        << ", inner active layers: " << std::to_string(m_activeLayers[0]) << ", outer active layers: "
+        << std::to_string(m_activeLayers[1]);
+    return sstream.str();
+}
+
+MsgStream& operator<<(MsgStream& stream, const NSW_PadTriggerSegment& rhs) {
+    return stream << rhs.string();
+}
+
+std::ostream& operator<<(std::ostream& stream, const NSW_PadTriggerSegment& rhs) {
+    return stream << rhs.string();
+}
+
+} // namespace Muon
\ No newline at end of file