- Timestamp:
- Feb 18, 2016, 4:33:49 PM (8 years ago)
- Location:
- SPESO/ana2015
- Files:
-
- 2 added
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
SPESO/ana2015/addinfo2shot.m
r259 r312 8 8 9 9 dateval=datenum([ dateStr '_' hourStr ],'YYYYmmdd_HHMMSS'); 10 beaminfofilename=[ basedir dateStr '_scope/' 'beam_info_' dateStr '_' hourStr(1:2) '.mat' ]; 10 try 11 beaminfofilename=[ basedir dateStr '_scope/' 'beam_info_' dateStr '.mat' ]; 11 12 beamInfoVals=load(beaminfofilename); 13 catch 14 error_sp([ 'Error while reading ' beaminfofilename ] ) 15 end 12 16 13 17 next_evt=find(beamInfoVals.beamInfo(:,1)>dateval,1, 'first'); 14 beamInfoVals.beamInfo(next_evt,1)18 %beamInfoVals.beamInfo(next_evt,1) 15 19 datestr(beamInfoVals.beamInfo(next_evt,1)) 16 beamInfoVals.beamInfo(next_evt,:)20 %beamInfoVals.beamInfo(next_evt,:) 17 21 18 22 val=load([ basedir dateStr '_scope/' filename ] ,'shotInfo','-mat'); … … 24 28 save(savename ,'shotInfo','-mat') 25 29 30 31 html_shot(dateStr,hourStr,shotInfo); 32 26 33 end % function -
SPESO/ana2015/ana_mambo.sh
r259 r312 10 10 prevFile='/sps/sera/delerue/smith-purcell/SPESO/data/tmp.delete' 11 11 12 13 nFields=`head -1 /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} | wc -w` 14 15 if [[ ${nFields} -eq 38 ]] ; then 16 cat /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} | awk -v iline==0 'iline++(iline==1){sep=" \t"; last =""} (iline>1){sep=" "; last = " \t" $39}{ print $1 sep $2 " \t" $3 " \t" $4 " \t" $5 " \t" $7 " \t" $9 " \t" $11 " \t" $13 " \t" $15 " \t" $17 " \t" $19 " \t" $21 " \t" $23 " \t" $25 " \t" $27 " \t" $29 " \t" $31 " \t" $33 " \t" $35 " \t" $37 last }' > /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file}_reduced 17 mambo_file=${mambo_file}_reduced 18 nFields=`head -1 /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} | wc -w` 19 echo "Fields reduced" 20 fi 21 22 if [[ ${nFields} -ne 21 ]] ; then 23 echo "Incorrect number of fields in " ${mambo_file} 24 echo " Number of fields found: " ${nFields} 25 exit -1; 26 fi 27 12 28 head -1 /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} > /sps/sera/delerue/smith-purcell/SPESO/data/speso_positions.header 13 29 14 for date in `cat /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} | grep 2015 | awk '{print $1}' | uniq | sort | uniq | tail -28 `; do 30 31 for date in `cat /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} | grep 2015 | awk '{print $1}' | uniq | sort | uniq | tail -n +2 | head -n -1 `; do 15 32 echo $date 16 33 dateStr=`echo $date | sed -e 's\/\ \g' | awk '{ print $1 $2 $3}'` 17 34 # echo $dateStr 18 35 # mkdir /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}/ 19 cat /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} | awk -v date=$date '($1==date){print $0}' > /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr} /beam_info_${dateStr}_tmp.txt20 cat /sps/sera/delerue/smith-purcell/SPESO/data/speso_positions.header /sps/sera/delerue/smith-purcell/SPESO/data/tmp.delete /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr} /beam_info_${dateStr}_tmp.txt > /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}/beam_info_${dateStr}.txt21 ln -f /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr} /beam_info_${dateStr}.txt /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}.txt_beam_info36 cat /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} | awk -v date=$date '($1==date){print $0}' > /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}_tmp.txt 37 cat /sps/sera/delerue/smith-purcell/SPESO/data/speso_positions.header /sps/sera/delerue/smith-purcell/SPESO/data/tmp.delete /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}_tmp.txt > /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}.txt 38 ln -f /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}.txt /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}.txt_beam_info 22 39 #echo prevFile ${prevFile} 23 head -201 /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr} /beam_info_${dateStr}_tmp.txt | tail -200 >> ${prevFile}24 tail -200 /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr} /beam_info_${dateStr}.txt > /sps/sera/delerue/smith-purcell/SPESO/data/tmp.delete25 prevFile="/sps/sera/delerue/smith-purcell/SPESO/data/${dateStr} /beam_info_${dateStr}.txt"26 rm -f /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr} /beam_info_${dateStr}_tmp.txt40 head -201 /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}_tmp.txt | tail -200 >> ${prevFile} 41 tail -200 /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}.txt > /sps/sera/delerue/smith-purcell/SPESO/data/tmp.delete 42 prevFile="/sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}.txt" 43 rm -f /sps/sera/delerue/smith-purcell/SPESO/data/${dateStr}_scope/beam_info_${dateStr}_tmp.txt 27 44 done 28 45 -
SPESO/ana2015/analyse_channel.m
r259 r312 11 11 imgName=[ plots_dir fnamebase '_ch' num2str(channelLoop) ]; 12 12 imgTitle=[ strrep(fnamebase,'_',' ') ' - ch' num2str(channelLoop) ]; 13 if exist([ channelFileNameBase '.csv.gz' ],'file') 14 cmdGzip = ['gzip -c -d ' channelFileNameBase '.csv.gz' ]; 15 [~, channelContent] = system(cmdGzip); 16 elseif exist([ channelFileNameBase '.csv' ],'file') 17 fid=fopen([ channelFileNameBase '.csv' ]); 18 channelContent=fread(fid); 19 fclose(fid); 13 if ((exist([ channelFileNameBase '.csv.gz' ],'file'))||(exist([ channelFileNameBase '.csv' ],'file'))) 14 if (exist([ channelFileNameBase '.csv.gz' ],'file')) 15 disp(['Reading ' channelFileNameBase '.csv.gz' ]); 16 cmdGzip = ['gzip -c -d ' channelFileNameBase '.csv.gz' ]; 17 [~, channelContent] = system(cmdGzip); 18 elseif exist([ channelFileNameBase '.csv' ],'file') 19 disp(['Reading ' channelFileNameBase '.csv' ]); 20 fid=fopen([ channelFileNameBase '.csv' ]); 21 channelContent=fread(fid); 22 fclose(fid); 23 end %read file 24 beginTxt = strfind(char(channelContent), '[V]')+5; 25 data = char(channelContent(beginTxt:end)'); 26 data2 = strrep(data', ',', ' '); 27 data_num=str2num(data2); 28 if (length(channelContent) < 5000) 29 warning_sp(['Channel ' num2str(channelLoop) ' has a short/empty content in ' channelFileNameBase ]) 30 return 31 end % empty channel 32 elseif exist([ basedir fnamedir fnamebase '_image.png' ],'file') 33 fname=[ basedir fnamedir fnamebase '_image.png' ] 34 disp(['Reading ' fname ' - ch ' num2str(channelLoop) ]); 35 fileinfo=dir(fname); 36 if(fileinfo.bytes==0) 37 warning_sp( [ 'File ' fname ' is empty!']); 38 data_num=[]; 39 else 40 try 41 imgdata=imread([ basedir fnamedir fnamebase '_image.png' ]); 42 catch 43 [status,res]=system( [ ' ls -lart ' basedir fnamedir fnamebase '_image.png ' ] ) 44 warning_sp([ 'Unable to read ' basedir fnamedir fnamebase '_image.png ; ls result: ' res ]); 45 imgdata=[] 46 end 47 if (~(isempty(imgdata))) 48 chdata=imgdata(:,:,2)-imgdata(:,:,1); 49 nHorizontalPoints=950; 50 croppedchdata=chdata(52:652,41:41-1+nHorizontalPoints); 51 [val,pos]=max(croppedchdata); 52 idxnonzero=find(pos>10); 53 data_num=zeros(nHorizontalPoints,2); 54 data_num_tmp(:,1)=(1:nHorizontalPoints)*channelParameters.scaleX; 55 data_num_tmp(:,2)=(255-pos)*channelParameters.scaleY; 56 data_num=data_num_tmp(idxnonzero,1:2); 57 showScopeImg=0; 58 if (showScopeImg==1) 59 figure(201) 60 clf 61 image(imgdata) 62 figure(202) 63 clf 64 image(chdata) 65 figure(203) 66 clf 67 image(croppedchdata) 68 figure(205) 69 clf 70 plot(data_num(:,1),data_num(:,2)) 71 end % showScopeImg 72 else 73 data_num=[] 74 end % imgdata not empty 75 end %file is empty 20 76 else 21 77 warning_sp(['Channel ' num2str(channelLoop) ' does not exist in ' channelFileNameBase ]) … … 23 79 end 24 80 25 if (length(channelContent) < 5000) 26 length(channelContent) 27 warning_sp(['Channel ' num2str(channelLoop) ' has a short/empty content in ' channelFileNameBase ]) 28 return 29 end % empty channel 30 31 % 32 beginTxt = strfind(char(channelContent), '[V]')+5; 33 data = char(channelContent(beginTxt:end)'); 34 data2 = strrep(data', ',', ' '); 35 data_num=str2num(data2); 36 37 38 sigStart=channelParameters.sigStart; 39 sigEnd=channelParameters.sigEnd; 40 sigDuration=sigEnd-sigStart; 41 42 bgBfEnd=channelParameters.sigStart-channelParameters.riseTime; 43 bgBfStart=bgBfEnd-sigDuration; 44 45 bgAfStart=channelParameters.sigEnd+channelParameters.riseTime; 46 bgAfEnd=bgAfStart+sigDuration; 47 48 if (bgBfStart<data_num(1,1)) 49 warning_sp('The analysis window starts before the recorded event'); 50 bgBfStart=data_num(1,1); 51 end 52 53 if (bgAfEnd>data_num(end,1)) 54 warning_sp('The analysis window ends after the recorded event'); 55 bgAfEnd=data_num(end,1); 56 end 57 58 %%% signal and background calculation 59 60 sigstartidx=find(data_num(:,1)>channelParameters.sigStart, 1 ); 61 sigstopidx=find(data_num(:,1)>channelParameters.sigEnd, 1 ); 62 63 bgBfStartIdx=find(data_num(:,1)>bgBfStart, 1 ); 64 bgAfStartIdx=find(data_num(:,1)>bgAfStart, 1 ); 65 66 bgBfEndIdx=find(data_num(:,1)>bgBfEnd, 1 ); 67 bgAfEndIdx=find(data_num(:,1)>bgAfEnd, 1 ); 68 69 %%% signal 70 signalMean=sum(data_num(sigstartidx:sigstopidx,2))/(sigstopidx-sigstartidx+1); 71 signalRMS=rms(data_num(sigstartidx:sigstopidx,2)-signalMean); 72 signalNegPeakRaw=min(data_num(sigstartidx:sigstopidx,2)); 73 74 bgBfMean=sum(data_num(bgBfStartIdx:bgBfEndIdx,2))/(bgBfStartIdx-bgBfEndIdx+1); 75 bgBfRMS=rms(data_num(bgBfStartIdx:bgBfEndIdx,2)-bgBfMean); 76 bgAfMean=sum(data_num(bgAfStartIdx:bgAfEndIdx,2))/(bgAfStartIdx-bgAfEndIdx+1); 77 bgAfRMS=rms(data_num(bgAfStartIdx:bgAfEndIdx,2)-bgAfMean); 78 79 allMean=[ bgBfMean signalMean bgAfMean ]; 80 allRMS=[ bgBfRMS signalRMS bgAfRMS ]; 81 82 signalVal=signalMean - (bgBfMean/2) - (bgAfMean/2) ; 83 signalNegPeak=signalNegPeakRaw - (bgBfMean/2) - (bgAfMean/2) ; 84 85 channelInfo.allMean=allMean; 86 channelInfo.allRMS=allRMS; 87 channelInfo.signalVal=signalVal; 88 channelInfo.signalNegPeak=signalNegPeak; 81 82 if (~(isempty(data_num))&&(size(data_num,1)>100)) 89 83 90 84 if (plotShot>0) 91 85 figure(100*plotShot+10*channelLoop+1) 92 86 clf; 93 subplot(2,1,1)94 hold on95 plot(data_num(:,1), data_num(:,2), '-');96 xlabel('time[seconds]');97 ylabel('voltage[V]');98 99 title(imgTitle)100 101 linerange=[min(data_num(:,2))*1.1 max(data_num(:,2))*1.1 ];102 103 line([ channelParameters.sigStart channelParameters.sigStart ],linerange,'LineWidth',1,'Color','r');104 line([ channelParameters.sigEnd channelParameters.sigEnd ],linerange,'LineWidth',1,'Color','m');105 106 subplot(2,1,2)107 hold on108 plot(data_num(:,1), data_num(:,2), '-');109 marginTime=(bgAfEnd-bgBfStart)*0.1;110 % xlim( [ bgBfStart bgAfEnd ] )111 % bgBfStart-marginTime112 % bgAfEnd+marginTime113 xlim( [ bgBfStart-marginTime bgAfEnd+marginTime ] )114 115 line([ bgAfStart bgAfStart ],linerange,'LineWidth',1,'Color','k');116 line([ bgAfEnd bgAfEnd ],linerange,'LineWidth',1,'Color','k');117 118 line([ bgBfStart bgBfStart ],linerange,'LineWidth',1,'Color','k');119 line([ bgBfEnd bgBfEnd ],linerange,'LineWidth',1,'Color','k');120 121 line([ channelParameters.sigStart channelParameters.sigStart ],linerange,'LineWidth',1,'Color','r');122 line([ channelParameters.sigEnd channelParameters.sigEnd ],linerange,'LineWidth',1,'Color','m');123 124 125 xlabel('time[seconds]');126 ylabel('voltage[V]');127 128 print( '-dpng', [ imgName '.png' ]);129 130 131 87 figure(100*plotShot+10*channelLoop+2) 132 88 clf; 133 hold on 134 errorbar(allMean,allRMS) 135 plot(2,signalNegPeakRaw,'or') 136 title(imgTitle) 137 hold off 138 139 print( '-dpng', [ imgName '_synopsis' '.png' ]); 140 141 end %if plot 142 143 89 90 end 91 92 for iPulseMode=1:2 93 if (iPulseMode==1) 94 sigStart=channelParameters.LPM.sigStart; 95 sigEnd=channelParameters.LPM.sigEnd; 96 riseTime=channelParameters.LPM.riseTime; 97 elseif (iPulseMode==2) 98 sigStart=channelParameters.SPM.sigStart; 99 sigEnd=channelParameters.SPM.sigEnd; 100 riseTime=channelParameters.SPM.riseTime; 101 else 102 error_sp('Wrong pulse mode'); 103 end 104 105 106 sigDuration=sigEnd-sigStart; 107 108 bgBfEnd=sigStart-riseTime; 109 bgBfStart=bgBfEnd-sigDuration; 110 111 bgAfStart=sigEnd+riseTime; 112 bgAfEnd=bgAfStart+sigDuration; 113 114 if (bgBfStart<data_num(1,1)) 115 warning_sp('The analysis window starts before the recorded event'); 116 bgBfStart=data_num(1,1); 117 end 118 119 if (bgAfEnd>data_num(end,1)) 120 warning_sp('The analysis window ends after the recorded event'); 121 warning_sp([ 'Analysis window start: ' num2str(bgAfStart) ' / ' 'Analysis window end: ' num2str(bgAfEnd) ' / ' 'Data start: ' num2str(data_num(1,1)) ' / ' 'Data end: ' num2str(data_num(end,1)) ]); 122 bgAfEnd=data_num(end,1); 123 end 124 125 %%% signal and background calculation 126 127 sigstartidx=find(data_num(:,1)>sigStart, 1 ); 128 sigstopidx=find(data_num(:,1)>sigEnd, 1 ); 129 130 bgBfStartIdx=find(data_num(:,1)>bgBfStart, 1 ); 131 bgAfStartIdx=find(data_num(:,1)>bgAfStart, 1 ); 132 133 bgBfEndIdx=find(data_num(:,1)>bgBfEnd, 1 ); 134 bgAfEndIdx=find(data_num(:,1)>bgAfEnd, 1 ); 135 136 %%% signal 137 signalMean=sum(data_num(sigstartidx:sigstopidx,2))/(sigstopidx-sigstartidx+1); 138 signalRMS=rms(data_num(sigstartidx:sigstopidx,2)-signalMean); 139 signalNegPeakRaw=min(data_num(sigstartidx:sigstopidx,2)); 140 141 bgBfMean=sum(data_num(bgBfStartIdx:bgBfEndIdx,2))/(bgBfStartIdx-bgBfEndIdx+1); 142 bgBfRMS=rms(data_num(bgBfStartIdx:bgBfEndIdx,2)-bgBfMean); 143 bgAfMean=sum(data_num(bgAfStartIdx:bgAfEndIdx,2))/(bgAfStartIdx-bgAfEndIdx+1); 144 bgAfRMS=rms(data_num(bgAfStartIdx:bgAfEndIdx,2)-bgAfMean); 145 146 allMean=[ bgBfMean signalMean bgAfMean ]; 147 allRMS=[ bgBfRMS signalRMS bgAfRMS ]; 148 149 signalVal=signalMean - (bgBfMean/2) - (bgAfMean/2) ; 150 signalNegPeak=signalNegPeakRaw - (bgBfMean/2) - (bgAfMean/2) ; 151 152 if (iPulseMode==1) 153 channelInfo.LPM.allMean=allMean; 154 channelInfo.LPM.allRMS=allRMS; 155 channelInfo.LPM.signalVal=signalVal; 156 channelInfo.LPM.signalNegPeak=signalNegPeak; 157 elseif (iPulseMode==2) 158 channelInfo.SPM.allMean=allMean; 159 channelInfo.SPM.allRMS=allRMS; 160 channelInfo.SPM.signalVal=signalVal; 161 channelInfo.SPM.signalNegPeak=signalNegPeak; 162 end 163 164 if (plotShot>0) 165 figure(100*plotShot+10*channelLoop+1) 166 subplot(3,1,1) 167 hold on 168 plot(data_num(:,1), data_num(:,2), '-'); 169 xlabel('time[seconds]'); 170 ylabel('voltage[V]'); 171 172 title(imgTitle) 173 174 linerange=[min(data_num(:,2))*1.1 max(data_num(:,2))*1.1 ]; 175 176 if (iPulseMode==1) 177 colstart='r'; 178 colend='m'; 179 colbg='k'; 180 elseif (iPulseMode==2) 181 colstart='g'; 182 colend='g'; 183 colbg='c'; 184 end 185 186 187 line([ sigStart sigStart ],linerange,'LineWidth',1,'Color',colstart); 188 line([ sigEnd sigEnd ],linerange,'LineWidth',1,'Color',colend); 189 hold off 190 subplot(3,1,1+iPulseMode) 191 hold on 192 plot(data_num(:,1), data_num(:,2), '-'); 193 marginTime=(bgAfEnd-bgBfStart)*0.1; 194 % xlim( [ bgBfStart bgAfEnd ] ) 195 % bgBfStart-marginTime 196 % bgAfEnd+marginTime 197 xlim( [ bgBfStart-marginTime bgAfEnd+marginTime ] ) 198 199 line([ bgAfStart bgAfStart ],linerange,'LineWidth',1,'Color',colbg); 200 line([ bgAfEnd bgAfEnd ],linerange,'LineWidth',1,'Color',colbg); 201 202 line([ bgBfStart bgBfStart ],linerange,'LineWidth',1,'Color',colbg); 203 line([ bgBfEnd bgBfEnd ],linerange,'LineWidth',1,'Color',colbg); 204 205 line([ sigStart sigStart ],linerange,'LineWidth',1,'Color',colstart); 206 line([ sigEnd sigEnd ],linerange,'LineWidth',1,'Color',colend); 207 208 209 xlabel('time[seconds]'); 210 ylabel('voltage[V]'); 211 212 print( '-dpng', [ imgName '.png' ]); 213 214 215 figure(100*plotShot+10*channelLoop+2) 216 hold on 217 errorbar(allMean,allRMS,colstart) 218 plot(2,signalNegPeakRaw, [ 'o' colend ] ) 219 title(imgTitle) 220 hold off 221 222 print( '-dpng', [ imgName '_synopsis' '.png' ]); 223 224 end %if plot 225 end %for iPulseMOde 226 else 227 warning_sp(['Channel ' num2str(channelLoop) ' has a short/empty content in ' channelFileNameBase ]) 228 end %if data_num is not empty 229 230 144 231 end % function -
SPESO/ana2015/analyse_day.m
r259 r312 3 3 4 4 global basedir; 5 global imageSizes; 6 global plots_basedir; 5 7 6 8 define_dirs_analysis(); … … 9 11 fnamedir=[ basedir dateStr '_scope' '/' ]; 10 12 11 13 htmltxt_table=cell(24); 14 htmltxt_img=cell(24); 15 16 17 %%% Num data files 18 [status,nDataStr]=system([ ' ls ' fnamedir ' | grep _image.png | wc -l ' ] ); 19 nDataNum=str2num(nDataStr); 12 20 %%% shotInfo 13 21 lscmd=[ fnamedir '*.shotInfo' ]; 22 [status,filelist]=system(['ls --color=never -1 ' lscmd ]); 23 dayInfo=struct; 24 dayInfo.date=dateStr; 25 dayInfo.nDataEvents=nDataNum; 26 if (status==0) 14 27 filelist=ls('--color=never','-1', lscmd); 15 28 filelist=strrep(filelist,fnamedir,''); … … 17 30 nShots=length(newLines); 18 31 newLines=[ 0 newLines ]; 19 dayInfo=struct;20 32 iShot=1; 21 33 for iline=2:length(newLines) 22 34 line=filelist(newLines(iline-1)+1:newLines(iline)-1); 35 dateStrFile=line(7:14); 23 36 theShot=load([ fnamedir line ],'-mat'); 24 if(((theShot.shotInfo.ch(2).on)==1)&& (~(isempty(theShot.shotInfo.ch(2).values))))37 if(((theShot.shotInfo.ch(2).on)==1)&& (~(isempty(theShot.shotInfo.ch(2).values))) && ( strcmp(dateStr,dateStrFile ))) 25 38 dayInfo.shots(iShot)=theShot; 26 39 dayInfo.hoursNum(iShot)=str2num(filelist(newLines(iline-1)+1+15:newLines(iline)-1-9)); 27 dayInfo.ch2signalVal(iShot)=dayInfo.shots(iShot).shotInfo.ch(2).values.signalVal; 28 dayInfo.ch2signalNegPeak(iShot)=dayInfo.shots(iShot).shotInfo.ch(2).values.signalNegPeak; 40 dayInfo.dayNum(iShot)=str2num(dateStrFile); 41 42 dayInfo.ch2signalValSPM(iShot)=dayInfo.shots(iShot).shotInfo.ch(2).values.SPM.signalVal; 43 dayInfo.ch2signalNegPeakSPM(iShot)=dayInfo.shots(iShot).shotInfo.ch(2).values.SPM.signalNegPeak; 44 dayInfo.ch2signalValLPM(iShot)=dayInfo.shots(iShot).shotInfo.ch(2).values.LPM.signalVal; 45 dayInfo.ch2signalNegPeakLPM(iShot)=dayInfo.shots(iShot).shotInfo.ch(2).values.LPM.signalNegPeak; 46 47 if(((theShot.shotInfo.ch(1).on)==1)&& (~(isempty(theShot.shotInfo.ch(1).values))) && ( strcmp(dateStr,dateStrFile ))) 48 dayInfo.ch1signalValSPM(iShot)=dayInfo.shots(iShot).shotInfo.ch(1).values.SPM.signalVal; 49 dayInfo.ch1signalNegPeakSPM(iShot)=dayInfo.shots(iShot).shotInfo.ch(1).values.SPM.signalNegPeak; 50 dayInfo.ch1signalValLPM(iShot)=dayInfo.shots(iShot).shotInfo.ch(1).values.LPM.signalVal; 51 dayInfo.ch1signalNegPeakLPM(iShot)=dayInfo.shots(iShot).shotInfo.ch(1).values.LPM.signalNegPeak; 52 end % if ch(1) is on 53 54 hourStr=line(16:21); 55 htmltxt_table{str2num(hourStr(1:2))+1}=[ htmltxt_table{str2num(hourStr(1:2))+1} get_channels_html(theShot.shotInfo,0,line(7:21)) ]; 56 htmltxt_img{str2num(hourStr(1:2))+1}=[ htmltxt_img{str2num(hourStr(1:2))+1} get_img_html(theShot.shotInfo,dateStr,hourStr,imageSizes) ]; 29 57 else 30 58 nShots=nShots-1; 31 59 iShot=iShot-1; 32 end %channel is on60 end %channel 2 is on 33 61 iShot=iShot+1; 34 62 end % for each line 63 else 64 nShots=0; 65 end % if ls status == 0 66 dayInfo.nShots=nShots; 35 67 save([ fnamedir 'day_' dateStr '.dayInfo' ] ,'dayInfo'); 36 68 … … 40 72 [status,filelist]=system(['ls --color=never -1 ' lscmd ]); 41 73 dayFullInfo=struct; 74 dayFullInfo.date=dateStr; 75 dayFullInfo.nDataEvents=nDataNum; 76 42 77 if (status==0) 43 78 filelist=strrep(filelist,fnamedir,''); … … 46 81 newLines=[ 0 newLines ]; 47 82 iFullShot=1; 48 length(newLines)49 83 for iline=2:length(newLines) 50 line=filelist(newLines(iline-1)+1:newLines(iline)-1);84 line=filelist(newLines(iline-1)+1:newLines(iline)-1); 51 85 theFullShot=load([ fnamedir line ],'-mat'); 52 if(((theFullShot.shotInfo.ch(2).on)==1)&& (~(isempty(theFullShot.shotInfo.ch(2).values))))86 if(((theFullShot.shotInfo.ch(2).on)==1)&& (~(isempty(theFullShot.shotInfo.ch(2).values)))&&(~isempty(theFullShot.shotInfo.beamInfo))) 53 87 dayFullInfo.shots(iFullShot)=theFullShot; 54 88 dayFullInfo.hoursNum(iFullShot)=str2num(filelist(newLines(iline-1)+1+15:newLines(iline)-1-13)); 55 dayFullInfo.ch2signalVal(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(2).values.signalVal; 56 dayFullInfo.ch2signalNegPeak(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(2).values.signalNegPeak; 57 dayFullInfo.beamInfo(iFullShot,:)=dayFullInfo.shots(iFullShot).shotInfo.beamInfo(1,:); 89 dayFullInfo.dayNum(iFullShot)=str2num(dateStr); 90 dayFullInfo.ch2signalValSPM(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(2).values.SPM.signalVal; 91 dayFullInfo.ch2signalNegPeakSPM(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(2).values.SPM.signalNegPeak; 92 dayFullInfo.ch2signalValLPM(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(2).values.LPM.signalVal; 93 dayFullInfo.ch2signalNegPeakLPM(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(2).values.LPM.signalNegPeak; 94 95 if((theShot.shotInfo.ch(1).on)==1) 96 if (~(isempty(theShot.shotInfo.ch(1).values))) 97 dayFullInfo.ch1signalValSPM(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(1).values.SPM.signalVal; 98 dayFullInfo.ch1signalNegPeakSPM(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(1).values.SPM.signalNegPeak; 99 dayFullInfo.ch1signalValLPM(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(1).values.LPM.signalVal; 100 dayFullInfo.ch1signalNegPeakLPM(iFullShot)=dayFullInfo.shots(iFullShot).shotInfo.ch(1).values.LPM.signalNegPeak; 101 else % shot is empty 102 error_sp(['Empty channel 1 shot on ' dateStr ' shot number ' num2str(iFullShot) ]) 103 end % is shot empty 104 end % if ch(1) is on 105 106 dayFullInfo.beamInfo(iFullShot,:)=theFullShot.shotInfo.beamInfo(1,:); 58 107 else 59 108 nFullShots=nFullShots-1; … … 62 111 iFullShot=iFullShot+1; 63 112 end % for each line 113 else 114 nFullShots=0; 115 end % if ls status == 0 116 dayFullInfo.nShots=nShots; 117 dayFullInfo.nFullShots=nFullShots; 118 119 %if ((nFullShots > 0 ) && ( nFullShots/nShots > 0.5 )) 64 120 save([ fnamedir 'day_' dateStr '.dayFullInfo' ] ,'dayFullInfo'); 65 end % if ls status == 0 66 121 %end % nFullShots >0 122 disp([ 'nData= ' num2str(nDataNum) ' / nShots= ' num2str(nShots) ' / nFullShots= ' num2str(nFullShots) ]); 123 124 if (nShots>0) 67 125 if (plotStr>0) 68 126 for ihour=0:23 … … 71 129 figure(plotStr*1000+ihour) 72 130 clf; 73 plot(dayInfo.ch2signalVal(thisHourShots)) 131 plot(floor(mod(dayInfo.hoursNum(thisHourShots),10000)/100),dayInfo.ch2signalValSPM(thisHourShots)) 132 title(' Ch2 - signal val SPM') 133 ylabel('Intensity [AU]') 134 xlabel('Minutes in the hour') 74 135 figure(plotStr*1000+100+ihour) 75 136 clf; 76 plot(dayInfo.ch2signalNegPeak(thisHourShots)) 137 plot(floor(mod(dayInfo.hoursNum(thisHourShots),10000)/100),dayInfo.ch2signalNegPeakSPM(thisHourShots)) 138 title(' Ch2 - signal Neg Peak SPM') 139 ylabel('Intensity [AU]') 140 xlabel('Minutes in the hour') 141 figure(plotStr*1000+200+ihour) 142 clf; 143 plot(floor(mod(dayInfo.hoursNum(thisHourShots),10000)/100),dayInfo.ch2signalValLPM(thisHourShots)) 144 title(' Ch2 - signal val LPM') 145 ylabel('Intensity [AU]') 146 xlabel('Minutes in the hour') 147 figure(plotStr*1000+300+ihour) 148 clf; 149 plot(floor(mod(dayInfo.hoursNum(thisHourShots),10000)/100),dayInfo.ch2signalNegPeakLPM(thisHourShots)) 150 title(' Ch2 - signal Neg Peak LPM') 151 ylabel('Intensity [AU]') 152 xlabel('Minutes in the hour') 153 for ifig=[ 0:3] 154 jfig=ifig*100+plotStr*1000+ihour; 155 figure(jfig) 156 print('-dpng', [ plots_basedir dateStr '/' sprintf('%02d',ihour) '/' 'hourly_figure_' num2str(ifig) '.png' ]); 157 end % for ifig 77 158 end % if length>0 78 159 end % for each hour 79 end % if 160 end % if (plotStr>0) 161 end % if nShots >0 162 163 %%% Preliminary analysis 164 if (nFullShots>0) 165 analyse_info_one_day(dateStr) 166 end %if nFullShots>0 167 168 %%% HTML file 169 for ihour=0:24 170 %ihour=24 => full day 171 if (ihour<24) 172 basehtmldir=[ plots_basedir dateStr '/' sprintf('%02d',ihour) '/' ]; 173 fhtmlname=[ basehtmldir 'info_hourly_' dateStr '_' sprintf('%02d',ihour) '.html' ]; 174 if (~exist(basehtmldir,'dir')) 175 mkdir(basehtmldir); 176 end 177 else 178 fhtmlname=[ plots_basedir dateStr '/' 'info_daily_' dateStr '.html' ]; 179 end % ihour <24 180 181 fid=fopen(fhtmlname,'w'); 182 if (fid==-1) 183 error_sp(['Unable to open file ' fhtmlname ' / fid= ' fid ]); 184 end %if fid -1 185 if (ihour<24) 186 titleStr = [ 'SPESO - 1-hour - ' dateStr ' - ' sprintf('%02d',ihour) ]; 187 else 188 titleStr = [ 'SPESO - 1-day - ' dateStr ]; 189 end 190 header_fun(fid, titleStr); 191 192 fprintf(fid,['<BR/>\n<A HREF="../../info_all_days.html"> Infos for all days </A><BR/>\n']); 193 if (ihour<24) 194 fprintf(fid,['<BR/>\n<A HREF="../info_daily_' dateStr '.html"> Infos for ' dateStr '</A><BR/>\n']); 195 end 196 197 fprintf(fid,'<HR>'); 198 fprintf(fid,[ '<BR/> nData= ' num2str(nDataNum) ' / nShots= ' num2str(nShots) ' / nFullShots= ' num2str(nFullShots) ' <BR/> ' ]); 199 200 %% basic plots 201 if (ihour<24) 202 fprintf(fid,'<HR>'); 203 for ifig=[ 0:3] 204 imgname=[ 'hourly_figure_' num2str(ifig) '.png' ]; 205 fprintf(fid, [ '<A HREF="' imgname '" ><IMG SRC="' imgname '" WIDTH=' num2str(imageSizes) ' ></A>\n' ] ); 206 end % for ifig 207 else 208 for jhour=1:24 209 fprintf(fid, [sprintf('%02d',jhour-1) ' h ']); 210 for ifig=[ 0:3] 211 imgname=[ sprintf('%02d',jhour-1) '/' 'hourly_figure_' num2str(ifig) '.png' ]; 212 fprintf(fid, [ '<A HREF="' imgname '" ><IMG SRC="' imgname '" WIDTH=' num2str(imageSizes) ' ></A>\n' ] ); 213 end % for ifig 214 fprintf(fid, [ ' </BR> ']); 215 end % for jhour 216 end %end ihour <24 217 218 fprintf(fid,'<HR>'); 219 if (nFullShots>0) 220 for ifig=[1:9,101,111:112] 221 imgname=[ 'analysis_figure_' num2str(ifig) '.png' ]; 222 fprintf(fid, [ '<A HREF="' imgname '" ><IMG SRC="' imgname '" WIDTH=' num2str(imageSizes) ' ></A>\n' ] ); 223 end % for each figure 224 end %if nFullShots>0 225 226 fprintf(fid,'<HR>'); 227 228 229 fprintf(fid,'<TABLE border=2>'); 230 231 fprintf(fid,'<TR>'); 232 fprintf(fid,'<TD rowspan=2> Event # </TD>'); 233 fprintf(fid,'<TD rowspan=2> Channel # </TD>'); 234 fprintf(fid,'<TD rowspan=2> Status </TD>'); 235 fprintf(fid,'<TD colspan=8> SPM </TD>'); 236 fprintf(fid,'<TD colspan=8> LPM </TD>'); 237 fprintf(fid,'</TR>'); 238 fprintf(fid,'<TR>'); 239 for ipulse=1:2 240 fprintf(fid,'<TD colspan=3>Means</tD>'); 241 fprintf(fid,'<TD colspan=3>RMS</tD>'); 242 fprintf(fid,'<TD>Signal Value</tD>'); 243 fprintf(fid,'<TD>Neg Peak</tD>'); 244 end %for 245 fprintf(fid,'</TR>'); 246 247 htmltxt_table{ihour+1}= [ ' ' htmltxt_table{ihour+1} ] ; % avoids empty cells 248 htmltxt_img{ihour+1}= [ ' ' htmltxt_img{ihour+1} ] ; % avoids empty cells 249 if (ihour<24) 250 fprintf(fid,htmltxt_table{ihour+1}); 251 else 252 for jhour=1:24 253 fprintf(fid,['<A HREF="' sprintf('%02d',jhour-1) '/info_hourly_' dateStr '_' sprintf('%02d',jhour-1) '.html"> Infos for ' dateStr '_' sprintf('%02d',jhour-1) '</A><BR/>\n']); 254 end %for each hour 255 for jhour=1:24 256 fprintf(fid,strrep(htmltxt_table{jhour},'HREF="info',[ 'HREF="' sprintf('%02d',jhour-1) '/info \n' ] )); 257 end %for each hour 258 end 259 260 fprintf(fid,'</TABLE>'); 261 262 if (ihour<24) 263 fprintf(fid,htmltxt_img{ihour+1}); 264 else 265 for jhour=1:24 266 fprintf(fid,strrep(htmltxt_img{jhour},'="scope', [ '="' sprintf('%02d',jhour-1) '/scope' ] )); 267 end %for each hour 268 end 269 270 271 dateAnalysedStr=datestr(now); 272 fprintf(fid,['<BR/>\nLatest data from that day analysed on ' dateAnalysedStr '<BR/>\n']); 273 274 footer_fun(fid); 275 fclose(fid); 276 277 end %for each hour 80 278 81 279 end %analyse_day -
SPESO/ana2015/analyse_full_info.m
r259 r312 16 16 data_histo(dvar.DETECT_ZPOS) 17 17 figure(5) 18 data_histo(dvar. LPM)18 data_histo(dvar.DETECT_R2) 19 19 figure(6) 20 20 data_histo(dvar.DETECT_R1) 21 21 figure(7) 22 data_histo(dvar.DETECT_R2) 22 data_histo(dvar.LPM) 23 figure(8) 24 data_histo(dvar.XBPM) 25 figure(9) 26 data_histo(dvar.QICT1) 23 27 24 28 data_select(dvar.LPM,'=',2) … … 30 34 data_plot2d(dvar.DETECT_SPOS,dvar.DETECT_XPOS) 31 35 figure(102) 32 data_plot2d(dvar.DETECT_SPOS,dvar.DATA_VAL )36 data_plot2d(dvar.DETECT_SPOS,dvar.DATA_VAL_LPM) 33 37 figure(103) 34 data_plot2d(dvar.DETECT_SPOS,dvar.DATA_PEAK )38 data_plot2d(dvar.DETECT_SPOS,dvar.DATA_PEAK_LPM) 35 39 figure(104) 36 data_plot2d(dvar.DETECT_ZPOS,dvar.DATA_VAL )40 data_plot2d(dvar.DETECT_ZPOS,dvar.DATA_VAL_LPM) 37 41 figure(105) 38 data_plot2d(dvar.DETECT_XPOS,dvar.DATA_VAL )42 data_plot2d(dvar.DETECT_XPOS,dvar.DATA_VAL_LPM) 39 43 figure(106) 40 data_plot2d(dvar.RESEAU_POS,dvar.DATA_VAL )44 data_plot2d(dvar.RESEAU_POS,dvar.DATA_VAL_LPM) 41 45 figure(107) 42 data_plot2d(dvar.DETECT_R1,dvar.DATA_VAL )46 data_plot2d(dvar.DETECT_R1,dvar.DATA_VAL_LPM) 43 47 figure(108) 44 data_plot2d(dvar.DETECT_R2,dvar.DATA_VAL )48 data_plot2d(dvar.DETECT_R2,dvar.DATA_VAL_LPM) 45 49 figure(109) 46 data_plot2d(dvar.DATA_VAL,dvar.DATA_PEAK) 50 data_plot2d(dvar.DATA_VAL_LPM,dvar.DATA_PEAK_LPM) 51 figure(110) 52 data_plot2d(dvar.DATA_VAL_SPM,dvar.DATA_PEAK_SPM) 53 figure(111) 54 data_plot2d(dvar.DATA_PEAK_LPM,dvar.DATA_PEAK_SPM) 55 56 figure(101) 57 data_plot2d(dvar.RESEAU_POS,dvar.DATA_PEAK_LPM) 58 figure(102) 59 data_plot2d(dvar.DETECT_SPOS,dvar.DATA_PEAK_LPM) 60 figure(103) 61 data_plot2d(dvar.DETECT_XPOS,dvar.DATA_PEAK_LPM) -
SPESO/ana2015/analyse_shot.m
r259 r312 40 40 save([basedir fnamedir fnamebase '.shotInfo' ],'shotInfo'); 41 41 42 html_shot(dateStr,hourStr,shotInfo); 43 42 44 end % analyse_shot -
SPESO/ana2015/data_histo.m
r259 r312 2 2 3 3 global allData; 4 global dvar;5 define_data_var();6 4 7 idx=find(allData.selected==1);5 [valsused,vals]=data_get_vals(var); 8 6 9 varidx=mod(var,1000); 10 vartype=floor(var/1000)*1000; 11 12 if (~isempty(allData.selection)) 13 fprintf('Selection: %s \n %d events.\n',allData.selection,length(idx)); 14 end 15 16 switch vartype 17 case dvar.BEAMINFO 18 vals=allData.beamInfo(idx,varidx); 19 otherwise 20 warning_sp([ 'The vartype ' vartype ' is unknown.' ]); 21 error('end'); 22 end %switch 23 24 hist(vals,20) 7 hist(vals(1,:),20) 8 xlabel(get_var_name(var)) 25 9 title({get_var_name(var);allData.selection}) 26 10 end %function -
SPESO/ana2015/data_plot2d.m
r259 r312 2 2 3 3 global allData; 4 global dvar;5 define_data_var();6 4 7 idx=find(allData.selected==1);5 [valsused,vals]=data_get_vals(var1,var2); 8 6 9 varidx(1)=mod(var1,1000); 10 vartype(1)=floor(var1/1000)*1000; 7 if (isempty(vals(1,:))||isempty(vals(2,:))) 8 warning_sp([ ' Warning one of the two variable is empty: ' length(vals(1,:)) ' / ' length(vals(2,:)) ]) 9 else 10 hold on 11 if (valsused(4,1)) 12 plot(vals(1,:),vals(2,:),'dm') 13 plot(vals(1,:),-10*vals(4,:),'sg') 14 legend('Det. 1','Det. 2 x-10', 'Location','Best') 15 else 16 plot(vals(1,:),vals(2,:),'ob') 17 end % there is a var in pos 4 11 18 12 varidx(2)=mod(var2,1000);13 vartype(2)=floor(var2/1000)*1000;14 15 if (~isempty(allData.selection))16 fprintf('Selection: %s \n %d events.\n',allData.selection,length(idx));17 end18 19 vals=zeros(2,length(idx));20 for iloop=1:221 switch vartype(iloop)22 case dvar.BEAMINFO23 vals(iloop,:)=allData.beamInfo(idx,varidx(iloop))';24 case dvar.DATAINFO25 switch varidx(iloop)26 case 127 vals(iloop,:)=allData.ch2signalVal(idx);28 case 229 vals(iloop,:)=allData.ch2signalNegPeak(idx);30 end31 otherwise32 warning_sp([ 'The vartype ' vartype ' is unknown.' ]);33 error('end');34 end %switch35 end %for36 37 plot(vals(1,:),vals(2,:),'o')38 19 title({ [ get_var_name(var1) ' vs ' get_var_name(var2) ];allData.selection}) 39 20 xlabel(get_var_name(var1)) 40 21 ylabel(get_var_name(var2)) 22 end %not empty 41 23 end %function -
SPESO/ana2015/data_select.m
r259 r312 3 3 global allData; 4 4 global dvar; 5 global data_vars_plotted; 6 5 7 define_data_var(); 8 9 data_vars_plotted=0; 6 10 7 11 varidx=mod(var,1000); … … 9 13 10 14 switch vartype 11 case dvar.BEAMINFO 15 case dvar.RAWINFO 16 switch varidx 17 case 1 18 dataArray=allData.timestamp; 19 case 2 20 dataArray=allData.hoursNum; 21 case 11 22 dataArray=allData.timestamp-now; 23 case dvar.BEAMINFO 12 24 dataArray=allData.beamInfo(:,varidx); 25 case dvar.DATAINFO 26 switch varidx 27 case 1 28 dataArray=allData.ch2signalValLPM(:); 29 case 2 30 dataArray=allData.ch2signalNegPeakLPM(:); 31 case 3 32 dataArray=allData.ch2signalValSPM(:); 33 case 4 34 dataArray=allData.ch2signalNegPeakSPM(:); 35 otherwise 36 warning_sp([ 'The varidx ' varidx ' is unknown.' ]); 37 error('end'); 38 end %switch 13 39 otherwise 14 40 warning_sp([ 'The vartype ' vartype ' is unknown.' ]); -
SPESO/ana2015/define_data_var.m
r259 r312 5 5 dvar.BEAMINFO=1000; 6 6 dvar.DATAINFO=2000; 7 dvar.RAWINFO=3000; 7 8 9 dvar.BTIME=dvar.BEAMINFO+1; 10 dvar.XBPM=dvar.BEAMINFO+2; 11 dvar.QICT1=dvar.BEAMINFO+3; 12 dvar.QICT2=dvar.BEAMINFO+4; 8 13 dvar.RESEAU_POS=dvar.BEAMINFO+19; 9 14 dvar.DETECT_XPOS=dvar.BEAMINFO+15; … … 15 20 16 21 17 dvar.DATA_VAL=dvar.DATAINFO+1; 18 dvar.DATA_PEAK=dvar.DATAINFO+2; 22 dvar.DATA_VAL_LPM=dvar.DATAINFO+1; 23 dvar.DATA_PEAK_LPM=dvar.DATAINFO+2; 24 dvar.DATA_VAL_SPM=dvar.DATAINFO+3; 25 dvar.DATA_PEAK_SPM=dvar.DATAINFO+4; 26 27 dvar.DATA1_VAL_LPM=dvar.DATAINFO+11; 28 dvar.DATA1_PEAK_LPM=dvar.DATAINFO+12; 29 dvar.DATA1_VAL_SPM=dvar.DATAINFO+13; 30 dvar.DATA1_PEAK_SPM=dvar.DATAINFO+14; 31 32 dvar.DATA2_VAL_LPM=dvar.DATAINFO+21; 33 dvar.DATA2_PEAK_LPM=dvar.DATAINFO+22; 34 dvar.DATA2_VAL_SPM=dvar.DATAINFO+23; 35 dvar.DATA2_PEAK_SPM=dvar.DATAINFO+24; 36 37 dvar.DATA_TIME=dvar.DATAINFO+9; 38 39 dvar.TIMESTAMP=dvar.RAWINFO+1; 40 dvar.RAW_HOUR=dvar.RAWINFO+2; 41 42 dvar.DAYSAGO=dvar.RAWINFO+11; 19 43 20 44 end %function -
SPESO/ana2015/footer_fun.m
r213 r312 1 1 function footer_fun(fid) 2 fprintf(fid, '<EM> SPESO DATA PRELIMINARY </EM> <BR/>\n'); 2 fprintf(fid, '<BR/><EM> SPESO DATA PRELIMINARY </EM> <BR/>\n'); 3 fprintf(fid, ['Run on ' datestr(now) ' <BR/>\n']); 3 4 fprintf(fid, '<A HREF="http://groups.lal.in2p3.fr/etalon/">ETALON</A><BR/>\n'); 4 5 fprintf(fid, 'For more details contact <A HREF="http://lal.delerue.org/">Nicolas Delerue</A>.<BR/>\n'); -
SPESO/ana2015/get_parameters.m
r259 r312 2 2 %%% returns scope parameters as function of date 3 3 dateNum=str2double(dateStr); 4 if (dateNum>=20150422) 5 error('NO parameters defined'); 6 elseif (dateNum>=20150331) 4 hourNum=str2double(hourStr); 5 if (dateNum>=20160905) 6 error_sp([ 'NO parameters defined on ' dateStr ]); 7 8 elseif ((dateNum==20150904)&&(hourNum>200000)||(dateNum>=20150905)) 9 %ref SPM analyse_shot('20150905','000437',1) 10 % ref LPM analyse_shot('20150905','015258',1) 11 myParameters.ch(1).on=1; 12 13 myParameters.ch(1).SPM.sigStart=-0.9847e-5; 14 myParameters.ch(1).SPM.sigEnd=-0.984e-5; 15 myParameters.ch(1).SPM.riseTime=0.5e-7; 16 17 myParameters.ch(1).LPM.sigStart=-9.9e-6; 18 myParameters.ch(1).LPM.sigEnd=-9.64e-6; 19 myParameters.ch(1).LPM.riseTime=1e-7; 20 21 myParameters.ch(2).on=1; 22 23 myParameters.ch(2).SPM.sigStart=-0.9847e-5; 24 myParameters.ch(2).SPM.sigEnd=-0.984e-5; 25 myParameters.ch(2).SPM.riseTime=0.5e-7; 26 27 myParameters.ch(2).LPM.sigStart=-9.9e-6; 28 myParameters.ch(2).LPM.sigEnd=-9.64e-6; 29 myParameters.ch(2).LPM.riseTime=1e-7; 30 31 myParameters.ch(3).on=0; 32 myParameters.ch(4).on=0; 33 34 elseif (dateNum>=20150801) 35 myParameters.ch(1).on=0; 36 myParameters.ch(2)=myParameters.ch(1); 37 myParameters.ch(3)=myParameters.ch(1); 38 myParameters.ch(4)=myParameters.ch(1); 39 40 elseif ((dateNum>=20150606)||((dateNum==20150605)&&(hourNum>174000))) 41 % Ref SPM: '20150605','192941' 42 % Ref LPM: '20150605','193111' 43 7 44 myParameters.ch(1).on=0; 8 45 9 46 myParameters.ch(2).on=1; 10 myParameters.ch(2).sigStart=-1.e-5; 11 myParameters.ch(2).sigEnd=-0.95e-5; 12 myParameters.ch(2).riseTime=5e-7; 47 myParameters.ch(2).scaleX=50e-9*10/1000; %50ns timebase, 10 squares, 1000 points 48 myParameters.ch(2).scaleY=10e-3*10/600; %10mV, 10 squares, 600 points 49 50 myParameters.ch(2).LPM.sigStart=2.1e-7; 51 myParameters.ch(2).LPM.sigEnd=2.6e-7; 52 myParameters.ch(2).LPM.riseTime=1.5e-7; 53 54 myParameters.ch(2).SPM.sigStart=1.4e-7; 55 myParameters.ch(2).SPM.sigEnd=1.48e-7; 56 myParameters.ch(2).SPM.riseTime=3e-8; 13 57 14 58 myParameters.ch(3)=myParameters.ch(1); 15 59 myParameters.ch(4)=myParameters.ch(1); 16 60 61 elseif ((dateNum==20150605)&&(hourNum>160000)) 62 myParameters.ch(1).on=0; 63 myParameters.ch(2)=myParameters.ch(1); 64 myParameters.ch(3)=myParameters.ch(1); 65 myParameters.ch(4)=myParameters.ch(1); 66 67 elseif (dateNum>=20150601) 68 % Ref: 4/6/2015 000755 69 myParameters.ch(1).on=0; 70 71 myParameters.ch(2).on=1; 72 myParameters.ch(2).scaleX=100e-9*10/1000; % xxns timebase, 10 squares, 1000 points 73 myParameters.ch(2).scaleY=5e-3*10/600; %xxmV, 10 squares, 600 points 74 75 myParameters.ch(2).LPM.sigStart=2.8e-7; 76 myParameters.ch(2).LPM.sigEnd=3.30e-7; 77 myParameters.ch(2).LPM.riseTime=1e-8; 78 79 myParameters.ch(2).SPM.sigStart=3.8e-7; 80 myParameters.ch(2).SPM.sigEnd=3.9e-7; 81 myParameters.ch(2).SPM.riseTime=1e-8; 82 83 myParameters.ch(3)=myParameters.ch(1); 84 myParameters.ch(4)=myParameters.ch(1); 85 86 elseif (dateNum>=20150422) 87 myParameters.ch(1).on=0; 88 myParameters.ch(2)=myParameters.ch(1); 89 myParameters.ch(3)=myParameters.ch(1); 90 myParameters.ch(4)=myParameters.ch(1); 91 elseif ((dateNum>=20150331)||((dateNum==20150330)&&(hourNum>202500))) 92 myParameters.ch(1).on=0; 93 94 myParameters.ch(2).on=1; 95 96 myParameters.ch(2).SPM.sigStart=-0.98e-5; 97 myParameters.ch(2).SPM.sigEnd=-0.97e-5; 98 myParameters.ch(2).SPM.riseTime=5e-7; 99 100 myParameters.ch(2).LPM.sigStart=-0.99e-5; 101 myParameters.ch(2).LPM.sigEnd=-0.97e-5; 102 myParameters.ch(2).LPM.riseTime=5e-7; 103 104 myParameters.ch(3)=myParameters.ch(1); 105 myParameters.ch(4)=myParameters.ch(1); 106 107 elseif ((dateNum==20150330)&&(hourNum>192500)) 108 myParameters.ch(1).on=0; 109 myParameters.ch(2)=myParameters.ch(1); 110 myParameters.ch(3)=myParameters.ch(1); 111 myParameters.ch(4)=myParameters.ch(1); 112 17 113 elseif (dateNum>=20150301) 18 114 myParameters.ch(1).on=0; 19 115 20 116 myParameters.ch(2).on=1; 21 myParameters.ch(2).sigStart=2.5e-7; 22 myParameters.ch(2).sigEnd=4.0e-7; 23 myParameters.ch(2).riseTime=2e-7; 117 myParameters.ch(2).LPM.sigStart=1.75e-7; 118 myParameters.ch(2).LPM.sigEnd=4.e-7; 119 myParameters.ch(2).LPM.riseTime=2e-7; 120 121 myParameters.ch(2).SPM.sigStart=2.08e-7; 122 myParameters.ch(2).SPM.sigEnd=2.15e-7; 123 myParameters.ch(2).SPM.riseTime=1e-7; 24 124 25 125 myParameters.ch(3)=myParameters.ch(1); -
SPESO/ana2015/get_var_name.m
r259 r312 4 4 define_data_var(); 5 5 6 7 6 switch(varidx) 7 case dvar.BTIME 8 str='Time (sec.)'; 8 9 case dvar.RESEAU_POS 9 10 str='Pos. reseau'; … … 14 15 case dvar.DETECT_SPOS 15 16 str='Pos S detector'; 16 case dvar.LPM17 str='LPM event';18 17 case dvar.DETECT_R1 19 18 str='Rotation R1'; 20 19 case dvar.DETECT_R2 21 20 str='Rotation R2'; 22 case dvar.DATA_VAL 23 str='Signal value'; 24 case dvar.DATA_PEAK 25 str='Signal peak'; 21 22 case dvar.XBPM 23 str='BPM X position'; 24 case dvar.QICT1 25 str='Q on ICT1'; 26 case dvar.QICT2 27 str='Q on ICT2'; 28 case dvar.LPM 29 str='LPM event'; 30 31 case dvar.DATA_VAL_LPM 32 str='Signal value LPM'; 33 case dvar.DATA_PEAK_LPM 34 str='Signal peak LPM'; 35 case dvar.DATA_VAL_SPM 36 str='Signal value SPM'; 37 case dvar.DATA_PEAK_SPM 38 str='Signal peak SPM'; 39 40 case dvar.DATA1_VAL_LPM 41 str='Signal value LPM det. 1'; 42 case dvar.DATA1_PEAK_LPM 43 str='Signal peak LPM det. 1'; 44 case dvar.DATA1_VAL_SPM 45 str='Signal value SPM det. 1'; 46 case dvar.DATA1_PEAK_SPM 47 str='Signal peak SPM det. 1'; 48 49 case dvar.DATA2_VAL_LPM 50 str='Signal value LPM det. 2'; 51 case dvar.DATA2_PEAK_LPM 52 str='Signal peak LPM det. 2'; 53 case dvar.DATA2_VAL_SPM 54 str='Signal value SPM det. 2'; 55 case dvar.DATA2_PEAK_SPM 56 str='Signal peak SPM det. 2'; 57 58 case dvar.TIMESTAMP 59 str='Timestamp (day,sec)'; 60 case dvar.RAW_HOUR 61 str='Raw hour of Day (hhmmss)'; 62 63 case dvar.DAYSAGO 64 str='Days since now'; 65 26 66 otherwise 27 67 str='Unknown value'; -
SPESO/ana2015/header_fun.m
r213 r312 4 4 fprintf(fid, title); 5 5 fprintf(fid,'\n</TITLE>\n'); 6 fprintf(fid,'<CENTER>\n'); 7 fprintf(fid,'<H2>\n'); 8 fprintf(fid, title); 9 fprintf(fid,'</H2>\n'); 10 fprintf(fid,'</CENTER>\n'); 11 6 12 end %function -
SPESO/ana2015/load_analysis_data.m
r259 r312 1 function load_analysis_data( )1 function load_analysis_data(varargin) 2 2 3 3 global basedir; 4 4 global allData; 5 global dayData; 6 7 8 fprintf('Number of arguments: %d\n',nargin) 9 10 if (nargin>0) 11 lsmask=varargin{1} 12 else 13 lsmask='2015????_scope/*.dayFullInfo' 14 end 15 16 lsmask 17 18 19 loadFullInfo=1; 20 if (strfind(lsmask,'dayFullInfo')) 21 loadFullInfo=1; 22 elseif (strfind(lsmask,'dayInfo')) 23 loadFullInfo=0; 24 else 25 warning_sp([' lsmask ' lsmask ' does not clarify the type of info loaded...'] ) 26 loadFullInfo=1; 27 end 5 28 6 29 define_dirs_analysis(); … … 9 32 tic 10 33 %%% shotInfo 11 lsdir=[ basedir '2015????_scope/*.dayFullInfo'];34 lsdir=[ basedir lsmask ]; 12 35 lscmd=[ 'ls -1 --color=never ' lsdir ]; 13 36 [~,filelist]=system(lscmd); 14 37 filelist=strrep(filelist,basedir,''); 15 filelist38 %filelist 16 39 newLines=strfind(filelist,char(10)) ; 17 40 newLines=[ 0 newLines ]; 18 41 allData=[]; 42 allData.hoursNum=[ ]; 43 allData.dayNum=[ ]; 44 allData.timestamp=[ ]; 19 45 allData.shots=[ ]; 20 allData.hoursNum=[ ]; 21 allData.ch2signalVal=[ ]; 22 allData.ch2signalNegPeak=[ ]; 46 47 allData.ch1signalValLPM=[ ]; 48 allData.ch1signalNegPeakLPM=[ ]; 49 allData.ch1signalValSPM=[ ]; 50 allData.ch1signalNegPeakSPM=[ ]; 51 52 allData.ch2signalValLPM=[ ]; 53 allData.ch2signalNegPeakLPM=[ ]; 54 allData.ch2signalValSPM=[ ]; 55 allData.ch2signalNegPeakSPM=[ ]; 56 23 57 allData.beamInfo=[ ] ; 24 58 allData.selected=[ ]; 59 dayData=struct; 60 dayData.dateStr=[]; 61 dayData.dateNum=[]; 62 dayData.nDataEvents=[]; 63 dayData.nShots=[]; 64 dayData.nFullShots=[]; 25 65 for iline=2:length(newLines) 26 line=filelist(newLines(iline-1)+1:newLines(iline)-1); 66 line=filelist(newLines(iline-1)+1:newLines(iline)-1) 27 67 thisdata=load([ basedir line ],'-mat'); 28 allData.shots=[ allData.shots thisdata.dayFullInfo.shots]; 29 allData.hoursNum=[ allData.hoursNum thisdata.dayFullInfo.hoursNum]; 30 allData.ch2signalVal=[ allData.ch2signalVal thisdata.dayFullInfo.ch2signalVal]; 31 allData.ch2signalNegPeak=[ allData.ch2signalNegPeak thisdata.dayFullInfo.ch2signalNegPeak]; 32 allData.beamInfo=[ allData.beamInfo ; thisdata.dayFullInfo.beamInfo]; 33 allData.selected=[ allData.selected ones(1, length(thisdata.dayFullInfo.shots)) ]; 68 if (loadFullInfo==1) 69 thisdatainfo=thisdata.dayFullInfo; 70 nShots=thisdatainfo.nFullShots; 71 else 72 thisdatainfo=thisdata.dayInfo; 73 nShots=thisdatainfo.nShots; 74 end % load full info 75 if (nShots>0) 76 allData.hoursNum=[ allData.hoursNum thisdatainfo.hoursNum ]; 77 allData.dayNum=[ allData.dayNum thisdatainfo.dayNum ]; 78 allData.shots=[ allData.shots thisdatainfo.shots]; 79 if (~(size(allData.dayNum)==size(allData.hoursNum))) 80 81 line 82 size(allData.dayNum) 83 size(allData.hoursNum) 84 error_sp('Size mismatch ') 85 end % size pb 86 87 88 if (isfield(thisdatainfo,'ch1signalValLPM')) 89 allData.ch1signalValSPM=[ allData.ch1signalValSPM thisdatainfo.ch1signalValSPM]; 90 allData.ch1signalNegPeakSPM=[ allData.ch1signalNegPeakSPM thisdatainfo.ch1signalNegPeakSPM]; 91 allData.ch1signalValLPM=[ allData.ch1signalValLPM thisdatainfo.ch1signalValLPM]; 92 allData.ch1signalNegPeakLPM=[ allData.ch1signalNegPeakLPM thisdatainfo.ch1signalNegPeakLPM]; 93 else 94 allData.ch1signalValSPM=[ allData.ch1signalValSPM zeros(1,length(thisdatainfo.shots)) ]; 95 allData.ch1signalNegPeakSPM=[ allData.ch1signalNegPeakSPM zeros(1,length(thisdatainfo.shots)) ]; 96 allData.ch1signalValLPM=[ allData.ch1signalValLPM zeros(1,length(thisdatainfo.shots)) ]; 97 allData.ch1signalNegPeakLPM=[ allData.ch1signalNegPeakLPM zeros(1,length(thisdatainfo.shots)) ]; 98 end % if ch1 is there 99 100 101 if (isfield(thisdatainfo,'ch2signalValLPM')) 102 allData.ch2signalValSPM=[ allData.ch2signalValSPM thisdatainfo.ch2signalValSPM]; 103 allData.ch2signalNegPeakSPM=[ allData.ch2signalNegPeakSPM thisdatainfo.ch2signalNegPeakSPM]; 104 allData.ch2signalValLPM=[ allData.ch2signalValLPM thisdatainfo.ch2signalValLPM]; 105 allData.ch2signalNegPeakLPM=[ allData.ch2signalNegPeakLPM thisdatainfo.ch2signalNegPeakLPM]; 106 else 107 allData.ch2signalValSPM=[ allData.ch2signalValSPM zeros(1,length(thisdatainfo.shots)) ]; 108 allData.ch2signalNegPeakSPM=[ allData.ch2signalNegPeakSPM zeros(1,length(thisdatainfo.shots)) ]; 109 allData.ch2signalValLPM=[ allData.ch2signalValLPM zeros(1,length(thisdatainfo.shots)) ]; 110 allData.ch2signalNegPeakLPM=[ allData.ch2signalNegPeakLPM zeros(1,length(thisdatainfo.shots)) ]; 111 end % if ch2 is there 112 113 114 115 116 if (loadFullInfo==1) 117 allData.beamInfo=[ allData.beamInfo ; thisdatainfo.beamInfo(:,1:21)]; 118 end % load full info 119 allData.selected=[ allData.selected ones(1, length(thisdatainfo.shots)) ]; 120 end % nFullShots>0 121 dayData.dateStr=[ dayData.dateStr ' ' thisdatainfo.date ] ; 122 dayData.dateNum=[ dayData.dateNum datenum(thisdatainfo.date,'yyyymmdd') ] ; 123 dayData.nDataEvents=[ dayData.nDataEvents thisdatainfo.nDataEvents ] ; 124 dayData.nShots=[ dayData.nShots thisdatainfo.nShots ] ; 125 if (loadFullInfo==1) 126 dayData.nFullShots=[ dayData.nFullShots thisdatainfo.nFullShots ] ; 127 else 128 dayData.nFullShots=[ dayData.nFullShots 0 ] ; 129 end % load full info 34 130 end % for each line 131 132 133 %%% Creates timestamps 134 yearsVec=floor(allData.dayNum/1e4); 135 monthsVec=mod(floor(allData.dayNum/100),100); 136 dayVec=mod(allData.dayNum,100); 137 hoursVec=floor(allData.hoursNum/1e4); 138 minVec=mod(floor(allData.hoursNum/100),100); 139 secVec=mod(allData.hoursNum,100); 140 141 %size(allData.dayNum) 142 %size(allData.hoursNum) 143 144 %size(yearsVec) 145 %size(monthsVec) 146 %size(dayVec) 147 %size(hoursVec) 148 %size(minVec) 149 %size(secVec) 150 151 dateVec=[ yearsVec ; monthsVec ; dayVec ; hoursVec ; minVec ; secVec ]'; %' 152 allData.timestamp= datenum(dateVec)'; %' 153 154 35 155 toc 36 156 disp([ num2str(length(allData.selected)) ' events loaded.']) 37 157 allData.selection=[]; 38 158 159 160 161 %%% Check for missing dates 162 newdateStr=''; 163 for idata=1:dayData.dateNum(end)-dayData.dateNum(1)+1 164 newdateNum(idata)=dayData.dateNum(1)+idata-1; 165 irank=find(dayData.dateNum==newdateNum(idata),1,'first'); 166 if (~(isempty(irank))) 167 newdateStr=[ newdateStr dayData.dateStr(((irank-1)*9)+1:irank*9) ]; 168 newnDataEvents(idata)=dayData.nDataEvents(irank); 169 newnShots(idata)=dayData.nShots(irank); 170 newnFullShots(idata)=dayData.nFullShots(irank); 171 else 172 newdateStr=[ newdateStr ' xxxx' datestr(newdateNum(idata),'mmdd') ]; 173 newnDataEvents(idata)=0; 174 newnShots(idata)=0; 175 newnFullShots(idata)=0; 176 end %if irank >0 177 178 end 179 180 dayData.dateNum=newdateNum; 181 dayData.dateStr=newdateStr; 182 dayData.nDataEvents=newnDataEvents; 183 dayData.nShots=newnShots; 184 dayData.nFullShots=newnFullShots; 185 39 186 end %function -
SPESO/ana2015/makefile_day
r259 r312 1 DATAFILES=$(wildcard *_ch2.csv.gz)2 ANAFILES=$(DATAFILES:_ch2.csv.gz=.shotInfo)3 ANAFULLFILES=$(DATAFILES:_ch2.csv.gz=.shotFullInfo)4 1 DATEDIR=$(shell pwd | sed -e 's/_scope//g' | awk 'BEGIN{FS="/"}{print $$(NF) }') 2 DATAFILES=$(wildcard scope_$(DATEDIR)_*_image.png) 3 ANAFILES=$(DATAFILES:_image.png=.shotInfo) 4 ANAFULLFILES=$(DATAFILES:_image.png=.shotFullInfo) 5 HTMLDIR=/tmp_mnt/pub/ftp/pub/etalon/data_speso/analysis 5 6 DAYINFO=day_$(DATEDIR).dayInfo 6 #DAYINFO=$(shell pwd | sed -e 's/_scope//g' | awk 'BEGIN{FS="/"}{print "day_" $$(NF) ".dayInfo" }') 7 DAYFULLINFO= $(shell pwd | sed -e 's/_scope//g' | awk 'BEGIN{FS="/"}{print "day_" $$(NF) ".dayFullInfo" }') 7 DAYINFOHTML=$(HTMLDIR)/$(DATEDIR)/info_daily.html 8 ROOTDAYINFO=../$(DATEDIR).dayInfo 9 DAYFULLINFO=day_$(DATEDIR).dayFullInfo 10 ROOTDAYFULLINFO=../$(DATEDIR).dayFullInfo 8 11 INFOFILE= $(shell pwd | sed -e 's/_scope//g' | awk 'BEGIN{FS="/"}{print "beam_info_" $$(NF) ".read_beam_info" }') 9 12 13 SVN_DIR=/users/sera/delerue/svn/ETALON/SPESO/ana2015 10 14 11 dayfullinfo: infofile anafullfiles 15 .PHONY: target target_no_info list 16 17 target: $(ANAFILES) $(DAYINFO) $(ROOTDAYINFO) $(INFOFILE) $(ANAFULLFILES) $(DAYFULLINFO) $(ROOTDAYFULLINFO) $(DAYINFOHTML) 18 19 target_no_info: $(ANAFILES) $(DAYINFO) $(ROOTDAYINFO) 20 21 list: 22 pwd 23 echo $(DATEDIR) 24 echo $(ANAFILES) 25 26 $(DAYINFOHTML): $(DAYINFO) 27 echo Summarizing the daily information 28 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),all_data_summary(),exit" < /dev/null 29 ln -f $(HTMLDIR)/$(DATEDIR)/info_daily_$(DATEDIR).html $(DAYINFOHTML) 30 31 $(DAYFULLINFO): $(INFOFILE) $(ANAFULLFILES) $(DAYINFO) $(DAYINFOHTML) . 32 echo Summarizing the FULL daily information 33 echo Datedir $(DATEDIR) 34 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),analyse_day('$(DATEDIR)',1),exit" < /dev/null 35 36 37 $(ROOTDAYFULLINFO): $(DAYFULLINFO) ../$(DATEDIR)_scope 12 38 echo Datedir $(DATEDIR) 13 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),analyse_day('$(DATEDIR)',1),exit"14 39 ln -f $(DAYINFO) $(ROOTDAYINFO) 40 ln -f $(DAYFULLINFO) $(ROOTDAYFULLINFO) 15 41 16 dayinfo: anafiles 42 $(DAYINFO): $(ANAFILES) 17 43 echo Datedir $(DATEDIR) 18 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),analyse_day('$(DATEDIR)',1),exit" 19 44 echo Modified dependencies $? 45 $(SVN_DIR)/check_wrong_files.sh $(DATEDIR) 46 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),analyse_day('$(DATEDIR)',1),exit" < /dev/null 20 47 21 infofile: $(INFOFILE) 48 $(ROOTDAYINFO): $(DAYINFO) ../$(DATEDIR)_scope 49 echo Datedir $(DATEDIR) 50 ln -f $(DAYINFO) $(ROOTDAYINFO) 51 52 %.shotInfo: %_ch2.csv.gz 53 echo $< to $@ 54 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),analyse_shot_from_name('$<',1),exit" < /dev/null 55 56 %.shotInfo: %_image.png 57 echo $< to $@ 58 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),analyse_shot_from_name('$<',1),exit" < /dev/null 59 60 %.shotFullInfo: %.shotInfo $(INFOFILE) 61 echo $< to $@ dependencies: $^ 62 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),addinfo2shot('$<'),exit" < /dev/null 63 64 %.read_beam_info:%.txt_beam_info 65 echo $< to $@ 66 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),read_mambo_file('$<'),exit" < /dev/null 22 67 23 68 delete_infofile: 24 69 rm -f $(INFOFILE) 25 70 26 target: anafiles dayinfo infofile anafullfiles dayfullinfo27 28 anafiles: $(ANAFILES)29 30 anafullfiles: infofile $(ANAFULLFILES)31 32 %.shotInfo: %_ch2.csv.gz33 echo $< to $@34 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),analyse_shot_from_name('$<',1),exit"35 36 %.shotFullInfo: %.shotInfo infofile37 echo $< to $@38 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),addinfo2shot('$<'),exit"39 40 %.read_beam_info:%.txt_beam_info41 echo $< to $@42 matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),read_mambo_file('$<'),exit"43 -
SPESO/ana2015/read_mambo_file.m
r259 r312 1 1 function read_mambo_file(filename) 2 %%% Les fichiers doivent d'abord être décomposés par ana_mambo.sh 2 %%% Les fichiers doivent d'abord être décomposés par ana_mambo.sh %' 3 3 4 4 if isdir('/sps_sera/smith-purcell/') … … 17 17 fclose(fid); 18 18 19 %disp(length(txt));20 19 21 hourStartIdx=-1; 22 otherHourStartIdx=-1; 23 %hourIsComplete=-1; 24 otherHoursIsBefore=0; % 1 is before; -1 is after; 0 is none 25 %otherHourIsComplete=-1; 20 txt=strtrim(char(txt)'); %' 26 21 27 txt=strtrim(char(txt)'); 28 29 posSpace=min(strfind(txt,char(9))); 22 charSpacer=9; 23 posSpace=min(strfind(txt,char(charSpacer))); 24 %if (length(posSpace)<5) 25 % charSpacer=32; 26 % posSpace=min(strfind(txt,char(charSpacer))); 27 %end %if no char(9) 30 28 posEol=min(strfind(txt,char(10))); 31 29 iField=1; 32 30 while(posEol>posSpace) 33 31 fields{iField}=strtrim(txt(1:posSpace)); 34 32 txt=strtrim(txt(posSpace+1:end)); 35 posSpace=min(strfind(txt,char( 9)));33 posSpace=min(strfind(txt,char(charSpacer))); 36 34 posEol=min(strfind(txt,char(10))); 37 35 iField=iField+1; … … 43 41 nFields=iField; 44 42 43 if (~((nFields==21))) 44 error_sp([ 'The file ' filename ' does not have the correct number of files. ' num2str(nFields) ' fields found ']); 45 end % 46 45 47 %fields 46 48 … … 50 52 fieldsValsArray=zeros(25000,nFields); 51 53 52 hourStartIdx=-1; 53 otherHoursIsBefore=0; 54 hourStartIdx=1; 54 55 55 56 iRecord=1; 56 57 while(length(txt)>1000) 57 58 posEol=min(strfind(txt,char(10))); 58 thisLine=[strtrim(txt(1:posEol)) char(9) ]; 59 prevHour=-1; 60 59 thisLine=[strtrim(txt(1:posEol)) char(charSpacer) ]; 60 61 61 for iField=1:nFields 62 posSpace=min(strfind(thisLine,char( 9)));63 62 posSpace=min(strfind(thisLine,char(charSpacer))); 63 thisField=strtrim(thisLine(1:posSpace)); 64 64 if (iField==1) 65 65 fieldsInit(iField)=1; 66 66 fieldsVals(iField)=datenum(thisField); 67 thisHoursStr=datestr(fieldsVals(iField),'HH');68 thisDateHoursStr=datestr(fieldsVals(iField),'YYYYmmDD_HH');69 thisHour=str2num(thisHoursStr);70 minutesHour=str2num(datestr(fieldsVals(iField),'MM'));71 if((((minutesHour>=58)&&(minutesHour<=59))||(minutesHour==0)||(thisHour~=prevHour))&&(otherHourStartIdx==-1))72 datestr(now)73 disp([ 'New hour ' thisDateHoursStr ' in file ' filename ]);74 otherHourStartIdx=iRecord;75 otherHoursIsBefore=1;76 end %start of a new hour77 78 if ((otherHoursIsBefore==1)&&(((minutesHour>=0)&&(minutesHour<=1))||(thisHour~=prevHour)))79 disp(['Start hour ' thisDateHoursStr ]);80 tmpIdx=hourStartIdx;81 hourStartIdx=otherHourStartIdx;82 otherHourStartIdx=tmpIdx;83 otherHoursIsBefore=-1;84 prevHour=thisHour;85 end86 if ((otherHoursIsBefore==-1)&&(minutesHour>=2)&&(minutesHour<=3)&&(otherHourStartIdx~=-1))87 disp(['End hour ' thisDateHoursStr ]);88 %2 minutes is 0.0014 so +0.002 means next hour89 hourStr=datestr(fieldsValsArray(otherHourStartIdx,1)+0.002,'HH');90 dateStr=datestr(fieldsValsArray(otherHourStartIdx,1)+0.002,'YYYYmmDD');91 beamInfo=fieldsValsArray(otherHourStartIdx:(iRecord-1),:);92 basedir = [ basedir1 dateStr '_scope/'];93 if (~isdir(basedir))94 mkdir(basedir);95 end %if is not dir96 if (dateStr == dateStrRef)97 basename = [ basedir 'beam_info_' dateStr '_' hourStr '.mat' ]98 save(basename,'beamInfo');99 end100 otherHourStartIdx=-1;101 otherHoursIsBefore=0;102 103 for jField=2:nFields104 figure(jField);105 % beamInfo(:,1)106 %beamInfo(:,jField)107 plot(beamInfo(:,1),beamInfo(:,jField))108 % figure(100+jField);109 % plot(beamInfo(1,:),beamInfo(jField,:))110 % figure(200+jField);111 % plot(beamInfo(jField,:))112 title([ 'Beam info j=' num2str(jField) ' ' strrep(fields{jField},'_',' ') ' ' dateStr ' ' hourStr ])113 plotdirname=[ plots_basedir dateStr '/' hourStr '/' ];114 if (~isdir(plotdirname))115 mkdir(plotdirname);116 end %if is not dir117 plotfilename= [ plotdirname 'figure_' strrep(strrep(strrep(fields{jField},'\','_'),'/','_'),'.','_') '.png' ]118 print(figure(jField), '-dpng', [ plotfilename ]);119 end %for each field120 clear beamInfo121 beamInfo=fieldsValsArray(hourStartIdx:iRecord,:);122 fieldsValsArray(1:iRecord-hourStartIdx+1,:)=beamInfo;123 iRecord=iRecord-hourStartIdx+1;124 hourStartIdx=1;125 clear beamInfo126 end127 128 67 else 129 68 if (strcmp(thisField,'*')) … … 134 73 end %if '*' 135 74 end %if field != 1 136 thisLine=[ strtrim(thisLine(posSpace+1:end)) char( 9) ];75 thisLine=[ strtrim(thisLine(posSpace+1:end)) char(charSpacer) ]; 137 76 end %for each fields 138 77 txt=txt(posEol+1:end); 78 79 fieldsValsArray(iRecord,:)=fieldsVals'; %' 80 iRecord=iRecord+1; 81 fieldsInit 82 fieldsVals 83 % disp('eol') 84 % pause(3) 85 end % for each line 139 86 140 fieldsValsArray(iRecord,:)=fieldsVals'; 141 if ((hourStartIdx>0)||(otherHourStartIdx>0)) 142 iRecord=iRecord+1; 143 end % if we are recording 87 beamInfo=fieldsValsArray(1:(iRecord-1),:); 144 88 145 %fieldsInit 146 %fieldsVals 147 148 end % for each line 89 basename = [ basedir 'beam_info_' dateStrRef '.mat' ]; 90 save(basename,'beamInfo'); 149 91 150 92 read_filename=[basedir strrep(filename,'txt_beam_info','read_beam_info')]; -
SPESO/ana2015/read_recent.sh
r219 r312 1 1 #!/bin/tcsh -f 2 2 3 cd /users/sera/delerue/svn/ETALON/SPESO/ana2015 4 5 matlab -nodesktop -r "read_recent_and_exit" 6 ./mirrorSpeso.sh 7 8 3 cd ~/SPESO_data/ ; make --keep-going -f /users/sera/delerue/svn/ETALON/SPESO/ana2015/makefile_all --jobs=6 --load-average=6 -
SPESO/ana2015/warning_sp.m
r259 r312 1 1 function warning_sp(txt) 2 2 fid=fopen('/sps/sera/delerue/smith-purcell/SPESO/data/warning_sp.txt','a+'); 3 fprintf(fid,'%s \n',txt);3 fprintf(fid,'[Warning] %s :\t %s \n', datestr(now), txt ); 4 4 fclose(fid); 5 5 warning(txt);
Note: See TracChangeset
for help on using the changeset viewer.