diff --git a/algo/CMakeLists.txt b/algo/CMakeLists.txt
index a70b0872c98516d229715c67c7f86b14d8102a83..f0d829c4b091aecb445f0e3685ddec5ca5925243 100644
--- a/algo/CMakeLists.txt
+++ b/algo/CMakeLists.txt
@@ -143,6 +143,9 @@ set(SRCS
   detectors/rich/ReadoutConfig.cxx
   detectors/rich/Unpack.cxx
   detectors/rich/UnpackMS.cxx
+  detectors/pasta/Unpack.cxx
+  detectors/pasta/UnpackMS.cxx
+  detectors/pasta/ReadoutConfig.cxx
   global/ParFiles.cxx
   global/StorableRecoResults.cxx
   global/Reco.cxx
@@ -337,6 +340,7 @@ install(DIRECTORY base/gpu TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
 install(DIRECTORY data/sts TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
 install(DIRECTORY detectors/bmon TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
 install(DIRECTORY detectors/much TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
+install(DIRECTORY detectors/pasta TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
 install(DIRECTORY detectors/sts TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
 install(DIRECTORY detectors/tof TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
 install(DIRECTORY detectors/trd TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
diff --git a/algo/base/AuxDigiData.h b/algo/base/AuxDigiData.h
index e464da7e281fbb57a33557ccf43ff98947fd2767..0f67256afce2db99aaed328a4cfc9eea55376bbc 100644
--- a/algo/base/AuxDigiData.h
+++ b/algo/base/AuxDigiData.h
@@ -13,6 +13,7 @@
 #include "bmon/UnpackMS.h"
 #include "much/UnpackMS.h"
 #include "rich/UnpackMS.h"
+#include "pasta/UnpackMS.h"
 #include "sts/UnpackMS.h"
 #include "tof/UnpackMS.h"
 #include "trd/UnpackMS.h"
@@ -28,6 +29,7 @@ namespace cbm::algo
     UnpackAux<bmon::UnpackAuxData> fBmon;
     UnpackAux<much::UnpackAuxData> fMuch;
     UnpackAux<rich::UnpackAuxData> fRich;
+    UnpackAux<pasta::UnpackAuxData> fPasta;
     UnpackAux<sts::UnpackAuxData> fSts;
     UnpackAux<tof::UnpackAuxData> fTof;
     UnpackAux<trd::UnpackAuxData> fTrd;
diff --git a/algo/base/DigiData.h b/algo/base/DigiData.h
index 09b82d933478c57b65087b93e1d0a799120d287b..14f8ec848df3c1ef88d4b1cd148f1ff0940f7ae8 100644
--- a/algo/base/DigiData.h
+++ b/algo/base/DigiData.h
@@ -12,6 +12,7 @@
 #include "CbmMuchDigi.h"
 #include "CbmPsdDigi.h"
 #include "CbmRichDigi.h"
+#include "CbmPastaDigi.h"
 #include "CbmStsDigi.h"
 #include "CbmTofDigi.h"
 #include "CbmTrdDigi.h"
@@ -39,6 +40,7 @@ namespace cbm::algo
     PODVector<CbmRichDigi> fRich;  ///< Unpacked RICH digis
     PODVector<CbmPsdDigi> fPsd;    ///< Unpacked PSD digis
     PODVector<CbmFsdDigi> fFsd;    ///< Unpacked FSD digis
+    PODVector<CbmPastaDigi> fPasta;///< Unpacked PASTA digis
 
     DigiData();
     ~DigiData();
diff --git a/algo/data/CMakeLists.txt b/algo/data/CMakeLists.txt
index 717ba53896c880649c4c07c1ff010fad8c14551b..e65eaba58eff30b3eb3b0fb5836266d42eb8bf0f 100644
--- a/algo/data/CMakeLists.txt
+++ b/algo/data/CMakeLists.txt
@@ -32,6 +32,7 @@ set(SRCS
   ${OFFLINE_DATA_DIR}/fsd/CbmFsdDigi.cxx
   ${OFFLINE_DATA_DIR}/fsd/CbmFsdAddress.cxx
 
+  ${OFFLINE_DATA_DIR}/pasta/CbmPastaDigi.cxx
 
   ${OFFLINE_DATA_DIR}/raw/CriGet4Mess001.cxx
   ${OFFLINE_DATA_DIR}/raw/StsXyterMessage.cxx
@@ -50,6 +51,7 @@ target_include_directories(OnlineData
   PUBLIC ${OFFLINE_DATA_DIR}/tof
   PUBLIC ${OFFLINE_DATA_DIR}/psd
   PUBLIC ${OFFLINE_DATA_DIR}/fsd
+  PUBLIC ${OFFLINE_DATA_DIR}/pasta
   PUBLIC ${OFFLINE_DATA_DIR}/global
   PUBLIC ${OFFLINE_DATA_DIR}/raw
 )
diff --git a/algo/detectors/pasta/ReadoutConfig.cxx b/algo/detectors/pasta/ReadoutConfig.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..16c05d24847b004a831aea3735de2bccc17753dc
--- /dev/null
+++ b/algo/detectors/pasta/ReadoutConfig.cxx
@@ -0,0 +1,5 @@
+/* Copyright (C) 2025 Jagiellonian University, Krakow
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Bartosz Sobol [committer] */
+
+#include "ReadoutConfig.h"
diff --git a/algo/detectors/pasta/ReadoutConfig.h b/algo/detectors/pasta/ReadoutConfig.h
new file mode 100644
index 0000000000000000000000000000000000000000..aca3b205e701a1cdca17e754800fd5b224203b45
--- /dev/null
+++ b/algo/detectors/pasta/ReadoutConfig.h
@@ -0,0 +1,14 @@
+/* Copyright (C) 2025 Jagiellonian University, Krakow
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Bartosz Sobol [committer] */
+
+#pragma once
+
+namespace cbm::algo::pasta {
+
+class ReadoutConfig {
+
+};
+
+
+}
diff --git a/algo/detectors/pasta/Unpack.cxx b/algo/detectors/pasta/Unpack.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..8d3a6d0456100f2b5614e455e910c1e35e0c0a29
--- /dev/null
+++ b/algo/detectors/pasta/Unpack.cxx
@@ -0,0 +1,12 @@
+/* Copyright (C) 2025 Jagiellonian University, Krakow
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Bartosz Sobol [committer] */
+
+#include "Unpack.h"
+
+namespace cbm {
+namespace algo {
+namespace pasta {
+} // pasta
+} // algo
+} // cbm
\ No newline at end of file
diff --git a/algo/detectors/pasta/Unpack.h b/algo/detectors/pasta/Unpack.h
new file mode 100644
index 0000000000000000000000000000000000000000..137f7aa985833bd184ac879ee98c9020be09e9ca
--- /dev/null
+++ b/algo/detectors/pasta/Unpack.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2025 Jagiellonian University, Krakow
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Bartosz Sobol [committer] */
+
+#pragma once
+#include <CommonUnpacker.h>
+#include <Timeslice.hpp>
+
+#include "CbmRichDigi.h"
+#include "ReadoutConfig.h"
+#include "UnpackMS.h"
+
+namespace cbm::algo::pasta {
+    namespace detail {
+        using UnpackBase = CommonUnpacker<CbmRichDigi, UnpackMonitorData, UnpackAuxData>;
+    }
+
+    class Unpack : public detail::UnpackBase {
+    public:
+        using Result_t = detail::UnpackBase::Result_t;
+
+        Unpack(const ReadoutConfig &readout);
+
+        Result_t operator()(const fles::Timeslice &) const;
+
+    private:
+        ReadoutConfig fReadout;
+    };
+} // cbm::algo::pasta
diff --git a/algo/detectors/pasta/UnpackMS.cxx b/algo/detectors/pasta/UnpackMS.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..2cfb45b65ddec51c948502aae82580c89c6fc716
--- /dev/null
+++ b/algo/detectors/pasta/UnpackMS.cxx
@@ -0,0 +1,5 @@
+/* Copyright (C) 2025 Jagiellonian University, Krakow
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Bartosz Sobol [committer], Pascal Raisig, Dominik Smith */
+
+#include "UnpackMS.h"
diff --git a/algo/detectors/pasta/UnpackMS.h b/algo/detectors/pasta/UnpackMS.h
new file mode 100644
index 0000000000000000000000000000000000000000..ce169a69edcb260f286bb31e54483d08399deffc
--- /dev/null
+++ b/algo/detectors/pasta/UnpackMS.h
@@ -0,0 +1,17 @@
+/* Copyright (C) 2025 Jagiellonian University, Krakow
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Bartosz Sobol [committer], Pascal Raisig, Dominik Smith */
+
+#pragma once
+
+namespace cbm::algo::pasta {
+
+   class UnpackAuxData {};
+
+class UnpackMS {
+
+};
+
+}
+
+
diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx
index 0f192df1b6c68934269a1eea7e5561b73dd6aa5d..1085ecd75834da0e3eded8ab9acf6cf2950cb7f1 100644
--- a/algo/global/Reco.cxx
+++ b/algo/global/Reco.cxx
@@ -27,6 +27,7 @@
 #include "qa/QaManager.h"
 #include "qa/hitfind/BmonHitfindQa.h"
 #include "rich/Unpack.h"
+#include "pasta/Unpack.h"
 #include "sts/ChannelMaskSet.h"
 #include "sts/HitfinderChain.h"
 #include "sts/Unpack.h"
@@ -140,8 +141,10 @@ void Reco::Init(const Options& opts)
   }
 
   if (Opts().Has(Subsystem::RICH) && Opts().Has(Step::Unpack)) {
-    rich::ReadoutConfig cfg{};
-    fRichUnpack = std::make_unique<rich::Unpack>(cfg);
+    rich::ReadoutConfig richCfg{};
+    fRichUnpack = std::make_unique<rich::Unpack>(richCfg);
+    pasta::ReadoutConfig pastaCfg{};
+    fPastaUnpack = std::make_unique<pasta::Unpack>(pastaCfg);
   }
 
   if (Opts().Has(Subsystem::STS) && Opts().Has(Step::Unpack)) {
@@ -320,6 +323,7 @@ RecoResults Reco::Run(const fles::Timeslice& ts)
       std::tie(digis.fBmon, auxDigis.fBmon)   = RunUnpacker(fBmonUnpack, ts);
       std::tie(digis.fMuch, auxDigis.fMuch)   = RunUnpacker(fMuchUnpack, ts);
       std::tie(digis.fRich, auxDigis.fRich)   = RunUnpacker(fRichUnpack, ts);
+      std::tie(digis.fPasta, auxDigis.fPasta) = RunUnpacker(fPastaUnpack, ts);
       std::tie(digis.fSts, auxDigis.fSts)     = RunUnpacker(fStsUnpack, ts);
       std::tie(digis.fTof, auxDigis.fTof)     = RunUnpacker(fTofUnpack, ts);
       std::tie(digis.fTrd, auxDigis.fTrd)     = RunUnpacker(fTrdUnpack, ts);
@@ -332,7 +336,7 @@ RecoResults Reco::Run(const fles::Timeslice& ts)
       L_(info) << "TS contains Digis: STS=" << digis.fSts.size() << " MUCH=" << digis.fMuch.size()
                << " TOF=" << digis.fTof.size() << " BMON=" << digis.fBmon.size() << " TRD=" << digis.fTrd.size()
                << " TRD2D=" << digis.fTrd2d.size() << " RICH=" << digis.fRich.size() << " PSD=" << digis.fPsd.size()
-               << " FSD=" << digis.fFsd.size();
+               << " FSD=" << digis.fFsd.size() << " PASTA=" << digis.fPasta.size();
       // --- Raw digi QAs
       if (fSender != nullptr && Opts().Has(Subsystem::STS)) {
         fStsDigiQa->RegisterDigiData(&digis.fSts);
@@ -444,6 +448,7 @@ RecoResults Reco::Run(const fles::Timeslice& ts)
       results.trdDigis   = std::move(digis.fTrd);
       results.tofDigis   = std::move(digis.fTof);
       results.richDigis  = std::move(digis.fRich);
+      results.pastaDigis = std::move(digis.fPasta);
     }
     if (Opts().HasOutput(RecoData::Track)) {
       results.tracks             = std::move(recoData.tracks);
diff --git a/algo/global/Reco.h b/algo/global/Reco.h
index 35cb5c34626c8dc84ba994478e83a305522cfd98..3ccb4b5ea1b7e0542d05e99dea74eabb1c38e9f8 100644
--- a/algo/global/Reco.h
+++ b/algo/global/Reco.h
@@ -46,6 +46,11 @@ namespace cbm::algo
     class Unpack;
   }
 
+  namespace pasta
+  {
+    class Unpack;
+  }
+
   namespace sts
   {
     class Unpack;
@@ -166,6 +171,9 @@ namespace cbm::algo
     // RICH
     std::unique_ptr<rich::Unpack> fRichUnpack;
 
+    // PASTA
+    std::unique_ptr<pasta::Unpack> fPastaUnpack;
+
     // STS
     std::unique_ptr<sts::Unpack> fStsUnpack;
     std::unique_ptr<sts::DigiQa> fStsDigiQa;  ///< Raw STS-digis QA
diff --git a/algo/global/RecoResults.h b/algo/global/RecoResults.h
index 3bcee8be6acd66388ab8e0043313888c0f35c615..ee0bd49c78e495a7e0368467a75be6dbb3e79eeb 100644
--- a/algo/global/RecoResults.h
+++ b/algo/global/RecoResults.h
@@ -36,6 +36,7 @@ namespace cbm::algo
     PODVector<CbmTrdDigi> trdDigis;
     PODVector<CbmTofDigi> tofDigis;
     PODVector<CbmRichDigi> richDigis;
+    PODVector<CbmPastaDigi> pastaDigis;
 
     std::vector<DigiEvent> events;
 
diff --git a/algo/global/StorableRecoResults.h b/algo/global/StorableRecoResults.h
index 5560b7d1ad1998bfacc2b35e0f64335acc571820..ae911f774f91c781db43bc0daa5c1fd28bace15f 100644
--- a/algo/global/StorableRecoResults.h
+++ b/algo/global/StorableRecoResults.h
@@ -70,6 +70,9 @@ namespace cbm::algo
     std::vector<CbmRichDigi>& RichDigis() { return fRichDigis; }
     const std::vector<CbmRichDigi>& RichDigis() const { return fRichDigis; }
 
+    std::vector<CbmPastaDigi>& PastaDigis() { return fPastaDigis; }
+    const std::vector<CbmPastaDigi>& PastaDigis() const { return fPastaDigis; }
+
     std::vector<CbmDigiEvent>& DigiEvents() { return fDigiEvents; }
     const std::vector<CbmDigiEvent>& DigiEvents() const { return fDigiEvents; }
 
@@ -106,6 +109,7 @@ namespace cbm::algo
     std::vector<CbmTrdDigi> fTrdDigis;
     std::vector<CbmTofDigi> fTofDigis;
     std::vector<CbmRichDigi> fRichDigis;
+    std::vector<CbmPastaDigi> fPastaDigis;
 
     // Event builder/filter output
     std::vector<CbmDigiEvent> fDigiEvents;
@@ -142,6 +146,7 @@ namespace cbm::algo
       ar& fTrdDigis;
       ar& fTofDigis;
       ar& fRichDigis;
+      ar& fPastaDigis;
 
       ar& fDigiEvents;
 
diff --git a/core/data/CMakeLists.txt b/core/data/CMakeLists.txt
index b5b59dd07855d9e7f8fb17bbd151c570757e7563..3cc94655929a30f2d7ed369213b33fc329c73b33 100644
--- a/core/data/CMakeLists.txt
+++ b/core/data/CMakeLists.txt
@@ -15,6 +15,7 @@ set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}/rich
   ${CMAKE_CURRENT_SOURCE_DIR}/psd
   ${CMAKE_CURRENT_SOURCE_DIR}/fsd
+  ${CMAKE_CURRENT_SOURCE_DIR}/pasta
   ${CMAKE_CURRENT_SOURCE_DIR}/global
   )
 
@@ -66,6 +67,8 @@ set(SRCS
   rich/CbmRichTrbDigi.cxx
   rich/CbmRichDigi.cxx
 
+  pasta/CbmPastaDigi.cxx
+
   much/CbmMuchPixelHit.cxx
   much/CbmMuchPoint.cxx
   much/CbmMuchCluster.cxx
@@ -134,8 +137,8 @@ SET_SOURCE_FILES_PROPERTIES(tof/etof/star_rhicf.c PROPERTIES COMPILE_FLAGS -Wno-
 
 
 list(APPEND HEADERS base/CbmDigiData.h global/CbmDigiEvent.h global/CbmDigiTimeslice.h
-bmon/CbmBmonDigiData.h sts/CbmStsDigiData.h much/CbmMuchDigiData.h rich/CbmRichDigiData.h trd/CbmTrdDigiData.h
-tof/CbmTofDigiData.h psd/CbmPsdDigiData.h fsd/CbmFsdDigiData.h trd/CbmTrdFexMessageSpadic.h)
+bmon/CbmBmonDigiData.h sts/CbmStsDigiData.h much/CbmMuchDigiData.h rich/CbmRichDigiData.h pasta/CbmPastaDigiData.h
+trd/CbmTrdDigiData.h tof/CbmTofDigiData.h psd/CbmPsdDigiData.h fsd/CbmFsdDigiData.h trd/CbmTrdFexMessageSpadic.h)
 
 set(LIBRARY_NAME CbmData)
 set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
@@ -166,6 +169,7 @@ Install(FILES
         psd/CbmPsdDigiData.h
         fsd/CbmFsdDigiData.h
         rich/CbmRichDigiData.h rich/CbmRichRingLight.h
+        pasta/CbmPastaDigiData.h
         sts/CbmStsDigiData.h
         trd/CbmTrdDigiData.h
         tof/CbmTofDigiData.h
diff --git a/core/data/base/CbmDigiData.h b/core/data/base/CbmDigiData.h
index c864e8ba6fcef44cbdfc3a1f5f4a5886e4d2428f..49f4ac8ff888b5b38f6a6c688f500b1e6746b7eb 100644
--- a/core/data/base/CbmDigiData.h
+++ b/core/data/base/CbmDigiData.h
@@ -14,6 +14,7 @@
 #include "CbmStsDigiData.h"
 #include "CbmTofDigiData.h"
 #include "CbmTrdDigiData.h"
+#include "CbmPastaDigiData.h"
 
 #include <boost/serialization/access.hpp>
 #include <boost/serialization/base_object.hpp>
@@ -41,6 +42,7 @@ class CbmDigiData {
   CbmTofDigiData fTof;    ///< TOF data
   CbmPsdDigiData fPsd;    ///< PSD data
   CbmFsdDigiData fFsd;    ///< FSD data
+  CbmFsdDigiData fPasta;  ///< PASTA data
 
   friend class boost::serialization::access;
   /** @brief BOOST serializer**/
@@ -57,6 +59,7 @@ class CbmDigiData {
     ar& fPsd;
     ar& fFsd;
     ar& fRich;
+    ar& fPasta;
   }
 
   // --- ROOT serializer
@@ -76,6 +79,7 @@ class CbmDigiData {
     fPsd.Clear();
     fFsd.Clear();
     fRich.Clear();
+    fPasta.Clear();
   }
 
   /** @brief Size of detector data **/
@@ -92,6 +96,7 @@ class CbmDigiData {
       case ECbmModuleId::kRich: return fRich.Size(); break;
       case ECbmModuleId::kFsd: return fFsd.Size(); break;
       default: return 0; break;
+      //TODO add PASTA
     }
   }
 
@@ -108,6 +113,7 @@ class CbmDigiData {
     size += fPsd.Size() * sizeof(CbmPsdDigi);
     size += fFsd.Size() * sizeof(CbmFsdDigi);
     size += fRich.Size() * sizeof(CbmRichDigi);
+    size += fPasta.Size() * sizeof(CbmPastaDigi);
     return size;
   }
 };
diff --git a/core/data/pasta/CbmPastaDigi.cxx b/core/data/pasta/CbmPastaDigi.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..445f9a6df680ad36ba248cb8e292f46ad0842231
--- /dev/null
+++ b/core/data/pasta/CbmPastaDigi.cxx
@@ -0,0 +1,5 @@
+/* Copyright (C) 2025 Jagiellonian University, Krakow
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Bartosz Sobol [committer] */
+
+#include "CbmPastaDigi.h"
diff --git a/core/data/pasta/CbmPastaDigi.h b/core/data/pasta/CbmPastaDigi.h
new file mode 100644
index 0000000000000000000000000000000000000000..70382bf7955721839998f815c25829762f4c0900
--- /dev/null
+++ b/core/data/pasta/CbmPastaDigi.h
@@ -0,0 +1,16 @@
+/* Copyright (C) 2025 Jagiellonian University, Krakow
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Bartosz Sobol [committer] */
+
+#ifndef CBMPASTADIGI_H
+#define CBMPASTADIGI_H
+
+
+
+class CbmPastaDigi {
+
+};
+
+
+
+#endif //CBMPASTADIGI_H
diff --git a/core/data/pasta/CbmPastaDigiData.h b/core/data/pasta/CbmPastaDigiData.h
new file mode 100644
index 0000000000000000000000000000000000000000..e44c9e1e7469b2895925cb41166451ea28a1f77a
--- /dev/null
+++ b/core/data/pasta/CbmPastaDigiData.h
@@ -0,0 +1,14 @@
+/* Copyright (C) 2025 Jagiellonian University, Krakow
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Bartosz Sobol [committer] */
+
+#ifndef CBMPASTADIGIDATA_H
+#define CBMPASTADIGIDATA_H
+
+#include "CbmPastaDigi.h"
+
+class CbmPastaDigiData{
+
+};
+
+#endif //CBMPASTADIGIDATA_H
diff --git a/reco/app/cbmreco/main.cxx b/reco/app/cbmreco/main.cxx
index 6dd23efc4481d3854e2f76af8d715f66528521a4..2317119d5346b21a1030a66b58d5b9024f35f37d 100644
--- a/reco/app/cbmreco/main.cxx
+++ b/reco/app/cbmreco/main.cxx
@@ -43,6 +43,7 @@ std::shared_ptr<StorableRecoResults> makeStorableRecoResults(const fles::Timesli
   storable->TrdDigis()   = ToStdVector(results.trdDigis);
   storable->TofDigis()   = ToStdVector(results.tofDigis);
   storable->RichDigis()  = ToStdVector(results.richDigis);
+  storable->PastaDigis()  = ToStdVector(results.pastaDigis);
 
   storable->StsClusters() = results.stsClusters;
   storable->StsHits()     = results.stsHits;