[638] | 1 | #source en minuscule |
---|
| 2 | set source $1 |
---|
| 3 | set srcMaj $2 |
---|
| 4 | set date $3 |
---|
| 5 | set fcycle $4 |
---|
| 6 | set lcycle $5 |
---|
| 7 | set nframes $6 |
---|
| 8 | maxcycle = ${lcycle}+1 |
---|
| 9 | |
---|
| 10 | set path "/sps/baoradio/AmasNancay/JEC/${srcMaj}" |
---|
| 11 | |
---|
[639] | 12 | #first script executed |
---|
[638] | 13 | clearscript image |
---|
[640] | 14 | clearscript doImage |
---|
[639] | 15 | |
---|
| 16 | #mergeimg should be executed before timeevol, fwhnInt |
---|
| 17 | clearscript mergeimg |
---|
| 18 | clearscript timeevol |
---|
| 19 | clearscript fwhmInt |
---|
| 20 | |
---|
| 21 | #script independant from mergeimg |
---|
| 22 | clearscript timeevol2 |
---|
[638] | 23 | ####################### |
---|
| 24 | defscript image |
---|
| 25 | # |
---|
[640] | 26 | #compute (ON-OFF)/OFFn with OFF computed from the first 30s of each image |
---|
[638] | 27 | set cycle $1 |
---|
| 28 | openppf ${path}/img_${date}_${source}_cycle${cycle}.ppf |
---|
| 29 | del ich0 |
---|
[640] | 30 | del zCh0 |
---|
[638] | 31 | objaoper img${cycle} slicexz 0 ich0 |
---|
| 32 | c++exec TMatrix<r_4>zCh0(ich0(Range(0),Range::all()),false); \ |
---|
| 33 | for (sa_size_t i=1;i<50;i++){zCh0+=ich0(Range(i),Range::all());} \ |
---|
[640] | 34 | zCh0/=50.; KeepObj(zCh0);\ |
---|
| 35 | for (sa_size_t i=0;i<ich0.NRows();i++){ich0(Range(i),Range::all())-=zCh0;ich0(Range(i),Range::all()).Div(zCh0);} |
---|
[638] | 36 | # |
---|
| 37 | rename ich0 ich${cycle}0 |
---|
[640] | 38 | rename zCh0 tsys${cycle}0 |
---|
[638] | 39 | |
---|
| 40 | del ich1 |
---|
[640] | 41 | del zCh1 |
---|
[638] | 42 | objaoper img${cycle} slicexz 1 ich1 |
---|
| 43 | c++exec TMatrix<r_4>zCh1(ich1(Range(0),Range::all()),false); \ |
---|
| 44 | for (sa_size_t i=1;i<50;i++){zCh1+=ich1(Range(i),Range::all());} \ |
---|
[640] | 45 | zCh1/=50.; KeepObj(zCh1);\ |
---|
| 46 | for (sa_size_t i=0;i<ich1.NRows();i++){ich1(Range(i),Range::all())-=zCh1;ich1(Range(i),Range::all()).Div(zCh1);} |
---|
[638] | 47 | # |
---|
| 48 | rename ich1 ich${cycle}1 |
---|
[640] | 49 | rename zCh1 tsys${cycle}1 |
---|
[638] | 50 | |
---|
| 51 | endscript |
---|
| 52 | ####################### |
---|
[640] | 53 | ################### |
---|
| 54 | defscript doImage |
---|
[638] | 55 | |
---|
[640] | 56 | for ic ${fcycle}:${maxcycle} |
---|
| 57 | echo "process ${ic}" |
---|
| 58 | image $ic |
---|
| 59 | end |
---|
| 60 | endscript |
---|
[638] | 61 | |
---|
[640] | 62 | |
---|
[639] | 63 | ####################### |
---|
| 64 | defscript mergeimg |
---|
| 65 | # |
---|
[638] | 66 | del ich0Tot |
---|
| 67 | del ich1Tot |
---|
| 68 | del ncycles |
---|
| 69 | c++exec TMatrix<r_4>ich0Tot(ich${fcycle}0(Range(0,${nframes}),Range::all()),false); \ |
---|
| 70 | TMatrix<r_4>ich1Tot(ich${fcycle}1(Range(0,${nframes}),Range::all()),false); \ |
---|
| 71 | TVector<r_4>ncycles(1); ncycles(0)=1; \ |
---|
| 72 | KeepObj(ich0Tot); KeepObj(ich1Tot); KeepObj(ncycles); |
---|
| 73 | |
---|
| 74 | fp1cycle = ${fcycle}+1 |
---|
| 75 | |
---|
| 76 | for ic ${fp1cycle}:${maxcycle} |
---|
| 77 | c++exec ich0Tot+=ich${ic}0(Range(0,${nframes}),Range::all()); \ |
---|
| 78 | ich1Tot+=ich${ic}1(Range(0,${nframes}),Range::all()); \ |
---|
| 79 | ncycles(0)+=1; |
---|
| 80 | end |
---|
| 81 | |
---|
| 82 | c++exec ich0Tot/=ncycles(0); ich1Tot/=ncycles(0); |
---|
| 83 | |
---|
| 84 | setaxesatt 'font=helvetica,bold,14 fixedfontsize' |
---|
| 85 | newwin |
---|
| 86 | disp ich0Tot 'lut=lin,-0.1,3.5 colbr128 showcmap=top' |
---|
| 87 | |
---|
| 88 | newwin |
---|
| 89 | disp ich1Tot 'lut=lin,-0.1,3.5 colbr128 showcmap=top' |
---|
[639] | 90 | endscript |
---|
| 91 | ####################### |
---|
| 92 | defscript timeevol |
---|
| 93 | # |
---|
| 94 | #intensite en ft du temps avec image cumulee |
---|
[638] | 95 | del rg0Tot |
---|
| 96 | del rg1Tot |
---|
| 97 | #1405,1415 MHz => range [5080,5405] |
---|
| 98 | c++exec TMatrix<r_4>tmp0(ich0Tot(Range::all(),Range(5080,5405)),false); \ |
---|
| 99 | TVector<r_4>rg0Tot(ich0Tot.NRows()); \ |
---|
| 100 | for(sa_size_t i=0;i<tmp0.NRows();++i){ \ |
---|
| 101 | double mean,sigma; \ |
---|
| 102 | MeanSigma(tmp0(Range(i),Range::all()),mean,sigma); \ |
---|
| 103 | rg0Tot(i) = mean; \ |
---|
| 104 | } \ |
---|
| 105 | KeepObj(rg0Tot); \ |
---|
| 106 | TMatrix<r_4>tmp1(ich1Tot(Range::all(),Range(5080,5405)),false); \ |
---|
| 107 | TVector<r_4>rg1Tot(ich1Tot.NRows()); \ |
---|
| 108 | for(sa_size_t i=0;i<tmp1.NRows();++i){ \ |
---|
| 109 | double mean,sigma; \ |
---|
| 110 | MeanSigma(tmp1(Range(i),Range::all()),mean,sigma); \ |
---|
| 111 | rg1Tot(i) = mean; \ |
---|
| 112 | } \ |
---|
| 113 | KeepObj(rg1Tot); |
---|
| 114 | |
---|
| 115 | newwin |
---|
| 116 | setaxesatt 'grid' |
---|
| 117 | graphicatt '' |
---|
| 118 | #90sec = milieu du cycle = maximum |
---|
| 119 | #donne 7.56kHz |
---|
| 120 | #273 canaux en 170sec => 8.22kHz |
---|
| 121 | plot2d rg0Tot (n*170)/273 val 1 'blue cpts notit nsta' |
---|
| 122 | plot2d rg1Tot (n*170)/273 val 1 'same red cpts notit nsta' |
---|
[639] | 123 | settitle "${srcMaj} Drift Scan [1405,1415]MHz all cycles Ch 0 (blue) Ch 1 (red)" |
---|
[638] | 124 | setaxelabels 't(sec)' 'I (a.u)' |
---|
[639] | 125 | endscript |
---|
[638] | 126 | |
---|
[639] | 127 | ####################### |
---|
| 128 | defscript fwhmInt |
---|
| 129 | # |
---|
[638] | 130 | #spectre de frequence canal en temps [120,146] FWHM. |
---|
| 131 | # |
---|
| 132 | del s0 |
---|
| 133 | del s1 |
---|
| 134 | c++exec TMatrix<r_4>tmp0(ich0Tot(Range(120,146),Range::all()),false); \ |
---|
| 135 | TVector<r_4>s0(ich0Tot.NCols()); \ |
---|
| 136 | for(sa_size_t i=0;i<tmp0.NCols();++i){ \ |
---|
| 137 | double mean,sigma; \ |
---|
| 138 | MeanSigma(tmp0(Range::all(),Range(i)),mean,sigma); \ |
---|
| 139 | s0(i) = mean; \ |
---|
| 140 | } \ |
---|
| 141 | KeepObj(s0); \ |
---|
| 142 | TMatrix<r_4>tmp1(ich1Tot(Range(120,146),Range::all()),false); \ |
---|
| 143 | TVector<r_4>s1(ich1Tot.NCols()); \ |
---|
| 144 | for(sa_size_t i=0;i<tmp1.NCols();++i){ \ |
---|
| 145 | double mean,sigma; \ |
---|
| 146 | MeanSigma(tmp1(Range::all(),Range(i)),mean,sigma); \ |
---|
| 147 | s1(i) = mean; \ |
---|
| 148 | } \ |
---|
| 149 | KeepObj(s1); |
---|
| 150 | newwin |
---|
| 151 | setaxesatt 'grid' |
---|
| 152 | graphicatt 'xylimits=1250,1500,0,2' |
---|
| 153 | plot2d s0 (n/8192)*250+1250 val n>0 'blue cpts notit nsta' |
---|
| 154 | plot2d s1 (n/8192)*250+1250 val 1 'same red cpts notit nsta' |
---|
[639] | 155 | settitle "${srcMaj} Drift Scan all cycles Ch 0 (blue) Ch 1 (red)" |
---|
[638] | 156 | setaxelabels 'Freq. (MHz)' 'I (a.u)' |
---|
[639] | 157 | endscript |
---|
| 158 | ####################### |
---|
| 159 | ####################### |
---|
| 160 | defscript timeevol2 |
---|
[638] | 161 | |
---|
[639] | 162 | #append all images |
---|
| 163 | del ch0evol |
---|
| 164 | del ch1evol |
---|
| 165 | c++exec sa_size_t nrows=(${nframes}+1)*(${lcycle}-${fcycle}+1); \ |
---|
| 166 | sa_size_t ncols=ich${fcycle}0.NCols(); \ |
---|
| 167 | TMatrix<r_4>ch0evol(nrows,ncols); TMatrix<r_4>ch1evol(nrows,ncols); \ |
---|
| 168 | KeepObj(ch0evol); KeepObj(ch1evol); |
---|
| 169 | |
---|
| 170 | for ic ${fcycle}:${maxcycle} |
---|
| 171 | c++exec sa_size_t curRow=(${ic}-${fcycle})*(${nframes}+1); sa_size_t nextm1CurRow=curRow+(${nframes}+1)-1; \ |
---|
| 172 | cout << "ic, curRow, next : "<<${ic}<<" "<<curRow<<" "<<nextm1CurRow<<endl; \ |
---|
| 173 | ch0evol(Range(curRow,nextm1CurRow),Range::all())=ich${ic}0(Range(0,${nframes}),Range::all()); \ |
---|
| 174 | ch1evol(Range(curRow,nextm1CurRow),Range::all())=ich${ic}1(Range(0,${nframes}),Range::all()); |
---|
| 175 | end |
---|
| 176 | |
---|
| 177 | #intensite en ft du temps avec image cumulee |
---|
| 178 | del i0evol |
---|
| 179 | del i1evol |
---|
| 180 | #1405,1415 MHz => range [5080,5405] |
---|
| 181 | c++exec TMatrix<r_4>tmp0(ch0evol(Range::all(),Range(5080,5405)),false); \ |
---|
| 182 | TVector<r_4>i0evol(ch0evol.NRows()); \ |
---|
| 183 | for(sa_size_t i=0;i<tmp0.NRows();++i){ \ |
---|
| 184 | double mean,sigma; \ |
---|
| 185 | MeanSigma(tmp0(Range(i),Range::all()),mean,sigma); \ |
---|
| 186 | i0evol(i) = mean; \ |
---|
| 187 | } \ |
---|
| 188 | KeepObj(i0evol); \ |
---|
| 189 | TMatrix<r_4>tmp1(ch1evol(Range::all(),Range(5080,5405)),false); \ |
---|
| 190 | TVector<r_4>i1evol(ch1evol.NRows()); \ |
---|
| 191 | for(sa_size_t i=0;i<tmp1.NRows();++i){ \ |
---|
| 192 | double mean,sigma; \ |
---|
| 193 | MeanSigma(tmp1(Range(i),Range::all()),mean,sigma); \ |
---|
| 194 | i1evol(i) = mean; \ |
---|
| 195 | } \ |
---|
| 196 | KeepObj(i1evol); |
---|
| 197 | |
---|
| 198 | |
---|
| 199 | |
---|
| 200 | newwin |
---|
| 201 | setaxesatt 'grid' |
---|
| 202 | graphicatt '' |
---|
| 203 | plot2d i0evol n val 1 'blue cpts notit nsta' |
---|
| 204 | plot2d i1evol n val 1 'same red cpts notit nsta' |
---|
| 205 | settitle "${srcMaj} Drift Scan [1405,1415]MHz all cycles Ch 0 (blue) Ch 1 (red)" |
---|
[640] | 206 | setaxelabels 't(a.u)' '(I-OFF)/OFF (a.u)' |
---|
| 207 | |
---|
| 208 | |
---|
| 209 | #Tsys en ft du temps |
---|
| 210 | c++exec sa_size_t nrows=(${lcycle}-${fcycle}+1); \ |
---|
| 211 | sa_size_t ncols=ich${fcycle}0.NCols(); \ |
---|
| 212 | TMatrix<r_4>Tsys0evol(nrows,ncols); TMatrix<r_4>Tsys1evol(nrows,ncols); \ |
---|
| 213 | KeepObj(Tsys0evol); KeepObj(Tsys1evol); |
---|
| 214 | |
---|
| 215 | for ic ${fcycle}:${maxcycle} |
---|
| 216 | c++exec sa_size_t curRow=(${ic}-${fcycle}); \ |
---|
| 217 | cout << "ic, curRow, next : "<<${ic}<<" "<<curRow<<endl; \ |
---|
| 218 | Tsys0evol(Range(curRow),Range::all())=tsys${ic}0(Range(0),Range::all()); \ |
---|
| 219 | Tsys1evol(Range(curRow),Range::all())=tsys${ic}1(Range(0),Range::all()); |
---|
| 220 | end |
---|
| 221 | |
---|
| 222 | del T0evol |
---|
| 223 | del T1evol |
---|
| 224 | #1405,1415 MHz => range [5080,5405] |
---|
| 225 | c++exec TMatrix<r_4>tmp0(Tsys0evol(Range::all(),Range(5080,5405)),false); \ |
---|
| 226 | TVector<r_4>T0evol(Tsys0evol.NRows()); \ |
---|
| 227 | for(sa_size_t i=0;i<tmp0.NRows();++i){ \ |
---|
| 228 | double mean,sigma; \ |
---|
| 229 | MeanSigma(tmp0(Range(i),Range::all()),mean,sigma); \ |
---|
| 230 | T0evol(i) = mean; \ |
---|
| 231 | } \ |
---|
| 232 | KeepObj(T0evol); \ |
---|
| 233 | TMatrix<r_4>tmp1(Tsys1evol(Range::all(),Range(5080,5405)),false); \ |
---|
| 234 | TVector<r_4>T1evol(Tsys1evol.NRows()); \ |
---|
| 235 | for(sa_size_t i=0;i<tmp1.NRows();++i){ \ |
---|
| 236 | double mean,sigma; \ |
---|
| 237 | MeanSigma(tmp1(Range(i),Range::all()),mean,sigma); \ |
---|
| 238 | T1evol(i) = mean; \ |
---|
| 239 | } \ |
---|
| 240 | KeepObj(T1evol); |
---|
| 241 | |
---|
| 242 | newwin |
---|
| 243 | setaxesatt 'grid' |
---|
| 244 | graphicatt '' |
---|
| 245 | plot2d T0evol n+${fcycle} val 1 'blue cpts notit nsta' |
---|
| 246 | plot2d T1evol n+${fcycle} val 1 'same red cpts notit nsta' |
---|
| 247 | settitle "${srcMaj} Drift Scan [1405,1415]MHz all cycles Ch 0 (blue) Ch 1 (red)" |
---|
| 248 | setaxelabels 'cycle num.' 'OFF/Gain (a.u)' |
---|
| 249 | |
---|
[639] | 250 | |
---|
| 251 | endscript |
---|
| 252 | |
---|