Home > lukes_code > readArcCompare > read_arcSouthLLRRload12_2_QU.m

read_arcSouthLLRRload12_2_QU

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

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