diff --git a/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MmRdoToPrepDataTool.cxx b/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MmRdoToPrepDataTool.cxx
index 883419b53f06f8f188fa0f1eed069fbd782f9e3e..e7c8e2cb5edcd95bc51e606e6b8575d69d75b35d 100644
--- a/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MmRdoToPrepDataTool.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MmRdoToPrepDataTool.cxx
@@ -226,9 +226,9 @@ StatusCode Muon::MmRdoToPrepDataTool::processCollection( const MM_RawDataCollect
 
     if(!merge) {
       // storage will be handeled by Store Gate
-      MMPrepData *mpd = new MMPrepData(prdId, hash, localPos, rdoList, cov, detEl, calibStrip.time, calibStrip.charge, calibStrip.distDrift);
+      std::unique_ptr<MMPrepData> mpd = std::make_unique<MMPrepData>(prdId, hash, localPos, rdoList, cov, detEl, calibStrip.time, calibStrip.charge, calibStrip.distDrift);
       mpd->setAuthor(Muon::MMPrepData::Author::RDOTOPRDConverter);
-      prdColl->push_back(mpd);
+      prdColl->push_back(std::move(mpd));
     } else {
       MMPrepData mpd = MMPrepData(prdId, hash, localPos, rdoList, cov, detEl, calibStrip.time, calibStrip.charge, calibStrip.distDrift);
        // set the hash of the MMPrepData such that it contains the correct value in case it gets used in SimpleMMClusterBuilderTool::getClusters
@@ -239,15 +239,15 @@ StatusCode Muon::MmRdoToPrepDataTool::processCollection( const MM_RawDataCollect
   }
 
   if(merge) {
-    std::vector<MMPrepData*> clusters;
+    std::vector<std::unique_ptr<Muon::MMPrepData>> clusters;
 
     /// reconstruct the clusters
     ATH_CHECK(m_clusterBuilderTool->getClusters(MMprds,clusters));
 
     for (unsigned int i = 0 ; i<clusters.size() ; ++i ) {
-      MMPrepData* prdN = clusters.at(i);
+      std::unique_ptr<Muon::MMPrepData> prdN = std::move(clusters.at(i));
       prdN->setHashAndIndex(prdColl->identifyHash(), prdColl->size());
-      prdColl->push_back(prdN);
+      prdColl->push_back(std::move(prdN));
     } 
 
   }
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/MMClusterization/IMMClusterBuilderTool.h b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/MMClusterization/IMMClusterBuilderTool.h
index ef3f3efc665745bde86a4c41f7b4da7d2a804637..2b23bc7eae8bd4c4195ef315f3804627cec38873 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/MMClusterization/IMMClusterBuilderTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/MMClusterization/IMMClusterBuilderTool.h
@@ -27,7 +27,7 @@ namespace Muon {
   public:    // interface methods
     
     virtual StatusCode getClusters(std::vector<Muon::MMPrepData>& stripsVect, 
-				   std::vector<Muon::MMPrepData*>& clustersVect)const =0;
+				   std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVect)const =0;
     
   };
 }
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ClusterTimeProjectionMMClusterBuilderTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ClusterTimeProjectionMMClusterBuilderTool.cxx
index 089568f9fc8152a35ed79d54d016b2973b4871fc..63799413fb1a5519eb79f846bc26d243ac47ee98 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ClusterTimeProjectionMMClusterBuilderTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ClusterTimeProjectionMMClusterBuilderTool.cxx
@@ -32,7 +32,7 @@ StatusCode Muon::ClusterTimeProjectionMMClusterBuilderTool::initialize() {
 
 StatusCode Muon::ClusterTimeProjectionMMClusterBuilderTool::getClusters(
                 std::vector<Muon::MMPrepData>& MMprds,
-                std::vector<Muon::MMPrepData*>& clustersVec) const {
+                std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec) const {
     std::vector<std::vector<Muon::MMPrepData>> prdsPerLayer(8, std::vector<Muon::MMPrepData>(0));
     ATH_CHECK(sortHitsToLayer(MMprds, prdsPerLayer));
     for (const auto& prdsOfLayer : prdsPerLayer) {
@@ -194,7 +194,7 @@ StatusCode Muon::ClusterTimeProjectionMMClusterBuilderTool::writeClusterPrd(
                            const std::vector<uint> &idxCluster,
                            const double &clusterPosition,
                            const double &clusterPositionErrorSq,
-                           std::vector<Muon::MMPrepData*>& clustersVec) const {
+                           std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec) const {
     std::vector<Identifier> rdoList;
     std::vector<int> stripCharges;
     std::vector<short int> stripTimes;
@@ -229,7 +229,7 @@ StatusCode Muon::ClusterTimeProjectionMMClusterBuilderTool::writeClusterPrd(
             MMPrdsOfLayer.at(idxCluster.at(0)).localPosition().y());
     Identifier idStrip0 = MMPrdsOfLayer.at(idxCluster.at(0)).identify();
 
-    MMPrepData* prdN = new MMPrepData(idStrip0,
+    std::unique_ptr<MMPrepData> prdN = std::make_unique<MMPrepData>(idStrip0,
                    MMPrdsOfLayer.at(idxCluster.at(0)).collectionHash(),
                    localClusterPositionV, rdoList, covN,
                    MMPrdsOfLayer.at(idxCluster.at(0)).detectorElement(),
@@ -241,6 +241,6 @@ StatusCode Muon::ClusterTimeProjectionMMClusterBuilderTool::writeClusterPrd(
     prdN->setDriftDist(stripDriftDists, stripDriftDistErrors);
     prdN->setAuthor(Muon::MMPrepData::Author::ClusterTimeProjectionClusterBuilder);
 
-    clustersVec.push_back(prdN);
+    clustersVec.push_back(std::move(prdN));
     return StatusCode::SUCCESS;
 }
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ClusterTimeProjectionMMClusterBuilderTool.h b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ClusterTimeProjectionMMClusterBuilderTool.h
index 3d8a64e930acf4a3d535d8254517173a6e989256..d240e67f6f382ac8793568c17da449572acdcdfd 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ClusterTimeProjectionMMClusterBuilderTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ClusterTimeProjectionMMClusterBuilderTool.h
@@ -26,7 +26,7 @@ class ClusterTimeProjectionMMClusterBuilderTool :
   StatusCode initialize() override;
 
   StatusCode getClusters(std::vector<Muon::MMPrepData>& MMprds,
-      std::vector<Muon::MMPrepData*>& clustersVec) const override;
+      std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec) const override;
 
  private:
     ToolHandle<MuonIdHelperTool> m_muonIdHelperTool;
@@ -52,7 +52,7 @@ class ClusterTimeProjectionMMClusterBuilderTool :
                                const std::vector<uint> &idxCluster,
                                const double &clustersPosition,
                                const double &clustersPositionErrorSq,
-                               std::vector<Muon::MMPrepData*>& clustersVec) const;
+                               std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec) const;
 
     uint channel(const Identifier &id) const {
         return m_muonIdHelperTool->mmIdHelper().channel(id);
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ConstraintAngleMMClusterBuilderTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ConstraintAngleMMClusterBuilderTool.cxx
index ecea0573b7d245a86cb8c123ee223a9497a59e53..ad6a53f2f4f6c07e1f422801a2ad4505bf5833f2 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ConstraintAngleMMClusterBuilderTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ConstraintAngleMMClusterBuilderTool.cxx
@@ -91,7 +91,7 @@ StatusCode Muon::ConstraintAngleMMClusterBuilderTool::initialize(){
 
 
 StatusCode Muon::ConstraintAngleMMClusterBuilderTool::getClusters(std::vector<Muon::MMPrepData>& MMprds,
-                                                     std::vector<Muon::MMPrepData*>& clustersVec) const
+                                                     std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec) const
 {
     ATH_MSG_DEBUG("Running constraint angle MM cluster builder with: "<< MMprds.size() <<" MMprds");
     std::vector<std::vector<Muon::MMPrepData>> prdsPerLayer(8,std::vector<Muon::MMPrepData>(0));
@@ -238,7 +238,7 @@ const{
 } // end of scan layer
 
 
-StatusCode Muon::ConstraintAngleMMClusterBuilderTool::fitCluster(const std::vector<Muon::MMPrepData> &prdPerLayer, const std::vector<uint>& idxCluster,const double &clusterTheta,std::vector<Muon::MMPrepData*>& clustersVec)
+StatusCode Muon::ConstraintAngleMMClusterBuilderTool::fitCluster(const std::vector<Muon::MMPrepData> &prdPerLayer, const std::vector<uint>& idxCluster,const double &clusterTheta,std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec)
 const{
     std::vector<std::vector<double>> pts;
     std::unique_ptr<TGraphErrors> fitGraph = std::unique_ptr<TGraphErrors>(new TGraphErrors());
@@ -319,7 +319,7 @@ const{
     covN->coeffRef(0,0)=0.3*0.3;
     Amg::Vector2D localClusterPositionV(clusterPos,prdPerLayer.at(idxCluster.at(0)).localPosition().y()); // y position is the same for all strips
 
-    MMPrepData* prdN=new MMPrepData(prdPerLayer.at(idxCluster.at(0)).identify(),
+    std::unique_ptr<MMPrepData> prdN=std::make_unique<MMPrepData>(prdPerLayer.at(idxCluster.at(0)).identify(),
 		prdPerLayer.at(idxCluster.at(0)).collectionHash(),
 		localClusterPositionV,stripsOfCluster,
 		covN,prdPerLayer.at(0).detectorElement(),
@@ -338,7 +338,7 @@ const{
 
      prdN->setMicroTPC(fitResults[0],0);
      ATH_MSG_DEBUG("Reading back prd angle: "<< prdN->angle() <<" chi2 Prob: "<<prdN->chisqProb());
-     clustersVec.push_back(prdN);
+     clustersVec.push_back(std::move(prdN));
      ATH_MSG_DEBUG("pushedBack  prdN");
 
 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ConstraintAngleMMClusterBuilderTool.h b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ConstraintAngleMMClusterBuilderTool.h
index 34c5f829af85af68f2775837bcf8d1c61b071c5b..a39b37729bec02aeb486da67c3d99e568848a699 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ConstraintAngleMMClusterBuilderTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ConstraintAngleMMClusterBuilderTool.h
@@ -31,7 +31,7 @@ namespace Muon{
 
 
             StatusCode getClusters(std::vector<Muon::MMPrepData>& MMprds, 
-			   std::vector<Muon::MMPrepData*>& clustersVec) const;
+			   std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec) const;
 
             
         private:
@@ -40,7 +40,7 @@ namespace Muon{
 
             StatusCode sortHitsToLayer(const std::vector<Muon::MMPrepData>& MMprds, std::vector<std::vector<Muon::MMPrepData>>& prdsPerLayer) const ;
             StatusCode scanLayer(const std::vector<Muon::MMPrepData> &mmPrdsPerLayer,std::vector<std::vector<uint>> &idxClusters, std::vector<double> &clusterTheta)const ;
-            StatusCode fitCluster(const std::vector<Muon::MMPrepData> &prdPerLayer,const std::vector<uint>& idxCluster,const double &clusterTheta,std::vector<Muon::MMPrepData*>& clustersVec) const;
+            StatusCode fitCluster(const std::vector<Muon::MMPrepData> &prdPerLayer,const std::vector<uint>& idxCluster,const double &clusterTheta,std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec) const;
 
             int m_nSigmaSelection;
             double m_sigmaTheta;
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ProjectionMMClusterBuilderTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ProjectionMMClusterBuilderTool.cxx
index 3132367c129bee67c5475a04538459cc1c0962c5..a998bfaa855fc1c267b25da37f19e20733335b1f 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ProjectionMMClusterBuilderTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ProjectionMMClusterBuilderTool.cxx
@@ -58,7 +58,7 @@ StatusCode Muon::ProjectionMMClusterBuilderTool::initialize()
 
 
 StatusCode Muon::ProjectionMMClusterBuilderTool::getClusters(std::vector<Muon::MMPrepData>& MMprds, 
-							 std::vector<Muon::MMPrepData*>& clustersVect) const 
+							 std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVect) const 
 {
 
 std::vector<std::vector<Muon::MMPrepData>> prdsPerLayer(8,std::vector<Muon::MMPrepData>(0));
@@ -207,7 +207,7 @@ StatusCode  Muon::ProjectionMMClusterBuilderTool::doPositionCalculation(std::vec
   }
 
 
-StatusCode Muon::ProjectionMMClusterBuilderTool::writeNewPrd(std::vector<Muon::MMPrepData*>& clustersVect,double xmean, double xerr,double qtot,const std::vector<int>& idx_selected,const std::vector<Muon::MMPrepData>& prdsOfLayer)const {
+StatusCode Muon::ProjectionMMClusterBuilderTool::writeNewPrd(std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVect,double xmean, double xerr,double qtot,const std::vector<int>& idx_selected,const std::vector<MMPrepData>& prdsOfLayer)const {
       Amg::MatrixX* covN = new Amg::MatrixX(1,1);
       covN->coeffRef(0,0)=xerr; // TODO set proper uncertainty
       ATH_MSG_VERBOSE("Did set covN Matrix");
@@ -253,7 +253,7 @@ StatusCode Muon::ProjectionMMClusterBuilderTool::writeNewPrd(std::vector<Muon::M
 
       float driftDist = 0.0;
 
-      MMPrepData* prdN=new MMPrepData(prdsOfLayer.at(idx).identify(),prdsOfLayer.at(idx).collectionHash(),
+      std::unique_ptr<Muon::MMPrepData> prdN =  std::make_unique<MMPrepData>(prdsOfLayer.at(idx).identify(),prdsOfLayer.at(idx).collectionHash(),
 				      localClusterPositionV,stripsOfCluster,
 				      covN,prdsOfLayer.at(idx).detectorElement(),
 				      (short int) int(meanTime),int(qtot), driftDist,
@@ -261,7 +261,7 @@ StatusCode Muon::ProjectionMMClusterBuilderTool::writeNewPrd(std::vector<Muon::M
 
       prdN->setAuthor(Muon::MMPrepData::Author::ProjectionClusterBuilder);
 
-      clustersVect.push_back(prdN);
+      clustersVect.push_back(std::move(prdN));
       ATH_MSG_VERBOSE("pushedBack  prdN");
       ATH_MSG_VERBOSE("pushedBack PRDs: stationEta: "<< m_mmIdHelper->stationEta(prdN->identify())
                        <<" stationPhi "<< m_mmIdHelper->stationPhi(prdN->identify()) 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ProjectionMMClusterBuilderTool.h b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ProjectionMMClusterBuilderTool.h
index cb3838be58a690afae70667850a2497f16094626..b13fba585aed8cb51eb5ce6ff0cc606b6149dd2b 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ProjectionMMClusterBuilderTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/ProjectionMMClusterBuilderTool.h
@@ -40,7 +40,7 @@ namespace Muon
     virtual StatusCode initialize() override;
     
     /**Interface fuction to IMMClusterBuilderTool; calling function manages the pointers inside clustersVec  */
-    StatusCode getClusters(std::vector<Muon::MMPrepData>& MMprds, std::vector<Muon::MMPrepData*>& clustersVec) const;
+    StatusCode getClusters(std::vector<Muon::MMPrepData>& MMprds, std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec) const;
 
   private: 
 
@@ -61,7 +61,7 @@ namespace Muon
     StatusCode doFineScan(std::vector<int>& flag,const std::vector<double>& v_posxc, const std::vector<double>& v_cor, std::vector<int>& idx_selected) const ;   
     StatusCode doPositionCalculation(std::vector<double>& v_posxc, const std::vector<double>& v_cor, const std::vector<int> idx_selected,double& xmean, double& xmeanErr, double &  qtot,const std::vector<Muon::MMPrepData>& prdsOfLayer) const;
     
-    StatusCode writeNewPrd(std::vector<Muon::MMPrepData*>& clustersVect,double xmean, double xerr,double qtot,const std::vector<int>& idx_selected,const std::vector<Muon::MMPrepData>& prdsOfLayer) const ;
+    StatusCode writeNewPrd(std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVect,double xmean, double xerr,double qtot,const std::vector<int>& idx_selected,const std::vector<Muon::MMPrepData>& prdsOfLayer) const ;
     
     double getSigma(double correction)const;
 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/SimpleMMClusterBuilderTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/SimpleMMClusterBuilderTool.cxx
index 8a799d846bf2d04c08816f5cc4d844d39b0efc40..ddd0da119a794f004b6a24348fddcd48110111a7 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/SimpleMMClusterBuilderTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/SimpleMMClusterBuilderTool.cxx
@@ -58,7 +58,7 @@ StatusCode Muon::SimpleMMClusterBuilderTool::finalize()
 }
 
 StatusCode Muon::SimpleMMClusterBuilderTool::getClusters(std::vector<Muon::MMPrepData>& MMprds, 
-							 std::vector<Muon::MMPrepData*>& clustersVect) const 
+							 std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVect) const 
 
 {
   ATH_MSG_DEBUG("Size of the input vector: " << MMprds.size()); 
@@ -222,7 +222,7 @@ StatusCode Muon::SimpleMMClusterBuilderTool::getClusters(std::vector<Muon::MMPre
     ///
     /// memory allocated dynamically for the PrepRawData is managed by Event Store
     ///
-    MMPrepData* prdN = new MMPrepData(MMprds[j].identify(), hash, clusterLocalPosition,
+    std::unique_ptr<Muon::MMPrepData> prdN = std::make_unique<MMPrepData>(MMprds[j].identify(), hash, clusterLocalPosition,
               rdoList, covN, MMprds[j].detectorElement(),
               static_cast<short int> (0), static_cast<int>(totalCharge), static_cast<float>(0.0),
               (m_writeStripProperties ? mergeStrips : std::vector<uint16_t>(0) ),
@@ -231,7 +231,7 @@ StatusCode Muon::SimpleMMClusterBuilderTool::getClusters(std::vector<Muon::MMPre
     prdN->setAuthor(Muon::MMPrepData::Author::SimpleClusterBuilder);
 
 
-    clustersVect.push_back(prdN);
+    clustersVect.push_back(std::move(prdN));
   } // end loop MMprds[i]
   //clear vector and delete elements
   MMflag.clear();
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/SimpleMMClusterBuilderTool.h b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/SimpleMMClusterBuilderTool.h
index 265f0a47b17e824b6791fdd9d805072c81bfb8f9..31222afc4e4a0897dacaa0fd035511808dd5888b 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/SimpleMMClusterBuilderTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/SimpleMMClusterBuilderTool.h
@@ -39,7 +39,7 @@ namespace Muon
     virtual StatusCode finalize();
 
     StatusCode getClusters(std::vector<Muon::MMPrepData>& stripsVect, 
-			   std::vector<Muon::MMPrepData*>& clustersVect) const;
+			   std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVect) const;
 
   private: 
 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/UTPCMMClusterBuilderTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/UTPCMMClusterBuilderTool.cxx
index bceebb15589f9ff4e315cea27aa947c20b4fabf8..3f1b45b9420ae615db48f76a2dcb39a58ce4a4cb 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/UTPCMMClusterBuilderTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/UTPCMMClusterBuilderTool.cxx
@@ -71,7 +71,7 @@ StatusCode Muon::UTPCMMClusterBuilderTool::initialize(){
 
 
 StatusCode Muon::UTPCMMClusterBuilderTool::getClusters(std::vector<Muon::MMPrepData>& MMprds,
-                                             std::vector<Muon::MMPrepData*>& clustersVect)const {
+                                             std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVect)const {
     std::vector<std::vector<Muon::MMPrepData>> MMprdsPerLayer(8,std::vector<Muon::MMPrepData>(0));
     for (const auto& MMprd:MMprds){
         Identifier id = MMprd.identify();
@@ -186,7 +186,7 @@ StatusCode Muon::UTPCMMClusterBuilderTool::getClusters(std::vector<Muon::MMPrepD
 
 	    float driftDist = 0.0;
 
-            MMPrepData* prdN=new MMPrepData(MMprdsOfLayer.at(idx).identify(),
+            std::unique_ptr<Muon::MMPrepData> prdN = std::make_unique<MMPrepData>(MMprdsOfLayer.at(idx).identify(),
 					    MMprdsOfLayer.at(idx).collectionHash(),
 					    localClusterPositionV,stripsOfCluster,
 					    covN,MMprdsOfLayer.at(idx).detectorElement(),
@@ -205,7 +205,7 @@ StatusCode Muon::UTPCMMClusterBuilderTool::getClusters(std::vector<Muon::MMPrepD
 
             prdN->setMicroTPC(finalFitAngle,finalFitChiSqProb);
             ATH_MSG_DEBUG("Reading back prd angle: "<< prdN->angle() <<" chi2 Prob: "<<prdN->chisqProb());
-            clustersVect.push_back(prdN);
+            clustersVect.push_back(std::move(prdN));
             ATH_MSG_DEBUG("pushedBack  prdN");
             int leftOverStrips=0;
             for(auto f:flag){if(f==0) leftOverStrips++;}
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/UTPCMMClusterBuilderTool.h b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/UTPCMMClusterBuilderTool.h
index 567c3bcde706780006d2a6b432c7e830522781ef..6fdce73ea37e3442a9966c04a0966d00757088d1 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/UTPCMMClusterBuilderTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/MMClusterization/src/UTPCMMClusterBuilderTool.h
@@ -51,7 +51,7 @@ namespace Muon
     //virtual StatusCode finalize();
 
     StatusCode getClusters(std::vector<Muon::MMPrepData>& MMprds, 
-	 		   std::vector<Muon::MMPrepData*>& clustersVec)const ;
+	 		   std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVec)const ;
 
   private: