Home > lukes_code > readArcCompare > read_arcSouthLLRRload12.m

read_arcSouthLLRRload12

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

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