0001 function fit_IQUV2(nchan, plot_labels, cbass,IntensityType,save_path,start_date,source_name,dgood,calmat)
0002
0003 if(~exist('dgood'))
0004
0005
0006 [home,installeddir] = where_am_i();
0007 addpath([home,'/',installeddir,'/Angelas_Raster_Code/']);
0008
0009
0010
0011
0012
0013
0014
0015 maindir= [home,'/',installeddir,'/',save_path,'/'];
0016
0017 load([maindir,start_date,'_',source_name,'_',IntensityType,'_dgood.mat'])
0018 end
0019
0020
0021 if(exist('calmat'))
0022 for i=1:length(dgood.antenna0.receiver.data(:,1))
0023 dgood.antenna0.receiver.data(i,1:3)=dgood.antenna0.receiver.data(i,1:3)*calmat;
0024 end
0025 end
0026
0027
0028 cell_size= 0.1;
0029 fit_gauss= 1;
0030 n=0;
0031 plot_contours=0;
0032 savefileon=0;
0033 gfit=[];
0034 [home,installeddir]=where_am_i();
0035
0036 maindir= [home,'/',installeddir,'/',save_path,'/'];
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046 flagname = 'radio_point_scan'
0047
0048
0049
0050
0051 [s e] = findStartStop(dgood.index.radio_point_scan.fast);
0052
0053
0054
0055 points = (dgood.index.radio_point_scan.fast==1);
0056 for i=1:nchan
0057 contour_max(i) = max(dgood.antenna0.receiver.data(points,i));
0058 end
0059
0060
0061
0062
0063
0064 disp(['Will now fit gaussians to each I1 and I2 raster. ', num2str(length(s)),' to do...'])
0065
0066 for m= 1:length(s)
0067
0068 n = n+1;
0069 ind = zeros(size(dgood.index.radio_point_scan.fast));
0070 ind(s(m):e(m)) = 1;
0071 ind = logical(ind);
0072 dcut = framecut(dgood, ind);
0073 azApp = interp1(dcut.antenna0.tracker.utc, ...
0074 dcut.antenna0.tracker.horiz_topo(:,1), dcut.antenna0.receiver.utc);
0075 azOffSave = (azApp) - dcut.antenna0.servo.apparent(:,1);
0076 azOffSave = -azOffSave;
0077 azOffSave = azOffSave.*cos(dcut.antenna0.servo.el*pi/180);
0078
0079
0080 elApp = interp1(dcut.antenna0.tracker.utc, ...
0081 dcut.antenna0.tracker.horiz_topo(:,2), dcut.antenna0.receiver.utc);
0082 elOffSave = elApp - dcut.antenna0.servo.apparent(:,2);
0083 elOffSave = -elOffSave;
0084 angle = sqrt(elOffSave.^2 + azOffSave.^2);
0085
0086
0087 a = (isnan(azOffSave) | isnan(elOffSave)| isnan(dcut.antenna0.receiver.data(:,1)) );
0088
0089
0090
0091
0092
0093 [antenna_no antenna_name] = identifyTelescope(dcut);
0094 telescope_constants
0095
0096
0097
0098
0099
0100 LAT_D = antenna_latitude(antenna_no)
0101 LON_D = antenna_longitude(antenna_no)
0102
0103 LAT = deg2rad(LAT_D);
0104 LON = deg2rad(LON_D);
0105
0106 JD = mjd2jd(dcut.antenna0.receiver.utc);
0107 LST=lst(JD,deg2rad(LON_D),'m');
0108
0109
0110
0111 dcut = calcRADECcurrent(dcut);
0112 RA_current = dcut.antenna0.servo.equa(:,1);
0113 DEC_current = dcut.antenna0.servo.equa(:,2);
0114
0115 [PA]=parallactic_angle(((RA_current)),((DEC_current)),(LST),(LAT));
0116 PA_D(m) = rad2deg(mean(PA));
0117
0118
0119 dcut = calcRADECJ2000(dcut);
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137 I1(m)= mean(dcut.antenna0.receiver.data(~a,1));
0138 Q1(m) = mean(dcut.antenna0.receiver.data(~a,2));
0139 U1(m) = mean(dcut.antenna0.receiver.data(~a,3));
0140 Q2(m) = mean(dcut.antenna0.receiver.data(~a,4));
0141 U2(m) = mean(dcut.antenna0.receiver.data(~a,5));
0142 Q(m) = mean(dcut.antenna0.receiver.data(~a,6));
0143 U(m) = mean(dcut.antenna0.receiver.data(~a,7));
0144 I2(m)= mean(dcut.antenna0.receiver.data(~a,8));
0145 V(m)= mean(dcut.antenna0.receiver.data(~a,9));
0146 P(m) = sqrt(Q(m).^2 + U(m).^2);
0147
0148
0149
0150 if(strmatch('N',cbass))
0151 ti=-3:cell_size:3;
0152 else
0153 ti =-10:cell_size:10;
0154 end
0155
0156
0157 a = (isnan(azOffSave) | isnan(elOffSave) | isnan(dcut.antenna0.receiver.data(:,1)) );
0158
0159 if(nchan==9)
0160 chantofit=[1,2,3,4,5,8];
0161 else
0162 chantofit=[1,2]
0163 end
0164
0165 for (chan=chantofit);
0166 disp(['Fitting Gaussian ',num2str(m),' to channel: ',num2str(chan)])
0167 if(size(dcut.antenna0.receiver.data(~a,chan),1)>0)
0168
0169 [XI,YI]=meshgrid(ti,ti);
0170 ZI = griddata(azOffSave(~a),elOffSave(~a),dcut.antenna0.receiver.data(~a,chan),XI,YI);
0171 imagesc(ZI)
0172
0173
0174
0175 if(fit_gauss)
0176
0177 fit_params = [];
0178 [sf gof t] = Egauss2D_fit_act(XI,YI,ZI,fit_params,chan,gfit,m);
0179 gfit{m,chan} = sf;
0180
0181
0182
0183 end
0184
0185
0186 if(plot_contours)
0187
0188 fig_no = ceil(m/16);
0189 subplot_no = m-(fig_no-1)*16;
0190
0191
0192
0193 VI = [1:-0.1:0]*contour_max(chan);
0194
0195 figure(fig_no+2);
0196 subplot(4,4,subplot_no)
0197 contour(XI,YI,ZI,VI);
0198 axis square;
0199 grid on;
0200 xlabel('Az Offset,deg');
0201 ylabel('El Offset,deg');
0202 title(num2str(m));
0203 end
0204 end
0205 end
0206 end
0207
0208
0209
0210
0211
0212 empty=cellfun(@isempty,gfit);
0213 good_rasters=find(~empty(:,1))';
0214
0215
0216 if(savefileon)
0217 if(exist('fits_name'))
0218 map_name = strcat([maindir,'/',fits_name,'_Contour.png'])
0219
0220 else
0221 fits_name = strcat(start_date,'_',source_name)
0222 map_name = strcat([maindir,'/',fits_name,'_Contour.png'])
0223
0224 end
0225 figure(1)
0226 set(gcf, 'PaperPositionMode', 'auto');
0227
0228 print('-f1','-dpng',map_name)
0229 end
0230
0231
0232
0233
0234 fits_name = strcat(start_date,'_',source_name)
0235 if(exist('calmat'))
0236 save_file = strcat([maindir,'/',fits_name,'_',IntensityType,'_PA_IQUV_cal.mat'])
0237 else
0238 save_file = strcat([maindir,'/',fits_name,'_',IntensityType,'_PA_IQUV.mat'])
0239 end
0240
0241 save(save_file,'gfit','PA_D','I1','I2','Q','U','V','P','good_rasters')
0242 close all
0243 end