function [statoEvento, misureEvento] = Evento(Ltot,Ttot,Tsample,velMin)

global a;
global b;
global d;


Ttot=floor(Ttot/Tsample);
velMin=velMin*Tsample;

x = ones(2,Ttot+1)*(-1);
u = zeros(2,Ttot);     
y = ones(1,Ttot)*(-1);
posEvento = ones(1,Ttot+1)*(-1);
velEvento = ones(1,Ttot+1)*(-1);
x = [posEvento;velEvento];
a = 0.999;
b = 0.0005;  % 0.4 ok...
d = 0.002;
n1 = randn(1,Ttot);
n2 = randn(1,Ttot);
u = [n1 ; n2];
A = [1 1 ; 0 a];
B = [0 0; b 0];
C = [1 0];
D = [0 d];
Q = B*B';
R = D*D';

startEvento = floor(rand(1)*Ttot/4)+1;
% posEvento(startEvento) = rand(1)*Ltot;
posEvento(startEvento) = 0.2; % forzo cond iniz
velEvento(startEvento) = velMin/2;
x(:,startEvento) = [posEvento(startEvento);velEvento(startEvento)];
y(startEvento) = C*x(:,startEvento) + D*u(:,startEvento);

stopEvento=0;
for (t=startEvento:Ttot)
    if stopEvento==0
        x(:,t+1) = A*x(:,t) + B*u(:,t);          % dinamica di stato
        y(t) = C*x(:,t) + D*u(:,t);              % dinamica di stato
        if (x(1,t+1)>Ltot), stopEvento=1; end
        if (x(1,t+1)<0), stopEvento=-1; end
    else
        if stopEvento==-1
            x(:,t+1) = [-1;0];
            y(t)=-1;
        else
            x(:,t+1) = [6;0];
            y(t)=6;
        end
    end
    if abs(x(2,t+1))>velMin, x(2,t+1)=velMin*sign(x(2,t+1)); % limito la vel
end

statoEvento = x(:,2:Ttot+1);   %INVECE DI X LEVO L PRIMA COLONNA
misureEvento = y;

end
% DINAMICA DELL'EVENTO
% modello 1 pratic quello del prof dell'esercitaz:
% x_e(t+1) = x_e(t) + v_e(t)      // + event piccolo err di modello come ha fatto il prof xl'esercitaz
% v_e(t+1) = av_e(t) + bn1(t)
% y(t) = x_e(t) + dn2(t)
% x(t+1) = Ax(t) + Bn1(t) -> A = [1 1 ; 0 a], B = [0 ; b], C = [1 0]; D = [d]
% y(t) = Cx(t) + Dn2(t)
