diff --git a/Reconstruction/Tracking/src/FullLDCTracking/FullLDCTrackingAlg.cpp b/Reconstruction/Tracking/src/FullLDCTracking/FullLDCTrackingAlg.cpp
index f5a986328dd86bf39acd24f0bfad6607c11d3fec..b00f1d051256fc450499a21e30d90ed74e982243 100755
--- a/Reconstruction/Tracking/src/FullLDCTracking/FullLDCTrackingAlg.cpp
+++ b/Reconstruction/Tracking/src/FullLDCTracking/FullLDCTrackingAlg.cpp
@@ -288,7 +288,7 @@ void FullLDCTrackingAlg::AddTrackColToEvt(TrackExtendedVec & trkVec, edm4hep::Tr
     edm4hep::MutableTrack track;// = new edm4hep::Track;
     
     // setup initial dummy covariance matrix
-    std::array<float,15> covMatrix;
+    decltype(edm4hep::TrackState::covMatrix) covMatrix;
     
     for (unsigned icov = 0; icov<covMatrix.size(); ++icov) {
       covMatrix[icov] = 0;
@@ -1115,9 +1115,10 @@ void FullLDCTrackingAlg::prepareVectors() {
       //param[3] = getD0(tpcTrack);
       //param[4] = getZ0(tpcTrack);
       
-      std::array<float, 15> Cov = getCovMatrix(tpcTrack);
+      auto Cov = getCovMatrix(tpcTrack);
       int NC = int(Cov.size());
       for (int ic=0;ic<NC;ic++) {
+        if (ic>=(sizeof(cov)/sizeof(float))) break;
         cov[ic] =  Cov[ic];
       }
       
@@ -1179,9 +1180,10 @@ void FullLDCTrackingAlg::prepareVectors() {
       //param[3] = getD0(siTrack);
       //param[4] = getZ0(siTrack);
             
-      std::array<float, 15> Cov = getCovMatrix(siTrack);
+      auto Cov = getCovMatrix(siTrack);
       int NC = int(Cov.size());
       for (int ic=0;ic<NC;ic++) {
+        if (ic>=(sizeof(cov)/sizeof(float))) break;
         cov[ic] =  Cov[ic];
       }
       trackExt->setCovMatrix(cov);
@@ -1571,7 +1573,7 @@ TrackExtended * FullLDCTrackingAlg::CombineTracks(TrackExtended * tpcTrack, Trac
   }
   
   // setup initial dummy covariance matrix
-  std::array<float,15> covMatrix;
+  decltype(edm4hep::TrackState::covMatrix) covMatrix;
   
   for (unsigned icov = 0; icov<covMatrix.size(); ++icov) {
     covMatrix[icov] = 0;
@@ -3628,7 +3630,7 @@ void FullLDCTrackingAlg::AssignOuterHitsToTracks(TrackerHitExtendedVec hitVec, f
           
           pre_fit.location = 1/*lcio::TrackState::AtIP*/;
           // setup initial dummy covariance matrix
-          std::array<float,15> covMatrix;
+          decltype(edm4hep::TrackState::covMatrix) covMatrix;
           
           for (unsigned icov = 0; icov<covMatrix.size(); ++icov) {
             covMatrix[icov] = 0;
@@ -4134,7 +4136,7 @@ void FullLDCTrackingAlg::AssignSiHitsToTracks(TrackerHitExtendedVec hitVec,
         pre_fit.location = 1/*lcio::TrackState::AtIP*/;
         
         // setup initial dummy covariance matrix
-        std::array<float,15> covMatrix;
+        decltype(edm4hep::TrackState::covMatrix) covMatrix;
 
         for (unsigned icov = 0; icov<covMatrix.size(); ++icov) {
           covMatrix[icov] = 0;