Home > lukes_code > readArcCompare > read_arcSouthLLRRload1.m

read_arcSouthLLRRload1

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

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