Home > lukes_code > readArcCompare > read_arcSouthLLRRload12QU_2.m

read_arcSouthLLRRload12QU_2

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

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