% On ferme tout avant de commencer
clear all;
close all;
%--------------------------------------------------------------------------
%Nom du fichier texte à ouvrir
fileInName = 'Slab#14 17_49.dat';
% fileInName = 'Data\Run#0068\Slab#-1 19_21.dat';

%Nom fichier temporaire
fileOutName = 'Data\tmp.dat';

%--------------------------------------------------------------------------
%Declaration des variables et tableaux
NbLigne = 0;
NbEvtOut = 0;
NbEvtIn = 0;
ZoneG = 20; %Zone glissante
NbInit = 0;
NbPixel = 36;
pg = zeros(ZoneG,NbPixel);
mean_p = zeros(1,NbPixel);
rms_p = zeros(1,NbPixel);

bin = [-100:1:300]; %binning des histo
hist_wafer_1 = zeros(1,size(bin,2));
hist_wafer_1_angle = zeros(1,size(bin,2));

%--------------------------------------------------------------------------
% format de lecture d'une ligne (Texte --> Numerique)
formatStr = '%d %f %f %f %f %d';
formatdata = '[NumEvt, Time, X , Y, alpha, DAC';
for i=1:432
    formatStr = [formatStr,'%d'];
    formatdata = [formatdata,',p(:,',num2str(i),')'];
    
end
formatdata = [formatdata, ']=strread(tline,formatStr);'];
%--------------------------------------------------------------------------
%Initialisation des moyennes et RMS
fileIn = fopen(fileInName, 'rt');
while NbInit < ZoneG
    % Lecture de la ligne du fichier jusqu'a // EOH
    tline = fgets(fileIn);
    while (strncmpi(tline, '// EOH', 6) == 0)
       tline = fgets(fileIn);
    end
    while NbInit < ZoneG
        tline = fgets(fileIn);
        if (strncmpi(tline, '// EOF', 6) == 1)
            NbInit = ZoneG+10;
        else
        eval(formatdata);
            if ~(X<195 & X>135 & Y<220 & Y>150)
                NbInit = NbInit+1;
                pg(NbInit,:)=p(1:NbPixel);
            end
        end
    end
end
fclose(fileIn);
if NbInit==ZoneG
    mean_p = mean(pg);
    rms_p = std(pg);
    fprintf('Initialisation de la moyenne et du RMS OK !\n')
else
    fprintf('*************** Pb Initialisation Moyenne et RMS !!!!!!!!!!!!!!!!\n')
    return;
end
pause;
%--------------------------------------------------------------------------
%Traitement de tout le fichier
fileIn = fopen(fileInName, 'rt');
while feof(fileIn) == 0
    % Lecture de la ligne du fichier jusqu'a // EOH
    tline = fgets(fileIn);
    while (strncmpi(tline, '// EOH', 6) == 0)
       tline = fgets(fileIn);
    end   
    % Lecture des donnees + Ecriture dans fichier temporaire
    tline = fgets(fileIn);
    NbLigne=NbLigne+1;
    while (strncmpi(tline, '// EOF', 6) == 0)
        eval(formatdata);
        if (X<195 & X>135 & Y<220 & Y>150)
            %on fait l'histo wafer 1
            NbEvtIn = NbEvtIn + 1;
            p(1:NbPixel)=p(1:NbPixel)-mean_p;
            hist_wafer_1 = hist_wafer_1 + histc(p(1:36),bin);
            p=p/cos(alpha);
            hist_wafer_1_angle = hist_wafer_1_angle + histc(p(1:36),bin);
            %On rafraichit les plot tout les 100 dans le wafer 1
            if (mod(NbEvtIn,100) == 0)
                figure(1);
                subplot(3,1,1);
                plot(bin,hist_wafer_1);
                hold on;
                plot(bin,hist_wafer_1_angle,'-.r');
                hold off;
                subplot(3,1,2);
                bar(rms_p);
                subplot(3,1,3);
                plot(bin,hist_wafer_1);
                axis([-100 300 0 max(hist_wafer_1)/30]);
                title(sprintf('Evts : %d',NbEvtIn),'FontWeight','bold');
                hold on;
                plot(bin,hist_wafer_1_angle,'-.r');
                hold off;
                drawnow;
            end
        else
            %on fait les moyennes et RMS
            NbEvtOut = NbEvtOut + 1;
            pg((mod(NbEvtOut,ZoneG)+1),:) = p(1:NbPixel);
            mean_p = mean(pg);
            rms_p = std(pg);
        end
        tline = fgets(fileIn);
        NbLigne=NbLigne+1;
        if (mod(NbLigne,1000)==0)
            fprintf('Nombre de ligne traitées : %d\n',NbLigne);
        end
    end
end

% Fermeture des fichiers
fclose(fileIn);







% amp*exp(-((x-moy)^2/(2*sig^2)))


% if (mod(ligne,1000) == 0)
% %             figure(1);
%             plot(hist_p1)
%             pause(0.1)
%             ligne
%         end
%         
% fprintf('toto\n')
% pause;

% L=3.59085*(x-u)/b
% M=a*exp(-(((3.59085*(x-u)/b)+exp(-(3.59085*(x-u)/b)/2))/2))
% 
% x=[0:1:550];
% a=800;
% b=56;
% u=279;
% figure(10)
% plot(x,M)
% grid on