Home > lukes_code > readArcCompare > read_arcSouthLLRR_2_load12QU.m

read_arcSouthLLRR_2_load12QU

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

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