0001 function [az, el] = calcAzElCs(d)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 long = d.antenna0.tracker.siteActual(1,1);
0014 lat = d.antenna0.tracker.siteActual(1,2);
0015 elev = d.antenna0.tracker.siteActual(1,3);
0016
0017
0018 lst = d.antenna0.tracker.lst*15;
0019 utc = d.antenna0.receiver.utc;
0020 indpos = lst > 180;
0021 lst(indpos) = lst(indpos)-360;
0022 lst = interp1(d.array.frame.utc, lst, utc);
0023 indpos = interp1(d.array.frame.utc, single(indpos), utc, 'nearest');
0024 indpos(isnan(indpos)) = 0;
0025 indpos = logical(indpos);
0026 lst(indpos) = lst(indpos)+360;
0027
0028
0029 ra = interp1(d.array.frame.utc, d.antenna0.tracker.equat_geoc(:,1), utc);
0030 ra = ra*15;
0031 dec = interp1(d.array.frame.utc, d.antenna0.tracker.equat_geoc(:,2), utc);
0032 ha = lst - ra;
0033
0034
0035 HA = ha*pi/180;
0036 de = dec*pi/180;
0037 La = lat*pi/180;
0038
0039
0040 [az, el] = hdl2ae(unwrap(HA),de,La);
0041
0042
0043
0044
0045
0046
0047 sources = unique(d.antenna0.tracker.source);
0048 ephemSourceList = {'moon', 'sun', 'jupiter', 'mars', 'mercury', 'neptune', ...
0049 'pluto', 'saturn', 'uranus', 'venus'};
0050 needCorr = 0;
0051 for m=1:length(sources)
0052 if(~isempty(strmatch(sources{m}, ephemSourceList)))
0053 srcIndex = strmatch(sources{m}, ephemSourceList);
0054 needCorr = 1;
0055 indSource = zeros(size(d.antenna0.tracker.source,1), 1);
0056 f = strmatch(ephemSourceList{srcIndex}, d.antenna0.tracker.source(:,1));
0057 indSource(f) = 1;
0058 srcName = ephemSourceList{srcIndex};
0059 end
0060 end
0061
0062
0063
0064 if(needCorr)
0065 [dist err r_cent] = cbassMatEphem(srcName, d.antenna0.receiver.utc);
0066
0067
0068 el = el - atan2( cos(el), dist/r_cent - sin(el));
0069 end
0070
0071
0072
0073 Avals = d.antenna0.tracker.refraction(:,1);
0074 Bvals = d.antenna0.tracker.refraction(:,2);
0075 refraVal = d.antenna0.tracker.refraction(:,3);
0076
0077 A = interp1(d.array.frame.utc, Avals, utc) * pi/180;
0078 B = interp1(d.array.frame.utc, Bvals, utc) * pi/180;
0079
0080 refracCorr = ( A.*cos(el).*(sin(el)).^3 + B.*sin(el).*(cos(el)).^3 ) ./ ( ...
0081 (sin(el)).^4 + A.*(sin(el)).^2 + 3*B.*(cos(el)).^2);
0082 el = el + refracCorr;
0083
0084
0085
0086
0087
0088
0089
0090 az = az*180/pi;
0091 el = el*180/pi;
0092 az(az<0) = az(az<0)+360;
0093
0094 model = [d.antenna0.tracker.flexure(1,:), d.antenna0.tracker.tilts(1,:), ...
0095 d.antenna0.tracker.fixedCollimation(1,:), ...
0096 d.antenna0.tracker.encoder_off(1,:)];
0097
0098
0099 [az, el] = pointing_model(model, az, el);
0100
0101 return;