Home > lukes_code > readArcCompare > read_arcSouthLLRRload12Q_2_U.m

read_arcSouthLLRRload12Q_2_U

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

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