Home > reduc > alpha > assembleAlphaStreams.m

assembleAlphaStreams

PURPOSE ^

This is a wrapper function with assembles the alpha streams. If the date

SYNOPSIS ^

function d = assembleAlphaStreams(d,selection)

DESCRIPTION ^

 This is a wrapper function with assembles the alpha streams. If the date
 is before 1 October 2011 then we use the PolOnly version in addition to
 the classic.

 selection can be: 'CLASSIC','FILTERED','POLONLY'

 ogk, 9 March 2012

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function d = assembleAlphaStreams(d,selection)
0002 % This is a wrapper function with assembles the alpha streams. If the date
0003 % is before 1 October 2011 then we use the PolOnly version in addition to
0004 % the classic.
0005 %
0006 % selection can be: 'CLASSIC','FILTERED','POLONLY'
0007 %
0008 % ogk, 9 March 2012
0009 
0010 % The classic version:
0011 if strcmp(selection,'CLASSIC') 
0012     d = DD(d);
0013 end
0014 if strcmp(selection,'FILTERED')
0015     if d.antenna0.receiver.utc(1) < tstr2mjd('01-oct-2011:00:00:00')
0016         disp('assembleAlphaStreams:: Cannot apply FILTERED option to data before October 2011')
0017     else
0018         d = filtered(d);
0019     end
0020 end
0021 if strcmp(selection,'POLONLY')
0022     d = PolOnly(d);
0023 end
0024 
0025 end
0026 
0027 function d = DD(d)
0028 %
0029 % This function takes the data in d.antenna0.receiver.switchData  and
0030 % rearranges it, placing it in the d.antenna0.receiver.dataC register.
0031 % the suitable configuration for the alpha corrections. The columns of the
0032 % new data register are:
0033 % swd = switchData
0034 % Total intensity 1:
0035 % 1) B[(1+a)(I/2+V/2) + (1-a)Tr1 + Tn]
0036 % 2) B[(1-a)(I/2+V/2) + (1+a)Tr1 + Tn]
0037 % Polarization combination set 1:
0038 % 3) 1/2*(swd(:,5)-swd(:,6) + swd(:,8)-swd(:,7)) == B[cos(th)Q - sin(th)U]
0039 % 4) 1/2*(swd(:,9)-swd(:,10)+ swd(:,12)-swd(:,11)) == B[sin(th)Q + cos(th)U]
0040 % Polarization combination set 2:
0041 % 5) 1/2*(swd(:,13)-swd(:,14)+swd(:,16)-swd(:,15)) == B[cos(th)Q - sin(th)U]
0042 % 6)-1/2*(swd(:,17)-swd(:,18)+swd(:,20)-swd(:,19)) == B[sin(th)Q + cos(th)U]
0043 % Polarization combination set 3:
0044 % 7) 1/4*(swd(:,5)-swd(:,6) + swd(:,8)-swd(:,7)
0045 %         +swd(:,13)-swd(:,14)+swd(:,16)-swd(:,15)) == B[cos(th)Q - sin(th)U]
0046 % 8) 1/4*(swd(:,13)-swd(:,14)+swd(:,16)-swd(:,15)
0047 %         -swd(:,17)+swd(:,18)-swd(:,20)+swd(:,19)) == B[sin(th)Q + cos(th)U]
0048 % Total intensity 2:
0049 % 9)  B[(1+a)(I/2-V/2) + (1-a)Tr1 + Tn]
0050 % 10) B[(1-a)(I/2-V/2) + (1+a)Tr1 + Tn]
0051 %
0052 
0053 if isfield(d.antenna0.receiver,'data')
0054     if size(d.antenna0.receiver.data,2) == 10
0055         disp('assembleAlphaStreams::DD:: Already assembled the alpha streams!')
0056         return;
0057     end
0058 end
0059 swd = d.antenna0.receiver.switchData;
0060 d.antenna0.receiver.data = zeros(size(swd,1),10);
0061 
0062 % Total intensity 1:
0063 d.antenna0.receiver.data(:,1) = 1/2*(swd(:,2) + swd(:,3)); % [(1-a)(I/2+V/2) + (1+a)Tr1 + Tn], sky
0064 d.antenna0.receiver.data(:,2) = 1/2*(swd(:,1) + swd(:,4)); % [(1+a)(I/2+V/2) + (1-a)Tr1 + Tn], load
0065 % Total intensity 2:
0066 d.antenna0.receiver.data(:,9) = 1/2*(swd(:,22) + swd(:,23)); % [(1-a)(I/2-V/2) + (1+a)Tr1 + Tn], sky
0067 d.antenna0.receiver.data(:,10) = 1/2*(swd(:,21) + swd(:,24)); % [(1+a)(I/2-V/2) + (1-a)Tr1 + Tn], load
0068 % Polarization combination set 1:
0069 d.antenna0.receiver.data(:,3) = 1/2*(swd(:,5) -swd(:,6) + swd(:,8)-swd(:,7)); % + cos(th)Q - sin(th)U
0070 d.antenna0.receiver.data(:,4) = -1/2*(swd(:,10)-swd(:,9) + swd(:,11)-swd(:,12)); % + sin(th)Q + cos(th)U
0071 % Polarization combination set 2:
0072 d.antenna0.receiver.data(:,5) = 1/2*(swd(:,13)-swd(:,14)+swd(:,16)-swd(:,15)); % + cos(th)Q - sin(th)U
0073 d.antenna0.receiver.data(:,6) = -1/2*(swd(:,17)-swd(:,18)+swd(:,20)-swd(:,19)); % + sin(th)Q + cos(th)U
0074 % Polarization combination set 3:
0075 d.antenna0.receiver.data(:,7) = 1/2*(d.antenna0.receiver.data(:,3)+d.antenna0.receiver.data(:,5)); % + cos(th)Q - sin(th)U
0076 d.antenna0.receiver.data(:,8) = 1/2*(d.antenna0.receiver.data(:,4)+d.antenna0.receiver.data(:,6)); % + sin(th)Q + cos(th)U
0077                                        
0078 end
0079 
0080 function d = filtered(d)
0081 %
0082 % This function takes the data in d.antenna0.receiver.data  and
0083 % rearranges it, placing it in the d.antenna0.receiver.dataF register.
0084 %
0085 % The columns of dataF are:
0086 % [(I+V)  Q1  U1  Q2  U2  Q3  U3  (I-V)]
0087 
0088 if isfield(d.antenna0.receiver,'data')
0089     if size(d.antenna0.receiver.data,2) == 8
0090         disp('assembleAlphaStreams::filtered:: Already assembled the data streams!')
0091         return;
0092     end
0093 end
0094 
0095 data = d.antenna0.receiver.data;
0096 d.antenna0.receiver.data = zeros(size(data,1),8);
0097 
0098 d.antenna0.receiver.data(:,1) = data(:,1);
0099 
0100 d.antenna0.receiver.data(:,2) = -data(:,2);
0101 d.antenna0.receiver.data(:,3) = -data(:,3);
0102 
0103 d.antenna0.receiver.data(:,4) = -data(:,4);
0104 d.antenna0.receiver.data(:,5) = data(:,5);
0105 
0106 d.antenna0.receiver.data(:,6) = -(data(:,2)+data(:,4))/2;
0107 d.antenna0.receiver.data(:,7) = (data(:,5)-data(:,3))/2;
0108 
0109 d.antenna0.receiver.data(:,8) = data(:,6);
0110 
0111 end
0112 
0113 
0114 function d = PolOnly(d)
0115 %
0116 % This function takes the data in d.antenna0.receiver.switchData  and
0117 % rearranges it, placing it in the d.antenna0.receiver.dataF register in
0118 % the suitable configuration for applying the alpha corrections TO THE
0119 % POLARIZATION CHANNELS ONLY. The columns of the new data register are:
0120 % swd = switchData
0121 % Total intensity 1:
0122 % 1) 1/2*(swd(:,1) + swd(:,4) - swd(:,2) - swd(:,3)) == 2aB[(I/2+V/2) - Tr1]
0123 % Polarization combination set 1:
0124 % 2) 1/2*(swd(:,5)-swd(:,6) + swd(:,8)-swd(:,7)) == B[cos(th)Q - sin(th)U]
0125 % 3) 1/2*(swd(:,9)-swd(:,10)+ swd(:,12)-swd(:,11)) == B[sin(th)Q + cos(th)U]
0126 % Polarization combination set 2:
0127 % 4) 1/2*(swd(:,13)-swd(:,14)+swd(:,16)-swd(:,15)) == B[cos(th)Q - sin(th)U]
0128 % 5)-1/2*(swd(:,17)-swd(:,18)+swd(:,20)-swd(:,19)) == B[sin(th)Q + cos(th)U]
0129 % Polarization combination set 3:
0130 % 6) 1/4*(swd(:,5)-swd(:,6) + swd(:,8)-swd(:,7)
0131 %         +swd(:,13)-swd(:,14)+swd(:,16)-swd(:,15)) == B[cos(th)Q - sin(th)U]
0132 % 7) 1/4*(swd(:,13)-swd(:,14)+swd(:,16)-swd(:,15)
0133 %         -swd(:,17)+swd(:,18)-swd(:,20)+swd(:,19)) == B[sin(th)Q + cos(th)U]
0134 % Total intensity 2:
0135 % 8) 1/2*(swd(:,21) + swd(:,24) - swd(:,22) - swd(:,23)) == 2aB[(I/2-V/2) - Tr2]
0136 %
0137 if isfield(d.antenna0.receiver,'data')
0138     if size(d.antenna0.receiver.data,2) == 8
0139         disp('assembleAlphaStreams::PolOnly:: Already assembled the alpha streams!')
0140         return;
0141     end
0142 end
0143 
0144 swd = d.antenna0.receiver.switchData;
0145 d.antenna0.receiver.data = zeros(size(swd,1),8);
0146 
0147 % Total intensity 1:
0148 d.antenna0.receiver.data(:,1) = 1/4*(swd(:,1) + swd(:,4) - swd(:,2) - swd(:,3)); % 2aB[(I/2+V/2) - Tr1]
0149 % Total intensity 2:
0150 d.antenna0.receiver.data(:,8) = 1/4*(swd(:,21) + swd(:,24) - swd(:,22) - swd(:,23)); % 2aB[(I/2-V/2) - Tr2]
0151 % Polarization combination set 1:
0152 d.antenna0.receiver.data(:,2) = 1/2*(swd(:,5) -swd(:,6) + swd(:,8)-swd(:,7)); % + cos(th)Q - sin(th)U
0153 d.antenna0.receiver.data(:,3) = -1/2*(swd(:,10)-swd(:,9) + swd(:,11)-swd(:,12)); % + sin(th)Q + cos(th)U
0154 % Polarization combination set 2:
0155 d.antenna0.receiver.data(:,4) = 1/2*(swd(:,13)-swd(:,14)+swd(:,16)-swd(:,15)); % + cos(th)Q - sin(th)U
0156 d.antenna0.receiver.data(:,5) = -1/2*(swd(:,17)-swd(:,18)+swd(:,20)-swd(:,19)); % + sin(th)Q + cos(th)U
0157 % Polarization combination set 3:
0158 d.antenna0.receiver.data(:,6) = 1/2*(d.antenna0.receiver.data(:,2)+d.antenna0.receiver.data(:,4)); % + cos(th)Q - sin(th)U
0159 d.antenna0.receiver.data(:,7) = 1/2*(d.antenna0.receiver.data(:,3)+d.antenna0.receiver.data(:,5)); % + sin(th)Q + cos(th)U
0160 
0161 end

Generated on Sun 14-Jun-2015 17:12:45 by m2html © 2005