0001 function [dataOut]=generatePowerSpectraBothRoaches(d,varargin)
0002
0003
0004
0005 try
0006 graphics=varargin(1)
0007 catch
0008 graphics =0
0009 end
0010
0011 try
0012 filename=varargin(2)
0013 saveFile=1;
0014 catch
0015 filename=[];
0016 saveFile=0;
0017 end
0018
0019 display('Starting Roach 1')
0020
0021 timeroach=(d.antenna0.roach1.utc-d.antenna0.roach1.utc(1)).*24;
0022 timetemps=d.antenna0.thermal.utc-d.antenna0.thermal.utc(1);
0023 timelsTemps= timetemps([1:5:length(timetemps)]).*24;
0024 timeCryoTemps=timetemps.*24;
0025 lengthvec = length(d.antenna0.roach1.RR)
0026 timeroachshort=timeroach(1:lengthvec-0);
0027
0028
0029 ll=mean(d.antenna0.roach1.LL((1:lengthvec-0),4:60),2);
0030 loadl =mean(d.antenna0.roach1.load2((1:lengthvec-0),4:60),2);
0031 rr=mean(d.antenna0.roach1.RR((1:lengthvec-0),4:60),2);
0032 loadr =mean(d.antenna0.roach1.load1((1:lengthvec-0),4:60),2);
0033 Q=mean(d.antenna0.roach1.Q((1:lengthvec-0),4:60),2);
0034 U=mean(d.antenna0.roach1.U((1:lengthvec-0),4:60),2);
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053 llmean=ll-mean(ll);
0054 rrmean=rr-mean(rr);
0055 qmean=Q-mean(Q);
0056 umean=U-mean(U);
0057
0058
0059
0060 rfactorR=mean(rr)./mean(loadr)
0061 rfactorL=mean(ll)./mean(loadl)
0062 rfactorR1=rfactorR;
0063 rfactorL1=rfactorL;
0064
0065 skyminusloadleft = ll-rfactorR.*loadl;
0066 skyminusloadright = rr-rfactorL.*loadr;
0067
0068
0069 skyminusloadleftmean = skyminusloadleft-mean(skyminusloadleft);
0070 skyminusloadrightmean = skyminusloadright-mean(skyminusloadright);
0071
0072
0073
0074
0075 amplifierfnoise = skyminusloadleft-skyminusloadright;
0076 amplifierfnoisemean = amplifierfnoise-mean(amplifierfnoise);
0077
0078
0079
0080
0081 templs=d.antenna0.thermal.lsTemperatureSensors(:,2);
0082 tempsmean = templs-mean(templs);
0083 tempsCryo=d.antenna0.thermal.ccTemperatureLoad;
0084
0085
0086
0087
0088 Fs=100;
0089 FsTemps = 1;
0090 T = 1/Fs;
0091 L = length(ll);
0092 t = (0:L-1)*T;
0093 TTemps = 1/FsTemps;
0094 LTemps = length(templs);
0095 tTemps = (0:LTemps-1)*TTemps;
0096 NFFT = 2^nextpow2(L);
0097 NFFTtemps = 2^(nextpow2(LTemps))
0098 f = Fs/2*linspace(0,1,NFFT/2+1);
0099 ftemps = FsTemps/2*linspace(0,1,NFFTtemps/2+1);
0100
0101 YRR = fft(rrmean,NFFT)/L;
0102 YLL = fft(llmean,NFFT)/L;
0103 YQ = fft(qmean,NFFT)/L;
0104 YU = fft(umean,NFFT)/L;
0105 YRRBalanced = fft(skyminusloadrightmean,NFFT)/L;
0106 YLLBalanced = fft(skyminusloadleftmean,NFFT)/L;
0107 Ytemps = fft(tempsmean,NFFTtemps)/LTemps;
0108
0109 Yamplifier = fft(skyminusloadrightmean-skyminusloadleftmean,NFFT)/L;
0110 YI = fft((skyminusloadrightmean+skyminusloadleftmean)./2,NFFT)/L;
0111 YIUnstabilized = fft((rrmean+llmean)./2,NFFT)/L;
0112
0113 YRRb = 2*abs(YRR(1:NFFT/2+1));
0114 YLLb = 2*abs(YLL(1:NFFT/2+1));
0115 YQb = 2*abs(YQ(1:NFFT/2+1));
0116 YUb = 2*abs(YU(1:NFFT/2+1));
0117 YRRBalancedb = 2*abs(YRRBalanced(1:NFFT/2+1));
0118 YLLBalancedb = 2*abs(YLLBalanced(1:NFFT/2+1));
0119 Ytempsb = 2*abs(Ytemps(1:NFFTtemps/2+1));
0120
0121 Yamplifierb = 2*abs(Yamplifier(1:NFFT/2+1));
0122
0123 bin_size=100;
0124 YRRbin=bin(YRRb,bin_size);
0125 YLLbin=bin(YLLb,bin_size);
0126 YQbin=bin(YQb,bin_size);
0127 YUbin=bin(YUb,bin_size);
0128 YRRBalancedbin=bin(YRRBalancedb,bin_size);
0129 YLLBalancedbin=bin(YLLBalancedb,bin_size);
0130 Ytempsbin=bin(Ytempsb,bin_size);
0131 Yamplifierbin=bin(Yamplifierb,bin_size);
0132 fbin = bin(f,bin_size);
0133 ftempsbin = bin(ftemps,bin_size);
0134
0135
0136
0137
0138
0139
0140
0141 dataFreqRoach1=[f' 2.*abs(YRRBalanced(1:NFFT/2+1)) 2*abs(YLLBalanced(1:NFFT/2+1)) 2*abs(YQb(1:NFFT/2+1)) 2*abs(YUb(1:NFFT/2+1)) 2.*abs(YRR(1:NFFT/2+1)) 2*abs(YLL(1:NFFT/2+1)) 2*abs(YI(1:NFFT/2+1)) 2*abs(YIUnstabilized(1:NFFT/2+1))];
0142 dataTimeRoach1=[timeroach skyminusloadrightmean skyminusloadleftmean];
0143
0144
0145
0146
0147
0148
0149 display('Starting Roach 2')
0150 timeroach=(d.antenna0.roach1.utc-d.antenna0.roach2.utc(1)).*24;
0151 timetemps=d.antenna0.thermal.utc-d.antenna0.thermal.utc(1);
0152 timelsTemps= timetemps([1:5:length(timetemps)]).*24;
0153 timeCryoTemps=timetemps.*24;
0154 lengthvec = length(d.antenna0.roach2.RR)
0155 timeroachshort=timeroach(1:lengthvec-0);
0156
0157
0158 ll=mean(d.antenna0.roach2.LL((1:lengthvec-0),4:60),2);
0159 loadl =mean(d.antenna0.roach2.load2((1:lengthvec-0),4:60),2);
0160 rr=mean(d.antenna0.roach2.RR((1:lengthvec-0),4:60),2);
0161 loadr =mean(d.antenna0.roach2.load1((1:lengthvec-0),4:60),2);
0162 Q=mean(d.antenna0.roach2.Q((1:lengthvec-0),4:60),2);
0163 U=mean(d.antenna0.roach2.U((1:lengthvec-0),4:60),2);
0164
0165
0166
0167 llmean=ll-mean(ll);
0168 rrmean=rr-mean(rr);
0169 qmean=Q-mean(Q);
0170 umean=U-mean(U);
0171
0172
0173
0174 rfactorR=mean(rr)./mean(loadr)
0175 rfactorL=mean(ll)./mean(loadl)
0176
0177 rfactorR2=rfactorR;
0178 rfactorL2=rfactorL;
0179
0180 skyminusloadleft = ll-rfactorR.*loadl;
0181 skyminusloadright = rr-rfactorL.*loadr;
0182
0183
0184 skyminusloadleftmean = skyminusloadleft-mean(skyminusloadleft);
0185 skyminusloadrightmean = skyminusloadright-mean(skyminusloadright);
0186
0187
0188
0189
0190 amplifierfnoise = skyminusloadleft-skyminusloadright;
0191 amplifierfnoisemean = amplifierfnoise-mean(amplifierfnoise);
0192
0193
0194
0195
0196 templs=d.antenna0.thermal.lsTemperatureSensors(:,2);
0197 tempsmean = templs-mean(templs);
0198 tempsCryo=d.antenna0.thermal.ccTemperatureLoad;
0199
0200
0201
0202
0203 Fs=100;
0204 FsTemps = 1;
0205 T = 1/Fs;
0206 L = length(ll);
0207 t = (0:L-1)*T;
0208 TTemps = 1/FsTemps;
0209 LTemps = length(templs);
0210 tTemps = (0:LTemps-1)*TTemps;
0211 NFFT = 2^nextpow2(L);
0212 NFFTtemps = 2^(nextpow2(LTemps))
0213 f = Fs/2*linspace(0,1,NFFT/2+1);
0214 ftemps = FsTemps/2*linspace(0,1,NFFTtemps/2+1);
0215
0216 YRR = fft(rrmean,NFFT)/L;
0217 YLL = fft(llmean,NFFT)/L;
0218 YQ = fft(qmean,NFFT)/L;
0219 YU = fft(umean,NFFT)/L;
0220 YRRBalanced = fft(skyminusloadrightmean,NFFT)/L;
0221 YLLBalanced = fft(skyminusloadleftmean,NFFT)/L;
0222 Ytemps = fft(tempsmean,NFFTtemps)/LTemps;
0223
0224 Yamplifier = fft(skyminusloadrightmean-skyminusloadleftmean,NFFT)/L;
0225 YI = fft((skyminusloadrightmean+skyminusloadleftmean)./2,NFFT)/L;
0226 YIUnstabilized = fft((rrmean+llmean)./2,NFFT)/L;
0227
0228 YRRb = 2*abs(YRR(1:NFFT/2+1));
0229 YLLb = 2*abs(YLL(1:NFFT/2+1));
0230 YQb = 2*abs(YQ(1:NFFT/2+1));
0231 YUb = 2*abs(YU(1:NFFT/2+1));
0232 YRRBalancedb = 2*abs(YRRBalanced(1:NFFT/2+1));
0233 YLLBalancedb = 2*abs(YLLBalanced(1:NFFT/2+1));
0234 Ytempsb = 2*abs(Ytemps(1:NFFTtemps/2+1));
0235
0236 Yamplifierb = 2*abs(Yamplifier(1:NFFT/2+1));
0237
0238 bin_size=100;
0239 YRRbin=bin(YRRb,bin_size);
0240 YLLbin=bin(YLLb,bin_size);
0241 YQbin=bin(YQb,bin_size);
0242 YUbin=bin(YUb,bin_size);
0243 YRRBalancedbin=bin(YRRBalancedb,bin_size);
0244 YLLBalancedbin=bin(YLLBalancedb,bin_size);
0245 Ytempsbin=bin(Ytempsb,bin_size);
0246 Yamplifierbin=bin(Yamplifierb,bin_size);
0247 fbin = bin(f,bin_size);
0248 ftempsbin = bin(ftemps,bin_size);
0249
0250
0251
0252
0253
0254
0255
0256 dataFreqRoach2=[f' 2.*abs(YRRBalanced(1:NFFT/2+1)) 2*abs(YLLBalanced(1:NFFT/2+1)) 2*abs(YQb(1:NFFT/2+1)) 2*abs(YUb(1:NFFT/2+1)) 2.*abs(YRR(1:NFFT/2+1)) 2*abs(YLL(1:NFFT/2+1)) 2*abs(YI(1:NFFT/2+1)) 2*abs(YIUnstabilized(1:NFFT/2+1))];
0257 dataTimeRoach2=[timeroach skyminusloadrightmean skyminusloadleftmean];
0258
0259
0260
0261
0262
0263
0264 dataTimeTempLs=[timelsTemps templs];
0265 dataTimeTempCryo=[timeCryoTemps tempsCryo];
0266
0267
0268
0269
0270 dataOut.dataFreqRoach1=dataFreqRoach1;
0271 dataOut.dataFreqRoach2=dataFreqRoach2;
0272 dataOut.dataTimeRoach1=dataTimeRoach1;
0273 dataOut.dataTimeRoach2=dataTimeRoach2;
0274 dataOut.dataTimeTempLs=dataTimeTempLs;
0275 dataOut.dataTimeTempCryo=dataTimeTempCryo;
0276 dataOut.rFactorR1=rfactorR1;
0277 dataOut.rFactorL1=rfactorL1;
0278 dataOut.rFactorR2=rfactorR2;
0279 dataOut.rFactorL2=rfactorL2;
0280
0281
0282 if(graphics==1)
0283
0284 titlestring = 'Power Spectrum'
0285 figure
0286 subplot(414)
0287 loglog(dataFreqRoach(:,1),dataFreqRoach(:,4))
0288 hold all
0289 loglog(dataFreqRoach(:,1),dataFreqRoach(:,5))
0290 grid on
0291 title('Polarisation')
0292 subplot(413)
0293 plot(dataTimeRoach(:,1),dataTimeRoach(:,2))
0294 hold all
0295 plot(dataTimeRoach(:,1),dataTimeRoach(:,3))
0296
0297 xlabel('Time [Hr]')
0298 ylabel('BU')
0299 titlestring=['Time Series: ']
0300 title(titlestring)
0301 ylim('auto')
0302 grid on
0303 subplot(412)
0304 plot(dataTimeTempCryo(:,1),dataTimeTempCryo(:,2))
0305 xlabel('Time [Hr]')
0306 ylabel('Temperature [K]')
0307 title('Load/Sky Temperature')
0308 grid on
0309 ylim('auto')
0310 subplot(411)
0311 loglog(dataFreqRoach(:,1),dataFreqRoach(:,2))
0312 hold all
0313 loglog(dataFreqRoach(:,1),dataFreqRoach(:,3))
0314 grid on
0315 legend('RCP','LCP','Location','SouthWest')
0316 xlabel('Time [Hr]')
0317 ylabel('BU')
0318
0319 title('Intensity')
0320 if(saveFile==1)
0321 print('-depsc',varargin{2})
0322 end
0323
0324 end