diff --git a/Trigger/EFTracking/EFTrackingFPGAIntegration/python/BenchmarkConfig.py b/Trigger/EFTracking/EFTrackingFPGAIntegration/python/BenchmarkConfig.py
index 316f94fa9122a9908ddb517f63927acf7f6871c5..801c932e0f8c57d1a90e1db1adf64760d3ebd5b0 100644
--- a/Trigger/EFTracking/EFTrackingFPGAIntegration/python/BenchmarkConfig.py
+++ b/Trigger/EFTracking/EFTrackingFPGAIntegration/python/BenchmarkConfig.py
@@ -19,6 +19,12 @@ def BenchmarkCfg(flags, name = 'BenckmarkAlg', **kwarg):
     testVectorTool = acc.popToolsAndMerge(FPGATestVectorToolCfg(flags))
     kwarg.setdefault('TestVectorTool', testVectorTool)
 
+    acc.addService(CompFactory.ChronoStatSvc(
+        PrintUserTime = True,
+        PrintSystemTime = True,
+        PrintEllapsedTime = True
+    ))
+
     acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.BenchmarkAlg(**kwarg))
 
     return acc
@@ -26,26 +32,86 @@ def BenchmarkCfg(flags, name = 'BenckmarkAlg', **kwarg):
 
 if __name__ == "__main__":
     from AthenaConfiguration.AllConfigFlags import initConfigFlags
-    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
-
     flags = initConfigFlags()
+    
+    # Add FPGA Integration flags
+    from EFTrackingFPGAIntegration.IntegrationConfigFlag import addFPGADataPrepFlags
+    addFPGADataPrepFlags(flags)
+    
+    flags.Detector.EnableCalo = False
+    flags.FPGADataPrep.DoActs = True
+    
+    # DataPreparation Pipeline doesn't do spacepoint fomration, we need ACTS to do it
+    flags.FPGADataPrep.PassThrough.ClusterOnly = True
+    # For Spacepoint formation
+    if flags.FPGADataPrep.PassThrough.ClusterOnly:
+        flags.Detector.EnableITkPixel = True
+        flags.Detector.EnableITkStrip = True
+        flags.Acts.useCache = False
+        flags.Tracking.ITkMainPass.doActsSeed = True
+    
+    flags.Tracking.ITkMainPass.doAthenaToActsCluster = True
+    flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint = True
+    flags.Tracking.ITkMainPass.doAthenaSpacePoint = True
+    
     flags.Concurrency.NumThreads = 1
     # dummy input to retrieve EventInfo
-    flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-03-00-00/mc21_14TeV.900498.PG_single_muonpm_Pt100_etaFlatnp0_43.recon.RDO.e8481_s4149_r14697/RDO.33675668._000016.pool.root.1"]
+    flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EFTracking/ATLAS-P2-RUN4-03-00-00/RDO/reg0_singlemu.root"]
     flags.Output.AODFileName = "PassthroughAOD.pool.root"
     
     flags.lock()
+    flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Tracking.ITkMainPass", keepOriginal=True)
 
     kwarg = {}
     
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
     cfg = MainServicesCfg(flags)
     
     from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
     cfg.merge(PoolReadCfg(flags))
+    
+    # Check if the input file is RDO or AOD by instepecting if the file contains "RDO" or "AOD"
+    isRDO = False
+    if "RDO" in flags.Input.Files[0] or isRDO:
+        print("The input is an RDO, running the ITk Reco chain") 
+            
+        #Truth
+        if flags.Input.isMC:
+            from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
+            cfg.merge(GEN_AOD2xAODCfg(flags))
+            
+        # Standard reco
+        from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
+        cfg.merge(ITkTrackRecoCfg(flags))
+        
+        from InDetConfig.InDetPrepRawDataToxAODConfig import TruthParticleIndexDecoratorAlgCfg
+        cfg.merge( TruthParticleIndexDecoratorAlgCfg(flags) )
+    
+    elif "AOD" in flags.Input.Files[0]:
+        print("The input is an AOD, skipping the ITk Reco chain")
+    
+    else:
+        print("Cannot determine the input file type. Assuming it's an AOD. Set the isRDO option manully if it's not.")
 
     acc = BenchmarkCfg(flags, **kwarg)
     cfg.merge(acc)
     
+    OutputItemList = [
+                    "xAOD::StripClusterContainer#FPGAStripClusters",
+                    "xAOD::StripClusterAuxContainer#FPGAStripClustersAux.",
+                    "xAOD::PixelClusterContainer#FPGAPixelClusters",
+                    "xAOD::PixelClusterAuxContainer#FPGAPixelClustersAux.",
+                    ]
+    
+    # Connection to ACTS
+    if flags.FPGADataPrep.DoActs:
+        from EFTrackingFPGAIntegration.DataPrepToActsConfig import DataPrepToActsCfg
+        cfg.merge(DataPrepToActsCfg(flags))
+        OutputItemList += [
+                    "xAOD::TrackParticleContainer#FPGATrackParticles",
+                    "xAOD::TrackParticleAuxContainer#FPGATrackParticlesAux."
+                    ]
+    
     from EFTrackingFPGAIntegration.FPGAOutputValidationConfig import FPGAOutputValidationCfg
     cfg.merge(FPGAOutputValidationCfg(flags, **{
         "pixelKeys": ["FPGAPixelClusters", "ITkPixelClusters"],
@@ -63,13 +129,6 @@ if __name__ == "__main__":
                                         MetadataCategory.IOVMetaData,],))
 
     from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
-    OutputItemList = [
-                    "xAOD::StripClusterContainer#FPGAStripClusters",
-                    "xAOD::StripClusterAuxContainer#FPGAStripClustersAux.",
-                    "xAOD::PixelClusterContainer#FPGAPixelClusters",
-                    "xAOD::PixelClusterAuxContainer#FPGAPixelClustersAux.",
-                    ]
-   
     cfg.merge(addToAOD(flags, OutputItemList))
 
     cfg.run(1)
\ No newline at end of file
diff --git a/Trigger/EFTracking/EFTrackingFPGAIntegration/python/IntegrationConfigFlag.py b/Trigger/EFTracking/EFTrackingFPGAIntegration/python/IntegrationConfigFlag.py
index 490adc5c9f6b7e9edd6211ad522d170d39532626..49a8d833ecb5deec21b1426093213301471478b2 100644
--- a/Trigger/EFTracking/EFTrackingFPGAIntegration/python/IntegrationConfigFlag.py
+++ b/Trigger/EFTracking/EFTrackingFPGAIntegration/python/IntegrationConfigFlag.py
@@ -1,11 +1,9 @@
-# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
 # @author: Zhaoyuan.Cui@cern.ch
 # @date: Nov. 22, 2024
 # @brief: Customized flags for FPGA data preparation pipeline
 
-def addFPGADataPrepFlags():
-    from AthenaConfiguration.AllConfigFlags import initConfigFlags
-    flags = initConfigFlags()
+def addFPGADataPrepFlags(flags):
     
     flags.addFlag("FPGADataPrep.DoActs", True)
     flags.addFlag("FPGADataPrep.FPGA.RunPixelClustering", True)
@@ -18,4 +16,5 @@ def addFPGADataPrepFlags():
     flags.addFlag("FPGADataPrep.PassThrough.MaxClusterNum", 500000)
     flags.addFlag("FPGADataPrep.PassThrough.MaxSpacePointNum", 500000)
     
-    return flags
\ No newline at end of file
+    
+    return flags
diff --git a/Trigger/EFTracking/EFTrackingFPGAIntegration/src/BenchmarkAlg.cxx b/Trigger/EFTracking/EFTrackingFPGAIntegration/src/BenchmarkAlg.cxx
index 675bab26f4321173cd8f0d186b892897594f34ee..562a556fa6d1f222659cb3ab5ec8db82d39e8f1b 100644
--- a/Trigger/EFTracking/EFTrackingFPGAIntegration/src/BenchmarkAlg.cxx
+++ b/Trigger/EFTracking/EFTrackingFPGAIntegration/src/BenchmarkAlg.cxx
@@ -44,7 +44,7 @@ namespace EFTrackingFPGAIntegration
         ATH_CHECK(m_inputPixelClusterKey.initialize());
         ATH_CHECK(m_inputStripClusterKey.initialize());
 
-        ATH_CHECK(m_xaodContainerMaker.retrieve());
+        ATH_CHECK(m_xaodClusterMaker.retrieve());
         ATH_CHECK(m_testVectorTool.retrieve());
         return StatusCode::SUCCESS;
     }
@@ -98,9 +98,9 @@ namespace EFTrackingFPGAIntegration
             acc_queue.finish();
         }
 
-        // use 32-bit point to access output
-        uint32_t *stripClusters = (uint32_t *)stripOutput.data();
-        uint32_t *pixelClusters = (uint32_t *)pixelOutput.data();
+        // use 64-bit pointer to access output
+        uint64_t *stripClusters = stripOutput.data();
+        uint64_t *pixelClusters = pixelOutput.data();
 
         unsigned int numStripClusters = stripClusters[0];
         ATH_MSG_DEBUG("numStripClusters: " << numStripClusters);
@@ -131,53 +131,53 @@ namespace EFTrackingFPGAIntegration
             {
                 rdoCounter = 0;
                 row = 0; // idhash
-                scAux.idHash.push_back(stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                scAux.idHash.push_back(stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
                 row = 1; // id
-                scAux.id.push_back(stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                scAux.id.push_back(stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
                 row = 2; // rdo w1
-                rdo = stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1];
+                rdo = stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8];
                 if (rdo)
                 {
-                    scAux.rdoList.push_back(rdo << 32);
+                    scAux.rdoList.push_back(rdo);
                     rdoCounter++;
                 }
                 row = 3; // rdo w2
-                rdo = stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1];
+                rdo = stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8];
                 if (rdo)
                 {
-                    scAux.rdoList.push_back(rdo << 32);
+                    scAux.rdoList.push_back(rdo);
                     rdoCounter++;
                 }
                 row = 4; // rdo w3
-                rdo = stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1];
+                rdo = stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8];
                 if (rdo)
                 {
-                    scAux.rdoList.push_back(rdo << 32);
+                    scAux.rdoList.push_back(rdo);
                     rdoCounter++;
                 }
                 row = 5; // rdo w4
-                rdo = stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1];
+                rdo = stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8];
                 if (rdo)
                 {
-                    scAux.rdoList.push_back(rdo << 32);
+                    scAux.rdoList.push_back(rdo);
                     rdoCounter++;
                 }
                 row = 6; // local x
-                scAux.localPosition.push_back(*(float *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                scAux.localPosition.push_back(*(double *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
                 row = 8; // local covariance xx
-                scAux.localCovariance.push_back(*(float *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                scAux.localCovariance.push_back(*(double *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
                 row = 9; // global x
-                scAux.globalPosition.push_back(*(float *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                scAux.globalPosition.push_back(*(double *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
                 row = 10; // global y
-                scAux.globalPosition.push_back(*(float *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                scAux.globalPosition.push_back(*(double *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
                 row = 11; // global z
-                scAux.globalPosition.push_back(*(float *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                scAux.globalPosition.push_back(*(double *)&stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
                 row = 12; // channels in phi
-                scAux.channelsInPhi.push_back(stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                scAux.channelsInPhi.push_back(stripClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 metadata->scRdoIndex[i] = rdoCounter;
             }
-            ATH_CHECK(m_xaodContainerMaker->makeStripClusterContainer(scAux, metadata.get(), ctx));
+            ATH_CHECK(m_xaodClusterMaker->makeStripClusterContainer(scAux, metadata.get(), ctx));
             // print out the strip cluster aux input
             if (msgLvl(MSG::DEBUG))
             {
@@ -203,86 +203,86 @@ namespace EFTrackingFPGAIntegration
             {
                 rdoCounter = 0;
                 row = 0; // id hash
-                pcAux.idHash.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.idHash.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 1; // id
-                pcAux.id.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.id.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 2; // rdo w1
-                rdo = pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1];
+                rdo = pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8];
                 if (rdo)
                 {
-                    pcAux.rdoList.push_back(rdo << 32);
+                    pcAux.rdoList.push_back(rdo);
                     rdoCounter++;
                 }
 
                 row = 3; // rdo w2
-                rdo = pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1];
+                rdo = pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8];
                 if (rdo)
                 {
-                    pcAux.rdoList.push_back(rdo << 32);
+                    pcAux.rdoList.push_back(rdo);
                     rdoCounter++;
                 }
 
                 row = 4; // rdo w3
-                rdo = pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1];
+                rdo = pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8];
                 if (rdo)
                 {
-                    pcAux.rdoList.push_back(rdo << 32);
+                    pcAux.rdoList.push_back(rdo);
                     rdoCounter++;
                 }
 
                 row = 5; // rdo w4
-                rdo = pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1];
+                rdo = pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8];
                 if (rdo)
                 {
-                    pcAux.rdoList.push_back(rdo << 32);
+                    pcAux.rdoList.push_back(rdo);
                     rdoCounter++;
                 }
 
                 row = 6; // local x
-                pcAux.localPosition.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.localPosition.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 7; // local y
-                pcAux.localPosition.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.localPosition.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 8; // local covariance xx
-                pcAux.localCovariance.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.localCovariance.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 9; // local covariance yy
-                pcAux.localCovariance.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.localCovariance.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 10; // global x
-                pcAux.globalPosition.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.globalPosition.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 11; // global y
-                pcAux.globalPosition.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.globalPosition.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 12; // global z
-                pcAux.globalPosition.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.globalPosition.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 13; // channels in phi
-                pcAux.channelsInPhi.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.channelsInPhi.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 14; // channels in eta
-                pcAux.channelsInEta.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.channelsInEta.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 15; // width in eta
-                pcAux.widthInEta.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.widthInEta.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 16; // omega x
-                pcAux.omegaX.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.omegaX.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 17; // omega y
-                pcAux.omegaY.push_back(*(float *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.omegaY.push_back(*(double *)&pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 row = 18; // total ToT
-                pcAux.totalToT.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 1]);
+                pcAux.totalToT.push_back(pixelClusters[row * EFTrackingTransient::MAX_NUM_CLUSTERS + i + 8]);
 
                 metadata->pcRdoIndex[i] = rdoCounter;
             }
 
-            ATH_CHECK(m_xaodContainerMaker->makePixelClusterContainer(pcAux, metadata.get(), ctx));
+            ATH_CHECK(m_xaodClusterMaker->makePixelClusterContainer(pcAux, metadata.get(), ctx));
 
             // print out pixel cluster aux input
             if (msgLvl(MSG::DEBUG))
diff --git a/Trigger/EFTracking/EFTrackingFPGAIntegration/src/BenchmarkAlg.h b/Trigger/EFTracking/EFTrackingFPGAIntegration/src/BenchmarkAlg.h
index b93ab06eae7ef8cb2a11de04bba72cea6b2057f5..70064d482396403103f79ea984a212e62d566f91 100644
--- a/Trigger/EFTracking/EFTrackingFPGAIntegration/src/BenchmarkAlg.h
+++ b/Trigger/EFTracking/EFTrackingFPGAIntegration/src/BenchmarkAlg.h
@@ -14,7 +14,7 @@
 
 // EFTracking include
 #include "IntegrationBase.h"
-#include "xAODContainerMaker.h"
+#include "xAODClusterMaker.h"
 #include "TestVectorTool.h"
 
 #include "GaudiKernel/ServiceHandle.h"
@@ -49,11 +49,11 @@ namespace EFTrackingFPGAIntegration
         ServiceHandle<IChronoSvc> m_chronoSvc{
             "ChronoStatSvc", name()}; //!< Service for timing the algorithm
 
-        ToolHandle<xAODContainerMaker> m_xaodContainerMaker{
+        ToolHandle<xAODClusterMaker> m_xaodClusterMaker{
             this,
-            "xAODContainerMaker",
-            "xAODContainerMaker",
-            "Tool for creating xAOD containers"}; //!< Tool for creating xAOD containers
+            "xAODClusterMaker",
+            "xAODClusterMaker",
+            "Tool for creating xAOD cluster containers"}; //!< Tool for creating xAOD containers
 
         ToolHandle<TestVectorTool> m_testVectorTool{
             this, "TestVectorTool", "TestVectorTool", "Tool for preparing test vectors"}; //!< Tool for preparing test vectors
diff --git a/Trigger/EFTracking/EFTrackingFPGAIntegration/src/EFTrackingTransient.h b/Trigger/EFTracking/EFTrackingFPGAIntegration/src/EFTrackingTransient.h
index cb7a5c69a848614aa8de1032e228c4d88a522fed..5a724d5f70b9930795db02048ea49e29527981d7 100644
--- a/Trigger/EFTracking/EFTrackingFPGAIntegration/src/EFTrackingTransient.h
+++ b/Trigger/EFTracking/EFTrackingFPGAIntegration/src/EFTrackingTransient.h
@@ -6,6 +6,7 @@
  * @file src/EFTrackingTransient.h
  * @author zhaoyuan.cui@cern.ch
  * @author yuan-tang.chou@cern.ch
+ * @author zhidong.zhang@cern.ch
  * @date Apr. 22, 2024
  * @brief Temporary data struct design for the EF tracking FPGA integration
  * development
@@ -24,14 +25,14 @@ namespace EFTrackingTransient
   // They might be aligned in the future for efficient device memory usage
 
   constexpr unsigned int MAX_NUM_CLUSTERS = 409600;
-  constexpr unsigned int NUM_PIXEL_WORD = 7;
-  constexpr unsigned int NUM_STRIP_WORD = 6;
+  constexpr unsigned int NUM_PIXEL_WORD = 10;
+  constexpr unsigned int NUM_STRIP_WORD = 9;
   constexpr unsigned int NUM_PIXEL_ROW = 19;
   constexpr unsigned int NUM_STRIP_ROW = 14;
   constexpr unsigned long PIXEL_BLOCK_BUF_SIZE = NUM_PIXEL_WORD * MAX_NUM_CLUSTERS;
   constexpr unsigned long STRIP_BLOCK_BUF_SIZE = NUM_STRIP_WORD * MAX_NUM_CLUSTERS;
-  constexpr unsigned long PIXEL_CONTAINER_BUF_SIZE = (NUM_PIXEL_ROW + 1) / 2 * MAX_NUM_CLUSTERS;
-  constexpr unsigned long STRIP_CONTAINER_BUF_SIZE = (NUM_STRIP_ROW + 1) / 2 * MAX_NUM_CLUSTERS;
+  constexpr unsigned long PIXEL_CONTAINER_BUF_SIZE = (NUM_PIXEL_ROW * MAX_NUM_CLUSTERS + 4096); //+4096 for numClusters with alignment
+  constexpr unsigned long STRIP_CONTAINER_BUF_SIZE = (NUM_STRIP_ROW * MAX_NUM_CLUSTERS + 4096);
 
   /**
    * @brief The StripClusters struct contains all xAOD::StripCluster data members