Home > lukes_code > readArcCompare > read_arcSouthLLRRload12Q.m

read_arcSouthLLRRload12Q

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

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