Home > lukes_code > readArcCompare > read_arcSouthLL_2_RRload12QU.m

read_arcSouthLL_2_RRload12QU

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

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