function [I, Info, Events] = Read_File(fid)
tline = fgetl(fid);
t=-4;
while ischar(tline)
if (t>0)
c(t)=textscan(tline,'%f', 'delimiter', ':T{[]}');
end;
tline = fgetl(fid);
t=t+1;
end
Matrixdata = cell2mat(c);
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);
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);
Info.freq=6e17*pi./Info.wav;
[~,temp]=max(Info.Isum);
Info.Mw = Info.wav(temp);
Info.actual_Ew =(Info.Isum./sum(Info.Isum))'*Info.wav;
Info.Ef=(Info.Isum./sum(Info.Isum))'*Info.freq;
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