function [I, Info, Events] = Read_File(fid)


tline = fgetl(fid);
t=-4;
while ischar(tline) %read line after line, and write to cell array "c"
     if (t>0)
     c(t)=textscan(tline,'%f', 'delimiter', ':T{[]}');
     end;
     tline = fgetl(fid);
     t=t+1;
end
Matrixdata = cell2mat(c); %converting cell array into matrix

Info = struct('wav_inc',0,'wav_start',0,'Isum',zeros(700,1),'freq',zeros(700,1),'frequn',zeros(700,1),'Eeinitial',zeros(1,size(Matrixdata,2)),'Ew',0,'Ef',0);  %Struct for return Data




switch size(Matrixdata,1)

    case 1287
            Info.Eeinitial=single(Matrixdata(773,:));
            Info.PyroBCinitial=single(min(Matrixdata(777:1286,:)));
    case 1403
            Info.Eeinitial=single(Matrixdata(773,:));
            Info.PyroBCinitial=single(min(Matrixdata(893:1402,:)));
    case {890,774,778}
            Info.Eeinitial=single(Matrixdata(773,:));
    otherwise
        disp('...The Matrixdata showed an unexpected size. Photon Energy Data not found....')
end

Info.wav_start=(Matrixdata(8,:));
Info.wav_inc=(Matrixdata(9,:));
I=(Matrixdata(10:709,:));


Events=size(I,2);



if max(Info.wav_start)~=min(Info.wav_start)
    disp('  ERROR: Measurements were taken with different wavelength set positions')
elseif max(Info.wav_inc)~=min(Info.wav_inc)
    disp('  ERROR: Measurements were taken with different wavelength increasments')
else
    Info.wav=Info.wav_start(1,1)+Info.wav_inc(1,1)*(0:size(I,1)-1)';
    Info.wav_start=Info.wav_start(1);
    Info.wav_inc=Info.wav_inc(1);
end

Info.Isum=mean(I,2);                              %Mean intensity values (line mean values)
%energy=1239.8424./wav;           %converting wavelength into energy
Info.freq=6e17*pi./Info.wav; %converting wavelength into angular frequency

[~,temp]=max(Info.Isum);
Info.Mw = Info.wav(temp);

Info.actual_Ew =(Info.Isum./sum(Info.Isum))'*Info.wav;             %Expected value in wavelength scale
Info.Ef=(Info.Isum./sum(Info.Isum))'*Info.freq;
%Iprob=Info.Isum./sum(Info.Isum);     %normalized matrix       % This is a vector /R

Info.symmetry = 1/(1000*abs(Info.Mw-Info.actual_Ew)/mean([Info.Mw,Info.actual_Ew]));

if Info.symmetry > 1
    Info.Ew = Info.actual_Ew;
else
    Info.Ew = Info.Mw;
end


end