0001 function jl_gridder(object_string,start_date,stop_date)
0002
0003 save_dir='comm_rasters';
0004 save_path = [save_dir,'/',start_date,'_',object_string]
0005 which_roach=3;
0006 cell_size= 0.05;
0007 n=0;
0008 plot_contours=1;
0009 savefileon=1;
0010 map_size=16;
0011
0012 disp(['jl_gridder:: Reducing a CBASS-S observation'])
0013 d = read_arcSouth(start_date,stop_date);
0014 d = determineIndicesSouth(d);
0015
0016 d.index.radio_point_scan.fast = d.index.beammap.fast;
0017 d.index.radio_point_scan.slow = d.index.beammap.slow;
0018
0019 if(which_roach==1)
0020 disp('jl_gridder:: reducing roach1')
0021 LL = [d.antenna0.roach1.LL];
0022 RR = [d.antenna0.roach1.RR];
0023 QQ = [d.antenna0.roach1.Q];
0024 UU = [d.antenna0.roach1.U];
0025 d.antenna0.receiver.utc = d.antenna0.roach1.utc;
0026 elseif (which_roach==2)
0027 disp('jl_gridder:: reducing roach2')
0028 LL = [d.antenna0.roach2.LL];
0029 RR = [d.antenna0.roach2.RR];
0030 QQ = [d.antenna0.roach2.Q];
0031 UU = [d.antenna0.roach2.U];
0032 d.antenna0.receiver.utc = d.antenna0.roach2.utc;
0033 elseif (which_roach==3)
0034 LL = [d.antenna0.roach2.LL,d.antenna0.roach1.LL];
0035 RR = [d.antenna0.roach2.RR,d.antenna0.roach1.RR];
0036 QQ = [d.antenna0.roach2.Q,d.antenna0.roach1.Q];
0037 UU = [d.antenna0.roach2.U,d.antenna0.roach1.U];
0038 d.antenna0.receiver.utc = d.antenna0.roach1.utc;
0039 end
0040
0041 d.antenna0.receiver.data(:,1)= mean(LL');
0042 d.antenna0.receiver.data(:,2)= mean(RR');
0043 d.antenna0.receiver.data(:,3)= mean(QQ');
0044 d.antenna0.receiver.data(:,4)= mean(UU');
0045
0046 d.antenna0.servo.apparent(:,1)=d.antenna0.servo.az;
0047 d.antenna0.servo.apparent(:,2)=d.antenna0.servo.el;
0048
0049
0050
0051
0052 no_stds_to_reject=700;
0053 d.antenna0.receiver.data(:,3)=-1*d.antenna0.receiver.data(:,3);
0054 d.antenna0.receiver.data(:,4)=-1*d.antenna0.receiver.data(:,4);
0055 for chan=1:4;
0056 d_mean=mean(d.antenna0.receiver.data(:,chan));
0057 d_rms=rms(d.antenna0.receiver.data(:,chan));
0058 flagarray =( (d.antenna0.receiver.data(:,chan)>(d_mean-no_stds_to_reject*(d_rms-d_mean))) & (d.antenna0.receiver.data(:,chan)<(d_mean+no_stds_to_reject*(d_rms-d_mean))));
0059 d.antenna0.receiver.data(~flagarray,chan)=nan;
0060 end
0061
0062
0063
0064
0065 hFig = figure(1);
0066 set(hFig, 'Visible', 'off');
0067
0068 for i=1:4
0069 subplot(5,1,i)
0070 plot(d.antenna0.receiver.utc,d.antenna0.receiver.data(:,i))
0071 if (i==1)
0072 title('Mean LL');
0073 end
0074 if (i==2)
0075 title('Mean RR');
0076 end
0077
0078 if (i==3)
0079 title('Mean QQ');
0080 end
0081 if (i==4)
0082 title('Mean UU');
0083 end
0084
0085 end
0086
0087 subplot(5,1,5)
0088 plot(d.antenna0.receiver.utc,d.index.radio_point_scan.fast);
0089 title('d.index.radio\_point\_scan.fast');
0090
0091 gtitle('Raw data')
0092 saveas(hFig,[save_path,'_raw.png'])
0093
0094
0095
0096 hFig = figure();
0097 set(hFig, 'Visible', 'off')
0098 plot(d.antenna0.receiver.utc,d.antenna0.receiver.data(:,1));
0099 title('Mean LL');
0100
0101
0102
0103
0104 [s e] = findStartStop(d.index.radio_point_scan.fast);
0105
0106 points = (d.index.radio_point_scan.fast==1);
0107 contour_max(1) = max(d.antenna0.receiver.data(points,1));
0108 contour_max(2) = max(d.antenna0.receiver.data(points,2));
0109 contour_max(3) = max(d.antenna0.receiver.data(points,3));
0110 contour_max(4) = max(d.antenna0.receiver.data(points,4));
0111 saveas(hFig,[save_path,'_raw_big.png'])
0112
0113
0114
0115
0116 for m= 1:length(s)
0117
0118 n = n+1;
0119 ind = zeros(size(d.index.radio_point_scan.fast));
0120 ind(s(m):e(m)) = 1;
0121 ind = logical(ind);
0122
0123 dcut = framecut(d, ind);
0124
0125 azApp = interp1(dcut.antenna0.tracker.utc, ...
0126 dcut.antenna0.tracker.horiz_topo(:,1), dcut.antenna0.receiver.utc);
0127
0128 azOffSave = wrap180(azApp) - dcut.antenna0.servo.apparent(:,1);
0129 azOffSave = -azOffSave;
0130
0131 azOffSave = azOffSave.*cos(dcut.antenna0.servo.el*pi/180);
0132
0133
0134
0135 elApp = interp1(dcut.antenna0.tracker.utc, ...
0136 dcut.antenna0.tracker.horiz_topo(:,2), dcut.antenna0.receiver.utc);
0137 elOffSave = elApp - dcut.antenna0.servo.apparent(:,2);
0138 elOffSave = -elOffSave;
0139
0140 angle = sqrt(elOffSave.^2 + azOffSave.^2);
0141
0142
0143
0144
0145 a = (isnan(azOffSave) | isnan(elOffSave)| isnan(dcut.antenna0.receiver.data(:,1)) );
0146
0147
0148
0149
0150 AZ = deg2rad(mean(azApp(~a)));
0151 EL = deg2rad(mean(elApp(~a)));
0152
0153 LAT_D = 37.233889;
0154 LON_D = 118.28222;
0155
0156 LAT = deg2rad(LAT_D);
0157 LON = deg2rad(LON_D);
0158
0159 DEC = deg2rad(mean((dcut.antenna0.tracker.equat_geoc(:,2))));
0160 sinPA = ((sin(AZ).*cos(LAT))./cos(DEC));
0161 sinPA(abs(sinPA)>=1)=1;
0162 PA = asin(sinPA);
0163 PA_D(m)= rad2deg(PA);
0164
0165
0166
0167
0168 ti=-map_size/2:cell_size:map_size/2;
0169
0170
0171 a = (isnan(azOffSave) | isnan(elOffSave) | isnan(dcut.antenna0.receiver.data(:,1)) );
0172
0173
0174 disp('jl_gridder:: About to grid data');
0175
0176
0177 for (chan=1:1)
0178 if(size(dcut.antenna0.receiver.data(~a,chan),1)>0)
0179
0180 disp('jl_gridder:: Gridding data');
0181 [XI,YI]=meshgrid(ti,ti);
0182 ZI = griddata(azOffSave(~a),elOffSave(~a),dcut.antenna0.receiver.data(~a,chan),XI,YI);
0183
0184 disp ('jl_gridder:: about to plot contours');
0185 hFig = figure();
0186 set(hFig, 'Visible', 'off');
0187
0188
0189
0190 colormap(hot(256))
0191
0192 imagesc(ti,ti,ZI);
0193 xlabel('Angular offset (degrees) in Az direction');
0194 ylabel('Angular offset (degrees) in El.');
0195 title('Mean RR map');
0196 saveas(hFig,[save_path,'_',num2str(m),'_map.png'])
0197
0198
0199
0200 hFig = figure();
0201 set(hFig, 'Visible', 'off');
0202
0203
0204 title('Mean RR Az scans');
0205 plot(azOffSave(~a),dcut.antenna0.receiver.data(~a,chan))
0206 saveas(hFig,[save_path,'_',num2str(m),'_az_scans.png'])
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228 end
0229 end
0230 end
0231 disp('jl_gridder:: Finished');