diff --git a/.DS_Store b/.DS_Store
index a085ba9f2eefe9ea7a47ac443a2bd50311b601f3..8c602a9effaeb0528f8725e0829ba377515ff5b1 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/Analisys_With_Features.m b/Analisys_With_Features.m
index ca462a3660e0eadfeb97f9c3c1d0bdff2f45ce10..66cba209c9a7921685437a3e4b1894123fead91e 100644
--- a/Analisys_With_Features.m
+++ b/Analisys_With_Features.m
@@ -92,7 +92,6 @@ clc
 %         @Observables_model_with_Features,...
 %         par.R,YObs,par,units,file_features);
 
-
     Results(Est, YObs, par, units)
     
 %     save('./Results/QSOLb_9days_AllObs_alpha8e1.mat', 'Est')
diff --git a/CovarianceAnalysisParameters.m b/CovarianceAnalysisParameters.m
index ba9bc4b3e2cb493684e77aec93622cd38faf8d50..a55c3880e0920a9b474557dee6095bb16e5234d3 100644
--- a/CovarianceAnalysisParameters.m
+++ b/CovarianceAnalysisParameters.m
@@ -75,8 +75,8 @@ pars.R(8,8) = pars.ObsNoise.pixel^2;
 % Seconds between observation
 pars.interval_Range         = 600e10;     % s
 pars.interval_Range_rate    = 600e10;      % s
-pars.interval_lidar         = 600;      % s
-pars.interval_camera        = 600;     % s
+pars.interval_lidar         = 300;      % s
+pars.interval_camera        = 300;     % s
 pars.flag_Limb      = 1;
 pars.flag_features  = 1;
 
diff --git a/Mars_LimbRange.m b/Mars_LimbRange.m
index 5c20d67f8ebee058face44565ceb652de80aa9fb..ee039da050bf2dfb1016c923d7777a2f8950a94e 100644
--- a/Mars_LimbRange.m
+++ b/Mars_LimbRange.m
@@ -54,6 +54,7 @@ function Limb_Range = Mars_LimbRange(MMX, Phobos, Sun, pars, units)
     Sun = R2rot*Sun(1:3);
     I_Sun = Sun/norm(Sun);
 
+    angle_MMXSun = acos(dot(I_sM,I_Sun));
 
     [~, ~, PM]  = ProjMatrix(-r_sb_Ph, pars, units);
     MP   = PM*[-Mars_pole; 1];
@@ -63,11 +64,12 @@ function Limb_Range = Mars_LimbRange(MMX, Phobos, Sun, pars, units)
 
     if ((any(MC<0))||(any(MP<0))||((MC(1)>pars.cam.nPixX))||...
             (MP(1)>pars.cam.nPixX)||(MC(2)>pars.cam.nPixY)||...
-            (MP(2)>pars.cam.nPixY))||(dot(r_sb_Ph, Mars_centre)>0)
+            (MP(2)>pars.cam.nPixY))||(dot(r_sb_Ph, Mars_centre)>0)||...
+            ((dot(I_sM,I_Sun)<0)&&((angle_MMXSun-pi/2)<pars.FOV))
         Limb_Range = [];
     else
         Limb_radius = MP - MC;
-        Limb_Range  = (sqrt(Limb_radius(1)^2 + Limb_radius(2)^2) + random('Normal',0, pars.ObsNoise.pixel));
+        Limb_Range  = round(sqrt(Limb_radius(1)^2 + Limb_radius(2)^2) + random('Normal',0, pars.ObsNoise.pixel));
         % Plotfeatures_Pic(MC, MP, pars);
     end
 
diff --git a/Mars_LimbRange_model.m b/Mars_LimbRange_model.m
index 67048418923f8deda884033bff80c859f2cc509b..5ce7d307fe1357684cbd387c7da692fb109315ac 100644
--- a/Mars_LimbRange_model.m
+++ b/Mars_LimbRange_model.m
@@ -61,16 +61,10 @@ function Limb_Range = Mars_LimbRange_model(MMX, Phobos, Sun, pars, units)
     MC = PM*[-Mars_centre; 1];
     MC = MC./repmat(MC(3),3,1);
 
-    if ((any(MC<0))||(any(MP<0))||((MC(1)>pars.cam.nPixX))||...
-            (MP(1)>pars.cam.nPixX)||(MC(2)>pars.cam.nPixY)||...
-            (MP(2)>pars.cam.nPixY))||(dot(r_sb_Ph, Mars_centre)>0)
-        Limb_Range = [];
-    else
-        Limb_radius = MP - MC;
-        Limb_Range  = sqrt(Limb_radius(1)^2 + Limb_radius(2)^2);
-        % Plotfeatures_Pic(MC, MP, pars);
 
-    end
+    Limb_radius = MP - MC;
+    Limb_Range  = sqrt(Limb_radius(1)^2 + Limb_radius(2)^2);
+    % Plotfeatures_Pic(MC, MP, pars);
 
 
 
diff --git a/Observations_Generation.m b/Observations_Generation.m
index 20b7dbe7d02c3d2655d2e09b8e03040c5a104d5b..6311ab3c285172f1505a2fcf16815fe807850f6e 100644
--- a/Observations_Generation.m
+++ b/Observations_Generation.m
@@ -30,7 +30,7 @@ clc
 %   Time of the analysis
     data        = '2026-03-16 00:00:00 (UTC)';
     data        = cspice_str2et(data);
-    Ndays       = 3.5;
+    Ndays       = 2;
     t           = Ndays*86400;
     date_end    = data+t;
 
diff --git a/Phobos_cartesian_covariance.m b/Phobos_cartesian_covariance.m
new file mode 100644
index 0000000000000000000000000000000000000000..828f72a1ea9f31488809286bc2ea82578dd0aaab
--- /dev/null
+++ b/Phobos_cartesian_covariance.m
@@ -0,0 +1,58 @@
+function [P_PhXYZ, P_PhXYZ_MMX, P_rel, P_PhVXYZ, P_Vrel] = Phobos_cartesian_covariance(X_t, P_t, pars, ~)
+
+
+%   Partials delle cartesian coordinates wrt radial distance and true
+%   anomaly
+
+%   Position
+    dXdR    = pars.perifocal2MARSIAU*[cos(X_t(9,:)); sin(X_t(9,:)); zeros(size(X_t(9,:)))];
+    dXdtheta    = pars.perifocal2MARSIAU*[-sin(X_t(9,:)); cos(X_t(9,:)); zeros(size(X_t(9,:)))].*X_t(7,:);
+
+%   Velocity
+    dVdR    = zeros(3,size(X_t(9,:),2));
+    dVdR_dot    = zeros(3,size(X_t(9,:),2));
+    dVdtheta    = zeros(3,size(X_t(9,:),2));
+    dVdtheta_dot    = zeros(3,size(X_t(9,:),2));
+
+    for i=1:size(X_t(9,:),2)
+
+        dVdR(:,i)   = pars.perifocal2MARSIAU*cross([0;0;X_t(10,i)], [cos(X_t(9,i));sin(X_t(9,i));0]);
+        dVdR_dot(:,i)   = pars.perifocal2MARSIAU*[cos(X_t(9,i)), sin(X_t(9,i)), 0; -sin(X_t(9,i)), cos(X_t(9,i)), 0; 0, 0, 1]'*([1; 0; 0]);
+        dVdtheta(:,i)   = pars.perifocal2MARSIAU*([-sin(X_t(9,i)), cos(X_t(9,i)), 0; -cos(X_t(9,i)), -sin(X_t(9,i)), 0; 0, 0, 1]'*([X_t(8,i); 0; 0]) +...
+            cross([0; 0; X_t(10,i)], [cos(X_t(9,i)); sin(X_t(9,i)); 0])*X_t(7,i));
+        dVdtheta_dot(:,i)   = pars.perifocal2MARSIAU*cross([0; 0; 1], [X_t(7,i)*cos(X_t(9,i)); X_t(7,i)*sin(X_t(9,i)); 0]);
+    end
+
+
+%   Coomposizione della covariance P_PhXYZ
+    
+    P_PhXYZ     = zeros(3,3,size(X_t(9,:),2));
+    P_PhVXYZ    = zeros(3,3,size(X_t(9,:),2));
+    
+    for i=1:size(X_t(9,:),2)
+        P_PhXYZ(:,:,i) = [dXdR(:,i),dXdtheta(:,i)]*...
+            [P_t(7,7,i), P_t(7,9,i); P_t(9,7,i), P_t(9,9,i)]*...
+            [dXdR(:,i),dXdtheta(:,i)]';
+        P_PhVXYZ(:,:,i) = [dVdR(:,i), dVdR_dot(:,i), dVdtheta(:,i), dVdtheta_dot(:,i)]*...
+            P_t(7:10,7:10,i)*[dVdR(:,i), dVdR_dot(:,i), dVdtheta(:,i), dVdtheta_dot(:,i)]';
+
+    end
+
+%   Correlation covariance MMX-Phobos
+    P_PhXYZ_MMX     = zeros(3,3,size(X_t(9,:),2));
+    P_VPhXYZ_VMMX   = zeros(3,3,size(X_t(9,:),2));
+
+    for i=1:size(X_t(9,:),2)
+        P_PhXYZ_MMX(:,:,i)  = [dXdR(:,i),dXdtheta(:,i)]*[P_t(1:3,7,i), P_t(1:3,9,i)]';
+        P_VPhXYZ_VMMX(:,:,i)    = [dVdR(:,i), dVdR_dot(:,i), dVdtheta(:,i), dVdtheta_dot(:,i)]*P_t(4:6,7:10,i)';
+
+    end
+
+%   Relative distance covariance between MMX and PHobos
+    P_rel = P_PhXYZ + P_t(1:3,1:3,:) - 2*P_PhXYZ_MMX;
+
+%   Relative velocity covariance between MMX and PHobos
+    P_Vrel     = P_PhVXYZ + P_t(4:6,4:6,:) - 2*P_VPhXYZ_VMMX;
+
+
+end
\ No newline at end of file
diff --git a/Results.m b/Results.m
index f22b8a303b9c4180fc91ada3e759ddc578999708..3fb72386e37685361a7fef71c56e2f2bd564a1c4 100644
--- a/Results.m
+++ b/Results.m
@@ -186,6 +186,81 @@ function Results(Est, YObs_Full, pars, units)
     xlabel('time [hour]')
     ylabel('$\dot{\Phi}_{Ph}$ [rad/s]')
 
+
+%   Phobos cartesian covaraiance
+
+    [P_PhXYZ, ~, P_rel_MMXPh, P_PhVXYZ,  P_Vrel_MMXPh] = Phobos_cartesian_covariance(Est.X_t, Est.P_t, pars, units);
+    
+    sqx_Ph = squeeze(P_PhXYZ(1,1,1:end-1));
+    sqy_Ph = squeeze(P_PhXYZ(2,2,1:end-1));
+    sqz_Ph = squeeze(P_PhXYZ(3,3,1:end-1));
+    SQRT_X_Ph = 3*sqrt(sqx_Ph + sqy_Ph + sqz_Ph);
+
+    sqx_VPh = squeeze(P_PhVXYZ(1,1,1:end-1));
+    sqy_VPh = squeeze(P_PhVXYZ(2,2,1:end-1));
+    sqz_VPh = squeeze(P_PhVXYZ(3,3,1:end-1));
+    SQRT_V_Ph = 3*sqrt(sqx_VPh + sqy_VPh + sqz_VPh);
+
+    sqx_rel = squeeze(P_rel_MMXPh(1,1,1:end-1));
+    sqy_rel = squeeze(P_rel_MMXPh(2,2,1:end-1));
+    sqz_rel = squeeze(P_rel_MMXPh(3,3,1:end-1));
+    SQRT_X_rel = 3*sqrt(sqx_rel + sqy_rel + sqz_rel);
+
+    sqx_Vrel = squeeze(P_Vrel_MMXPh(1,1,1:end-1));
+    sqy_Vrel = squeeze(P_Vrel_MMXPh(2,2,1:end-1));
+    sqz_Vrel = squeeze(P_Vrel_MMXPh(3,3,1:end-1));
+    SQRT_V_rel = 3*sqrt(sqx_Vrel + sqy_Vrel + sqz_Vrel);
+
+
+    figure()
+    subplot(2,2,1)
+    semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(P_PhXYZ(1,1,1:end-1)))),'Color','b','LineWidth',1)
+    hold on;
+    grid on;
+    semilogy(t_obs(1:end-1)/3600,3*squeeze(real(sqrt(P_PhXYZ(2,2,1:end-1)))),'Color','r','LineWidth',1)
+    semilogy(t_obs(1:end-1)/3600,3*squeeze(real(sqrt(P_PhXYZ(3,3,1:end-1)))),'Color','g','LineWidth',1)
+    semilogy(t_obs(1:end-1)/3600,SQRT_X_Ph,'Color','k','LineWidth',2)
+    xlabel('time $[hour]$')
+    ylabel('$[km]$')
+    title('Phobos position vector $3\sigma$ envelopes','Interpreter','latex','FontSize',16)
+    legend('$3\sigma_{x}$','$3\sigma_{y}$','$3\sigma_{z}$','$3 RMS$','Interpreter','latex','FontSize',14)
+    subplot(2,2,2)
+    semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(P_PhVXYZ(1,1,1:end-1)))),'Color','b','LineWidth',1)
+    hold on;
+    grid on;
+    semilogy(t_obs(1:end-1)/3600,3*squeeze(real(sqrt(P_PhVXYZ(2,2,1:end-1)))),'Color','r','LineWidth',1)
+    semilogy(t_obs(1:end-1)/3600,3*squeeze(real(sqrt(P_PhVXYZ(3,3,1:end-1)))),'Color','g','LineWidth',1)
+    semilogy(t_obs(1:end-1)/3600,SQRT_V_Ph,'Color','k','LineWidth',2)
+    xlabel('time $[hour]$')
+    ylabel('$[km]$')
+    title('Phobos velocity vector $3\sigma$ envelopes','Interpreter','latex','FontSize',16)
+    legend('$3\sigma_{\dot{x}}$','$3\sigma_{\dot{y}}$','$3\sigma_{\dot{z}}$','$3 RMS$','Interpreter','latex','FontSize',14)
+    subplot(2,2,3)
+    semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(P_rel_MMXPh(1,1,1:end-1)))),'Color','b','LineWidth',1)
+    hold on;
+    grid on;
+    semilogy(t_obs(1:end-1)/3600,3*squeeze(real(sqrt(P_rel_MMXPh(2,2,1:end-1)))),'Color','r','LineWidth',1)
+    semilogy(t_obs(1:end-1)/3600,3*squeeze(real(sqrt(P_rel_MMXPh(3,3,1:end-1)))),'Color','g','LineWidth',1)
+    semilogy(t_obs(1:end-1)/3600,SQRT_X_rel,'Color','k','LineWidth',2)
+    xlabel('time $[hour]$')
+    ylabel('$[km]$')
+    title('MMX-Phobos relative distance $3\sigma$ envelopes','Interpreter','latex','FontSize',16)
+    legend('$3\sigma_{x}$','$3\sigma_{y}$','$3\sigma_{z}$','$3 RMS$','Interpreter','latex','FontSize',14)
+    subplot(2,2,4)
+    semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(P_Vrel_MMXPh(1,1,1:end-1)))),'Color','b','LineWidth',1)
+    hold on;
+    grid on;
+    semilogy(t_obs(1:end-1)/3600,3*squeeze(real(sqrt(P_Vrel_MMXPh(2,2,1:end-1)))),'Color','r','LineWidth',1)
+    semilogy(t_obs(1:end-1)/3600,3*squeeze(real(sqrt(P_Vrel_MMXPh(3,3,1:end-1)))),'Color','g','LineWidth',1)
+    semilogy(t_obs(1:end-1)/3600,SQRT_V_rel,'Color','k','LineWidth',2)
+    xlabel('time $[hour]$')
+    ylabel('$[km]$')
+    title('MMX-Phobos relative velocity $3\sigma$ envelopes','Interpreter','latex','FontSize',16)
+    legend('$3\sigma_{x}$','$3\sigma_{y}$','$3\sigma_{z}$','$3 RMS$','Interpreter','latex','FontSize',14)
+    
+
+
+
 %   Harmonics 3sigma Envelopes
 
 %     place0 = size(Est.X,1)-pars.nCoeff-pars.nBias;
diff --git a/YObs.mat b/YObs.mat
index 0c417514d7b3e3d30c4efd06924bbede9b577607..e8126f38fbd64912bfcbaf4b51b5000a6ef1fa09 100644
Binary files a/YObs.mat and b/YObs.mat differ
diff --git a/visible_features_model.m b/visible_features_model.m
index 61e08897de5d62de9da9c57248603f84260848d8..41bda2dc625adac0bea7d3081aee3bf46c432916 100644
--- a/visible_features_model.m
+++ b/visible_features_model.m
@@ -105,11 +105,11 @@ function [Y_LOS, Y_pix] = visible_features_model(MMX, Phobos, Sun, Phi, file_fea
         z_cam  = cross(v, I)/norm(cross(v, I));
         y_cam  = cross(z_cam, I)/norm(cross(z_cam, I));
 
-        angle_feat  = acos(dot(I,-i_feat));
-        angle_sun   = acos(dot(I,r_PhSun));
+        % angle_feat  = acos(dot(I,-i_feat));
+        % angle_sun   = acos(dot(I,r_PhSun));
 
 
-        if (angle_feat<pars.FOV)&&(angle_sun>pars.FOV)&&(dot(r_sb_Ph, point_in_light(1:3,n))>0)
+        % if (angle_feat<pars.FOV)&&(angle_sun>pars.FOV)&&(dot(r_sb_Ph, point_in_light(1:3,n))>0)
             k           = 1;
             visible     = [candidate, visible];
             LOS_feat    = [y_cam'; z_cam'] * r_sf/norm(r_sf) + [random('Normal',0, pars.ObsNoise.camera);...
@@ -121,7 +121,7 @@ function [Y_LOS, Y_pix] = visible_features_model(MMX, Phobos, Sun, Phi, file_fea
             pix_feat    = pix_feat./repmat(pix_feat(3),3,1);
             Y_pix = [[pix_feat(1:2); point_in_light(end,n)], Y_pix];
 
-        end
+        % end
     end