Home > lukes_code > readArcCompare > read_arcSouthLLRRload1_2_2QU.m

read_arcSouthLLRRload1_2_2QU

PURPOSE ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

SYNOPSIS ^

function d = read_arcSouth(start, finish, regs, arcdir, calfile)

DESCRIPTION ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  function d = read_arc(start, finish, regs, arcdir, calfile)

 start/finish=start finish times as strings with format e.g.:
 01-Jan-2005:00:00:00
 optional regs=regs to extract if other than the standard set
 optional arcdir=directory containing archive files
 optional calfile=cal file

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function d = read_arcSouth(start, finish, regs, arcdir, calfile)
0002 
0003 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0004 %  function d = read_arc(start, finish, regs, arcdir, calfile)
0005 %
0006 % start/finish=start finish times as strings with format e.g.:
0007 % 01-Jan-2005:00:00:00
0008 % optional regs=regs to extract if other than the standard set
0009 % optional arcdir=directory containing archive files
0010 % optional calfile=cal file
0011 %
0012 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0013 
0014 if(~exist('regs'))
0015     regs=[];
0016 end
0017 if(~exist('arcdir'))
0018   arcdir=[];
0019 end
0020 if(~exist('calfile'))
0021   calfile=[];
0022 end
0023 
0024 if(isempty(regs))
0025   regs={'array.frame.received'...
0026       'array.frame.utc double',...
0027       'array.frame.features',...
0028       'antenna0.roach1.LLfreq double',...
0029       'antenna0.roach1.RRfreq double',...
0030       'antenna0.roach1.Ufreq double',...
0031        'antenna0.roach1.Utime double',...
0032       'antenna0.roach1.Qfreq double',...
0033       'antenna0.roach1.Qtime double',...
0034       'antenna0.roach1.load1freq double',...
0035       'antenna0.roach1.load2freq double',...
0036       'antenna0.roach1.utc double',...
0037       'antenna0.roach1.intCount double',...
0038       'antenna0.roach1.ntpSeconds double',...
0039       'antenna0.roach1.ntpUSeconds double',...
0040       'antenna0.roach1.fpgaClockStamp double',...
0041       'antenna0.roach2.fpgaClockStamp double',...
0042       'antenna0.roach2.LLfreq double',...
0043       'antenna0.roach2.RRfreq double',...
0044       'antenna0.roach2.U double',...
0045       'antenna0.roach2.Ufreq double',...
0046       'antenna0.roach2.Utime double',...
0047       'antenna0.roach2.Q double',...
0048       'antenna0.roach2.Qfreq double',...
0049       'antenna0.roach2.Qtime double',...
0050       'antenna0.roach2.load1freq double',...
0051       'antenna0.roach2.load2 double',...
0052       'antenna0.roach2.load2freq double',...
0053       'antenna0.roach2.utc double',...
0054       'antenna0.roach2.intCount double',...
0055       'antenna0.roach1.switchstatus double',...
0056       'antenna0.roach2.switchstatus double',...
0057       'antenna0.roach2.ntpSeconds double',...
0058       'antenna0.roach2.ntpUSeconds double',...
0059       'antenna0.thermal.ccTemperatureLoad double',...
0060       'antenna0.thermal.ccHeaterCurrent double',...
0061       'antenna0.thermal.lsTemperatureSensors double',...
0062       'antenna0.thermal.utc double',...
0063       'antenna0.roach1.version double',...
0064       'antenna0.servo.fast_az_pos double',...
0065       'antenna0.servo.fast_el_pos double',...
0066       'antenna0.servo.fast_az_err double',...
0067       'antenna0.servo.fast_el_err double',...
0068       'antenna0.servo.utc double',...
0069     'antenna0.servo.ntpSecond double',...
0070     'antenna0.servo.ntpUSecond double',...
0071       'antenna0.tracker.lst double',...
0072     'antenna0.tracker.lacking double',...
0073     'antenna0.tracker.equat_geoc double',...
0074     'antenna0.tracker.horiz_topo double',...
0075     'antenna0.tracker.horiz_mount double',...
0076     'antenna0.tracker.flexure double',...
0077     'antenna0.tracker.horiz_off double',...
0078     'antenna0.tracker.tilts double',...
0079     'antenna0.tracker.fixedCollimation double',...
0080     'antenna0.tracker.encoder_off double',...
0081     'antenna0.tracker.sky_xy_off double',...
0082     'antenna0.tracker.source string',...
0083     'antenna0.tracker.scan_off double',...
0084     'antenna0.tracker.refraction double',...
0085     'antenna0.tracker.ut1utc double',...
0086     'antenna0.tracker.eqneqx double',...
0087     'antenna0.tracker.utc double',...
0088     'antenna0.tracker.time_diff double',...
0089     'antenna0.tracker.offSource double',...
0090     'antenna0.tracker.siteActual double',...
0091     'antenna0.tracker.siteFiducial double',...
0092     'array.weather.airTemperature double',...
0093     'array.weather.pressure double',...
0094     'array.weather.relativeHumidity double',...
0095     
0096   };
0097 end
0098 
0099 % Ensure regs unique
0100   if(any(size(unique(regs))~=size(regs)))
0101     error('regs should be unique');
0102 end
0103 
0104 % Here we want to have the function know which directory to look for the
0105 % data depending on the machine name.
0106 [defaultDataDir defaultCalFile defaultReaderPath] = whichHostSa();
0107 
0108 if(isempty(arcdir))
0109 
0110   arcdir = defaultDataDir;
0111 end
0112 if(isempty(calfile))
0113   calfile = defaultCalFile;
0114 end
0115 
0116 eval(sprintf('addpath %s', defaultReaderPath));
0117 
0118 % let's get the previous 5 seconds and post 5 seconds, and then cut it down
0119 % to the right size.
0120 mjdstartorig = tstr2mjd(start);
0121 mjdstart = mjdstartorig - 5/60/60/24;
0122 mjdstoporig  = tstr2mjd(finish);
0123 mjdstop  = mjdstoporig  + 5/60/60/24;
0124 
0125 %display('cbassMatReadArcOpt')
0126 d = cbassMatReadArcOpt(regs, mjd2string(mjdstart), mjd2string(mjdstop), arcdir, calfile);
0127 
0128 
0129 %display('MassageData')
0130 d = massageDataSa(d);
0131 %display('reshapeResgister');
0132 % reshape the registers
0133 d = reshapeRegisters(d);
0134 %display('interpRegisters');
0135 d = ntpTimeAdjustSouth(d);
0136 % interpolate as needed.
0137 d = interpRegistersSa(d,1); %second flag==1 means use NTP time
0138 %display('cut Desired Date');
0139 % cut to the desired data
0140 d = apparentAzElSouth(d);
0141 
0142 d = determineIndicesSouth(d);
0143 %d = cutDesiredData(d, mjdstartorig, mjdstoporig);
0144 %display('here')
0145 return;
0146 
0147 % update the separate functions
0148 %function [defaultDataDir defaultCalfile defaultReader] = whichHost()
0149 %
0150 %% Here we want to have the function know which directory to look for the
0151 %% data depending on the machine name.
0152 %% For simplicity, we assign numbers to each hostname as follows:
0153 %% 0 - cbasscontrol  (OVRO)
0154 %% 1 - haggis  (CALTECH)
0155 %% 2 - falcon  (MANCHESTER)
0156 %% 3 - aslx10  (OXFORD)
0157 %% 4 - asosx48 (OXFORD)
0158 %% 5 - asosx39 (OXFORD)
0159 %% 6  - aslx2   (OXFORD)
0160 %% 7  - pravda  (Oliver)
0161 %
0162 %[s w] = unix('hostname');
0163 %
0164 %hostNum = nan;
0165 %
0166 %% check for cbasscontrol
0167 %host = strfind(w, 'cbasscontrol');
0168 %if(~isempty(host))
0169 %  hostNum = 0;
0170 %  defaultDataDir = '/mnt/data/cbass/arc';
0171 %  defaultCalfile = '/home/cbass/gcpCbass/control/conf/cbass/cal';
0172 %  defaultReader  = '/home/cbass/gcpCbass/matlab/common/';
0173 %end
0174 %
0175 %% check for haggis
0176 %host = strfind(w, 'haggis');
0177 %if(~isempty(host))
0178 %  hostNum = 1;
0179 %  defaultDataDir = '/scr/cbassarc/data/arc';
0180 %  defaultCalfile = '/home/cbassuser/cbass/gcpCbass/control/conf/cbass/cal';
0181 %  defaultReader  = '/home/cbassuser/cbass/gcpCbass/matlab/common/';
0182 %end
0183 %
0184 %% check for falcon
0185 %host = strfind(w, 'falcon');
0186 %if(~isempty(host))
0187 %  hostNum = 2;
0188 %  defaultDataDir = '/scratch/falcon_4/cdickins/cbass/cbassarc/data/arc';
0189 %  defaultCalfile = '/home/muchovej/cbass/gcpCbass/control/conf/cbass/cal';
0190 %  defaultReader  = '/home/muchovej/cbass/gcpCbass/matlab/common/';
0191 %end
0192 %
0193 %% check for aslx
0194 %host = strfind(w, 'aslx10');
0195 %if(~isempty(host))
0196 %  hostNum = 3;
0197 %  defaultDataDir = '/data/cbassuser/data/arc';
0198 %  defaultCalfile = '/home/Muchovej/cbass/gcpCbass/control/conf/cbass/cal';
0199 %  defaultReader  = '/home/Muchovej/cbass/gcpCbass/matlab/common/';
0200 %end
0201 %
0202 %% check for asosx48
0203 %host = strfind(w, 'asosx48');
0204 %if(~isempty(host))
0205 %  hostNum = 4;
0206 %defaultDataDir = '/Volumes/Data2/CBASS_ARC';
0207 %%defaultDataDir = '/Volumes/C-BASS-1';
0208 %%defaultDataDir = '/Volumes/C-BASS/data';
0209 %
0210 %defaultCalfile = '/Users/taylorA/CBASS/cbass/gcpCbass/control/conf/cbass/cal';
0211 %defaultReader  = '/Users/taylorA/CBASS/cbass/gcpCbass/matlab/common/';
0212 %end
0213 %
0214 %% check for pravda
0215 %host = strfind(w, 'pravda');
0216 %if(~isempty(host))
0217 %  hostNum = 7;
0218 %  defaultDataDir = '/Volumes/DATA/cbass/arc';
0219 %  defaultCalfile = '/Users/oliver/C-BASS/software/cbass/gcpCbass/control/conf/cbass/cal';
0220 %  defaultReader  = '/Users/oliver/C-BASS/software/cbass/gcpCbass/matlab/common/';
0221 %end
0222 %
0223 %host = strfind(w, 'asosx39');
0224 %if(~isempty(host))
0225 %  hostNum = 5;
0226 %defaultDataDir = '/Volumes/My Book/zuntz/cbass/arc';
0227 %defaultCalfile = '/Users/zuntz/src/cbass/cbass/gcpCbass/control/conf/cbass/cal';
0228 %defaultReader  = '/Users/zuntz/src/cbass/cbass/gcpCbass/matlab/common/';
0229 %end
0230 %
0231 %host = strfind(w, 'aslx2');
0232 %if(~isempty(host))
0233 %  hostNum = 6;
0234 %defaultDataDir = '/home/jxl/cbass_data/arc';
0235 %defaultCalfile = '/home/jxl/cbass/gcpCbass/control/conf/cbass/cal';
0236 %defaultReader  = '/home/jxl/cbass/gcpCbass/matlab/common/';
0237 %end
0238 %
0239 host = strfind(w, 'aslx5');                                                     
0240 if(~isempty(host))
0241  hostNum = 7; 
0242 defaultDataDir = '/home/cbassuser/cbass_data/arc';
0243 defaultCalfile = '/home/cbassuser/cbass/gcpCbass/control/conf/cbass/cal';
0244 defaultReader  = '/home/cbassuser/cbass/gcpCbass/matlab/common/';
0245 end                                                                                                                                                    
0246 %
0247 %
0248 %
0249 %if(isnan(hostNum))
0250 %  error('Can not match your host name to a recognized one');
0251 %  error('Update read_arc.m to reflect your host');
0252 %end
0253 %
0254 %return;
0255 
0256 
0257 
0258 
0259 % cut to the desired data
0260 function d = cutDesiredData(d, mjdstartorig, mjdstoporig)
0261 
0262 if(~isfield(d, 'array'))
0263   return;
0264 end
0265 
0266 if(~isfield(d, 'antenna0'))
0267   return;
0268 end
0269 
0270 if(issubfield(d.antenna0, 'receiver', 'utc'))
0271   indFast = d.antenna0.receiver.utc>=mjdstartorig & ...
0272       d.antenna0.receiver.utc<mjdstoporig;
0273   noRx = 0;
0274 else
0275   indFast = ones(length(d.array.frame.utc)*100,1);
0276   indFast = logical(indFast);
0277   noRx = 1;
0278 end
0279 
0280 if(isfield(d.antenna0, 'servo'))
0281   indMed  = d.antenna0.servo.utc>=mjdstartorig & ...
0282       d.antenna0.servo.utc<mjdstoporig;
0283   noServo = 0;
0284 else
0285   indMed = ones(length(d.array.frame.utc)*5,1);
0286   indMed = logical(indMed);
0287   noServo = 1;
0288 end
0289 
0290 indSlow = d.array.frame.utc>=mjdstartorig & d.array.frame.utc<mjdstoporig;
0291 
0292 
0293 indF = reshape(indFast, [5 20 length(indSlow)]);
0294 indF = permute(indF, [3 1 2]);
0295 indFs = mean(mean(indF,3),2)==1;
0296 
0297 indM = reshape(indMed, [5 length(indSlow)]);
0298 indM = permute(indM, [2 1]);
0299 indMs = mean(indM,2)==1;
0300 
0301 ind  = indMs & indFs & indSlow;
0302 
0303 % these are the real ind on the slow scale.  now we up it to the longer
0304 % scales -- already done in framecut.
0305 
0306 d = framecut(d, ind, 'regular');
0307 
0308 return;
0309

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