Home > lukes_code > readArcCompare > read_arcSouthLLRR.m

read_arcSouthLLRR

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

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