Changeset 312 in ETALON for SPESO


Ignore:
Timestamp:
Feb 18, 2016, 4:33:49 PM (8 years ago)
Author:
delerue
Message:

Latest version of the SPESO analysis code

Location:
SPESO/ana2015
Files:
2 added
19 edited

Legend:

Unmodified
Added
Removed
  • SPESO/ana2015/addinfo2shot.m

    r259 r312  
    88
    99dateval=datenum([ dateStr '_' hourStr ],'YYYYmmdd_HHMMSS');
    10 beaminfofilename=[ basedir dateStr '_scope/' 'beam_info_' dateStr '_' hourStr(1:2) '.mat' ];
     10try
     11beaminfofilename=[ basedir dateStr '_scope/' 'beam_info_' dateStr '.mat' ];
    1112beamInfoVals=load(beaminfofilename);
     13catch
     14    error_sp([ 'Error while reading ' beaminfofilename ] )
     15end
    1216
    1317next_evt=find(beamInfoVals.beamInfo(:,1)>dateval,1, 'first');
    14 beamInfoVals.beamInfo(next_evt,1)
     18%beamInfoVals.beamInfo(next_evt,1)
    1519datestr(beamInfoVals.beamInfo(next_evt,1))
    16 beamInfoVals.beamInfo(next_evt,:)
     20%beamInfoVals.beamInfo(next_evt,:)
    1721
    1822val=load([  basedir dateStr '_scope/' filename ] ,'shotInfo','-mat');
     
    2428save(savename ,'shotInfo','-mat')
    2529
     30
     31html_shot(dateStr,hourStr,shotInfo);
     32
    2633end % function
  • SPESO/ana2015/ana_mambo.sh

    r259 r312  
    1010prevFile='/sps/sera/delerue/smith-purcell/SPESO/data/tmp.delete'
    1111
     12
     13nFields=`head -1 /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} | wc -w`
     14
     15if [[ ${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"
     20fi
     21
     22if [[ ${nFields} -ne  21 ]] ; then
     23        echo "Incorrect number of fields in " ${mambo_file}
     24        echo " Number of fields found: " ${nFields}
     25        exit -1;
     26fi
     27
    1228head -1 /sps/sera/delerue/smith-purcell/SPESO/data/${mambo_file} > /sps/sera/delerue/smith-purcell/SPESO/data/speso_positions.header
    1329
    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
     31for 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
    1532   echo $date
    1633   dateStr=`echo $date | sed -e 's\/\ \g' | awk '{ print $1 $2 $3}'`
    1734#   echo $dateStr
    1835#   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.txt
    20    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}.txt
    21 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_info
     36   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
     38ln -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
    2239 #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.delete
    25    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.txt
     40   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
    2744done
    2845
  • SPESO/ana2015/analyse_channel.m

    r259 r312  
    1111imgName=[ plots_dir fnamebase '_ch' num2str(channelLoop)  ];
    1212imgTitle=[ 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);
     13if ((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) ]);
     35fileinfo=dir(fname);
     36if(fileinfo.bytes==0) 
     37  warning_sp( [ 'File ' fname ' is empty!']);
     38data_num=[];
     39else
     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);
     57showScopeImg=0;
     58if (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))
     71end % showScopeImg
     72      else
     73        data_num=[]
     74      end % imgdata not empty
     75end %file is empty
    2076else
    2177    warning_sp(['Channel ' num2str(channelLoop) ' does not exist in ' channelFileNameBase ])
     
    2379end
    2480
    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))
    8983
    9084if (plotShot>0)
    9185    figure(100*plotShot+10*channelLoop+1)
    9286    clf;
    93     subplot(2,1,1)
    94     hold on
    95     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 on
    108     plot(data_num(:,1), data_num(:,2), '-');
    109     marginTime=(bgAfEnd-bgBfStart)*0.1;
    110     %    xlim( [ bgBfStart bgAfEnd ] )
    111 %    bgBfStart-marginTime
    112 %    bgAfEnd+marginTime
    113     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    
    13187    figure(100*plotShot+10*channelLoop+2)
    13288    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   
     90end
     91
     92for 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
     225end %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   
    144231end % function
  • SPESO/ana2015/analyse_day.m

    r259 r312  
    33
    44global basedir;
     5global imageSizes;
     6global plots_basedir;
    57
    68define_dirs_analysis();
     
    911fnamedir=[ basedir dateStr '_scope' '/' ];
    1012
    11 
     13htmltxt_table=cell(24);
     14htmltxt_img=cell(24);
     15
     16
     17%%% Num data files
     18[status,nDataStr]=system([ ' ls ' fnamedir ' | grep _image.png | wc -l ' ] );
     19nDataNum=str2num(nDataStr);
    1220%%% shotInfo
    1321lscmd=[ fnamedir '*.shotInfo' ];
     22[status,filelist]=system(['ls --color=never -1 ' lscmd ]);
     23dayInfo=struct;
     24dayInfo.date=dateStr;
     25dayInfo.nDataEvents=nDataNum;
     26if (status==0)
    1427filelist=ls('--color=never','-1', lscmd);
    1528filelist=strrep(filelist,fnamedir,'');
     
    1730nShots=length(newLines);
    1831newLines=[ 0 newLines ];
    19 dayInfo=struct;
    2032iShot=1;
    2133for iline=2:length(newLines)
    2234    line=filelist(newLines(iline-1)+1:newLines(iline)-1);
     35        dateStrFile=line(7:14);
    2336    theShot=load([ fnamedir line ],'-mat');
    24     if(((theShot.shotInfo.ch(2).on)==1)&& (~(isempty(theShot.shotInfo.ch(2).values))))
     37if(((theShot.shotInfo.ch(2).on)==1)&& (~(isempty(theShot.shotInfo.ch(2).values))) && ( strcmp(dateStr,dateStrFile )))
    2538        dayInfo.shots(iShot)=theShot;
    2639        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
     47if(((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;
     52end % 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) ];
    2957    else
    3058        nShots=nShots-1;
    3159        iShot=iShot-1;
    32     end %channel is on
     60    end %channel 2 is on
    3361    iShot=iShot+1;
    3462end % for each line
     63else
     64    nShots=0;
     65end % if ls status == 0
     66dayInfo.nShots=nShots;
    3567save([ fnamedir 'day_' dateStr '.dayInfo' ] ,'dayInfo');
    3668
     
    4072[status,filelist]=system(['ls --color=never -1 ' lscmd ]);
    4173dayFullInfo=struct;
     74dayFullInfo.date=dateStr;
     75dayFullInfo.nDataEvents=nDataNum;
     76
    4277if (status==0)
    4378filelist=strrep(filelist,fnamedir,'');
     
    4681newLines=[ 0 newLines ];
    4782iFullShot=1;
    48 length(newLines)
    4983for iline=2:length(newLines)
    50     line=filelist(newLines(iline-1)+1:newLines(iline)-1);
     84            line=filelist(newLines(iline-1)+1:newLines(iline)-1);
    5185    theFullShot=load([ fnamedir line ],'-mat');
    52     if(((theFullShot.shotInfo.ch(2).on)==1)&& (~(isempty(theFullShot.shotInfo.ch(2).values))))
     86if(((theFullShot.shotInfo.ch(2).on)==1)&& (~(isempty(theFullShot.shotInfo.ch(2).values)))&&(~isempty(theFullShot.shotInfo.beamInfo)))
    5387        dayFullInfo.shots(iFullShot)=theFullShot;
    5488        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
     95if((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
     104end % if ch(1) is on
     105
     106        dayFullInfo.beamInfo(iFullShot,:)=theFullShot.shotInfo.beamInfo(1,:);
    58107    else
    59108        nFullShots=nFullShots-1;
     
    62111    iFullShot=iFullShot+1;
    63112end % for each line
     113else
     114    nFullShots=0;
     115end % if ls status == 0
     116dayFullInfo.nShots=nShots;
     117dayFullInfo.nFullShots=nFullShots;
     118
     119%if ((nFullShots > 0 ) && ( nFullShots/nShots > 0.5 ))
    64120save([ fnamedir 'day_' dateStr '.dayFullInfo' ] ,'dayFullInfo');
    65 end % if ls status == 0
    66 
     121%end % nFullShots >0
     122disp([ 'nData= ' num2str(nDataNum) ' / nShots= ' num2str(nShots) ' /  nFullShots= ' num2str(nFullShots) ]);
     123
     124if (nShots>0)
    67125if (plotStr>0)
    68126    for ihour=0:23
     
    71129            figure(plotStr*1000+ihour)
    72130            clf;
    73             plot(dayInfo.ch2signalVal(thisHourShots))
     131plot(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')
    74135            figure(plotStr*1000+100+ihour)
    75136            clf;
    76             plot(dayInfo.ch2signalNegPeak(thisHourShots))
     137plot(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;
     143plot(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;
     149plot(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
    77158        end % if length>0
    78159    end % for each hour
    79 end % if
     160    end % if (plotStr>0)
     161end % if nShots >0
     162
     163%%% Preliminary analysis
     164if (nFullShots>0)
     165  analyse_info_one_day(dateStr)
     166end %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
     201if (ihour<24)
     202      fprintf(fid,'<HR>');
     203for ifig=[ 0:3]
     204        imgname=[ 'hourly_figure_' num2str(ifig) '.png' ];
     205fprintf(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 ']);
     210for ifig=[ 0:3]
     211        imgname=[ sprintf('%02d',jhour-1) '/' 'hourly_figure_' num2str(ifig) '.png'     ];
     212fprintf(fid, [ '<A HREF="' imgname '" ><IMG SRC="' imgname '" WIDTH=' num2str(imageSizes) ' ></A>\n' ] );
     213            end % for ifig
     214                          fprintf(fid, [ ' </BR> ']);
     215end % for jhour
     216end %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
    80278
    81279end %analyse_day
  • SPESO/ana2015/analyse_full_info.m

    r259 r312  
    1616data_histo(dvar.DETECT_ZPOS)
    1717figure(5)
    18 data_histo(dvar.LPM)
     18data_histo(dvar.DETECT_R2)
    1919figure(6)
    2020data_histo(dvar.DETECT_R1)
    2121figure(7)
    22 data_histo(dvar.DETECT_R2)
     22data_histo(dvar.LPM)
     23figure(8)
     24data_histo(dvar.XBPM)
     25figure(9)
     26data_histo(dvar.QICT1)
    2327
    2428data_select(dvar.LPM,'=',2)
     
    3034data_plot2d(dvar.DETECT_SPOS,dvar.DETECT_XPOS)
    3135figure(102)
    32 data_plot2d(dvar.DETECT_SPOS,dvar.DATA_VAL)
     36data_plot2d(dvar.DETECT_SPOS,dvar.DATA_VAL_LPM)
    3337figure(103)
    34 data_plot2d(dvar.DETECT_SPOS,dvar.DATA_PEAK)
     38data_plot2d(dvar.DETECT_SPOS,dvar.DATA_PEAK_LPM)
    3539figure(104)
    36 data_plot2d(dvar.DETECT_ZPOS,dvar.DATA_VAL)
     40data_plot2d(dvar.DETECT_ZPOS,dvar.DATA_VAL_LPM)
    3741figure(105)
    38 data_plot2d(dvar.DETECT_XPOS,dvar.DATA_VAL)
     42data_plot2d(dvar.DETECT_XPOS,dvar.DATA_VAL_LPM)
    3943figure(106)
    40 data_plot2d(dvar.RESEAU_POS,dvar.DATA_VAL)
     44data_plot2d(dvar.RESEAU_POS,dvar.DATA_VAL_LPM)
    4145figure(107)
    42 data_plot2d(dvar.DETECT_R1,dvar.DATA_VAL)
     46data_plot2d(dvar.DETECT_R1,dvar.DATA_VAL_LPM)
    4347figure(108)
    44 data_plot2d(dvar.DETECT_R2,dvar.DATA_VAL)
     48data_plot2d(dvar.DETECT_R2,dvar.DATA_VAL_LPM)
    4549figure(109)
    46 data_plot2d(dvar.DATA_VAL,dvar.DATA_PEAK)
     50data_plot2d(dvar.DATA_VAL_LPM,dvar.DATA_PEAK_LPM)
     51figure(110)
     52data_plot2d(dvar.DATA_VAL_SPM,dvar.DATA_PEAK_SPM)
     53figure(111)
     54data_plot2d(dvar.DATA_PEAK_LPM,dvar.DATA_PEAK_SPM)
     55
     56figure(101)
     57data_plot2d(dvar.RESEAU_POS,dvar.DATA_PEAK_LPM)
     58figure(102)
     59data_plot2d(dvar.DETECT_SPOS,dvar.DATA_PEAK_LPM)
     60figure(103)
     61data_plot2d(dvar.DETECT_XPOS,dvar.DATA_PEAK_LPM)
  • SPESO/ana2015/analyse_shot.m

    r259 r312  
    4040save([basedir fnamedir fnamebase '.shotInfo' ],'shotInfo');
    4141
     42html_shot(dateStr,hourStr,shotInfo);
     43
    4244end % analyse_shot
  • SPESO/ana2015/data_histo.m

    r259 r312  
    22
    33global allData;
    4 global dvar;
    5 define_data_var();
    64
    7 idx=find(allData.selected==1);
     5[valsused,vals]=data_get_vals(var);
    86
    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)
     7hist(vals(1,:),20)
     8xlabel(get_var_name(var))
    259title({get_var_name(var);allData.selection})
    2610end %function
  • SPESO/ana2015/data_plot2d.m

    r259 r312  
    22
    33global allData;
    4 global dvar;
    5 define_data_var();
    64
    7 idx=find(allData.selected==1);
     5[valsused,vals]=data_get_vals(var1,var2);
    86
    9 varidx(1)=mod(var1,1000);
    10 vartype(1)=floor(var1/1000)*1000;
     7if (isempty(vals(1,:))||isempty(vals(2,:)))
     8  warning_sp([ ' Warning one of the two variable is empty: ' length(vals(1,:)) ' / '  length(vals(2,:))  ])
     9else
     10hold on
     11if (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')
     17end % there is a var in pos 4
    1118
    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 end
    18 
    19 vals=zeros(2,length(idx));
    20 for iloop=1:2
    21 switch vartype(iloop)
    22     case dvar.BEAMINFO
    23         vals(iloop,:)=allData.beamInfo(idx,varidx(iloop))';
    24     case dvar.DATAINFO
    25         switch varidx(iloop)
    26             case 1
    27                 vals(iloop,:)=allData.ch2signalVal(idx);
    28             case 2
    29                 vals(iloop,:)=allData.ch2signalNegPeak(idx);
    30         end
    31     otherwise
    32         warning_sp([ 'The vartype ' vartype ' is unknown.' ]);
    33         error('end');
    34 end %switch
    35 end %for
    36 
    37 plot(vals(1,:),vals(2,:),'o')
    3819title({ [ get_var_name(var1) ' vs ' get_var_name(var2) ];allData.selection})
    3920xlabel(get_var_name(var1))
    4021ylabel(get_var_name(var2))
     22end %not empty
    4123end %function
  • SPESO/ana2015/data_select.m

    r259 r312  
    33global allData;
    44global dvar;
     5global data_vars_plotted;
     6
    57define_data_var();
     8
     9data_vars_plotted=0;
    610
    711varidx=mod(var,1000);
     
    913
    1014switch 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
    1224        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
    1339    otherwise
    1440        warning_sp([ 'The vartype ' vartype ' is unknown.' ]);
  • SPESO/ana2015/define_data_var.m

    r259 r312  
    55dvar.BEAMINFO=1000;
    66dvar.DATAINFO=2000;
     7dvar.RAWINFO=3000;
    78
     9dvar.BTIME=dvar.BEAMINFO+1;
     10dvar.XBPM=dvar.BEAMINFO+2;
     11dvar.QICT1=dvar.BEAMINFO+3;
     12dvar.QICT2=dvar.BEAMINFO+4;
    813dvar.RESEAU_POS=dvar.BEAMINFO+19;
    914dvar.DETECT_XPOS=dvar.BEAMINFO+15;
     
    1520
    1621
    17 dvar.DATA_VAL=dvar.DATAINFO+1;
    18 dvar.DATA_PEAK=dvar.DATAINFO+2;
     22dvar.DATA_VAL_LPM=dvar.DATAINFO+1;
     23dvar.DATA_PEAK_LPM=dvar.DATAINFO+2;
     24dvar.DATA_VAL_SPM=dvar.DATAINFO+3;
     25dvar.DATA_PEAK_SPM=dvar.DATAINFO+4;
     26
     27dvar.DATA1_VAL_LPM=dvar.DATAINFO+11;
     28dvar.DATA1_PEAK_LPM=dvar.DATAINFO+12;
     29dvar.DATA1_VAL_SPM=dvar.DATAINFO+13;
     30dvar.DATA1_PEAK_SPM=dvar.DATAINFO+14;
     31
     32dvar.DATA2_VAL_LPM=dvar.DATAINFO+21;
     33dvar.DATA2_PEAK_LPM=dvar.DATAINFO+22;
     34dvar.DATA2_VAL_SPM=dvar.DATAINFO+23;
     35dvar.DATA2_PEAK_SPM=dvar.DATAINFO+24;
     36
     37dvar.DATA_TIME=dvar.DATAINFO+9;
     38
     39dvar.TIMESTAMP=dvar.RAWINFO+1;
     40dvar.RAW_HOUR=dvar.RAWINFO+2;
     41
     42dvar.DAYSAGO=dvar.RAWINFO+11;
    1943
    2044end %function
  • SPESO/ana2015/footer_fun.m

    r213 r312  
    11function footer_fun(fid)
    2 fprintf(fid, '<EM> SPESO DATA PRELIMINARY </EM> <BR/>\n');
     2fprintf(fid, '<BR/><EM> SPESO DATA PRELIMINARY </EM> <BR/>\n');
     3fprintf(fid, ['Run on ' datestr(now) '  <BR/>\n']);
    34fprintf(fid, '<A HREF="http://groups.lal.in2p3.fr/etalon/">ETALON</A><BR/>\n');
    45fprintf(fid, 'For more details contact <A HREF="http://lal.delerue.org/">Nicolas Delerue</A>.<BR/>\n');
  • SPESO/ana2015/get_parameters.m

    r259 r312  
    22%%% returns scope parameters as function of date
    33  dateNum=str2double(dateStr);
    4 if (dateNum>=20150422)
    5   error('NO parameters defined');
    6 elseif (dateNum>=20150331)
     4  hourNum=str2double(hourStr);
     5if (dateNum>=20160905)
     6  error_sp([ 'NO parameters defined on ' dateStr ]);
     7
     8elseif ((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
     34elseif (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
     40elseif ((dateNum>=20150606)||((dateNum==20150605)&&(hourNum>174000)))
     41% Ref SPM: '20150605','192941'
     42% Ref LPM: '20150605','193111'
     43
    744  myParameters.ch(1).on=0;
    845
    946  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;
    1357
    1458  myParameters.ch(3)=myParameters.ch(1);
    1559  myParameters.ch(4)=myParameters.ch(1);
    1660
     61elseif ((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
     67elseif (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
     86elseif (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);
     91elseif ((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
     107elseif ((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   
    17113elseif (dateNum>=20150301)
    18114  myParameters.ch(1).on=0;
    19115
    20116  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;
    24124
    25125  myParameters.ch(3)=myParameters.ch(1);
  • SPESO/ana2015/get_var_name.m

    r259 r312  
    44define_data_var();
    55
    6 
    76switch(varidx)
     7    case dvar.BTIME
     8        str='Time (sec.)';       
    89    case dvar.RESEAU_POS
    910        str='Pos. reseau';       
     
    1415    case dvar.DETECT_SPOS
    1516        str='Pos S detector';
    16     case dvar.LPM
    17         str='LPM event';
    1817    case dvar.DETECT_R1
    1918        str='Rotation R1';
    2019    case dvar.DETECT_R2
    2120        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
    2666    otherwise
    2767        str='Unknown value';
  • SPESO/ana2015/header_fun.m

    r213 r312  
    44fprintf(fid, title);
    55fprintf(fid,'\n</TITLE>\n');
     6fprintf(fid,'<CENTER>\n');
     7fprintf(fid,'<H2>\n');
     8fprintf(fid, title);
     9fprintf(fid,'</H2>\n');
     10fprintf(fid,'</CENTER>\n');
     11
    612end %function
  • SPESO/ana2015/load_analysis_data.m

    r259 r312  
    1 function load_analysis_data()
     1function load_analysis_data(varargin)
    22
    33global basedir;
    44global allData;
     5global dayData;
     6
     7
     8fprintf('Number of arguments: %d\n',nargin)
     9
     10if (nargin>0)
     11lsmask=varargin{1}
     12else
     13lsmask='2015????_scope/*.dayFullInfo'
     14end
     15
     16lsmask
     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
    528
    629define_dirs_analysis();
     
    932tic
    1033%%% shotInfo
    11 lsdir=[ basedir '2015????_scope/*.dayFullInfo' ];
     34lsdir=[ basedir lsmask ];
    1235lscmd=[ 'ls  -1 --color=never  ' lsdir ];
    1336[~,filelist]=system(lscmd);
    1437filelist=strrep(filelist,basedir,'');
    15 filelist
     38%filelist
    1639newLines=strfind(filelist,char(10)) ;
    1740newLines=[ 0 newLines ];
    1841allData=[];
     42allData.hoursNum=[ ];
     43allData.dayNum=[ ];
     44allData.timestamp=[ ];
    1945allData.shots=[ ];
    20 allData.hoursNum=[  ];
    21 allData.ch2signalVal=[  ];
    22 allData.ch2signalNegPeak=[  ];
     46
     47allData.ch1signalValLPM=[  ];
     48allData.ch1signalNegPeakLPM=[  ];
     49allData.ch1signalValSPM=[  ];
     50allData.ch1signalNegPeakSPM=[  ];
     51
     52allData.ch2signalValLPM=[  ];
     53allData.ch2signalNegPeakLPM=[  ];
     54allData.ch2signalValSPM=[  ];
     55allData.ch2signalNegPeakSPM=[  ];
     56
    2357allData.beamInfo=[ ] ;
    2458allData.selected=[  ];
     59dayData=struct;
     60dayData.dateStr=[];
     61dayData.dateNum=[];
     62dayData.nDataEvents=[];
     63dayData.nShots=[];
     64dayData.nFullShots=[];
    2565for iline=2:length(newLines)
    26     line=filelist(newLines(iline-1)+1:newLines(iline)-1);
     66            line=filelist(newLines(iline-1)+1:newLines(iline)-1)
    2767    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)) ];
     68if (loadFullInfo==1)
     69  thisdatainfo=thisdata.dayFullInfo;
     70nShots=thisdatainfo.nFullShots;
     71    else
     72      thisdatainfo=thisdata.dayInfo;
     73nShots=thisdatainfo.nShots;
     74end % 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];
     79if (~(size(allData.dayNum)==size(allData.hoursNum)))
     80
     81line
     82size(allData.dayNum)
     83size(allData.hoursNum)
     84  error_sp('Size mismatch ')
     85end % size pb
     86
     87
     88if (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)) ];     
     98end % if ch1 is there
     99
     100
     101if (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))  ];
     108allData.ch2signalNegPeakSPM=[ allData.ch2signalNegPeakSPM  zeros(1,length(thisdatainfo.shots))  ];
     109allData.ch2signalValLPM=[ allData.ch2signalValLPM  zeros(1,length(thisdatainfo.shots))  ];
     110allData.ch2signalNegPeakLPM=[ allData.ch2signalNegPeakLPM  zeros(1,length(thisdatainfo.shots)) ];   
     111end % if ch2 is there
     112
     113
     114
     115
     116if (loadFullInfo==1)
     117    allData.beamInfo=[ allData.beamInfo ;  thisdatainfo.beamInfo(:,1:21)];
     118end % 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 ] ;
     125if (loadFullInfo==1)
     126    dayData.nFullShots=[ dayData.nFullShots thisdatainfo.nFullShots ] ;
     127    else
     128    dayData.nFullShots=[ dayData.nFullShots 0 ] ;
     129end % load full info
    34130end % for each line
     131
     132
     133%%% Creates timestamps
     134yearsVec=floor(allData.dayNum/1e4);
     135monthsVec=mod(floor(allData.dayNum/100),100);
     136    dayVec=mod(allData.dayNum,100);
     137hoursVec=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
     151dateVec=[ yearsVec ; monthsVec ; dayVec ; hoursVec ; minVec ; secVec ]'; %'
     152allData.timestamp=  datenum(dateVec)'; %'
     153
     154
    35155toc
    36156disp([ num2str(length(allData.selected)) ' events loaded.'])
    37157allData.selection=[];
    38158
     159
     160
     161%%% Check for missing dates
     162newdateStr='';
     163for 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
     178end
     179
     180dayData.dateNum=newdateNum;
     181dayData.dateStr=newdateStr;
     182dayData.nDataEvents=newnDataEvents;
     183dayData.nShots=newnShots;
     184dayData.nFullShots=newnFullShots;
     185
    39186end %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)
    41DATEDIR=$(shell  pwd | sed -e 's/_scope//g' | awk 'BEGIN{FS="/"}{print $$(NF) }')
     2DATAFILES=$(wildcard scope_$(DATEDIR)_*_image.png)
     3ANAFILES=$(DATAFILES:_image.png=.shotInfo)
     4ANAFULLFILES=$(DATAFILES:_image.png=.shotFullInfo)
     5HTMLDIR=/tmp_mnt/pub/ftp/pub/etalon/data_speso/analysis
    56DAYINFO=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"  }')
     7DAYINFOHTML=$(HTMLDIR)/$(DATEDIR)/info_daily.html
     8ROOTDAYINFO=../$(DATEDIR).dayInfo
     9DAYFULLINFO=day_$(DATEDIR).dayFullInfo
     10ROOTDAYFULLINFO=../$(DATEDIR).dayFullInfo
    811INFOFILE= $(shell  pwd | sed -e 's/_scope//g' | awk 'BEGIN{FS="/"}{print "beam_info_" $$(NF) ".read_beam_info"  }')
    912
     13SVN_DIR=/users/sera/delerue/svn/ETALON/SPESO/ana2015
    1014
    11 dayfullinfo: infofile anafullfiles
     15.PHONY: target target_no_info list
     16
     17target: $(ANAFILES) $(DAYINFO) $(ROOTDAYINFO) $(INFOFILE) $(ANAFULLFILES) $(DAYFULLINFO) $(ROOTDAYFULLINFO) $(DAYINFOHTML)
     18
     19target_no_info: $(ANAFILES) $(DAYINFO) $(ROOTDAYINFO)
     20
     21list:
     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
    1238                  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)            
    1541
    16 dayinfo: anafiles
     42$(DAYINFO): $(ANAFILES)
    1743                  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
    2047
    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
    2267
    2368delete_infofile:
    2469        rm -f $(INFOFILE)
    2570
    26 target: anafiles dayinfo infofile anafullfiles dayfullinfo
    27 
    28 anafiles: $(ANAFILES)
    29 
    30 anafullfiles: infofile $(ANAFULLFILES)
    31 
    32 %.shotInfo: %_ch2.csv.gz
    33                   echo $< to $@
    34                   matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),analyse_shot_from_name('$<',1),exit"
    35 
    36 %.shotFullInfo: %.shotInfo infofile
    37                   echo $< to $@
    38                   matlab -nodisplay -r "addpath('/users/sera/delerue/svn/ETALON/SPESO/ana2015/'),addinfo2shot('$<'),exit"
    39 
    40 %.read_beam_info:%.txt_beam_info
    41                   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  
    11function 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 %'
    33
    44if isdir('/sps_sera/smith-purcell/')
     
    1717fclose(fid);
    1818
    19 %disp(length(txt));
    2019
    21 hourStartIdx=-1;
    22 otherHourStartIdx=-1;
    23 %hourIsComplete=-1;
    24 otherHoursIsBefore=0; % 1 is before; -1 is after; 0 is none
    25 %otherHourIsComplete=-1;
     20txt=strtrim(char(txt)'); %'
    2621
    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)
    3028posEol=min(strfind(txt,char(10)));
    3129iField=1;
    3230while(posEol>posSpace)
    33     fields{iField}=strtrim(txt(1:posSpace));
     31  fields{iField}=strtrim(txt(1:posSpace));
    3432    txt=strtrim(txt(posSpace+1:end));
    35     posSpace=min(strfind(txt,char(9)));
     33    posSpace=min(strfind(txt,char(charSpacer)));
    3634    posEol=min(strfind(txt,char(10)));
    3735    iField=iField+1;
     
    4341nFields=iField;
    4442
     43if (~((nFields==21)))
     44  error_sp([ 'The file ' filename ' does not have the correct number of files. ' num2str(nFields) ' fields found ']);
     45end %
     46
    4547%fields
    4648
     
    5052fieldsValsArray=zeros(25000,nFields);
    5153
    52 hourStartIdx=-1;
    53 otherHoursIsBefore=0;
     54hourStartIdx=1;
    5455
    5556iRecord=1;
    5657while(length(txt)>1000)
    5758    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
    6161    for iField=1:nFields
    62         posSpace=min(strfind(thisLine,char(9)));
    63         thisField=strtrim(thisLine(1:posSpace));
     62        posSpace=min(strfind(thisLine,char(charSpacer)));
     63            thisField=strtrim(thisLine(1:posSpace));
    6464        if (iField==1)
    6565            fieldsInit(iField)=1;
    6666            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 hour
    77            
    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             end
    86             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 hour
    89                 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 dir
    96                 if (dateStr == dateStrRef)
    97                 basename = [ basedir 'beam_info_' dateStr '_' hourStr '.mat' ]
    98                 save(basename,'beamInfo');
    99                 end
    100                 otherHourStartIdx=-1;
    101                 otherHoursIsBefore=0;
    102                
    103                 for jField=2:nFields
    104                         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 dir
    117                         plotfilename= [ plotdirname 'figure_' strrep(strrep(strrep(fields{jField},'\','_'),'/','_'),'.','_') '.png' ]
    118                         print(figure(jField), '-dpng', [ plotfilename ]);
    119                 end %for each field
    120                 clear beamInfo
    121                 beamInfo=fieldsValsArray(hourStartIdx:iRecord,:);
    122                 fieldsValsArray(1:iRecord-hourStartIdx+1,:)=beamInfo;
    123                 iRecord=iRecord-hourStartIdx+1;
    124                 hourStartIdx=1;
    125                 clear beamInfo
    126             end
    127            
    12867        else
    12968            if (strcmp(thisField,'*'))
     
    13473            end %if '*'
    13574        end %if field != 1
    136         thisLine=[ strtrim(thisLine(posSpace+1:end)) char(9) ];
     75        thisLine=[ strtrim(thisLine(posSpace+1:end)) char(charSpacer) ];
    13776    end %for each fields
    13877    txt=txt(posEol+1:end);
     78   
     79    fieldsValsArray(iRecord,:)=fieldsVals'; %'
     80        iRecord=iRecord+1;
     81    fieldsInit
     82    fieldsVals
     83%           disp('eol')
     84%           pause(3)
     85end % for each line
    13986
    140     fieldsValsArray(iRecord,:)=fieldsVals';
    141     if ((hourStartIdx>0)||(otherHourStartIdx>0))
    142          iRecord=iRecord+1;
    143     end % if we are recording
     87beamInfo=fieldsValsArray(1:(iRecord-1),:);
    14488
    145     %fieldsInit
    146     %fieldsVals
    147    
    148 end % for each line
     89basename = [ basedir 'beam_info_' dateStrRef '.mat' ];
     90save(basename,'beamInfo');
    14991
    15092read_filename=[basedir strrep(filename,'txt_beam_info','read_beam_info')];
  • SPESO/ana2015/read_recent.sh

    r219 r312  
    11#!/bin/tcsh -f   
    22
    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  
    11function warning_sp(txt)
    22    fid=fopen('/sps/sera/delerue/smith-purcell/SPESO/data/warning_sp.txt','a+');
    3     fprintf(fid,'%s \n',txt);
     3fprintf(fid,'[Warning] %s :\t %s \n', datestr(now), txt  );
    44    fclose(fid);
    55    warning(txt);
Note: See TracChangeset for help on using the changeset viewer.