Home > lukes_code > readArcCompare > read_arcSouthLLRRload12QU.m

read_arcSouthLLRRload12QU

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

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